Я строю контракт, который требует, чтобы новые пользователи посылали ровно 0,1 эфира, чтобы вступить в инвестиционный раунд.
Я боролся с этим некоторое время, и я не знаю, как хранить адреса новых инвесторов в контракте, чтобы я мог использовать «индекс адресов» позже.
Для того, что я видел, динамические массивы не рекомендуются, потому что они могут легко использовать "слишком много газа" и привести к зависанию контракта навсегда.
- Как узнать, сколько адресов на самом деле может храниться в address [] ?
Я предполагаю, что можно выполнить простой тест, но яЯ не уверен, как это сделать.
Это код, который я использую.Он основан на замечательной статье , которую написал Роб Хитченс.
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
}