我正在建立一个合同,要求新用户准确发送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
}
答案 0 :(得分:1)
在动态数组中可以存储多少项没有限制。 (从技术上讲,限制为2 ^ 256,但这是已知宇宙中有多少原子的顺序。)
数组中的项目数完全不影响气体使用量。 可以消耗大量气体的是枚举一个大数组。 (在这种情况下,重要的是您通过运行长循环来执行大量代码。)