Представляем Moonbeam Truffle Box

Alexey S.
6 min readFeb 18, 2021

Оригинальный текст статьи https://medium.com/moonbeam-network/moonbeam-truffle-box-a-boilerplate-setup-to-get-started-deploying-smart-contracts-on-moonbeam-5f911fa584de.

Шаблонная настройка для быстрого развертывания смарт-контрактов на Moonbeam.

Одна из наиболее важных вещей в развивающемся блокчейне — это не технология сама по себе, но также доступные, разработанные инструменты вокруг нее.

Например, в экосистеме Ethereum разработчики имеют доступ к широкому спектру инструментов, таких как MetaMask, Remix и Truffle, что дает возможность упрощения внесения изменений при разработке на Ethereum. Это может быть одной из причин, почему сообщество разработчиков Ethereum почти в четыре раза больше, чем у любой другой крипто экосистемы, по данным Electric Capital из данного отчета.

Цель Moonbeam — создать совместимую с Ethereum среду на Polkadot, где можно будет использовать все привычные инструменты. И одним из таких часто используемых инструментов является Truffle. Truffle — это среда разработки, которая также имеет фреймворк для тестирования (с Mocha и Chai) и asset pipeline (файлопровод) для Ethereum, а теперь и Polkadot благодаря Moonbeam. Вы можете узнать больше обо всех инструментах, доступных в Truffle, в их репозитории на GitHub.

В рамках непрерывной поддержки разработчиков, которые хотят начать работать над Moonbeam, мы запустили Moonbeam Truffle box. В Truffle Box разработчики найдут шаблонную настройку Truffle для быстрого развертывания смарт-контрактов на Moonbeam. Truffle Box по умолчанию имеет две сети: dev (для автономной ноды) и moonbase (Moonbeam TestNet). В качестве примера также содержится токен-контракт ERC-20 и простой тестовый скрипт. Если вы имеете опыт работы с Truffle, данная установка будет вам знакома

В дополнение к Moonbeam Truffle box мы также включили плагин Moonbeam Truffle, который предоставляет некоторое количество команд для запуска автономной ноды в вашей локальной среде в виде образа Docker. Это ликвидирует процесс настройки локальной ноды, который может занять до 40 минут при использовании двоичного файла, а также является быстрым и простым решением для начала разработки в вашей локальной среде.

Начало работы

Чтобы начать работу с Moonbeam Truffle box, если Truffle установлен глобально, вы можете выполнить:

mkdir moonbeam-truffle-box && cd moonbeam-truffle-box
truffle unbox PureStake/moonbeam-truffle-box

Чтобы установить Truffle глобально, вы можете выполнить следующую команду:

npm install -g truffle

Если вы не хотите делать глобальную установку, в готовом поставляемом Moonbeam Truffle box имеется локальная зависимость, которую можно использовать. В таком случае вы можете клонировать следующий репозиторий:

git clone https://github.com/PureStake/moonbeam-truffle-box
cd moonbeam-truffle-box

Следующим шагом будет установка всех зависимостей, для этого выполним следующую команду:

npm install

Это все необходимые условия, которые вам нужны, чтобы начать использовать Moonbeam Truffle box.

Основные функциональные возможности

Как уже говорилось ранее, на момент написания статьи Moonbeam Truffle box поставляется с двумя сетями, предварительно настроенными в файле truffle-config.js. Приватный ключ учетной записи genesis для автономной ноды также добавлен, а адрес, связанный с этим ключом, содержит все токены в этой среде разработки. Для развертывания в Moonbase Alpha TestNet вам необходимо предоставить приватный ключ адреса, на котором хранятся средства. Для этого вы можете создать учетную запись в MetaMask, пополнить ее с помощью TestNet faucet и экспортировать ее приватный ключ.

const PrivateKeyProvider = require('./private-provider');
// Standalone Development Node Private Key
const privateKeyDev =
'99B3C12287537E38C90A9219D4CB074A89A16E9CDB20BF85728EBD97C343E342';
// Moonbase Alpha Private Key --> Измените на свой ПК (приватный ключ)
const privateKeyMoonbase =
'';
module.exports = {
networks: {
dev: {
provider: () => {
return new PrivateKeyProvider(privateKeyDev, 'http://localhost:9933/', 43)
},
network_id: 43,
},
moonbase: {
provider: () => {
return new PrivateKeyProvider(privateKeyMoonbase, 'https://rpc.testnet.moonbeam.network', 43)
},
network_id: 43,
},
},
plugins: ['moonbeam-truffle-plugin']
};

