Hyperledger fabric 提交交易和评估交易之间的Hyperledger结构差异

Hyperledger fabric 提交交易和评估交易之间的Hyperledger结构差异,hyperledger-fabric,hyperledger,Hyperledger Fabric,Hyperledger,我正在使用hyper ledger fabric网络,网络上还安装了2个组织和链码。我在fabric节点js中遇到submitTransaction和EvaluateTransaction。他们之间的区别是什么,我所观察到的是什么 当我启动contract.submittransaction时,即使我从链码调用查询方法,它的创建新的块和链码查询方法也没有put状态,但从fabric节点发起submittransaction 如果我使用contract.evaluateransaction结构节

我正在使用hyper ledger fabric网络,网络上还安装了2个组织和链码。我在fabric节点js中遇到submitTransaction和EvaluateTransaction。他们之间的区别是什么,我所观察到的是什么

  • 当我启动contract.submittransaction时,即使我从链码调用查询方法,它的创建新的块和链码查询方法也没有put状态,但从fabric节点发起submittransaction

  • 如果我使用contract.evaluateransaction结构节点的evaluate事务查询方法,则它不会创建任何事务


契约。提交交易根据链码执行交易,这就是它创建新块的原因。而contract.evaluateTransaction只查询状态数据库,这就是为什么不创建新块的原因。

evaluateTransaction
的区别在于
submitTransaction
获取调用智能合约返回的提案结果,并将其提交给并等待提交事务。这意味着提案结果将被订购并交付给对等方进行验证,并提交给区块链

它与智能合约交易的功能无关,但一般模式是,
submitTransaction
用于更改世界状态的交易,
evaluateTransaction
用于仅查询世界状态(或查询键历史)的交易


然而,这是完全合理的,例如,想要将世界状态的查询记录到分类账上,因此您可以在智能合约功能上使用
submitTransaction
,该智能合约功能不会修改世界状态以实现此目的。

意味着其在区块链分类账上的直接交易,但它不会更新世界状态?它只是一个分类账查询,不会创建新的交易谢谢你的重播david。为什么有必要创建块来查询分类账、任何用例?我能想到的一个用例是对世界状态的所有访问进行审计跟踪。