一个地址[]内可以存储多少个地址

时间:2018-11-20 13:15:19

标签: ethereum solidity smartcontracts

我正在建立一个合同,要求新用户准确发送0.1醚,以进入投资回合。

我已经为此苦苦挣扎了一段时间,我不知道如何在合同中存储新投资者的地址,因此以后我可以使用“地址索引”。

对于我所看到的,不建议使用动态数组,因为它们很容易使用“太多的气体”并永远使合同卡住。

  • 我怎么知道地址[] 中实际上可以存储多少个地址?

我假设可以完成一个简单的测试,但是我不确定该怎么做。

这是我正在使用的代码。它基于伟大的article Rob Hitchens撰写。

address[] userIndex;    // New user address gets stored in dynamic array

function invest() public payable {  

    require(msg.value == 0.1 ether);    // checks if new investor sent 0.1 ether
    userIndex.push(msg.sender);        // adds new user to userIndex  

}

1 个答案:

答案 0 :(得分:1)

在动态数组中可以存储多少项没有限制。 (从技术上讲,限制为2 ^ 256,但这是已知宇宙中有多少原子的顺序。)

数组中的项目数完全不影响气体使用量。 可以消耗大量气体的是枚举一个大数组。 (在这种情况下,重要的是您通过运行长循环来执行大量代码。)