Interakcja Moonbeam przy użyciu Truffle
Wprowadzenie
W tym przewodniku przedstawimy proces wdrażania smart contract opartego o język Solidity w node Moonbeam za pomocą Truffle, powszechnie używanego narzędzia programistycznego dla smart contract w Ethereum. Biorąc pod uwagę cechy kompatybilności Moonbeam z Ethereum, Truffle może być używany bezpośrednio z node Moonbeam.
Ten samouczek został utworzony przy użyciu tagu tutorial-v7, który jest oparty na wersji 0.7.0 Moonbase Alpha. Platforma Moonbeam i komponenty Frontier, na których opiera się w celu zapewnienia kompatybilności z Ethereum opartej na Substrate, są nadal bardzo aktywnie rozwijane. W przykładach w tym przewodniku założono, że masz środowisko oparte na systemie MacOS lub Ubuntu 18.04 i należy je odpowiednio dostosować do systemu Windows.
W tym przewodniku będziesz potrzebował węzła programistycznego Moonbeam działającego w trybie — dev. Można to zrobić, wykonując kroki opisane tutaj lub używając wtyczki Moonbeam Truffle, której użyjemy w przykładach tego samouczka.
Wstępne Wymagania
Musimy zainstalować Node.js (będziemy używać v15.x) i menedżera pakietów npm. Możesz pobrać bezpośrednio z Node.js lub w swoim terminalu:
Ubuntu:
curl -sL https://deb.nodesource.com/setup_15.x | sudo -E bash -
sudo apt install -y nodejs
MacOS:
# You can use homebrew (https://docs.brew.sh/Installation)
brew install node # Or you can use nvm (https://github.com/nvm-sh/nvm)
nvm install node
Możemy sprawdzić, czy wszystko jest poprawnie zainstalowane, odpytując wersję dla każdego pakietu:
node -vnpm -v
Ponadto możesz globalnie zainstalować Truffle, uruchamiając:
npm install -g truffle
Na dzień publikacji tego przewodnika używane były wersje odpowiednio 15.12.0, 7.6.3 i 5.2.4.
W poniższych przykładach nie musisz mieć zainstalowanego programu Truffle globalnie, ponieważ jest on zawarty jako zależność od Moonbeam Truffle. Jeśli wolisz, możesz uruchomić npx truffle lub ./node_modules/.bin/truffle zamiast truffle.
Rozpoczęcie Pracy z Narzędziem Truffle
Aby ułatwić rozpoczęcie pracy z Truffle, udostępniliśmy narzędzie Moonbeam Truffle. Zapewnia to szablonową konfigurację, która przyspiesza proces wdrażania kontraktów na Moonbeam. Aby dowiedzieć się więcej o pudełku, możesz odwiedzić ten link.
Aby pobrać pudełko Moonbeam Truffle, postępuj zgodnie z poniższymi instrukcjami. Po wejściu do katalogu rzućmy okiem na plik truffle-config.js (na potrzeby tego przewodnika usunięto niektóre informacje):
const HDWalletProvider = require('@truffle/hdwallet-provider');
// Moonbeam 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']
};
Zauważ, że jako hierarchiczny portfel deterministyczny używamy HD-Wallet-Provider firmy Truffle. Ponadto zdefiniowaliśmy sieć dev, która wskazuje adres URL dostawcy node development, a także klucz prywatny konta developerskiego, na którym znajdują się wszystkie środki w node deweloperskim.
Uruchomienie Node Development
Aby skonfigurować node development Moonbeam, możesz skorzystać z tego samouczka. Cały proces trwa około 40 minut i musisz zainstalować Substrate i wszystkie jego zależności. Wtyczka Moonbeam Truffle umożliwia znacznie szybsze rozpoczęcie pracy z węzłem programistycznym, a jedynym wymaganiem jest posiadanie zainstalowanego Dockera (w momencie pisania tego tekstu używano Dockera w wersji 19.03.6).
Aby uruchomić węzeł programistyczny Moonbeam w środowisku lokalnym, musimy najpierw pobrać odpowiedni obraz Dockera:
truffle run moonbeam install
Po pobraniu możemy przystąpić do uruchomienia local node za pomocą następującego polecenia:
truffle run moonbeam start
Zobaczysz komunikat wskazujący, że węzeł został uruchomiony, a następnie oba dostępne punkty końcowe.
Po zakończeniu korzystania z node development Moonbeam możesz uruchomić następujące polecenie, aby go zatrzymać i usunąć obraz Dockera, jeśli taki występuje:
truffle run moonbeam stop && \
truffle run moonbeam remove
The Contract File
Istnieje również token ERC-20 kontrakt dołączony do narzędzia Truffle:
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);
}
}
Jest to prosty ERC-20 kontrakt oparty na umowie OpenZepplin ERC-20. Tworzy „MyToken” z symbolem „MYTOK” i standardowymi 18 miejscami po przecinku. Ponadto przypisuje utworzoną początkową dostawę tokenów do twórcy kontraktu. Jeśli przyjrzymy się skryptowi migracji kontraktu Truffle w pliku migrations/2_deploy_contracts.js, zawiera on:
var MyToken = artifacts.require('MyToken'); module.exports = function (deployer) {
deployer.deploy(MyToken, '8000000000000000000000000');
};
„800000000000000000000000000” to liczba tokenów do wytworzenia na początku zgodnie z kontraktem, czyli 8 milionów z 18 miejscami po przecinku.
Umieszczanie Kontraktu do Moonbeam z Urzyciem Narzędzia Truffle
Zanim będziemy mogli wdrożyć nasze kontrakty, musimy je skompilować. (Mówimy „kontrakty”, ponieważ normalne wdrożenia Truffle zawierają kontrakt Migrations.sol.) Możesz to zrobić za pomocą następującego polecenia:
truffle compile
Jeśli się powiedzie, powinieneś zobaczyć dane wyjściowe takie jak:
Teraz jesteśmy gotowi do wdrożenia skompilowanych kontraktów. Możesz to zrobić za pomocą następującego polecenia:
truffle migrate --network dev
Jeśli się powiedzie, zobaczysz akcje wdrażania, w tym adres wdrożonej umowy:
Po zastosowaniu się do przewodnika MetaMask i Remix przewodnika, będziesz mógł pobrać zwrócony adres wdrożonej umowy i załadować go do MetaMask lub Remix.