Interakcja Moonbeam przy użyciu Truffle

Lucas | Eaglenode
4 min readJun 12, 2021

--

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.

--

--

No responses yet