Если вы знакомы с Truffle, то, возможно, заметили, что мы используем кастомный провайдер, написанный нами самостоятельно, а не стоковый, как, например, hdwallet-provider. Этот кастомный провайдер по-прежнему использует стандартные библиотеки, такие как web3-provider-engine и ethereumjs-wallet. Причина этого заключается в том, что наш кастомный ID цепочки не был включен в библиотеку, используемую для подписания транзакций. Таким образом, подпись недействительна, поскольку ID цепочки в blob объекте транзакции отсутствует, и транзакция отклоняется.

Как и при использовании Truffle в любой сети Ethernet, вы можете запускать обычные команды для компиляции, тестирования и развертывания смарт-контрактов в Moonbeam. Например, используя прилагаемый токен-контракт ERC20, вы можете попробовать следующие команды:

# компилирует контракт
./node_modules/.bin/truffle compile
# запускает тесты из одноименной папки
./node_modules/.bin/truffle test #run the tests included
# развертывается в указанной сети
./node_modules/.bin/truffle migrate --network network_name

Если Truffle у вас установлен глобально, вы можете удалить ./node_modules/.bin/ из команд. В зависимости от сети, в которой вы хотите развернуть контракты, вам нужно заменить network_name на dev (для перевода на автономную ноду), или moonbase (для перевода на TestNet).

Плагин Moonbeam Truffle

Чтобы настроить автономную ноду Moonbeam, вы можете использовать это руководство. Этот процесс занимает в общей сложности около 40 минут. Вам потребуется установить Substrate и все его зависимости. Плагин Moonbeam Truffle предоставляет возможность начать работу с автономной нодой гораздо быстрее, единственное требование — установить docker (на момент написания статьи использовалась версия docker 19.03.6). Чтобы загрузить образ docker, выполните следующую строку:

./node_modules/.bin/truffle run moonbeam install

Затем вам будет доступен набор команд для управления нодой, включенных в образ Docker:

./node_modules/.bin/truffle run moonbeam start
./node_modules/.bin/truffle run moonbeam status
./node_modules/.bin/truffle run moonbeam pause
./node_modules/.bin/truffle run moonbeam unpause
./node_modules/.bin/truffle run moonbeam stop
./node_modules/.bin/truffle run moonbeam remove

Каждая из приведенных выше команд выполняет следующее действие:

  • Start: запускает автономную ноду Moonbeam, которая предоставляет два эндпоинта RPC: — HTTP: http://127.0.0.1:9933 — WS: ws://127.0.0.1:9944
  • Status: сообщает пользователю, запущена ли автономная нода Moonbeam
  • Pause: приостанавливает работу автономной ноды, если она запущена
  • Unpause: запуск автономной ноды, если она приостановлена
  • Stop: останавливает автономную ноду, если она запущен, а также удаляет контейнер Docker
  • Remove: удаляет purestake/moonbase образ Docker

Выходные данные этих команд можно увидеть на следующем скриншоте:

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

Тестирование Moonbeam Truffle Box

Box имеет минимальные требования для начала работы Давайте сначала скомпилируем контракты, запустив:

./node_modules/.bin/truffle compile

Помните, что если Truffle у вас установлен глобально, вы можете пропустить команду./node_modules/.bin/ .

После компиляции контракта мы можем запустить базовый тест, включенный в box (обратите внимание, что для этих тестов используется Ganache, а не автономная нода Moonbeam):

./node_modules/.bin/truffle test

После запуска команды plugin install, которая загружает образ Docker автономной ноды Moonbeam, давайте запустим локальную ноду и развернем токен-контракт в нашей локальной среде:

./node_modules/.bin/truffle run moonbeam start
./node_modules/.bin/truffle migrate --network dev

А теперь мы можем развернуть наш токен-контракт на Moonbase Alpha, но сначала убедитесь, что вы установили приватный ключ для средств в файле truffle-config.js. Как только приватный ключ установлен, мы можем выполнить команду migrate, ведущую на TestNet (нам нужно передать флаг — reset, т.к. и сеть development, и Moonbase Alpha имеют один и тот же ID цепочки).

./node_modules/.bin/truffle migrate --network moonbase --reset

На этом все, вы использовали Moonbeam Truffle box для развертывания простого ERC20 токен-контракта на автономной ноде Moonbeam и Moonbase Alpha.

Связаться с нами

Если у вас есть какой-либо фидбек относительно Moonbeam Truffle Box или любой другой темы, связанной с Moonbeam, зайдите на наш веб-сайт или свяжитесь с нами через наш официальный сервер разработки Discord.

Оригинальный текст статьи смотрите тут

--

--