0

在比特币交易的情况下,验证/确认涉及查看输入的 UTXO 余额等......

但在 Hyperledger 中,交易(如果可以的话)“只是”携带目标智能合约的数据(函数名和数据字符串)。

这是否意味着没有必要对交易进行验证(除了语法)?如果是的话,必须检查什么,对照什么?谁能给我一个示例用例?

如果没有验证,那么我的理解是正确的,即区块链“只是”一个没有对交易进行任何验证的分类帐。如果出现问题(这是人为检测到的,例如帐户未结算),那么我们将返回区块链以读取所有相关交易并找出未交易资金的原因?

4

1 回答 1

1

在 HL v0.x 中,共识过程“验证”交易,因为它将在网络中不同对等节点提交的交易排序为全局顺序。此共识过程仅由验证节点执行,验证节点使用 PBFT 协议确保在相当参与的一组验证节点中,每个交易(即智能合约的执行)获得相同结果的验证节点的法定人数它们之间的消息流(“pre-prepare”、“prepare”、“commit”等(参见 PBFT 的详细信息摘要)。

如果达成共识,则每个验证对等方在其节点上应用交易结果,否则交易被抛出。连接到这些验证节点的非验证节点将数据和事务更新复制到它们——它们不参与事务过程。

这整个过程确保了账本在所有对等点(验证和非验证)中保持不变,这当然是共识的含义。这样就避免了双花问题。

HL 使共识成为可插拔的功能,因此理论上可以为不同的区块链拥有不同的共识模型。目前这很棘手,但它仍然是一个设计原则。请注意,共识机制不会影响智能合约的编写方式,也不会影响账本保持一致的事实——这纯粹是一个操作问题(当然,这仍然很重要)。

最后,在 HL v1 中正在进行一项更复杂的共识协议,其中包括哪些验证对等方可以看到哪些交易。

于 2016-09-20T08:42:47.993 回答