Как говорится в дизайне Ethereum Rationale :
Размер слова 32 байта — альтернатива — 4 или 8 байт слов, как в большинстве других архитектур, или неограниченный, как в биткойне. 4- или 8-байтовые слова слишком ограничены для хранения адресов и больших значений для криптографических вычислений, а неограниченные значения слишком сложны для создания модели безопасного газа. 32 байта идеально подходят, потому что этого достаточно для хранения 32-байтовых значений, обычных во многих криптографических реализациях, а также адресов (и предоставляет возможность упаковать адрес и значение в один индекс хранения в качестве оптимизации), но не настолько велики. как крайне неэффективный.
Но дело в том, что:
Подумайте об этом, если вам нужно выполнить итерацию массива 32- или 64-битных данных, а блоки памяти EVM 256-битные, процессору требуется дополнительная работа для выполнения вычислений, и много времени теряется.
Если вы считаете, что это возможное улучшение, есть ли какие-либо открытые инициативы или EIP? Я ничего не видел.
Спасибо.
У вас будет несколько проблем
Если вы сохраните свое хранилище на 256 бит, к нему будет сложнее получить доступ. Вам нужно 4 x 64-битных слова для адресации слота хранения. Все операции должны будут преобразовать 256 бит в 64 бита. Ваш EVM будет довольно сложным для внедрения и аудита.
Если вы переключите хранилище на 64-битное, то ваш EVM будет более простым, но хранилище будет намного меньше, а коллизии гораздо более вероятны.
Вы не можете представлять адреса изначально. Адреса составляют 20 байт, и вам понадобятся 3 x 64-битных регистра.
Вам нужна обратная совместимость со старыми контрактами, и вам придется реализовать какой-то транслятор.
Процессор не является узким местом. Конечно, есть лучшие виртуальные машины (и есть исследования по замене ее на WASM), но текущая реализация делает свою работу правильно.
Более важным вопросом является ввод-вывод, каждая транзакция имеет несколько модификаций состояния Ethereum World. А в блоке около сотни транзакций, и каждые 15 секунд генерируется один блок.
Конечно, сложно сказать наверняка, но моя интуиция подсказывает, что узкое место не в размере слов. Узким местом является целенаправленное введение 14-секундного времени блока. Время блока — это параметр, выбранный первоначальными разработчиками, чтобы заставить майнеров расходовать энергию в виде электричества. Даже если бы вы оптимизировали где-то в системе, эти 14 секунд не исчезли бы, поэтому оптимизация не проявилась бы.
ладья
bool
тип тратит 255 бит, сводит меня с ума.Исмаэль
ладья
ладья
Исмаэль
ладья