智能合约 / 主题阅读

智能合约中如何通过EXTCODECOPY读取数据

智能合约中通过EXTCODECOPY操作码可高效读取存储为合约代码的数据,适用于需多次读取的场景。该方法成本较低,但需满足特定条件,如合约代码不以0xEF开头,并且仅在数据频繁访问时经济可行。

展示区块链溯源系统的架构图
主题资料配图,非新闻现场照片 · 配图:区块链应用·基于区块链的溯源系统架构

智能合约中如何通过EXTCODECOPY读取数据

在智能合约中,若数据仅需写入一次、不会被覆盖且需在链上可用,可将其存储为合约代码。通过EXTCODECOPY操作码,可从其他合约中读取该数据。这种方式的优势在于,复制代码的成本相对较低,尤其适用于需要多次读取相同数据的场景。

EXTCODECOPY的执行成本与适用场景

EXTCODECOPY的首次访问成本为2600 gas,后续访问成本为100 gas加上每32字节3 gas。相比calldata的15.95 gas/字节,当数据量超过约200字节时,EXTCODECOPY更具成本优势。但此方法仅在数据需被多次读取时才经济可行。

合约代码存储的限制与要求

存储为合约代码的数据需满足特定条件,例如合约代码不能以0xEF开头,否则会被解释为以太坊对象格式(EOA),并受到更严格的限制。此外,合约代码的创建成本较高,约为32,000 gas加上每字节200 gas,因此仅适用于高频读取的场景。

EXTCODECOPY与链上数据可用性的关系

EXTCODECOPY读取的数据作为合约代码的一部分,具有链上永久可用性。但其可用性依赖于合约地址的正确性,且数据无法被修改。这种方式适用于需要长期存储且无需更新的数据,如静态配置或元数据。

资料与延伸阅读

你可以通过以下原始资料核对文中概念,并继续深入阅读。

  1. Blockchain Data Storage Strategies | ethereum.org ↗
  2. 配图:区块链应用·基于区块链的溯源系统架构 ↗
← 更多智能合约文章返回顶部 ↑