智能合约 / 主题阅读

智能合约中如何通过EXTCODECOPY读取存储在合约代码中的数据

智能合约中可通过EXTCODECOPY操作码读取存储在合约代码中的数据。该操作码首次访问时成本较高,但后续访问成本较低,适合数据被多次读取的场景。

EXTCODECOPY操作码的读取机制

EXTCODECOPY是EVM中用于从其他合约中复制代码的指令。当数据存储在合约代码中时,可通过EXTCODECOPY读取。该操作码首次访问时需要支付2600 gas,后续访问则只需100 gas加上每32字节3 gas的费用。

EXTCODECOPY的适用场景

EXTCODECOPY适用于数据需要被多次读取的场景。由于首次访问成本较高,只有当数据在多个交易中被重复读取时,该方法才具有经济性。对于一次性读取的数据,使用calldata可能更划算。

EXTCODECOPY的限制与注意事项

EXTCODECOPY读取的数据必须存储在合约代码中,且合约代码不能以0xEF开头,否则会被解释为以太坊对象格式,导致读取失败。此外,EXTCODECOPY仅能读取代码,不能直接访问存储变量。

EXTCODECOPY与其他存储方式的对比

与calldata相比,EXTCODECOPY在数据量较大时更具成本优势。当数据量超过约200字节时,EXTCODECOPY的读取成本低于calldata。但EXTCODECOPY的部署成本较高,需支付32,000 gas加上每字节200 gas的费用。

资料与延伸阅读

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

  1. Blockchain Data Storage Strategies | ethereum.org ↗
← 更多智能合约文章返回顶部 ↑