Pull to refresh

Comments 2

В этой статье я расскажу о том, как работают побитовые операции и зачем они нужны разработчикам смарт-контрактов. Например, без них не обойтись, если нужно оптимизировать расходы на газ, а иногда эти знания полезны для понимания того, что происходит в таком (оптимизированном) коде.

И где про это?

По применению можно посмотреть тут:

Примеры кода на solidity

Теперь зная про сдвиги можно взять этот код и потыкать в Remix. Это 4 примера использования побитовых операций которые мы разбирали выше:

или здесь:

Варианты использования

1. Работа с флагами и масками.
...
Изящный пример работы с флагами в solidity можно увидеть в контракте Universal Router от Uniswap где они в один байт зашивают большое количество команд.

и далее:

2. Компактное представление данных.
...
3. Оптимизация производительности.
...
4. Шифрование и хеширование.

То есть статья не про "10 советов как оптимизировать код по газу", а про то, как вообще работают побитовые сдвиги и где применяются, в том числе на смарт-контрактах. Этих знаний уже достаточно чтобы понимать что происходит в таких библиотеках как Solady, Solmate, PRBMath, некоторых контрактах от OpenZeppelin или например в нфт сделанных на базе ERC721A. Вставки с побитовыми операциями можно встретить во многих крупных протоколах, а также в EIP.

В общем разработчики смарт-контрактов неизбежно рано или поздно сталкиваются с побитовыми операциями, поэтому я не стал добавлять в статью конкретные пример - они и так повсюду. Но спасибо за замечание, я подумаю над тем, чтобы расширить заключение или добавить больше примеров в саму статью.

Sign up to leave a comment.