Взаимодействие Moonbeam с помощью Remix
В этом руководстве рассматривается процесс создания и размещения смарт-контракта на основе Solidity на ноде Moonbeam с использованием Remix IDE. Remix — одна из часто используемых сред разработки для смарт-контрактов на Ethereum. Учитывая особенности совместимости Moonbeam с Ethereum, Remix можно использовать напрямую с нодой Moonbeam.
Примечание:
Это руководство было создано с использованием версии v3 Moonbase Alpha. Платформа Moonbeam и компоненты Frontier, на которые она опирается для совместимости с Ethereum на основе субстратов, все еще находятся в очень активной разработке.
В этом руководстве предполагается, что у Вас уже есть нода Moonbeam, работающий в режиме — dev, и что у вас установлен и настроен MetaMask, для использования с этой нодой . Вы можете найти инструкции по запуску ноды Moonbeam здесь и инструкции по подключению к нему MetaMask здесь.
Проверка предварительных условий
Если Вы следовали приведенным ранее пунктам, у Вас уже должна быть нода Moonbeam, производящая блоки, которые выглядят следующим образом:
И у Вас должен быть установлен MetaMask, подключенный к Вашей ноде Moonbeam, по крайней мере, с одной учетной записью у которой есть баланс. Это должно выглядеть примерно так:
Примечание:
Убедитесь, что Вы подключены к своей ноде Moonbeam, а не к другой сети!
Начало работы с Remix
Теперь давайте запустим Remix, чтобы использовать более продвинутые функции в Moonbeam.
Запустите Remix, перейдя на https://remix.ethereum.org/. На главном экране в разделе Environments выберите Solidity, чтобы настроить Remix для разработки Solidity, затем перейдите к вкладке File Explorer:
Мы создадим новый файл для сохранения смарт-контракта Solidity. Нажмите кнопку + под File Explorer и введите имя «MyToken.sol» во всплывающем окне:
Затем давайте вставим следующий смарт-контракт в открывшуюся вкладку редактора:
pragma solidity ^0.7.0;
import 'https://github.com/OpenZeppelin/openzeppelin-contracts/blob/release-v3.2.0-solc-0.7/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, основанный на текущем шаблоне Open Zeppelin ERC-20. Он создает MyToken с символом MYTOK и создает (mints) всю первоначальную поставку создателю контракта.
После того, как Вы вставили контракт в редактор, он должен выглядеть так:
Теперь перейдите к параметру на боковой панели компиляции и нажмите кнопку «Compile MyToken.sol»(Compile MyToken.sol):
Вы увидите, как Remix загрузит все Open Zeppelin и скомпилирует контракт.
Развертывание контракта на Moonbeam с помощью Remix
Теперь мы можем развернуть контракт, перейдя к опции боковой панели «Развертывание». Вам необходимо изменить верхнее раскрывающееся меню «Среда»(Environment) с «Виртуальная машина JavaScript»(JavaScript VM) на «Внедренный Web3»(Injected Web3). Remix предлагает использовать MetaMask, который будет указывать на Вашу ноду Moonbeam. Как только Вы выберете это, Вам будет предложено разрешить Remix подключиться к Вашей учетной записи MetaMask.
Нажмите «Далее» (Next) в Metamask, чтобы позволить Remix получить доступ к выбранной учетной записи.
Вернувшись к Remix, Вы должны увидеть, что учетная запись, которую вы хотите использовать для размещения, теперь управляется MetaMask. Рядом с кнопкой «Развернуть» (Deploy) укажите начальный запас в 8 миллионов токенов. Поскольку в этом контракте по умолчанию используется 18 знаков после запятой, значение для ввода в поле составляет 8000000000000000000000000
.
После того, как Вы ввели это значение, выберите «Развернуть»(Deploy).
В MetaMask вам будет предложено подтвердить транзакцию размещения контракта.
Примечание:
Если у Вас возникли проблемы с развертыванием какого-либо конкретного контракта, Вы можете попробовать вручную увеличить лимит газа. Вы можете сделать это в разделе «Настройки»(Settings) -> «Дополнительно»(Advanced) -> «Расширенное управление газом»(Advanced Gas Controls)= ВКЛ(ON).
После нажатия кнопки подтверждения и завершения размещения Вы увидите транзакцию, указанную в MetaMask. Контракт появится в разделе «Развернутые контракты в ремиксе»(Deployed Contracts in Remix).
После размещения контракта вы можете взаимодействовать с ним из Remix.
Разверните контракт в разделе «Развернутые контракты»(Deployed Contracts). Нажмите по имени, символу и totalSupply должен вернуть «MyToken», «MYTOK» и «8000000000000000000000000» соответственно. Если Вы скопируете адрес, с которого Вы развернули контракт, и вставите его в поле balanceOf, Вы должны увидеть, что баланс ERC20 полностью принадлежит этому пользователю. Скопируйте адрес контракта, нажав кнопку рядом с названием и адресом контракта.
Взаимодействие с ERC-20 на основе Moonbeam от MetaMask
Теперь откройте MetaMask, чтобы добавить недавно развернутые токены ERC-20. Перед этим убедитесь, что Вы скопировали адрес контракта из Remix. Вернувшись в MetaMask, нажмите «Добавить токен», как показано ниже. Убедитесь, что Вы находитесь в учетной записи, в которой был развернут контракт токена.
Вставьте скопированный адрес контракта в поле «Custom Token». Поля «Символ токена»(Token Symbol) и «Десятичные дроби точности»(Decimals of Precision) должны быть заполнены автоматически.
После нажатия «Далее»(Next) Вам нужно будет подтвердить, что Вы хотите добавить эти токены в свою учетную запись MetaMask. Нажмите «Добавить токен»(Add Token), и Вы должны увидеть баланс в 8 миллионов MyTokens в MetaMask:
Теперь мы можем отправить некоторые из этих токенов ERC-20 в другую учетную запись, которую мы настроили в MetaMask. Нажмите «Отправить»(send), чтобы начать передачу 500 MyTokens и выберите конечную учетную запись.
После нажатия «Далее» (next) Вас попросят подтвердить (аналогично тому, что показано на рисунке ниже).
Нажмите «Подтвердить»(Confirm), и после завершения транзакции Вы увидите подтверждение и уменьшение баланса учетной записи MyToken со счета отправителя в MetaMask:
Если у Вас есть учетная запись, на которую Вы отправили токены, можете добавить актив токена, чтобы убедиться, что перевод прибыл.
Обратная связь
Это простой пример, но он дает контекст того, как Вы можете начать работать с Moonbeam и опробовать его функции совместимости с Ethereum. Нам интересно узнать о Вашем опыте выполнения шагов, описанных в этом руководстве, или о Вашем опыте использования других инструментов на основе Ethereum с Moonbeam. Присоединяйтесь к нам в Discord Moonbeam. Мы будем рады услышать Ваши отзывы о Moonbeam и ответить на любые Ваши вопросы.
Подготовлено при участии GameOver#9212, Lyn.