В одной из статей о расчете газа в Ethereum (ссылка) я рассказал об истории изменений механизмов подсчета газа для хранилища смарт-контракта (storage) — от правил, заложенных в протоколе изначально, до EIP-3529. Во всех этих изменениях прослеживается основная проблема: нерациональное…
evm is a pure Rust implementation of Ethereum Virtual Machine. Prior to the patch, when executing specific EVM opcodes related to memory operations that use `evm_core::Memory::copy_large`, the `evm` crate can over-allocate memory when it is not needed, making it possible for an attacker to perform denial-of-service attack. The flaw was corrected in commit `19ade85`. Users should upgrade to `==0.21.1, ==0.23.1, ==0.24.1, ==0.25.1, >=0.26.1`. There are no workarounds. Please upgrade your `evm` crate…
EIP-712 — это стандарт, который делает подписи в Ethereum не только безопасными, но и человекочитаемыми. Он позволяет кошелькам показывать пользователю, что скрывается под подписью, состоящей из набора байт. В этой статье разбираем, как устроен EIP-712: от домена и хеширования до тонкостей кодирования различных типов данных. Посмотрим, как правильно реализовать проверку подписи на смарт-контракте, какие ошибки чаще всего допускают солидити разработчики — ведь даже у OpenZeppelin находили баги. Читать далее
The evm crate is a pure Rust implementation of Ethereum Virtual Machine. In `evm` crate `< 0.31.0`, `JUMPI` opcode's condition is checked after the destination validity check. However, according to Geth and OpenEthereum, the condition check should happen before the destination validity check. This is a **high** severity security advisory if you use `evm` crate for Ethereum mainnet. In this case, you should update your library dependency immediately to on or after `0.31.0`. This is a **low** severity…