Обновить
8

Solidity *

Язык программирования контрактов для Ethereum

Сначала показывать
Порог рейтинга
Уровень сложности

Расчет количества газа необходимого для выполнения транзакции в Ethereum. Часть 2 — storage

Уровень сложностиСложный
Время на прочтение18 мин
Количество просмотров2K

Привет всем! В прошлой статье мы с вами изучили общую механику расчета газа при выполнении транзакций. В этой статье мы сфокусируемся на самых «дорогих» операциях работы с хранилищем смарт‑контракта (storage), а также пройдемся по истории EIPs, связанных с расчетом газа в Ethereum, чтобы увидеть, по каким принципам сообщество принимало решения об изменениях «правил игры» и как сегодня, на основе этой истории, правильно выполнять такие расчеты.

Статья для тех, кто хочет разобраться почему слоты в storage бывают теплыми и холодными, грязными или свежими и за что возвращают газ. Также затронем списки доступа и intrinsic gas. Наконец увидим полную картину учета газа от инициализации транзакции до ее выполнения.

Читать далее

Как создать свой DAO с блэкджеком и OpenZeppelin?

Уровень сложностиСредний
Время на прочтение18 мин
Количество просмотров2K

Продолжаем тему DAO. Раннее мы уже разбирали саму концепцию, а теперь пора делать своё решение!

Разберём по косточкам смарт-контракты короля Web3 библиотек — OpenZeppelin. Они прошли всевозможные аудиты и считаются эталоном безопасности. Умение использовать governance смарт-контракты от OpenZeppelin пригодится на реальных проектах.

Читать далее

Обзор Polygon zkEVM: как работает L2 решение для Ethereum

Уровень сложностиСредний
Время на прочтение19 мин
Количество просмотров3K

Привет, Хабр! Меня зовут Леша Куценко, я разработчик смарт-контрактов в команде MetaLamp, мой основной стек – Solidity. В этой статье я подробнее расскажу про решение для масштабирования с нулевым разглашением (Zero-knowledge proof), а именно – о блокчейне второго уровня Polygon zkEVM. Как блокчейн решает проблему высокой стоимости газа в транзакциях и использует другие преимущества ZK-Rollups? Ответы на эти и другие вопросы в этой статье. 

Для более детального понимания Zero-Knowledge Proofs (ZKP), рекомендую обратиться к этой статье в нашей Blockchain-Wiki на Гитхабе.

Погнали!:)

Читать далее

Web3 приложение Twitter на React.js + Solidity | часть 2

Уровень сложностиПростой
Время на прочтение21 мин
Количество просмотров2.9K

Hello, в первой части был подготовлен проект, подключены кошельки и написан backend на Solidity, значит пришло время писать frontend на React.

Проект далёк от продакшена и является простым примером для новичков, предназначенным для демонстрации взаимодействия с смарт‑контрактом через веб‑приложение.

Читать далее

Расчет количества газа необходимого для выполнения транзакции в Ethereum

Уровень сложностиСложный
Время на прочтение17 мин
Количество просмотров3.3K

Привет, Хабр! Продолжаю серию статей о газе в Ethereum. ​​В этой статье подробно разберем составляющие параметра gasUsed , без которого невозможно подсчитать стоимость транзакции. Будем разбирать формулы из "желтой бумаги" и копаться в коде клиента "Geth". Это даст основу для понимания, как газ потребляется во время исполнения любой транзакции. Если вы еще не читали статью про то, как рассчитывается комиссия за газ в Ethereum, то она здесь.

Читать далее

Web3 приложение Twitter на React.js + Solidity | часть 1

Уровень сложностиПростой
Время на прочтение8 мин
Количество просмотров6.3K

Hello, в этой статье постараюсь подробно показать процесс создания dApp приложения на примере Twitter. Проект написан на ReactJS и Solidity. Контракт развернут в частной сети с помощью truffle и ganache.

В первой части мы подготовим проект, напишем смарт-контракт и развернем его в частной сети, а также подключим кошельки в MetaMask.

Во второй части будет написано web-приложение для взаимодействия с контрактом.

Читать далее

Что такое DAO?

Уровень сложностиПростой
Время на прочтение19 мин
Количество просмотров14K

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

Читать далее

Как рассчитывается стоимость газа в транзакциях Ethereum

