首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >智能合同存储是永久性的?

智能合同存储是永久性的?
EN

Ethereum用户
提问于 2021-07-27 11:03:38
回答 2查看 231关注 0票数 1

我一直在研究really是如何工作的,对于我来说,很难找到关于智能契约的存储方式和存储位置的信息,也就是智能契约内部的数据结构,比如映射。他们也住在街区内吗?

这就引出了另一个问题:智能契约具有自毁功能是“致命的”,那么存储在其中的所有数据也都被销毁了?或者更简单地说,我们可以删除数组,就像我们可以在坚实的文档中读取一样。这并不违反Blockchain的原则,即“没有任何东西可以更改/删除?”

提前感谢

EN

回答 2

Ethereum用户

发布于 2021-07-27 11:51:32

这就引出了另一个问题:智能契约具有自毁功能是“致命的”,那么存储在其中的所有数据也都被销毁了?

这取决于毁灭的定义。

  • 智能契约状态无法从智能契约中访问。
  • 这些信息可在存档节点上获得。

当信息在块链上发布时,它几乎被假定不能不发布,而不删除所有的10,000+以太节点。

票数 0
EN

Ethereum用户

发布于 2021-07-27 18:05:25

在智能契约中存在的数据结构,用于实例映射。他们也住在街区内吗?

不,块存储在chaindata/ancient目录中的平面文件中。

帐户信息(在128字节以内)存储在磁盘上,结构称为Merkle (一棵树)。

代码语言:javascript
复制
// Account is the Ethereum consensus representation of accounts.
// These objects are stored in the main account trie.
type Account struct {
    Nonce    uint64
    Balance  *big.Int
    Root     common.Hash // merkle root of the storage trie
    CodeHash []byte
}

上面看到的Root字段是契约存储trie (另一棵树)的散列。对于每一个合同,都有一个trie来存储数据。所以,当你写得很扎实时:

代码语言:javascript
复制
owner = address("0xabcd.....")

所发生的情况是,它将owner符号转换为哈希,并将地址的值存储在这个契约存储trie中。因此,如果您想读取契约的所有变量,您只需逐个节点地遍历trie。(但没有API )

关于自杀,请核对这个答案:

自毁()是如何工作的?

票数 0
EN
页面原文内容由Ethereum提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://ethereum.stackexchange.com/questions/104147

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档