Сколько адресов может храниться в адресе [] в надежности - PullRequest
0 голосов
/ 20 ноября 2018

Я строю контракт, который требует, чтобы новые пользователи посылали ровно 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  

}

1 Ответ

0 голосов
/ 20 ноября 2018

Нет ограничений на количество элементов, которые могут быть сохранены в динамическом массиве.(Технически, существует ограничение в 2 ^ 256, но это порядка количества атомов в известной вселенной.)

Количество элементов в массиве вообще не влияет на использование газа. может потреблять много газа перечисляя большой массив.(В этом случае важно то, что вы выполняете много кода, выполняя длинный цикл.)

...