Solidityで独自トークンを発行し、Faucetアプリを作る方法①

Solidityで独自トークンを発行し、Faucetアプリを作る方法①
ゆるり
ゆるり

独自トークンの配布アプリ作る!

博士
博士

急にどうしたのじゃΣ(・ω・ノ)ノ!

ゆるり
ゆるり

マナブさんブログみて、やってみたくなった!!

博士
博士

プログラミングのプの字も知らないのに、やる気満々じゃな。

しかもブログで参考にされていた記事は全文英語じゃのう。

膝がガクガクしておるが…

ゆるり
ゆるり

うう…、

わからない単語だけかいつまんで調べていけば

きっと何とかなる!

博士
博士

・・・・・・・・。

今回の記事ではSolidityで独自トークンを発行するまでを解説していくのじゃ。

環境
  • OS:Windows 10/バージョン 21H2 (OS ビルド 19044.1706)
  • プロセッサ:Intel(R) Core(TM) i7-7500U
  • メモリ:DDR4 8GB
  • マザーボード:L-NSS172-L



MetaMaskにRinkebyテストネットワークを設定

博士
博士

では始めるのじゃ。

まずはMetaMaskにRinkebyテストネットワークを設定しておくのじゃ。




●図の順番にクリック↓

MetaMaskにRinkebyテストネットワークを設定




●↓下図のようにRinkebyテストネットワークが選択できるようになるので、選択

MetaMaskにRinkebyテストネットワークを設定



MetamaskにFaucetアプリ用のアカウントを作成

博士
博士

わかりやすいようにMetamaskにFaucetアプリ用のアカウントを作っておくのじゃ。
アカウント名は「Faucetオーナー」にするのじゃ。

みんなは自分のわかりやすい名前にするといいのじゃ。




●↓画面右上のアイコンをクリック後、「アカウントを作成」をクリック

MetamaskにFaucet用のアカウントを作成



Rinkebyテストネット用のETH(イーサ)を無料で取得する

博士
博士

スマートコントラクト作成時にガス代が必要なので、Rinkebyテストネット用のETH(イーサ)を無料で取得するのじゃ。

下記リンクをクリックするのじゃ。

Rinkebyテストネット用のETH(イーサ)



●「Connect wallet」をクリック↓

Rinkebyテストネット用のETH(イーサ)を無料で取得する


●Metamask をクリック↓

Rinkebyテストネット用のETH(イーサ)を無料で取得する


●Metamaskが立ち上がるので、前の目次で作った「Faucetオーナー」というアカウントを選択し、「次へ」をクリック↓

Rinkebyテストネット用のETH(イーサ)を無料で取得する


●「接続」をクリック↓

Rinkebyテストネット用のETH(イーサ)を無料で取得する


●黄色い四角「Ethereum Rinkeby」と「Wallet address」が「Faucetオーナー」アカウントのアドレスになっているか確認してから、赤い四角を上から順番にクリック↓

Rinkebyテストネット用のETH(イーサ)を無料で取得する


●下記画面になれば成功↓

Rinkebyテストネット用のETH(イーサ)を無料で取得する

※なかなか上記画像にならない場合
「Injected Web3」が選択できない場合】を試してみる


博士
博士

Metamaskの「Faucetオーナー」アドレスを確認してみると、0.1ETHが入っているはずじゃ。

ちなみにこのETH(イーサ)はOpenSeaのテストネットなどでしか使えないので、喜びすぎには気を付けるのじゃ。



トークン用のスマートコントラクトを作り、コンパイルする

博士
博士

トークン用のスマートコントラクトを作ってコンパイル(機械語に翻訳)していくのじゃ。

Create your own BEP20 tokens」の記事では

『BEP20 token』を発行する方法が載っているが、

これをマナブログと同じ

『ERC20 token』(イーサリアムブロックチェーン上で利用できるトークン規格)にしてトークンを発行してみるのじゃ




Remix – Ethereum IDE」にアクセスする
↓もし下記のような画面が出てきたら赤丸で囲った部分を押して消す。

