这个问题更多的是私有区块链框架,如Corda,Hyperledger等。在所有这些平台上都可以编写一些名为chaincode,smart contract等的程序,它们允许我们实现业务逻辑。所有这些都部署在区块链网络的每个对等体中,但如何避免和检测在某些对等体中部署不同版本的代码?
我说的是智能合约的最终结果是相同的,所以没有提交共识,但是有些同行可以出于任何原因修改它运行的代码。
我们如何在私有区块链中管理这种情况?
答案 0 :(得分:1)
为了扩展马修的答案,交易中的每个州都与给定的合同相关联。此合约使用[contract name, hash of the JAR file containing the contract]
对唯一标识。
如果合同被修改,这将修改包含合同的JAR的哈希,因此合同JAR将不再被视为有效。
正如Matthew所说,包含(除其他事项外)与每个州使用哪种合同的信息的交易然后进行数字签名,防止其被修改。
答案 1 :(得分:0)
如果智能合约均由有效的数字签名签署并具有确定性,则可以是明确的。
数字签名的存在为所有节点提供了一种机制,使他们能够确定合同代码是否已被操纵。
如果智能合约代码是确定性的,那么执行代码的所有节点都将到达相同的最终状态。