这个问题更多地是针对私有区块链框架,如Corda、Hyperledger等。在所有这些平台中,可以编写一些名为链码、智能合约等的程序,这些程序允许我们实现业务逻辑。所有这些都部署在区块链网络的每个对等节点中,但如何避免和检测在某些对等节点中部署了不同版本的代码?
我说的是,智能合约的最终结果是相同的,所以共识不是承诺的,但是的,一些同行可以出于任何原因修改它运行的代码。
我们如何在私有区块链中管理此场景?
发布于 2018-01-04 17:17:50
为了扩展Matthew的答案,事务中的每个状态都与给定的合同相关联。此协定使用[contract name, hash of the JAR file containing the contract]对进行唯一标识。
如果契约被修改,这将修改包含契约的JAR的散列,因此契约JAR将不再被认为是有效的。
正如Matthew所说,事务包含(除其他外)关于每个州使用哪个合同的信息,然后对其进行数字签名,防止其被修改。
发布于 2018-01-04 03:16:33
如果智能合约都是由有效的数字签名签署的,并且是确定性的,那么它们就可以是确定性的。
数字签名的存在为所有节点提供了一种机制,以允许它们确定合同代码是否被操纵。
如果智能合约代码是确定性的,则执行代码的所有节点都将到达相同的最终状态。
https://stackoverflow.com/questions/48083637
复制相似问题