字节码存储位置

dav*_*_92 5 blockchain ethereum smartcontracts

问题很简单。

使用下图作为参考:

在此输入图像描述

据我了解,以太坊区块链仅存储框内的想法(PREVHASH、STATE_ROOT、TIMSTAMP、NUMBER)和每个帐户(NONCE、BALANCE、CODEHASH、STORAGE_ROOT)。

那么,智能合约的代码(在本例中为字节码)存储在哪里?

Jos*_*T F 2

合约以以太坊特定的二进制格式(EVM 字节码)存在于区块链上,由以太坊虚拟机(EVM)执行。

编译后的 EVM 代码通过合约创建交易发送到区块链,而作为编译智能合约的一部分创建的附加元数据理想情况下将存在于去中心化云中,作为对区块链上代码的补充的可公开验证的元数据。

在部署智能合约的过程中,我们实际上是将交易发送到空地址,并将编译智能合约时生成的 EVM 代码作为交易数据。

一段时间后,您的交易应该出现在一个区块中,确认它所带来的状态是共识。您的合约现在位于为智能合约创建的地址的区块链上。

合约地址具有与其关联的字节码,并且没有人从外部控制合约背后的私钥。合约保留 CRAB 日志而不是 CRUD 数据库(创建读取追加刻录与创建读取更新删除)。

由于我们拥有创建智能合约的交易数据的智能合约代码部分,并且我们还拥有智能合约的新地址,因此以太坊区块链实际上可以通过搜索第一个来找到要执行的实际字节代码输出指向合约地址的交易。