Вчера я закончил программировать свое первое блокчейн-приложение (DAPP — децентрализованное приложение). Это был проект выходного дня, главной целью которого было сделать из меня блокчейн-разработчика. В этой статье описывается TokenCreator и мои знания в качестве программиста блокчейна: инструменты, тестирование, газовая оптимизация и способ подключения кошелька к вашему приложению web3.

Это техническая статья, предназначенная для разработчиков. Github Repo здесь.

Самое главное: TokenCreator.

Цель

Я закончил прототип и отправил его на Celo’s Make Crypto Mobile Хакатон. Я пришел из валютного пространства сообщества и поддерживаю миссию Celo по расширению доступа к финансовым услугам. По сути, Celo — это клон Ethereum с очень низкой комиссией за газ. У них также есть специальная функция, с помощью которой пользователи могут отправлять транзакции на номера мобильных телефонов и даже легкие клиенты для телефонов, поэтому они серьезно относятся к децентрализации. Они также много инвестируют в свою экосистему, и я надеюсь, что выиграю приз в их хакатоне на 2,5 миллиона долларов США, так как это позволит мне сосредоточиться на TokenCreator в течение нескольких недель.

Я лично думаю, что следующей большой вещью в блокчейне будут токены, генерируемые пользователями, поскольку правила постепенно вступают в силу. Это означает, что консалтинговые и юридические фирмы смогут помочь компаниям собрать деньги для конкретных целей и выпустить токены. Стартапы начнут собирать деньги с помощью токенов медленным и устойчивым подходом, а не через ICO. И последнее, но не менее важное: общие валюты (например, массовая экономика), как мы надеемся, помогут сообществам увеличить благосостояние в бедных сообществах и странах.

Поэтому я решил, что проект будет TokenCreator. Это идеально вписывается в миссию Celo: сгенерированные токены можно использовать с мобильным кошельком Valora, поэтому мне не нужно было заботиться о конечных пользователях. TokenCreator — это в основном инструмент для эмитентов токенов (см. рис. 1).

Создатель токенов

TokenCreator создает токены, которые наследуют функции ERC20 (называемые SimpleTokens). Это проверка концепции, и дорожная карта включает в себя еще много разных и интересных функций токенов. Особенно интересными функциями будут лайфминтинг и автоматические выплаты (для токенов базового дохода). TokenCreator позволяет пользователям выпускать собственные токены ERC20 и владеть ими (см. рис. 2).

Простая концепция, идеальный учебный проект.

Вот что я узнал

Блокчейн предлагает отличный набор инструментов и среду

Разработка блокчейна довольно проста. Да, просто. По сравнению с разработкой приложений разработка Dapp довольно удобна для программиста, потому что вы создаете один единственный денежный лего мир в огромной экосистеме. Как вы видите выше, большая часть лего на месте:

  • Блокчейн — это бэкенд
  • Кошельки — это пользовательский интерфейс (для токенов).
  • Блокчейн повышает безопасность

У вас есть серверная часть, пользовательский интерфейс и безопасность. Вы можете сосредоточиться только на своей идее и сразу приступить к программированию. Как весело!

Поэтому, если у вас есть опыт разработки интерфейса и вы знаете что-то о программировании бэкенда, я настоятельно рекомендую начать. Начните именно здесь и пройдите свой путь через знаменитые CryptoZombies и как минимум половину курса Ethernaut.

Каска и эфиры рулят

Вам придется сделать выбор между Трюфелем и Каской, где Каска является более профессиональным вариантом. Вы можете запустить блокчейн Ethereum локально и даже клонировать фактическое состояние основной сети. Потрясающий!

Для веб-интерфейса вам придется сделать выбор между Web3Js и эфирами. Я снова остановился на более профессиональной версии.

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

Тестировать смарт-контракты несложно

Просто поразительно, как прекрасно работает инструментарий Hardhat и Waffle. Если вы когда-либо читали Чистый код, вы будете ❤ развивать блокчейн!

Тестовая разработка смарт-контрактов с Truffle и Hardhat.

Фронтенд блокчейна полностью занят React

Ну, не совсем… Одно маленькое сообщество на самом деле использует Vue. Несколько лет назад мне очень нравился React, но Vue быстрее, лучше, привлекательнее и проще. На самом деле забавно, что децентрализованный мир использует программное обеспечение Facebook (ну, теперь Meta). Все стартовые комплекты и учебные пособия сосредоточены на React, поэтому я действительно рассматривал возможность использования React только для того, чтобы позволить другим разработчикам блокчейна присоединиться к проекту. Поиск разработчиков является очень важным фактором для программных проектов!

В любом случае, я выбрал Vue, и он мне нравится. Я использовал маленький милый стартовый набор, который мне пришлось переделывать почти полностью, но это было хорошее начало.

Возможна оценка стоимости газа

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

TokenCreator сохраняет токены каждого пользователя в базе данных. Мне было интересно, лучше ли сохранить сопоставление массивов или массив, в котором я перебираю. Я исследовал часами безрезультатно, и поэтому я сделал тесты сам. У меня было два варианта: База данных 1 (с сохранением сопоставления адреса (пользователя) с массивом (токенов)) и База данных 2 (где я сохранил массив токенов и сопоставление адреса токена с данными токена) .

Вот код:

А вот вывод с использованием Hardhat-Gas-Reporter:

Удивительно, но база данных_1 дешевле. Но я сделал очень простые тесты и уверен, что есть лучшие способы сохранения данных.

Используйте web3modal для подключения кошелька к вашему приложению web3.

Вы также можете добавить кошельки самостоятельно, но Web3Modal на самом деле полезен.

Заключение

Кодирование в блокчейне не так сложно, как я ожидал. Если вы боитесь прыгнуть, я могу только призвать вас начать прямо сейчас. Если вам нужна помощь, напишите мне.

Об авторе

Валентин Зеехаузен — руководитель проектов во Франкфуртском школьном блокчейн-центре (FSBC) и главный операционный директор Digital Euro Association (DEA). Его компания Open Currency Technology создает приложения, которые управляют токенизацией всего.