トークン用のスマートコントラクトを作り、コンパイルする




●フォルダーを作る↓

トークン用のスマートコントラクトを作り、コンパイルする




●「FaucetApp」にする(自分のわかりやすい名前でOK)↓

トークン用のスマートコントラクトを作り、コンパイルする

※入力後に名前の変更をしたい場合は、変更したいファイルやフォルダの上で右クリックをすると「Rename」という項目があるので、そこをクリックすると変更できる↓

トークン用のスマートコントラクトを作り、コンパイルする




●ファイルの中にフォルダを作る
猫マークの2つ左隣のマーク「Create New File」をクリック。
今回は「ゆるりトークン」を作ろうと思っているので、まずトークン用のスマートコントラクトを作る。
だからファイル名は「YRRToken」にする↓

トークン用のスマートコントラクトを作り、コンパイルする
チェック

名前の後には、拡張子の「.sol」をつける
「Solidity言語で書かれたプログラム」という意味
Solidityはスマートコントラクトを記述するためのプログラミング言語

「YRRToken.sol」ファイルを作ると(クリックすると)、画面右側にスマートコントラクトを記述するためのスペースが表示される↓

トークン用のスマートコントラクトを作り、コンパイルする




●一度「Remix – Ethereum IDE」を離れ、ブラウザでGist linkにアクセスすると「SampleBEP20Token.sol」というページが表示されるので、「Raw」をクリックし表示されたページを全選択してコピー↓

トークン用のスマートコントラクトを作り、コンパイルする


●それを先ほど「Remix – Ethereum IDE」で作った「YRRToken.sol」にペースト↓

トークン用のスマートコントラクトを作り、コンパイルする




そして「マナブログ」と同じトークンを発行できるようにアレンジしていく。

「マナブログ」内に記載されていた「トークン発行用のスマートコントラクト」

※ちなみに今回は学習のために「ライブラリなしでトークン発行する方法」で行っている。




マナブログのコードを参考に、Remix – Ethereum IDE画面の下の赤い四角で囲った8か所を変更

トークン用のスマートコントラクトを作り、コンパイルする
  • 「UNLISCENSED」→「MIT」
  • 「0.8.4;」→「^0.8.2;
  • 「BEP20」→「ERC20
  • 「SampleBEP20Token」→自分の好きなトークン名
  • 「string public symbol」→好きなトークン名を記号っぽく呼ぶためのものなのだろう。それっぽい感じのものにする




●番号順にクリックしていき、画面右側の黄色下線「pragma solidity」と同じバージョンの数字に変更↓※②はクリックしなくて大丈夫_(._.)_

トークン用のスマートコントラクトを作り、コンパイルする




●コンパイル↓

トークン用のスマートコントラクトを作り、コンパイルする

するとチェックマークがつく↓

トークン用のスマートコントラクトを作り、コンパイルする

※もしここで、下図のようになってしまった人↓

トークン用のスマートコントラクトを作り、コンパイルする
ゆるり
ゆるり

色々調べてみたのですが、結局何が原因かはわかりませんでした。
今後、原因がわかり次第、追記させていただきたいと思います_(._.)_
なので、ここはそのままスルーしました。

結果、特に何もなく終わったので大丈夫でしょう。

博士
博士

素人は勢いで突き進むのじゃ。



Faucetアプリ用のスマートコントラクトを作り、コンパイルする

博士
博士

続いてFaucet(仮想通貨をもらえる)アプリ用のスマートコントラクトを作り、コンパイルしていくのじゃ




①「FILE EXPLORERS」を開く
②「FaucetApp」ファイルの中にまた新しいファイルを作成↓

Faucetアプリ用のスマートコントラクトを作り、コンパイルする




●ファイル名を打ち込み「Enter」をクリック
Faucetアプリ用のスマートコントラクトなので「YRRTFaucet.sol」にする↓

Faucetアプリ用のスマートコントラクトを作り、コンパイルする
ゆるり
ゆるり

