2

这个问题更多是针对私有区块链框架,例如 Corda、Hyperledger 等。在所有这些平台上都可以编写一些名为链码、智能合约等的程序,让我们能够实现业务逻辑。所有这些都部署在区块链网络的每个对等点中,但是如何避免和检测在某些对等点中部署了不同版本的代码?

我说的是智能合约的最终结果是相同的,所以没有提交共识,但是是的,一些同行可以出于任何原因修改它运行的代码。

我们如何在私有区块链中管理这种情况?

4

2 回答 2

1

为了扩展 Matthew 的答案,交易中的每个状态都与给定的合同相关联。该合约使用一[contract name, hash of the JAR file containing the contract]对唯一标识。

如果合约被修改,这将修改包含合约的 JAR 的哈希,因此合约 JAR 将不再被认为是有效的。

正如 Matthew 所说,包含(除其他外)关于每个状态使用哪个合约的信息的交易然后被数字签名,防止它被修改。

于 2018-01-04T09:17:49.597 回答
0

如果智能合约都由有效的数字签名签名并且是确定性的,则它们可以是确定性的。

数字签名的存在为所有节点提供了一种机制,允许它们确定合约代码是否被操纵。

如果智能合约代码是确定性的,那么所有执行代码的节点都会到达相同的最终状态。

于 2018-01-03T19:16:32.663 回答