【发布时间】:2023-03-21 11:55:01
【问题描述】:
可以将智能合约编译成 EVM 字节码 (Ethereum Virtual Machine) 并部署到具有特定区块高度的区块上的以太坊区块链上,并返回交易哈希。
但智能合约以何种方式存储在区块中?区块链如何记录状态变化,当交易已被发布以与智能合约交互以改变其状态(例如变量的值)?
【问题讨论】:
-
不清楚你在问什么。您是否在询问区块链数据如何存储在以太坊客户端之一(例如 geth 或 Parity)中的内部结构?如果有,是哪一个?如果不是,您问的是什么?
-
@smarx 很抱歉造成混乱。我在问如何将数据以字节码的格式存储在以太坊链中。
-
我还是不明白你的问题。合约的代码存储为字节码。交易不是,合约的状态也不是。两者都在 Merkle 树中,并且块头包含这些树的根哈希。这有帮助吗?
-
@smarx 是的,谢谢!这就是我要问的!那么当一个新的交易到达智能合约改变它的状态时,所有与这个智能合约相关的之前的交易都会被迭代,以确保状态改变是好的?
-
这在理论上是正确的,因为当前状态来自所有先前的交易。但是节点会在运行过程中保持该状态,因此它们不需要处理旧事务来重新构建它。
标签: bytecode blockchain ethereum smartcontracts