Существует ли теоретический предел объема данных, которые может хранить один контракт при работе в частной сети, в которой газ не вызывает беспокойства?
Контекст: в финансовом Dapp, который должен заменить глобальные платежные системы, пропускная способность tx/s, безусловно, является одним из широко обсуждаемых ограничивающих факторов. Но я не об этом. Может ли контракт хранить 1 ГБ, 1 ТБ, ... данных в контракте? Данные не будут записываться за один раз, а будут накапливаться с течением времени.
Пример: предположим, что в лучшем случае нам удается уместить одну транзакцию токенов, находящихся поверх смарт-контракта, в 100 байт. При пропускной способности 1000 операций в секунду это даст 100*1000*3600*24*31*12 = 3,2 ТБ/год. Не стесняйтесь гадать, если / когда это будет возможно.
Хранилище контракта — это ключ размером 32 байта и значение 32 байта, поэтому максимальный объем, который может хранить один контракт, составляет около 1,46 ГБ (32^32).
ЛОЖЬ. Существует 2^256 различных ключей, и каждый ключ может хранить 32 байта, так что всего можно сохранить 2^261 байт. Тем не менее, к тому времени блокчейн Ethereum, вероятно, сломается из-за коллизии хэшей....
break
, не выйдет ли из строя весь блокчейн? Нет ли проверки на дубликаты хэшей? Придется ли перематывать/переделывать транзакцию до тех пор, пока не произойдет коллизия?Хранилище контракта — это ключ размером 32 байта и значение 32 байта, поэтому максимум, который может хранить один контракт, составляет около 2^261 байт (2^256 * 32b).
В частной цепочке, где газ не вызывает беспокойства, поскольку адресное пространство составляет 160 бит, при условии, что его можно использовать все, можно создать 2 ^ 160 контрактов. Таким образом, теоретически около 2 ^ 421 байт — это максимум, который могут хранить контракты.
struct
быть больше 32 байт? @эт♦
Маран
СКБюргель