当前位置: 首页 > 知识库问答 >
问题:

提交交易记录时,在hyperledger chaincode中没有分类帐上下文错误

司马同
2023-03-14

我正在使用超分类帐链码将证书签名请求转换为自签名证书。但是在存储有关证书的信息时,事务处理没有成功,并且没有给我任何分类帐上下文错误。

Nodejs版本:8.9.4

我的链码函数是:

async registerDomain(ctx, csr) {
let buff = new Buffer(csr, 'base64')
let csrData = buff.toString('ascii')
pem.createPrivateKey(2048, {
    aes128: "11223344"
}, async function (err, pk) {
    let domain = new Domain(ctx, "abcd", "data.detail", "keys.certificate", "pk.key");
    await ctx.stub.putState(domain.domainId, Buffer.from(JSON.stringify(domain)));
});

虽然事务是我在peer docker日志中得到的:

HandleTransaction->ERRO 09F[ddc81d1b]无法处理put_state。错误:没有分类帐上下文runtime.goexit/opt/go/src/runtime/asm_amd64.s:1333 PUT_STATE失败:事务ID:ddc81d1bcb69eecd6c6bbcf85ba16b2168486d4b232ef3c03fe5bbc7bb2adea1 github.com/hyperledger/fabric/core/chaincode。Runtime.GoExit

任何帮助都将不胜感激。

共有1个答案

曾成天
2023-03-14

我也面临过类似的问题。但是对于这个错误还没有一个合适的解决方案。根据我的理解,当tx需要更多的时间来完成并丢失state db API提供的上下文实例时,就会引发此错误。

在您的示例中,createPrivateKey可能会花费更多的时间来生成pk,从而导致“无分类帐上下文”问题。

参考:https://jira.hyperledger.org/browse/fab-17512?focusedcommentid=69269&page=com.atlassian.jira.plugin.system.issuetabpanels%3acomment-tabpanel#comment-69269

 类似资料:
  • composer transaction submit命令将交易提交给业务网络。 句法 composer transaction submit composer transaction submit [options] Options: --help Show help [boolean] -v, --version

  • 我提交了一个交易,但没有被开采。 创建和发送交易后,会收到交易hash,但是调用eth_getTransactionReceipt却总是返回空值,指示交易未被挖掘,代码如下: String transactionHash = sendTransaction(...); // you loop through the following expecting to eventually get a

  • 问题内容: 我发生了繁重的数据库操作,这使我的数据库增加了大约10,000条记录。由于这可能需要很长时间,因此最好使用事务。 现在,我在事务内部进行了一些读取操作,并且由于直到endTransaction才提交插入操作,因此不会获取这些记录。我听说过一种叫做“事务隔离级别”的东西,它使我们也可以读取脏的(未提交的)记录。任何想法如何做到这一点? 问题答案: 我发现默认情况下,您将能够读取尚未提交的

  • 若要把文件或目录的添加和变更保存到数据库,就需要进行提交。 执行提交后,数据库中会生成上次提交的状态与当前状态的差异记录(也被称为revision)。 如下图,提交是以时间顺序排列状态被保存到数据库中的。凭借该提交和最新的文件状态,就可以知道过去的修改记录以及内容。 系统会根据修改的内容计算出没有重复的40位英文及数字来给提交命名。指定这个命名,就可以在数据库中找到对应的提交。 Tips(小贴士

  • 一、交易分析 点击进入交易分析页:该页主要展示的是交易分析、下单数量、订单来源(包含所有订单)、订单类型(包含所有订单)。 1、交易分析:展示的是订单金额(所有的订单总金额)和毛利润(售出商品的纯利润金额),可根据时间查找具体的信息,将鼠标放在统计图的某个时间上就会显示出具体信息。 2、下单数量:展示的是下单数量(已经下单的总数)、支付数量(下单后的所有金额)、下单-支付妆化率。可根据搜索时间查看

  • 交易类型 web3j中的不同类型的交易都使用Transaction和RawTransaction对象。关键的区别是交易对象必须始终有一个地址,以便处理eth_sendTransaction请求的以太坊客户端知道要使用哪个钱包来代表消息发送者并发送该交易。如上所述,对于离线签名认证签署的原始交易而言,这不是必须的。 接下来的部分概述了不同交易类型所需的关键交易属性。下列属性对所有人都是不变: Gas