我正在使用具有2个组织的超级账本结构网络,并且链式代码也安装在其工作网络上。我在结构节点js中遇到了SubmitTransaction和EvaluateTransaction。它们之间有什么区别,我的观察者是什么。
当我启动 contract.submittransaction 时,即使我从链码中调用查询方法,它也会从Fabric节点中创建SubmitTransaction新的区块和链码查询方法没有放置状态
如果我使用 contract.evaluateTransaction ,则从架构节点到查询方法的评估交易不会创建任何交易。
答案 0 :(得分:0)
submitTransaction
与evaluateTransaction
之间的区别在于,submitTransaction
将从调用智能合约返回的投标结果中提取并提交给订购者,然后等待交易被提交。这意味着提案结果将被订购并交付给同行进行验证,并提交给区块链。
这与智能合约交易的功能无关,但是通常的模式是submitTransaction
用于更改世界状态的交易,evaluateTransaction
用于仅查询世界状态的交易(或查询密钥历史记录)。
例如,要将世界状态的查询记录到分类帐上是完全合理的,因此您可以在不会修改世界状态的智能合约函数上使用submitTransaction
。
答案 1 :(得分:-1)
contract.submittransaction 对链代码执行事务,这就是创建新块的原因。而 contract.evaluateTransaction 仅查询状态数据库,这就是为什么不创建新块的原因。