Изучаем Foundry
На канале у Ильи вышел новый урок про Foundry. Это что-то вроде Hardhat, но для написания тестов используется Solidity.
Вот этот видео урок.
Я бы, возможно, пропустил его в рамках своего обучения, так как привык к hh и не видел смыла, тогда, изучать его. Если бы не текущие собеседования.
В рамках одного из них предлагали скачать архив с файлами для проверки контрактов на уязвимости, и что вы думаете? Проект там был создан для foundry. И мне пришлось в скором темпе перекидывать и адаптировать его под hh, чтобы начать работу.
Поэтому, чтобы вам в будущем не "прижало", просто покопайтесь в foundry в ближайшее время и поймите, как там настраиваются проекты. А в следующем посте я напишу, какие у меня возникли трудности с ним.
#foundry #forge
На канале у Ильи вышел новый урок про Foundry. Это что-то вроде Hardhat, но для написания тестов используется Solidity.
Вот этот видео урок.
Я бы, возможно, пропустил его в рамках своего обучения, так как привык к hh и не видел смыла, тогда, изучать его. Если бы не текущие собеседования.
В рамках одного из них предлагали скачать архив с файлами для проверки контрактов на уязвимости, и что вы думаете? Проект там был создан для foundry. И мне пришлось в скором темпе перекидывать и адаптировать его под hh, чтобы начать работу.
Поэтому, чтобы вам в будущем не "прижало", просто покопайтесь в foundry в ближайшее время и поймите, как там настраиваются проекты. А в следующем посте я напишу, какие у меня возникли трудности с ним.
#foundry #forge
YouTube
Solidity и смарт-контракты Ethereum, урок #37 | Foundry: альтернатива Hardhat для разработки/тестов
ХОТИТЕ СТАТЬ РАЗРАБОТЧИКОМ Solidity, узнать об Ethereum, блокчейне и многом другом ещё больше?!
Мои друзья из GUIDE DAO (бывшая школа MCS) предлагают скидку 0,1 ETH на ВСЕ СВОИ БУТКЕМЫ ПО КРИПТЕ! Материалы этих буткемов подготовлены мной и другими специалистами:…
Мои друзья из GUIDE DAO (бывшая школа MCS) предлагают скидку 0,1 ETH на ВСЕ СВОИ БУТКЕМЫ ПО КРИПТЕ! Материалы этих буткемов подготовлены мной и другими специалистами:…
👍1
Возможные проблемы с Foundry
Я еще далеко не все изучил про эту среду разработки, но уже столкнулся с парой проблем, о которых хочу рассказать.
Во-первых, это время установки. У меня достаточно слабый ноут и время установки заняло больше часа. Поэтому, если захотите поработать с ним, имейте ввиду, что это может занять у вас продолжительное время.
В видео уроке хорошо объясняются базовые моменты, и упоминается, что перед установкой Foundry на Windows, нужно будет скачать и установить еще две программы.
Вообще, как оказалось, Windows достаточно дырявая система для работы со смарт контрактами, тестами и взломами. Но не об этом сейчас.
Во-вторых, скачивание пакетов (типа npm). Тут это работает немного по другому. Тут вы скачиваете git репозиторий. Причем не по ссылке, а именно в команде указываете название репозитория на GitHub, например
forge install foundry-rs/forge-std
В-третьих, я еще до конца не разобрался, но, когда вам присылают архив с проектом в Foundry, то вас скорее всего потребуется установить пакеты для его работы. Пример такого проекта на скрине.
В моем есть remappings.txt, где прописаны следующие строки:
@openzeppelin/=lib/openzeppelin-contracts/contracts/
@openzeppelin-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/
@chainlink/=lib/chainlink/
Это те контракты, которые используются в примерах и которые нужно установить к себе. Как это сделать напрямую из файла я еще не разобрался.
А с командой, как показано в документации:
forge install foundry-rs/forge-std (это пример команды)
у меня постоянно возникали две ошибки: первая:
fatal: not a git repository (or any of the parent directories): .git
которая исправилась у меня через git init, и вторая:
This command requires clean working and staging areas, including no untracked files. Modify .gitignore and/or add/commit first, or add
the --no-commit option.
которая решается удалением из папки lib пустой одноименной директории и последующей командой:
forge install foundry-rs/forge-std --no-commit
После этого в lib создастся папка с нужными контрактами и настройками.
Я еще разбираюсь с остальными файлами, и если будут возникать ошибки, отпишусь здесь.
Буду рад советам, если кто-то уже работал с Foundry и может поделиться секретами быстрой настройки и установки.
#foundry #forge
Я еще далеко не все изучил про эту среду разработки, но уже столкнулся с парой проблем, о которых хочу рассказать.
Во-первых, это время установки. У меня достаточно слабый ноут и время установки заняло больше часа. Поэтому, если захотите поработать с ним, имейте ввиду, что это может занять у вас продолжительное время.
В видео уроке хорошо объясняются базовые моменты, и упоминается, что перед установкой Foundry на Windows, нужно будет скачать и установить еще две программы.
Вообще, как оказалось, Windows достаточно дырявая система для работы со смарт контрактами, тестами и взломами. Но не об этом сейчас.
Во-вторых, скачивание пакетов (типа npm). Тут это работает немного по другому. Тут вы скачиваете git репозиторий. Причем не по ссылке, а именно в команде указываете название репозитория на GitHub, например
forge install foundry-rs/forge-std
В-третьих, я еще до конца не разобрался, но, когда вам присылают архив с проектом в Foundry, то вас скорее всего потребуется установить пакеты для его работы. Пример такого проекта на скрине.
В моем есть remappings.txt, где прописаны следующие строки:
@openzeppelin/=lib/openzeppelin-contracts/contracts/
@openzeppelin-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/
@chainlink/=lib/chainlink/
Это те контракты, которые используются в примерах и которые нужно установить к себе. Как это сделать напрямую из файла я еще не разобрался.
А с командой, как показано в документации:
forge install foundry-rs/forge-std (это пример команды)
у меня постоянно возникали две ошибки: первая:
fatal: not a git repository (or any of the parent directories): .git
которая исправилась у меня через git init, и вторая:
This command requires clean working and staging areas, including no untracked files. Modify .gitignore and/or add/commit first, or add
the --no-commit option.
которая решается удалением из папки lib пустой одноименной директории и последующей командой:
forge install foundry-rs/forge-std --no-commit
После этого в lib создастся папка с нужными контрактами и настройками.
Я еще разбираюсь с остальными файлами, и если будут возникать ошибки, отпишусь здесь.
Буду рад советам, если кто-то уже работал с Foundry и может поделиться секретами быстрой настройки и установки.
#foundry #forge
👍4
Проверка покрытия тестами
Только для пользователей Linux, как я понял, есть новый инструмент для проверки покрытия тестами какого-либо контракта с использованием команды forge coverage.
Самое интересное в нем, что вам в файле контракта будут подсвечиваться строки, для которых уже были написаны тесты и те, которые пропустили. Пример на скрине.
В этой статье можно почитать про настройку и проведение тестов.
#linux #coverage #forge #foundry
Только для пользователей Linux, как я понял, есть новый инструмент для проверки покрытия тестами какого-либо контракта с использованием команды forge coverage.
Самое интересное в нем, что вам в файле контракта будут подсвечиваться строки, для которых уже были написаны тесты и те, которые пропустили. Пример на скрине.
В этой статье можно почитать про настройку и проведение тестов.
#linux #coverage #forge #foundry
❤4
Foundry для продвинутых
Постепенно у меня в закладках скапливается много статей, которые я хочу разобрать, но, чувствую, что это может занять много времени. Поэтому, чтобы оставаться в фокусе обучения аудиторству, я буду делать порой сборные посты с подборками.
И сегодня в очереди первый пост со статьями для тех, кто хочет повысить свои навыки работы с Foundry.
1. Подготовка и проведение тестов инвариантов с WETH. Крутая статья от одного из разработчиков самого Foundry о том, что такое инварианты, как проводятся тесты, и на что обращать внимание. Прекрасный пошаговый гайд.
2. Создание моста с Foundry. Интересная статья на Медиуме с примерами, как разработчику можно создать свой простой мост между сетями блокчейна.
3. Тулкит для работы с Chainlink в Foundry. Рассказывается, как правильно создать свой узел, сделать первоначальную настройку и подготовить среду для работы.
Повторюсь, данные статьи вряд ли будут понятны для начинающих разработчиков и тех, кто никогда не работал с Foundry. Для других же они могут значительно повысить навыки работы.
#foundry #forge #scope
Постепенно у меня в закладках скапливается много статей, которые я хочу разобрать, но, чувствую, что это может занять много времени. Поэтому, чтобы оставаться в фокусе обучения аудиторству, я буду делать порой сборные посты с подборками.
И сегодня в очереди первый пост со статьями для тех, кто хочет повысить свои навыки работы с Foundry.
1. Подготовка и проведение тестов инвариантов с WETH. Крутая статья от одного из разработчиков самого Foundry о том, что такое инварианты, как проводятся тесты, и на что обращать внимание. Прекрасный пошаговый гайд.
2. Создание моста с Foundry. Интересная статья на Медиуме с примерами, как разработчику можно создать свой простой мост между сетями блокчейна.
3. Тулкит для работы с Chainlink в Foundry. Рассказывается, как правильно создать свой узел, сделать первоначальную настройку и подготовить среду для работы.
Повторюсь, данные статьи вряд ли будут понятны для начинающих разработчиков и тех, кто никогда не работал с Foundry. Для других же они могут значительно повысить навыки работы.
#foundry #forge #scope
👍4❤2🔥1
Обновления в Foundry
Разработчики выпустили новую версию библиотеки forge-std, добавив туда несколько новых команд и улучшений.
Во-первых, теперь можно выделять различными цветами вывод текста в консоли командой:
console2.log(StdStyle.red("my red string"))
что сделает более удобным поиск нужно информации. Там есть и другие цвета: red, green, yellow, blue, magenta, cyan, bold, italic, underline, dim, и inverse.
Во-вторых, команда deal, с помощью которой мы могли "закинуть" себе токенов на счет в тестах, теперь работает и для стандартов ERC721 и ERC1155, например:
dealERC1155(bar, address(this), 0, 1000e18, true)
В-третьих, появилась команда assertEqCall, которая помогает верифицировать, что два вызова приводят к одному результату или возвращают схожие данные.
В-четвертых, появилась команда vm.expectCallMinGas, которая ожидает вызов на адрес с указанными параметрами, включая количество газа. Не уверен в точном переводе, но так она звучит в оригинале:
В-пятых, вместо expected/actual в выводе ошибок, теперь будет left/right. Вообще не понял смысл этого переименования, но, вероятно, разработчики вкладывали какой-то смысл в это.
В этой ветке в Твиттере можете посмотреть скрины с примерами.
#foundry #forge
Разработчики выпустили новую версию библиотеки forge-std, добавив туда несколько новых команд и улучшений.
Во-первых, теперь можно выделять различными цветами вывод текста в консоли командой:
console2.log(StdStyle.red("my red string"))
что сделает более удобным поиск нужно информации. Там есть и другие цвета: red, green, yellow, blue, magenta, cyan, bold, italic, underline, dim, и inverse.
Во-вторых, команда deal, с помощью которой мы могли "закинуть" себе токенов на счет в тестах, теперь работает и для стандартов ERC721 и ERC1155, например:
dealERC1155(bar, address(this), 0, 1000e18, true)
В-третьих, появилась команда assertEqCall, которая помогает верифицировать, что два вызова приводят к одному результату или возвращают схожие данные.
В-четвертых, появилась команда vm.expectCallMinGas, которая ожидает вызов на адрес с указанными параметрами, включая количество газа. Не уверен в точном переводе, но так она звучит в оригинале:
vm.expectCall variants to assert on the minimum amount of gas passed to a call.В-пятых, вместо expected/actual в выводе ошибок, теперь будет left/right. Вообще не понял смысл этого переименования, но, вероятно, разработчики вкладывали какой-то смысл в это.
В этой ветке в Твиттере можете посмотреть скрины с примерами.
#foundry #forge
👍3❤2🔥1
Foundry Safer Log
Небольшая библиотека от Philogy для повышения качества работы с Foundry, а точнее с логированием событий.
По словам Philogy, стандартные настройки Foundry модифицируют память, что порой мешает дебагу low-level assembly в последствии. С данным решением об этом можно не беспокоиться.
P.S. Скоро придется делать пост "Работаем с Foundry: с 0 до pro"!
#foundry #forge
Небольшая библиотека от Philogy для повышения качества работы с Foundry, а точнее с логированием событий.
По словам Philogy, стандартные настройки Foundry модифицируют память, что порой мешает дебагу low-level assembly в последствии. С данным решением об этом можно не беспокоиться.
P.S. Скоро придется делать пост "Работаем с Foundry: с 0 до pro"!
#foundry #forge
🔥4