Comments 2
В этой статье я расскажу о том, как работают побитовые операции и зачем они нужны разработчикам смарт-контрактов. Например, без них не обойтись, если нужно оптимизировать расходы на газ, а иногда эти знания полезны для понимания того, что происходит в таком (оптимизированном) коде.
И где про это?
По применению можно посмотреть тут:
Примеры кода на solidity
Теперь зная про сдвиги можно взять этот код и потыкать в Remix. Это 4 примера использования побитовых операций которые мы разбирали выше:
или здесь:
Варианты использования
1. Работа с флагами и масками.
...
Изящный пример работы с флагами в solidity можно увидеть в контракте Universal Router от Uniswap где они в один байт зашивают большое количество команд.
и далее:
2. Компактное представление данных.
...
3. Оптимизация производительности.
...
4. Шифрование и хеширование.
То есть статья не про "10 советов как оптимизировать код по газу", а про то, как вообще работают побитовые сдвиги и где применяются, в том числе на смарт-контрактах. Этих знаний уже достаточно чтобы понимать что происходит в таких библиотеках как Solady, Solmate, PRBMath, некоторых контрактах от OpenZeppelin или например в нфт сделанных на базе ERC721A. Вставки с побитовыми операциями можно встретить во многих крупных протоколах, а также в EIP.
В общем разработчики смарт-контрактов неизбежно рано или поздно сталкиваются с побитовыми операциями, поэтому я не стал добавлять в статью конкретные пример - они и так повсюду. Но спасибо за замечание, я подумаю над тем, чтобы расширить заключение или добавить больше примеров в саму статью.
Побитовые операции: для чего нужны основы информатики Solidity-разработчику