以太坊智能合约中的数据是怎么存储的,数据可以修改但区块链不能篡改是怎么回事
发布于 7 个月前 作者 _zhj 3678 次浏览 来自 以太坊

pragma solidity ^0.4.17; contract dataOperator{ string data; function setData(string str) public { data = str; } function getData() public view returns(string){ return data; } }

以上面的智能合约为例,编译部署后会把合约写入一个区块中,然后获得一个合约部署地址,根据这个地址可以调用合约的方法。那么每次调用setDate()这个方法后,就把data的值改变了,问题: 我的理解:改变这个x的值后,不就是改变了合约所在的那个区块的内容吗?但是已添加的区块内容是无法篡改的。所以不太明白改变合约里的值和区块链是无法修改的关系。 小白 求助大神

3 回复

这个理解是有问题的,不是不能修改,而是不能篡改。合约的逻辑规定,符合预定义逻辑,你是可以修改的,但是修改历史会停在区块链上。相反如果不符合逻辑强行修改,那不是篡改,其它的节点是可以拒绝这样的数据的,也就达到无法篡改的目的了

@_zhj 如你所述:改变这个x的值后,不就是改变了合约所在的那个区块的内容吗?

问题在这里~你每次修改 x 的值是需要矿工打包和共识的. blockchain 是一个账本,你每一次修改都记在上面~矿工来维护这个账本. 详细可以参考这里: github: https://github.com/xianfeng92/ethereum-code-analysis/blob/master/notes/ethDB.md

回到顶部