我一直在研究really是如何工作的,对于我来说,很难找到关于智能契约的存储方式和存储位置的信息,也就是智能契约内部的数据结构,比如映射。他们也住在街区内吗?
这就引出了另一个问题:智能契约具有自毁功能是“致命的”,那么存储在其中的所有数据也都被销毁了?或者更简单地说,我们可以删除数组,就像我们可以在坚实的文档中读取一样。这并不违反Blockchain的原则,即“没有任何东西可以更改/删除?”
提前感谢
发布于 2021-07-27 11:51:32
这就引出了另一个问题:智能契约具有自毁功能是“致命的”,那么存储在其中的所有数据也都被销毁了?
这取决于毁灭的定义。
当信息在块链上发布时,它几乎被假定不能不发布,而不删除所有的10,000+以太节点。
发布于 2021-07-27 18:05:25
在智能契约中存在的数据结构,用于实例映射。他们也住在街区内吗?
不,块存储在chaindata/ancient目录中的平面文件中。
帐户信息(在128字节以内)存储在磁盘上,结构称为Merkle (一棵树)。
// 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来存储数据。所以,当你写得很扎实时:
owner = address("0xabcd.....")所发生的情况是,它将owner符号转换为哈希,并将地址的值存储在这个契约存储trie中。因此,如果您想读取契约的所有变量,您只需逐个节点地遍历trie。(但没有API )
关于自杀,请核对这个答案:
https://ethereum.stackexchange.com/questions/104147
复制相似问题