thirdwebを使ってERC20のステーキングコントラクトを作ってみよう(コードの知識不要です。)
こんにちは、 CryptoGamesのユウキです。
本日は、thirdwebでERC20のステーキングコントラクトを作りたいと思います。
0 事前準備
まずは、事前準備として、報酬用のERC20とステークをするためのERC20を作成しましょう。
1) 報酬用コントラクト
今回こちらの詳細は省きますが、こちらから簡単に作ることができます。
下のように、100万トークンをミントしました。
2) ステーキング用コントラクト
こちらも同様に下から簡単に作ることができます。
下のように、1万トークンをミントしました。
1 ステーキングコントラクトを作成する
では、ステーキングコントラクトを作成しましょう。
「Explore」の下の方の、「StakeERC20」に進みます。
計算式を確認した上で、「Deploy Now」に進みます。
なお、例えば、10秒ごとに「1/20」と設定した場合、300秒経過すると1トークンあたり
300 × 「1/20」 = 15となります。
そのため、仮に500トークンを預けた場合、 500 × 15 = 750の報酬用トークンを取得できます。
ではパラメータを設定しましょう。
「Gasless transaction forwarders」には説明に書かれている通り、記入します。
また、「ERC20 Reward Token Address」、「ERC20 Staking Token Address」にはそれぞれ作成済みのコントラクトを入れていきます。
続きまして、「Time Unit for Rewards」は報酬が発生する単位(秒)になります。
「Reward Ratio Numerator」には分子を、「Reward Ratio Denominator」には分母を入れます。
今回はテストトークンであることを確認の上、「Deploy Now」
すると、このように、ステーキングコントラクトができました!
2 ステーキングコントラクトに報酬用トークンを預ける
では、ステーキングコントラクトに報酬用トークンを預けてみましょう。
まずは、「報酬用トークン」(ステーキングコントラクトではありません)からステーキングコントラクトに預けたい量を「approve」します。
次に、「ステーキングコントラクト」の「depositRewardTokens」で預けたい量を実行します。
これで、ステーキングコントラクトに報酬用トークンを預けることができました。
3 ステーキングコントラクトでステークする
では、次に、ステーキング用コントラクトでステークしてみましょう。
まずは、「ステーキング用コントラクト」(ステーキングコントラクトではありません)からステーキングしたい量を「approve」します。
なお、わかりやすくするために、ステークするアカウントは今までとは別のアカウントにしています。
次に、「ステーキングコントラクト」で「stake」を実行します。
これでステークが確認できました。
4 ステーキングコントラクトで報酬を確認する
では、報酬を確認してみましょう。
「ステーキングコントラクト」の「getStakeInfo」から、下のように確認ができます。
なお、値は16進数ですので、任意のツールで10進数に変換しました。
5 ステーキングコントラクトからwithdrawする
では、ステーキングコントラクトからwithdraw(引き出し)します。
引き出したい量を設定し、実行します。
今回は全て引き出します。
下のように、「getStakeInfo」を確認します。
預けている量が0であり、いくらの報酬を受け取れるかを確認できます。
6 ステーキングコントラクトから報酬を引き出す
では、報酬を引き出しましょう。
ステーキングコントラクトの「claimRewardw」を実行します。
すると、報酬用のトークンを確認すると、報酬がきちんと送られていることが確認できました。
念の為、「Events」から履歴を見ても、確認することができます。
今回は以上です。
最後までありがとうございました。
Discussion