提交交易和评估交易之间的超级账本结构差异

时间:2019-12-03 02:46:10

标签: hyperledger-fabric hyperledger

我正在使用具有2个组织的超级账本结构网络,并且链式代码也安装在其工作网络上。我在结构节点js中遇到了SubmitTransaction和EvaluateTransaction。它们之间有什么区别,我的观察者是什么。

  • 当我启动 contract.submittransaction 时,即使我从链码中调用查询方法,它也会从Fabric节点中创建SubmitTransaction新的区块和链码查询方法没有放置状态

  • 如果我使用 contract.evaluateTransaction ,则从架构节点到查询方法的评估交易不会创建任何交易。

2 个答案:

答案 0 :(得分:0)

submitTransactionevaluateTransaction之间的区别在于,submitTransaction将从调用智能合约返回的投标结果中提取并提交给订购者,然后等待交易被提交。这意味着提案结果将被订购并交付给同行进行验证,并提交给区块链。

这与智能合约交易的功能无关,但是通常的模式是submitTransaction用于更改世界状态的交易,evaluateTransaction用于仅查询世界状态的交易(或查询密钥历史记录)。

例如,要将世界状态的查询记录到分类帐上是完全合理的,因此您可以在不会修改世界状态的智能合约函数上使用submitTransaction

答案 1 :(得分:-1)

contract.submittransaction 对链代码执行事务,这就是创建新块的原因。而 contract.evaluateTransaction 仅查询状态数据库,这就是为什么不创建新块的原因。