如果我访问ethereum节点中尚未同步到最新块的合同数据,智能契约数据是否有效?
编辑:我的意思是,我指的是这个场景:如果我与数据有一个智能契约(比如变量x=10 )。我已经停止同步节点。另一些人改变了smart契约( x=20)中的数据。现在,如果我试图在智能契约中访问x,则不需要同步。X的值是10还是20?
发布于 2016-06-05 05:13:30
如果没有同步,合同中的x值将为10。
契约数据/状态由事务更新,这些事务被称为块,同步是获取新块的过程。
发布于 2016-06-02 14:32:49
这在一定程度上取决于你所说的有效(有效性在旁观者的眼中,比如,他想要被遵守的复杂的商业规则)。Ethereum保证的是合同的状态是一致的。如果契约更新了两个变量,您将永远不会从外部看到只更改了一个变量的状态(否则,像加密货币这样的东西是不可想象的)。Ethereum适用于事务处理。
在您在新版本的问题中提到的情况下,您将得到10 (旧值),因为在Ethereum中读取变量纯粹是一个本地操作(在网络上没有发送任何内容)。节点只有在相同的块号下才能看到相同的值。否则,Ethereum只提供“最终的一致性”。
我建议你阅读加文·伍德的开创性论文"以太:一种安全、分散的通用事务分类器“,在这篇论文中,它得到了很好的解释。
https://ethereum.stackexchange.com/questions/4558
复制相似问题