Существует ли теоретический предел размера данных транзакции при отправке транзакции в сеть Ethereum?
Ссылка
Существует ли (теоретический) предел объема данных, которые может хранить контракт?
Вау, это такой интересный вопрос! TL; DR : ограничение размера транзакции на момент написания статьи составляет около 780 КБ (около 3 миллионов газа). Но читайте дальше.
Не существует прямых или фиксированных ограничений ни для размеров транзакций, ни для размеров блоков. Это сильная сторона сети Ethereum, она масштабируется.
Это не значит, что нет ограничений. В настоящее время существует лимит газа на блок , равный 3 141 592 газа, который можно потратить максимум на блок.
Это означает, что теоретически вы можете создать одну транзакцию, которая потребляет весь газ одного блока.
Давайте попробуем отправить случайные данные 256 КБ с контрактом:
Это потребовало бы почти 9 миллионов газа, которого в настоящее время нет. Mist пытается создать транзакцию, но она будет недействительной.
Давайте попробуем создать что-то близкое к лимиту газа, 44 444 случайных байта :
Эта транзакция прошла, вот ссылка на проводник . Хэш:
I0207 11:47:14.558908 eth/api.go:946] Tx(0x25e54394ab4e5f17d6e1240c02c1a6c4bb675ef9471f1105b006988f5fe5aec1) to: 0xfcae7970392f510a985a7eaccd3820b7759d65d9
Итак, я только что добавил 44 КБ в блокчейн в блоке 967163 .
И теперь магия масштабирования Ethereum начинает срабатывать. В блоке 967164 сеть реагирует на высокое потребление газа и увеличивает лимит газа в блоке до 3 142 967 !
Таким образом, если есть постоянный запрос на высокое потребление газа, лимит газа может быть увеличен на плюс/минус 1/1024
, что составляет около 0.09%
. См . уравнения желтой бумаги 40-42 .
Короче говоря, ограничение: да, на момент написания около 780 КБ для tx, заполненного нулевыми байтами, или 46 КБ для tx, полного ненулевых байтов. Фиксированные лимиты (как в биткойнах): нет.
По состоянию на 08.12.2017 лимит газа, указанный на EthStats.net , составляет 6 700 314 .
Лимит газа «застрял» на отметке 4,7 миллиона. Майнерам было рекомендовано изменить свои настройки, чтобы можно было увеличить лимит газа.
Как указано в этой статье , это произошло.
Каждый шестнадцатеричный символ занимает 4 бита. 2 символа это байт.
В желтой бумаге указаны сборы за различные операции.
Используя расчеты, аналогичные тем, которые использовали 5hcdn/Джузеппе Бертоне, мы теперь можем видеть, что транзакция может (в принципе) содержать ****
(6 700 314 - 21 000) / 68 = 98 225 (округлено вниз) ненулевых байтов.
Теперь... данные, предоставленные EthGasStation , позволяют нам увидеть, что мы могли бы провести транзакцию с ценой на газ всего 0,5 Gwei.
6,700,314 * 0.5 = 3,350,157 Gwei = 0.003350157 Ether.
Более стандартная цена газа 20 Gwei даст:
6,700,314 * 20 = 40,201,884 Gwei = 0.040201884 Ether.
При текущей цене ETH около 315 долларов США передача такого количества данных в цепочку блоков будет стоить от 1,05 до 12,66 долларов США .
эт
Рейн Ревир
q9f
Джузеппе Бертоне
FrenchieiSverige
q9f
Исмаэль