ゆるりはここで「.sol」をつけ忘れたため、先に進めない日を何日も費やしてしまいました。




●「YRRTFaucet.sol」が画面右側に出てくるので、そこに「マナブログ」に記載されているコードをコピペ↓

「マナブログ その②:Faucet用のスマートコントラクト」のコード

Faucetアプリ用のスマートコントラクトを作り、コンパイルする
↑コピペ後の画面です。




●コピペ後、3か所修正

30列目のMBTYRR

45と46列目のmbtyrr
※Solidityでは、Contract名や関数名、変数名などは大文字と小文字が区別されます。

Faucetアプリ用のスマートコントラクトを作り、コンパイルする




●画面右側の黄色下線部に注意して「pragma solidity」と同じバージョン(0.8.4)の数字に変更↓

Faucetアプリ用のスマートコントラクトを作り、コンパイルする




●↓Compileボタン(黄色四角)をクリックし、チェックマークがつけば成功

Faucetアプリ用のスマートコントラクトを作り、コンパイルする



トークン用のスマートコントラクトをデプロイする(設定・配置する)

博士
博士

次に最初に作ったトークン用のスマートコントラクトをデプロイする(設定・配置する)のじゃ。デプロイすることで、スマートコントラクトが使える状態になるのじゃ。




●順番の通りに選択
④「Injected Web3」を選択するとMetamask 画面が立ち上がるので、この時MetaMaskで作成したアカウント(Faucetオーナー)にチェックマークをつけてから⑤をクリック↓

トークン用のスマートコントラクトをデプロイする(設定・配置する)
↑上記画像ではMetamaskのアカウントが「Faucetオーナー」にはなっていませんが、みなさんは「Faucetオーナー」を選択してください。
トークン用のスマートコントラクトをデプロイする(設定・配置する)
↑上記画像ではアカウントが「Faucetオーナー」にはなっていませんが、みなさんは「Faucetオーナー」になっているはずです。




●ENVIRONMENT項目が「Injected Web3」、そしてACCOUNT項目がMetaMaskの「Faucetオーナー」のアドレスになっているか確認↓

トークン用のスマートコントラクトをデプロイする(設定・配置する)
↑画像では「Faucetオーナー」のアドレスになっていませんが、みなさんの画面は「Faucetオーナー」のアドレスになっているはずです。



※「Injected Web3」が選択できない場合
①画面右上、Chromeの【拡張機能】をクリック
②「MetaMask」をクリック↓

「Rinkebyテストネットワーク」が選択できなかった時の設定方法

メタマスクアイコンにカーソルを持っていき、右クリックすると「サイトデータの読み取りと変更をおこないます」内の「すべてのサイト」を選択↓

「Rinkebyテストネットワーク」が選択できなかった時の設定方法


※それでも「Injected Web3」が選択できない場合
リロード(Windowsなら「F5」キー)を押してみてください。


●「Deploy」をクリックするとまたメタマスクが出てくるので、「確認」をクリック↓

トークン用のスマートコントラクトをデプロイする(設定・配置する)
↑画像では「Faucetオーナー」のアドレスになっていませんが、みなさんの画面は「Faucetオーナー」のアドレスになっているはずです。




下記画面が出てくる↓

トークン用のスマートコントラクトをデプロイする(設定・配置する)



Faucet用のスマートコントラクトをデプロイする(設定・配置する)

博士
博士

続いてFaucet用のスマートコントラクトをデプロイする(設定・配置する)のじゃ。




●画面の左下①をクリックし、作ったトークンのコントラクトアドレスをコピーする↓

Faucet用のスマートコントラクトをデプロイする(設定・配置する)

このトークンのコントラクトアドレスはまた後で使うので、わかりやすくメモ帳アプリなどにペーストしておく。




※もし①の部分が消えてしまっていたら、②の「view on etherscan」をクリック。
(②部分の画面が小さくて見づらかったら、赤下線部で画面の大きさを調節する)
すると下記画面が出てくるので、矢印部分をクリックしてコピーする↓

