Я хочу получить оценку того, сколько будет стоить хранить произвольное количество элементов в отображении формы BYTES32 -> BYTES32
. Я вижу здесь , что STORAGEADD
операция стоит 20000 газа, что, как я полагаю, является инструкцией по добавлению элемента в отображение (это правильно?) .
Цена на газ сегодня составляет 20 gwei, поэтому 20 * 10^9 wei дает мне в общей сложности 20000 * 20 * 10^9 * 10^-18 = 0,0004 эфира ~ 0,0048 доллара США (с 1 ETH = 12 долларов США).
Правильно ли это и есть ли ограничение на количество элементов, которые я могу поместить в карту (без учета ограничений по цене на газ)?
Общее хранилище состоит из 32-байтовых слотов, адресованных 256 битами. Это дает нам 2^256 * 32
байты для использования. Когда вы добавляете элемент в mapping
, он отправляется в случайное место в хранилище, рассчитанное с помощью sha3
, см. этот ответ .
Добавление элемента в сопоставление никогда не завершится ошибкой, потому что всегда будет sha3
рассчитанное место для размещения информации. Конечно, чем ближе вы подходите к 2^256
вставкам, тем выше вероятность того, что вы в конечном итоге перезапишете что-то еще.
См. этот ответ на аналогичный вопрос. Короче говоря: вы можете хранить любое количество элементов в отображении.
Арран Шлосберг