如何防止智能合约在区块链网络中被修改和部署?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何防止智能合约在区块链网络中被修改和部署?相关的知识,希望对你有一定的参考价值。

这个问题更多的是私有区块链框架,如Corda,Hyperledger等。在所有这些平台上都可以编写一些名为chaincode,smart contract等的程序,它们允许我们实现业务逻辑。所有这些都部署在区块链网络的每个对等体中,但如何避免和检测在某些对等体中部署不同版本的代码?

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

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

答案

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

如果修改了合同,这将修改包含合同的JAR的哈希,因此合同JAR将不再被视为有效。

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

另一答案

如果智能合约既由有效的数字签名签名又具有确定性,则可以是明确的。

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

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

以上是关于如何防止智能合约在区块链网络中被修改和部署?的主要内容,如果未能解决你的问题,请参考以下文章

Python Flask如何开发以太坊智能合约

区块链本地部署智能合约环境

区块链实战如何创建一个带参数的智能合约

区块链实战如何创建一个带参数的智能合约

区块链入门Truffle 项目实战,Solidity IDE, 智能合约部署

区块链技术开发智能合约与图像存储在外部存储器IPFS(InterPlanetary File System)