Faucet用のスマートコントラクトをデプロイする(設定・配置する)

コントラクトアドレスが出てこない場合はリロードすると出てくる。




①②で画面を開く
③「Injected Web3」になっているか
④MetaMaskのFaucetオーナーアドレスか
⑤「ERC20」ではなく「YRRFaucet(独自トークン名)」になっているか
⑥コピーしておいたトークンコントラクトアドレスとMetaMaskのFaucetオーナーアドレスをそれぞれペースト
⑦「transact」をクリック↓

Faucet用のスマートコントラクトをデプロイする(設定・配置する)




●↓メタマスクが表示されるので「確認」をクリック

Faucet用のスマートコントラクトをデプロイする(設定・配置する)

するとまた下記のような画面が出てくる↓



①の部分の下にもう一つ新たなコントラクトアドレスが追加されているので、そちらがフォーセットのコントラクトアドレス
ここもコピペしておく。
(また②の部分にも新たな「view on etherscan」が追加される)

↑上記画像は使い回し画像です_(._.)_



MetaMaskからコントラクトアドレスに独自トークンを送付

博士
博士

次はメタマスクを立ち上げ、
Faucetオーナーアドレスに独自トークンをインポートした後、
Faucetコントラクトアドレスに独自トークンを送付するのじゃ。


今はまだFauceアプリの中には何もトークンが入っていない状態なのじゃ。

だからこの工程でFauceアプリに1000000YRRトークンを送るのじゃ。




●「Faucetオーナー」アカウント画面の下の方にある、「トークンをインポート」をクリック↓

MetaMaskからコントラクトアドレスに独自トークンを送付




トークンコントラクトアドレスを貼り付ける
「トークンシンボル」と「トークンの少数桁数」が自動で表示されるので、トークンシンボルがちゃんと自分が作ったシンボルになっているか確認してから、一番下の「カスタムトークンを追加」ボタンをクリック↓

MetaMaskからコントラクトアドレスに独自トークンを送付




●「1000000 YRR」をクリック↓

MetaMaskからコントラクトアドレスに独自トークンを送付




●送金↓

MetaMaskからコントラクトアドレスに独自トークンを送付




●↓フォーセットのコントラクトアドレスをペースト

MetaMaskからコントラクトアドレスに独自トークンを送付




●「アセット」を自分のトークンに、「金額」では「最大」ボタンをクリックして「次へ」をクリック↓

MetaMaskからコントラクトアドレスに独自トークンを送付




●こんな感じの画面になったら「確認」をクリック↓
①がフォーセットコントラクトアドレス
②がトークンコントラクトアドレスになっていれば下にスクロールし「確認」をクリック

MetaMaskからコントラクトアドレスに独自トークンを送付
ゆるり
ゆるり

ゆるりは何度も間違えてやり直しをしているので、各アドレスや各アドレスのシンボルマークなどがその都度違っています_(._.)_




●しばらくすると、下記画像が出てくる↓

この画面をクリックすると「Etherscan」へ飛び、取引の内容が見れる




●「Faucetオーナー」アカウント画面で「YRR(独自トークン)」をクリックすると、下記画像が出てYRR(独自トークン)が0になっていることが確認できる。
また、その下の赤い四角をクリックすると、「移動元:0x274…E17A(Faucetオーナーアドレス)」→「移動先:0xd82…F8A1(Faucetのコントラクトアドレス)」へ1000000YRRが移動して、マイナスになっていることがわかる↓

MetaMaskからコントラクトアドレスに独自トークンを送付



博士
博士

以上がオーナーアドレスからFaucetのコントラクトアドレスに独自トークンを送付する方法なのじゃ。



ゆるり
ゆるり

ε=(・д・`*)フゥ…終わった

博士
博士

そして次は…

ゆるり
ゆるり

今日はもう満足したので、続きはまた今度で

|゚Д゚)ノ ジャ、マタ!!

博士
博士

君もお疲れ様なのじゃ(´・ω・)っ旦~

また次回なのじゃ。

コメント

タイトルとURLをコピーしました