1 ethereum solidity smartcontracts
我正在构建一个合约,要求新用户发送 0.1 以太币才能进入投资回合。
我已经为此苦苦挣扎了一段时间,我不知道如何在合约中存储新投资者的地址,以便稍后可以使用“地址索引”。
据我所知,不建议使用动态数组,因为它们很容易使用“太多gas”并导致合约永远陷入困境。
我认为可以完成一个简单的测试,但我不确定如何做。
这是我正在使用的代码。它基于 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
}
Run Code Online (Sandbox Code Playgroud)
动态数组中可以存储的项目数量没有限制。(从技术上讲,限制为 2^256,但这与已知宇宙中的原子数量级相同。)
数组中的项目数量根本不会影响气体使用量。会消耗大量gas的就是枚举一个大数组。(在这种情况下,重要的是您通过运行长循环来执行大量代码。)
| 归档时间: |
|
| 查看次数: |
2020 次 |
| 最近记录: |