Как проверить заголовок хеша нативного байткода EraVM
Для нативного развёртывания EraVM нужен версионированный хеш байткода. Обычный Keccak от кода даст значение другой структуры даже для правильных исходных байтов.
До вычисления проверьте число слов
Декодируйте артефакт нативного компилятора в байты. Длина должна делиться на 32, а число слов должно быть нечётным и помещаться в предусмотренное поле длины. В примере три слова. Вычислите SHA-256 от исходных байтов и замените первые четыре байта версией, зарезервированным байтом и двухбайтовым числом слов big-endian.
96 bytes / 32 = 3 words
native bytecode hash header: 0x01000003
Для трёх слов префикс равен 01000003. Артефакт длиной 64 байта содержит два слова и не проходит проверку нечётности. Перед произвольным дополнением кода проверьте результат компиляции и выбранную VM.
Выберите формат для режима исполнения
Нативный хеш EraVM используется её механизмом развёртывания. Для кода в EVM-интерпретаторе совместимой сети правила другие. Контрольная сумма файла и Ethereum-хеш runtime-кода — иные идентификаторы. docs.zksync.io ZKsync documentation