Текущее состояние инструментов разработки смарт-контрактов. Спикер: Александр Татульченков


На данный момент индустрия Блокчейн технологий стремительно развивается, вместе с ней и используемые инструменты. Спикер лекции затронет тему текущего состояния отрасли разработки, в частности разработки смарт-контрактов на Ethereum через призму собственного опыта.

Снимок экрана 2018-01-30 в 17.50.59.png

В этом и состоит смысл всей отрасли, не только состояния Solidity и смарт-контрактов на Ethereum. Инструменты разработки динамично развиваются, как следствие - документация не успевает и быстро теряет свою актуальность. В таком случае важно использовать инструменты Бета.

Далее разберем состояние инструментов Solidity на текущий момент

Если вы хотите разрабатывать смарт-контракты, в первую очередь необходимо определиться с IDE. На сегодняшний день существует множество интеграций:

Снимок экрана 2018-01-30 в 17.50.34.png

Самая удобная и доступная интеграция- Remix:

Отметим Remixd:

Снимок экрана 2018-01-30 в 15.28.17.png

Remixd - это демон, который устанавливается через NPM.

Снимок экрана 2018-01-30 в 15.40.40.png

Remixd позволяет автоматически синхронизировать папки Remix с вашей локальной машиной. Но, в процессе тестирования, были выявлены следующие недостатки:

  • Можно указать только одну папку

  • Импорт не поддерживается - так как, можно указать только одну папку, необходимо перемещать все папки в папку с вашим смарт-контрактом и переписывать пути

  • Undefined! - В Remix можно дебажить, учитывая то, что Remix - это JavaScript, который работает в браузере, то может случиться так, что зайдя в какой-нибудь смарт-контракт, содержимое окошко поменяется на Undefined! - ключевое слово из JavaScript. И если Undefined в Remix, то и Undefined на локальной машине - все содержимое файла меняется на одно слово - Undefined и это внешние изменения для вашей IDE, которые нельзя поменять.

При написании смарт-контрактов одна из наиболее распространенных ошибок- это ошибка в коде:

Снимок экрана 2018-01-30 в 16.17.36.png

При привычной компиляции кода можно легко найти ошибку, так как будет указано что не так и в какой строчке кода. Но, при запуске смарт-контракта с ошибкой, не указывается место и причина ошибки, а чаще всего она находится именно в коде.

Отметим еще один полезный инструмент - Truffle

Truffle - один из наиболее популярных фреймворков со следующими характеристиками:

Плюсы:

  • Позволяет дебажить

  • Есть собственный Testnet

Минусы:

  • Дебаггер находится в консоли, что крайне неудобно

  • После того, как вы скомпилировали смарт-контракты и сделали миграцию в Testnet, необходимо удалить все из билда, поскольку если вы начнете работать над новым смарт-контрактом, старые данные копируются в новый смарт-контракт

  • Постоянно не хватает газа

Также выделим такой инструмент, как Metamask:

Снимок экрана 2018-01-30 в 17.18.32.png

Metamask - это плагин, в основном, для Chrome. Metamask подключается к ноде Infura и нет необходимости иметь собственную ноду для выполнения смарт-контрактов.

Но, когда работаешь с Testnet и отправляешь что-то через Metamask, очень скоро можно столкнуться со следующей ошибкой:

Снимок экрана 2018-01-30 в 17.26.17.png

Когда вы отправляете транзакции, есть такая переменная как nonce, которая как счетчик постоянно увеличивается (защита от replay атак), и в какой-то момент данные с этого счетчика расходятся. Единственный выход на сегодняшний день - это удалить и переустановить Metamask. Над этой проблемой работают, в ближайшем будущем она решится.

Спикер представил основные инструменты для разработки на Ethereum, которые он лично протестировал. Это лишь некоторые пункты из постоянно обновляющегося списка инструментов для работы на платформе.


Comments 1