Уровень сложностиПростой
Время на прочтение11 мин
Количество просмотров12K

Привет всем! Я — Рома Ярлыков, разработчик смарт‑контрактов на Solidity в команде MetaLamp. ​​В этой статье я исследую механизмы расчета и составляющие цены газа в блокчейне Ethereum, описываю историческое развитие этих методов и их значимость, а также демонстрирую, как вычислить стоимость транзакции на основе ее газовых затрат. Это будет цикл статей, поэтому если вам интересна эта тема — не пропустите следующие:)

Читать далее

Как работает блокчейн Scroll: технические детали и обзор архитектуры

Уровень сложностиСредний
Время на прочтение6 мин
Количество просмотров3.2K

Привет, Хабр! Меня зовут Леша Куценко, я разработчик смарт-контрактов на Solidity в команде MetaLamp. ​​В этой статье я расскажу про основные технические принципы блокчейна Scroll, которые повлияли на дизайн блокчейна, а также дам обзор общей архитектуры блокчейна.

Из этой статьи вы детально узнаете: о Scroll, который состоит из централизованного узла секвенирования (execution node, rollup node) и децентрализованной сети (roller net), архитектуре и рабочем процессе rollup. Советую прочитать перед этим вот эту статью.

Читать далее

Почему native Account Abstraction в zkSync лучше ERC-4337

Уровень сложностиСредний
Время на прочтение12 мин
Количество просмотров1.5K

Привет, Хабр! Меня зовут Рома Ярлыков, я разрабатываю смарт-контракты на Solidity в MetaLamp. В этой статье я расскажу, как реализован Account Abstraction в zkSync и чем такой подход отличается от уже популярного стандарта ERC-4337. Чтобы понять, что за блокчейн zkSync, рекомендую сначала прочитать эту статью. А чтобы разобраться с Account Abstraction можно прочитать вот эту.

В Ethereum существует два типа аккаунтов: внешние аккаунты (Externally Owned Accounts, EOA), которые могут инициировать транзакции, но не обладают программируемой логикой, и смарт-контракты, имеющие возможность выполнения произвольной логики, но неспособные инициировать транзакции самостоятельно. Это вызывает большое количество проблем при взаимодействии с экосистемой блокчейна и повышает порог входа для новых пользователей.

Читать далее

ERC-2612 и юзабилити Ethereum dApp

Уровень сложностиСредний
Время на прочтение6 мин
Количество просмотров1.5K

Бороздя просторы Твиттера/X, увидел сервис smolrefuel.com, (тви), который решает проблему получения газового токена на Эфир-сетях, если у вас его нет, а есть выведенный, например, на кошелек с биржи, стейблкоин. Интересный кейс! – подумал я.

Начал разбираться, как это работает. Если высокоуровнево, то алгоритм такой:

Читать далее

Account Abstraction: что это такое и зачем нужно криптомиру

Уровень сложностиСредний
Время на прочтение7 мин
Количество просмотров3.8K

Привет всем! Меня зовут Паша, я web3 разработчик в команде MetaLamp, мой основной стек – Solidity. Последнее время я часто сталкивался с задачами, требующими применения технологии Account Abstraction, поэтому я решил собрать базовые знания о ней в одну статью. Эта статья поможет разработчикам получить общую картину что такое АА, для чего он нужен и куда углубиться в исследованиях дальше, чтобы овладеть навыками работы с АА в полной мере.

Технология АА вышла в свет под стандартом ERC-4337. Были, есть и появляются другие стандарты, где ведется разработка в направлении абстракции учетной записи, но мы погорим только про ERC-4337. Это стандарт Ethereum, который обеспечивает абстракцию учетной записи в протоколе без какого-либо изменения на уровне консенсуса.

Стандарт был предложен соучредителем Ethereum Виталиком Бутериным и другими разработчиками в 2021 году. В марте 2023 года он был развернут в основной сети Ethereum.

Читать далее

Как ZKP и ZK-Rollups помогают в решении проблемы масштабирования: обзор блокчейна zkSync

Уровень сложностиСредний
Время на прочтение14 мин
Количество просмотров3.8K

