В этой статье я расскажу про язык среднего уровня между Solidity и байт-кодом, который применяется в EVM. Основная задача Yul - это оптимизация смарт-контрактов по газу, как на уровне языка так и на уровне компилятора, а также гораздо больший контроль над выполнением кода. Мы вместе погрузимся в синтаксис языка с головой и попытаемся выплыть, а также научимся работать с разными типами памяти и приготовимся писать смарт-контракты с inline assembly вставками. Будет сложно, но интересно, погнали!
Solidity *
Язык программирования контрактов для Ethereum
Новости
EVM opcodes: перестанем бояться байт-кода
Привет, Хабр!
В этой статье я погружу вас подробнее в тему низкоуровневых машинных инструкций EVM. Будет описание, сколько стоят опкоды в единицах газа и где можно про это узнать. Еще посмотрим, как разбирать байткод на базе простого примера. Прежде чем читать эту статью, предлагаю вспомнить, что такое EVM и как она устроена, поэтому будет небольшое интро. Если же вы и так про это помните и знаете – то интро можно опустить:)
Побитовые операции: для чего нужны основы информатики Solidity-разработчику
В этой статье я расскажу о том, как работают побитовые операции и зачем они нужны разработчикам смарт-контрактов. Например, без них не обойтись, если нужно оптимизировать расходы на газ, а иногда эти знания полезны для понимания того, что происходит в таком (оптимизированном) коде.
Но перед тем, как перейти к побитовым операциям, необходимо понять, что такое вообще бит и байт. Так что да, это та самая школьная информатика. Не могу сказать, что в своё время углублялся в эти темы с большим энтузиазмом, и предполагаю, что я такой не один.
В статье мы рассмотрим знаковые и беззнаковые числа, прямой, обратный и дополнительный код, логические вентили, а также базовые побитовые операции и как это применяется в написании смарт-контрактов.
Обзор блокчейна TRON
Если хотите больше познакомиться со мной, как автором приглашаю в свой телеграмм канала - https://t.me/InfinityProductive
TRON (TRX) - это не просто еще один блокчейн на рынке криптовалют. Это целая экосистема, направленная на децентрализацию цифрового контента. Созданный Джастином Саном в 2017 году, TRON превратился в настоящую фабрику децентрализованных приложений (DApps), которая работает круглосуточно и без перерывов.
С поглощением BitTorrent, TRON стал чем-то вроде сверхмагната контента, привлекая под свои знамена миллионы пользователей. И если это был бы сериал, то захват BitTorrent можно было бы назвать кульминационным моментом сезона.
В сети TRON токен TRX служит не просто валютой, но и билетом в мир где транзакции и смарт-контракты проходят без заминок. Это как VIP-пропуск в эксклюзивный клуб, где все токены (TRC-10, TRC-20 и другие) живут в гармонии.
Истории
ethers.js – оптимизация запросов JSON-RPC
ethers.js – TypeScript библиотека для доступа к EVM блокчейнам. Я использую ее в своих проектах, и другими авторами по ней уже написаны хорошие статьи на хабре (основы, отправка транзакций). В этой же статье хочу поделиться опытом оптимизации запросов ethers js при работе с различными облачными провайдерами JSON-RPC (Alchemy, Infura) и своей нодой. Расскажу о случаях, когда приложение может просто перестать работать, и что с этим делать. Приведу прикидки производительности.
Цифровые подписи в Ethereum: как с ними работать?
Всем привет! Что значит подписать сообщение? Что для этого нужно? В этой статье расскажу про механизм цифровых подписей в сети Ethereum: как работает, какие стандарты существуют и как их использовать.
Transient storage в EVM (EIP-1153): на грани добра и зла
В одной из статей о расчете газа в Ethereum (ссылка) я рассказал об истории изменений механизмов подсчета газа для хранилища смарт-контракта (storage) — от правил, заложенных в протоколе изначально, до EIP-3529. Во всех этих изменениях прослеживается основная проблема: нерациональное использование газа, когда слот хранилища смарт-контракта изменяется в ходе транзакции и затем возвращается к исходному значению, например, при блокировке функции для защиты от атак reentrancy. Иными словами, в ситуациях, когда постоянное хранилище используется как временное, а также в случаях необходимости безопасной передачи данных между фреймами вызовов.
В этой статье рассмотрим нововведение хард-форка Dencun (Cancun-Deneb), где в рамках обновления слоя выполнения был представлен EIP-1153: Transient storage opcodes, предлагающий решение этой проблемы за счет введения двух новых опкодов (TSTORE
, TLOAD
) и создания нового типа памяти в EVM - transient storage
.
Формальная верификация смарт-контрактов во фреймворке ConCert
Добрый день! Меня зовут Кирилл Зиборов, я представляю отдел безопасности распределенных систем Positive Technologies. В этой статье мы продолжим обсуждать методы и инструменты формальной верификации смарт-контрактов и их практическое применение для предотвращения уязвимостей. Мы подробно поговорим о методе дедуктивной верификации, а точнее, о фреймворке для тестирования и верификации смарт-контрактов — ConCert.
Upgradeable smart contracts. 5 способов обновить код смарт-контрактов на все случаи жизни
Рассказываем, зачем нужны обновляемые смарт-контракты, какие методы обновления существуют, а также делимся примерами кода реализации. Это может оказаться must have технологией на старте проекта, которая поможет спасти ваш код от уязвимостей и критических ошибок.
Стейкинг NFT: как это работает?
Все знают про стейкинг обычных ERC-20 токенов. А что с ERC-721? Вокруг стейкинга NFT уже давно ходят противоречивые мнения, и мы решили разобраться в этом с точки зрения технологии. Поговорим о том, как это работает: как организовать на смарт-контрактах, как рассчитываются вознаграждения и какую пользу это может принести проектам и держателям NFT.
Добро пожаловать в технический гид по стейкингу NFT!
Расчет количества газа необходимого для выполнения транзакции в Ethereum. Часть 2 — storage
Привет всем! В прошлой статье мы с вами изучили общую механику расчета газа при выполнении транзакций. В этой статье мы сфокусируемся на самых «дорогих» операциях работы с хранилищем смарт‑контракта (storage), а также пройдемся по истории EIPs, связанных с расчетом газа в Ethereum, чтобы увидеть, по каким принципам сообщество принимало решения об изменениях «правил игры» и как сегодня, на основе этой истории, правильно выполнять такие расчеты.
Статья для тех, кто хочет разобраться почему слоты в storage бывают теплыми и холодными, грязными или свежими и за что возвращают газ. Также затронем списки доступа и intrinsic gas. Наконец увидим полную картину учета газа от инициализации транзакции до ее выполнения.
Как создать свой DAO с блэкджеком и OpenZeppelin?
Продолжаем тему DAO. Раннее мы уже разбирали саму концепцию, а теперь пора делать своё решение!
Разберём по косточкам смарт-контракты короля Web3 библиотек — OpenZeppelin. Они прошли всевозможные аудиты и считаются эталоном безопасности. Умение использовать governance смарт-контракты от OpenZeppelin пригодится на реальных проектах.
Обзор Polygon zkEVM: как работает L2 решение для Ethereum
Привет, Хабр! Меня зовут Леша Куценко, я разработчик смарт-контрактов в команде MetaLamp, мой основной стек – Solidity. В этой статье я подробнее расскажу про решение для масштабирования с нулевым разглашением (Zero-knowledge proof), а именно – о блокчейне второго уровня Polygon zkEVM. Как блокчейн решает проблему высокой стоимости газа в транзакциях и использует другие преимущества ZK-Rollups? Ответы на эти и другие вопросы в этой статье.
Для более детального понимания Zero-Knowledge Proofs (ZKP), рекомендую обратиться к этой статье в нашей Blockchain-Wiki на Гитхабе.
Погнали!:)
Ближайшие события
Web3 приложение Twitter на React.js + Solidity | часть 2
Hello, в первой части был подготовлен проект, подключены кошельки и написан backend на Solidity, значит пришло время писать frontend на React.
Проект далёк от продакшена и является простым примером для новичков, предназначенным для демонстрации взаимодействия с смарт‑контрактом через веб‑приложение.
Расчет количества газа необходимого для выполнения транзакции в Ethereum
Привет, Хабр! Продолжаю серию статей о газе в Ethereum. В этой статье подробно разберем составляющие параметра gasUsed
, без которого невозможно подсчитать стоимость транзакции. Будем разбирать формулы из "желтой бумаги" и копаться в коде клиента "Geth". Это даст основу для понимания, как газ потребляется во время исполнения любой транзакции. Если вы еще не читали статью про то, как рассчитывается комиссия за газ в Ethereum, то она здесь.
Web3 приложение Twitter на React.js + Solidity | часть 1
Hello, в этой статье постараюсь подробно показать процесс создания dApp приложения на примере Twitter. Проект написан на ReactJS и Solidity. Контракт развернут в частной сети с помощью truffle
и ganache
.
В первой части мы подготовим проект, напишем смарт-контракт и развернем его в частной сети, а также подключим кошельки в MetaMask.
Во второй части будет написано web-приложение для взаимодействия с контрактом.
Что такое DAO?
Если вы что-то слышали о концепции организации без большого босса, где анонимный владелец нескольких токенов может влиять на будущее компании — это скорее всего про DAO. В этой статье ты узнаешь, что такое децентрализованные автономные организации (DAO), как вообще возможно их существование и успешные примеры реализации.
Как рассчитывается стоимость газа в транзакциях Ethereum
Привет всем! Я — Рома Ярлыков, разработчик смарт‑контрактов на Solidity в команде MetaLamp. В этой статье я исследую механизмы расчета и составляющие цены газа в блокчейне Ethereum, описываю историческое развитие этих методов и их значимость, а также демонстрирую, как вычислить стоимость транзакции на основе ее газовых затрат. Это будет цикл статей, поэтому если вам интересна эта тема — не пропустите следующие:)
Как работает блокчейн Scroll: технические детали и обзор архитектуры
Привет, Хабр! Меня зовут Леша Куценко, я разработчик смарт-контрактов на Solidity в команде MetaLamp. В этой статье я расскажу про основные технические принципы блокчейна Scroll, которые повлияли на дизайн блокчейна, а также дам обзор общей архитектуры блокчейна.
Из этой статьи вы детально узнаете: о Scroll, который состоит из централизованного узла секвенирования (execution node, rollup node) и децентрализованной сети (roller net), архитектуре и рабочем процессе rollup. Советую прочитать перед этим вот эту статью.
Почему native Account Abstraction в zkSync лучше ERC-4337
Привет, Хабр! Меня зовут Рома Ярлыков, я разрабатываю смарт-контракты на Solidity в MetaLamp. В этой статье я расскажу, как реализован Account Abstraction в zkSync и чем такой подход отличается от уже популярного стандарта ERC-4337. Чтобы понять, что за блокчейн zkSync, рекомендую сначала прочитать эту статью. А чтобы разобраться с Account Abstraction можно прочитать вот эту.
В Ethereum существует два типа аккаунтов: внешние аккаунты (Externally Owned Accounts, EOA), которые могут инициировать транзакции, но не обладают программируемой логикой, и смарт-контракты, имеющие возможность выполнения произвольной логики, но неспособные инициировать транзакции самостоятельно. Это вызывает большое количество проблем при взаимодействии с экосистемой блокчейна и повышает порог входа для новых пользователей.
Вклад авторов
p4lex 145.0yarlykovrv 82.0rubyruby 81.0pnaydanovgoo 71.0DryginAlexander 66.0BoogerWooger 56.0AlexandreFrolov 54.0tonoyandev 47.0AgentRX 45.0quantum 39.0