区块链基础 / 主题阅读

智能合约中如何通过Contract Code存储数据

智能合约中可通过将数据存储为Contract Code实现数据的长期可用性。这种方式通过EXTCODECOPY操作码读取信息,适用于需多次读取的场景。

Contract Code存储数据的原理

智能合约中,若数据仅需写入一次、不会被覆盖且需长期在链上可用,可将其存储为Contract Code。这意味着创建一个包含数据的“智能合约”,并通过EXTCODECOPY操作码读取信息。这种方式的优势在于复制代码的成本相对较低,尤其适用于需要多次读取的场景。

Contract Code存储数据的成本分析

EXTCODECOPY操作码在首次访问时成本为2600 gas,后续访问则为100 gas加上每32字节3 gas。相比calldata的15.95 gas/字节,当数据量超过约200字节时,EXTCODECOPY更具成本优势。此外,若内存扩展成本不超过4MB,该方式比calldata更经济。

Contract Code存储数据的限制

创建Contract Code需要约32,000 gas加上每字节200 gas,因此仅在数据需多次读取时才经济。此外,Contract Code不能以0xEF开头,否则会被解释为以太坊对象格式,需满足更严格的条件。

资料与延伸阅读

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

  1. Blockchain Data Storage Strategies | ethereum.org ↗
← 更多区块链基础文章返回顶部 ↑