Привет, Хабр! Меня зовут Рома и я Solidity-разработчик. Вместе с коллегами мы создаем базу знаний по тематике блокчейна и web3-разработке. Меня заинтересовал блокчейн zkSync, т.к. он выделяется среди других Layer 2 решений, но сначала хочу немного рассказать, в чем суть проблемы масштабирования и какие есть особенности L2 в связке с ZK-Rollups. Эта статья будет интересна тем, кто хочет верхнеуровнево разобраться как работают такого рода решения и почему ZK-Rollups очень перспективное направление развития для блокчейнов в целом и Ethereum в частности.

Читать далее

Ближайшие события

Вестинг в криптопроектах: зачем нужен и как реализовать на Solidity

Уровень сложностиСредний
Время на прочтение12 мин
Количество просмотров7.4K

Привет, Хабр! Меня зовут Рома Ярлыков и я Solidity-разработчик в компании MetaLamp. В этой статье я подробнее расскажу про различные приемы, подходы и паттерны в распределение токенов среди участников проекта, а также покажу несколько популярных решений, используемых для вестинга токенов, одно из которых я применял на проекте заказчика. В этой статье можно найти ответы на популярные вопросы, которые возникают у разработчиков в проекте при реализации вестинга.

Читать далее

Смарт-контракты и возможность их применения

Уровень сложностиСредний
Время на прочтение9 мин
Количество просмотров13K

Привет, Хабр! На связи участник профессионального сообщества NTA Незнанов Дмитрий.

Блокчейн все больше интегрируется в системы хранения и контроля документов. Преимущество этой технологии заключается в отсутствии практической возможности манипуляции данными, записанными в систему, благодаря тому, что информацию в базу данных можно только добавлять, но не перезаписывать. В то же время, истинность документа легко прослеживается, так как каждый видит, кем он был записан в блокчейн.

Читать далее

Формальные методы проверки смарт-контрактов. Certora Prover

Уровень сложностиПростой
Время на прочтение10 мин
Количество просмотров3.6K

Друзья, приветствую! Меня зовут Сергей Соболев, я представляю отдел безопасности распределенных систем Positive Technologies. В этой статье начну рассказывать про методы и инструменты формальной верификации, их практическое применение в аудите смарт-контрактов, а также про подводные камни.

Сегодня поговорим про общие теоретические аспекты формальной верификации, проблемы SAT и SMT и закрепим все это на простом примере с использованием хайпового инструмента для анализа смарт-контрактов Certora Prover со своим языком спецификаций.

Под кат

Инструмент статического анализа Slither

Время на прочтение6 мин
Количество просмотров2.8K

Всем привет! Я из команды по анализу уязвимостей распределенных систем Positive Technologies. Мы занимаемся исследованием безопасности в области блокчейн-технологий и хотим поделиться обзором фреймворка для статического анализа кода, написанного на Solidity, — Slither. Он разработан компанией Trail of Bits, релиз состоялся в 2018 году. Slither написан на Python 3.

Подробнее

EVM — определение масштаба

Время на прочтение6 мин
Количество просмотров6.9K

Виртуальная машина Ethereum - это вычислительный механизм и программная платформа, функционирующая как децентрализованный компьютер.

Читать далее

Тестирование смарт-контрактов в Foundry (часть 4) (Fuzz-тестирование!)

Уровень сложностиСредний
Время на прочтение6 мин
Количество просмотров1.2K

Проходя данный цикл статей, мы овладели инструментарием и возможностями Foundry на уровне, достаточном для поддержания и создания проектов простого и среднего уровней. Предлагаю сегодня изучить очень важные и полезные возможности Foundry углублённого уровня, а именно - команды cast для ручной отправки RPC-запросов и fuzz-тестирование!

Поехали!

Тестирование смарт-контрактов в Foundry (часть 3)

Уровень сложностиСредний
Время на прочтение11 мин
Количество просмотров1.4K

За прошедшие две части мы освоили почти всю базу, которая нужна нам для тестирования и отладки контрактов в Foundry. Пришло время закрепить успех! В этой части мы рассмотрим тестирование простых прокси-контрактов (Proxy Upgradable Contracts, UUPS) и на их примере создадим скрипт для деплоя и вызова функции, поработаем с переменными среды (env), частично автоматизируем работу с запуском скриптов (Makefile), разберёмся в форк-тестировании и запустим наш проект в тестнете!

Поехали!