小编use*_*452的帖子

在以太坊区块链上存储大型数组

在研究以太坊智能合约的过程中,出现了如何在合约内存储大型结构(数组映射)的问题。有合同

pragma solidity ^ 0.8.6;

contract UselessWorker {

    uint32 public successfullyExecutedIterations = 0;


    mapping (uint32 => uint32 [6]) items;
    
    event ItemAdded (uint32 result);
    
    function doWork (int _iterations) public {
        for (int32 i = 0; i <_iterations; i ++) {
          items [successfullyExecutedIterations] = [uint32 (block.timestamp), successfullyExecutedIterations, 10, 10, 10, 10];
          successfullyExecutedIterations ++;
        }
        emit ItemAdded (successfullyExecutedIterations);
    }
}
Run Code Online (Sandbox Code Playgroud)

doWork方法用数字数组填充地图 项,由外部脚本调用。同时,项目中出现的记录越多,消耗的磁盘空间就越快(对于 1,000,000 条,区块链大小约为 350 MB,对于 2,000,000 条,约为 1.1 GB,对于 19,000,000 条,约为 22 GB。这是 .ethereum/ …

ethereum solidity smartcontracts

5
推荐指数
1
解决办法
807
查看次数

标签 统计

ethereum ×1

smartcontracts ×1

solidity ×1