Текущее состояние инструментов разработки смарт-контрактов. Спикер: Александр Татульченков
На данный момент индустрия Блокчейн технологий стремительно развивается, вместе с ней и используемые инструменты. Спикер лекции затронет тему текущего состояния отрасли разработки, в частности разработки смарт-контрактов на Ethereum через призму собственного опыта.
В этом и состоит смысл всей отрасли, не только состояния Solidity и смарт-контрактов на Ethereum. Инструменты разработки динамично развиваются, как следствие - документация не успевает и быстро теряет свою актуальность. В таком случае важно использовать инструменты Бета.
Далее разберем состояние инструментов Solidity на текущий момент
Если вы хотите разрабатывать смарт-контракты, в первую очередь необходимо определиться с IDE. На сегодняшний день существует множество интеграций:
Самая удобная и доступная интеграция- Remix:
Отметим Remixd:
Remixd - это демон, который устанавливается через NPM.
Remixd позволяет автоматически синхронизировать папки Remix с вашей локальной машиной. Но, в процессе тестирования, были выявлены следующие недостатки:
- Можно указать только одну папку
- Импорт не поддерживается - так как, можно указать только одну папку, необходимо перемещать все папки в папку с вашим смарт-контрактом и переписывать пути
- Undefined! - В Remix можно дебажить, учитывая то, что Remix - это JavaScript, который работает в браузере, то может случиться так, что зайдя в какой-нибудь смарт-контракт, содержимое окошко поменяется на Undefined! - ключевое слово из JavaScript. И если Undefined в Remix, то и Undefined на локальной машине - все содержимое файла меняется на одно слово - Undefined и это внешние изменения для вашей IDE, которые нельзя поменять.
При написании смарт-контрактов одна из наиболее распространенных ошибок- это ошибка в коде:
При привычной компиляции кода можно легко найти ошибку, так как будет указано что не так и в какой строчке кода. Но, при запуске смарт-контракта с ошибкой, не указывается место и причина ошибки, а чаще всего она находится именно в коде.
Отметим еще один полезный инструмент - Truffle
Truffle - один из наиболее популярных фреймворков со следующими характеристиками:
Плюсы:
- Позволяет дебажить
- Есть собственный Testnet
Минусы:
- Дебаггер находится в консоли, что крайне неудобно
- После того, как вы скомпилировали смарт-контракты и сделали миграцию в Testnet, необходимо удалить все из билда, поскольку если вы начнете работать над новым смарт-контрактом, старые данные копируются в новый смарт-контракт
- Постоянно не хватает газа
Также выделим такой инструмент, как Metamask:
Metamask - это плагин, в основном, для Chrome. Metamask подключается к ноде Infura и нет необходимости иметь собственную ноду для выполнения смарт-контрактов.
Но, когда работаешь с Testnet и отправляешь что-то через Metamask, очень скоро можно столкнуться со следующей ошибкой:
Когда вы отправляете транзакции, есть такая переменная как nonce, которая как счетчик постоянно увеличивается (защита от replay атак), и в какой-то момент данные с этого счетчика расходятся. Единственный выход на сегодняшний день - это удалить и переустановить Metamask. Над этой проблемой работают, в ближайшем будущем она решится.
Спикер представил основные инструменты для разработки на Ethereum, которые он лично протестировал. Это лишь некоторые пункты из постоянно обновляющегося списка инструментов для работы на платформе.