Взаимодействие с Moonbeam с помощью Truffle

Moonbeam in Russian
4 min readApr 9, 2021

--

Вступление

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

Примечание:

Это руководство было создано с использованием версии v3 Moonbase Alpha. Платформа Moonbeam и компоненты Frontier на которые она опирается для совместимости с Ethereum на основе субстратов все еще находятся в очень активной разработке. Примеры в этом руководстве предполагают, что у Вас есть среда на основе Ubuntu 18.04 и ее необходимо, соответствующим образом, адаптировать для MacOS или Windows.

Для этого руководства Вам понадобится нода Moonbeam, работающая в режиме — dev.Это можно сделать, выполнив шаги, подробно описанные здесь, или используя плагин Moonbeam Truffle, который мы будем использовать в примерах этого руководства.

Проверка предварительных условий

Во-первых, нам нужно установить Node.js (мы будем использовать v15.x) и менеджер пакетов npm. Вы можете сделать это, запустив в своем терминале:

curl -sL https://deb.nodesource.com/setup_15.x | sudo -E bash -sudo apt install -y nodejs

Мы можем убедиться, что все установлено правильно, запросив версию для каждого пакета:

node -vnpm -v

Кроме того, Вы можете установить Truffle глобально, запустив:

npm install -g truffle

На дату публикации этого руководства использовались версии 15.2.1, 7.0.8 и 5.1.52 соответственно.

Примечание:

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

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

Чтобы облегчить процесс знакомства с Truffle, мы выпустили Moonbeam Truffle Box. Это обеспечивает стандартную настройку для ускорения процесса размещения контрактов на Moonbeam. Чтобы узнать больше о Moonbeam Truffle box, Vы можете перейти по этой ссылке.

Чтобы загрузить Moonbeam Truffle box, следуйте этим инструкциям. Оказавшись внутри директории, давайте взглянем на файл truffle-config.js (для целей этого руководства некоторая информация была удалена):

const HDWalletProvider = require('@truffle/hdwallet-provider');
// Standalone Development Node Private Key
const privateKeyDev =
'99B3C12287537E38C90A9219D4CB074A89A16E9CDB20BF85728EBD97C343E342';
//...
module.exports = {
networks: {
dev: {
provider: () => {
...
return new HDWalletProvider(privateKeyDev, 'http://localhost:9933/')
},
network_id: 1281,
},
//...
},
plugins: ['moonbeam-truffle-plugin']
};

Обратите внимание, что мы используем HD-Wallet-Provider от Truffle в качестве иерархического детерминированного кошелька. Кроме того, мы определили сеть разработчиков, которая указывает на URL-адрес поставщика ноды, и в нее включен закрытый ключ учетной записи разработчика, в которой хранятся все средства в ноде.

Запуск автономной TestNet

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

Чтобы запустить ноду Moonbeam в Вашей локальной среде, нам нужно сначала загрузить соответствующий образ Docker:

truffle run moonbeam install

После загрузки мы можем приступить к запуску ноды с помощью следующей команды:

truffle run moonbeam start

Вы увидите сообщение о том, что нода запущена, а затем обе доступные конечные ноды.

Когда Вы закончите использовать свой автономный узел Moonbeam, можете запустить следующие строки, чтобы остановить его и удалить образ Docker, если это так:

truffle run moonbeam stop && \
truffle run moonbeam remove

Файл контракта

Также в комплект поставки Truffle Box входит контракт с токеном ERC-20:

pragma solidity ^0.7.5;

// Import OpenZeppelin Contract
import "@openzeppelin/contracts/token/ERC20/ERC20.sol";

// This ERC-20 contract mints the specified amount of tokens to the contract creator.
contract MyToken is ERC20 {
constructor(uint256 initialSupply) ERC20("MyToken", "MYTOK")
{
_mint(msg.sender, initialSupply);
}
}

Это простой контракт ERC-20, основанный на контракте OpenZepplin ERC-20. Он создает MyToken с символом MYTOK и стандартными 18 десятичными знаками. Кроме того, он назначает созданную начальную поставку токенов создателю контракта.

Если мы посмотрим на скрипт миграции контракта Truffle в migrations/2_deploy_contracts.js, он содержит следующее:

var MyToken = artifacts.require('MyToken');

module.exports = function (deployer) {
deployer.deploy(MyToken, '8000000000000000000000000');
};

«8000000000000000000000000» — это количество токенов, которые первоначально будут произведены(mint) с контрактом, т. Е. 8 миллионов с 18 знаками после запятой.

Размещение контракта на Moonbeam с использованием Truffle

Прежде чем мы сможем развернуть наши контракты, мы должны их скомпилировать. (Мы говорим «контракты», потому что обычные размещения Truffle включают контракт Migrations.sol.) Вы можете сделать это с помощью следующей команды:

truffle compile

В случае успеха Вы должны увидеть следующий результат:

Теперь мы готовы разместить скомпилированные контракты. Сделать это можно с помощью следующей команды:

truffle migrate --network dev

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

После того, как Вы выполните руководство по MetaMask и руководство по Remix, Вы сможете взять развернутый адрес контракта, который возвращается и загрузить его в MetaMask или Remix.

Обратная связь

Это простой пример, но он дает контекст того, как Вы можете начать работать с Moonbeam и опробовать его функции совместимости с Ethereum. Нам интересно узнать о Вашем опыте выполнения шагов, описанных в этом руководстве, или о Вашем опыте использования других инструментов на основе Ethereum с Moonbeam. Присоединяйтесь к нам в Discord Moonbeam. Мы будем рады услышать Ваши отзывы о Moonbeam и ответить на любые Ваши вопросы.

Подготовлено при участии GameOver#9212, Lyn.

--

--

Moonbeam in Russian
Moonbeam in Russian

Written by Moonbeam in Russian

Moonbeam — это совместимая с Ethereum платформа смарт-контрактов на Polkadot

No responses yet