Upkeepを登録しよう
🔥 Upkeep を登録しましょう
chainlinkのUIを使用することで、Upkeepを簡単に登録することができます。
🪙 LINK を手に入れましょう
まずUpkeepを実行してくれるノードに対してLINK
トークンを支払う必要があるため、 LINK
を手に入れます。
こちらのリンク先のFuji testnet
の部分を参照してください。
Metamaskで特定の(LINK
を取得するつもりの)アカウントが表示された状態で、 Add to wallet
をクリックすると、 その アカウントにLINK
が表示されるようになります。
続いて、 こちらからLINKを取得します。
20LINKを取得できているはずです。
🦆 コントラクトを再デプロイしましょう。
section-2/lesson-3で行なったコントラクトのデプロイとフロントエンドへの反映の流れを参考に、 新しく実装したコントラクトの再デプロイと、 ついでにフロントエンドへの反映もここで行いましょう。
まずAVAX-Asset-Tokenization/
直下で下記のコマンドを実行してデプロイします!
yarn contract deploy
その後assetTokenization address:
に続くコントラクトのアドレスをclient
ディレクトリ内、 hooks/useContract.ts
の中の以下の部分に貼り付けてください。
export const AssetTokenizationAddress = "コントラクトのデプロイ先アドレス";
次にABIファイルを取得していきましょう。
ターミナルから取得する場合はcontract
直下に移動し次のようなコマンドを使用します。
cp artifacts/contracts/AssetTokenization.sol/AssetTokenization.json ../client/artifacts/
そして最後に型定義ファイルの取得を行います。
ターミナルから取得する場合はcontract
直下に移動し次のようなコマンドを使用します。
cp -r typechain-types/* ../client/types/
以上でコントラクトの情報を反映することができました。
再デプロイする際はコントラクトの情報の更新を忘れないように気をつけましょう。
デプロイしたアドレスは次のUpkeepの登録
でも使用します。
👨💻 Upkeep を登録しましょう
こちらよりChainlink Automation
のページに移動します。
Connect wallet
をクリックし、LINKを取得したアカウントを選択します。
その後Register new Upkeep
をクリックします。
Custom Logic
をクリックします。
デプロイしたコントラクトのアドレスを貼り付け、 Next
をクリックします。
次のページにおいて、 以下のように詳細を入力し、 Register Upkeep
をクリックします。
※ admin addressは先ほどLINK を取得したアカウントのアドレスを貼り付けてください。
その他は任意の値を入れて頂いて構いません。
しばらくするとトランザクションが完了します。
View Upkeep
をクリックすると、 登録したUpkeepの詳細が表示されます。
(登録後はChainlink Automation ホームページからでもupkeepを確認できます)
後ほどこちらのページのHistory
の欄で実際にUpkeep
関数が実行されたかを確認できます。
🎍 挙動の確認方法
ここでUpkeep
が動くことを簡単に確認します。
既にフロントエンドに新コントラクトの情報は反映してあるので、 AVAX-Asset-Tokenization
ディレクトリ直下で以下のコマンドを実行してください!
yarn client dev
そしてブラウザでhttp://localhost:3000
へアクセスしてください。
はじめにFor Farmer
ボタンをクリックしページを移動します。
Tokenize
タブにてフォームを記入してNFTを作成しますが、 ここで消費期限を現在より前に設定してみてください。
例)
generate NFT
でコントラクトを作成後、
Chainlink Automation ホームページのMy upkeeps
から作成したUpkeepをクリックします。
Upkeepのページを開くと、 ページ下部にHistoryという欄があります。
ここにPerform Upkeep
が動いた履歴があるはずです。
Perform Upkeep
によって期限切れのNFTは削除されたので、
ブラウザ上でFor Buyers
のページへ移動し、 デプロイされたNFTの情報を見ようとしても表示されないはずです。
🌔 参考リンク
こちらに本プロジェクトの完成形のレポジトリがあります。 期待通り動かない場合は参考にしてみてください。
🙋♂️ 質問する
ここまでの作業で何かわからないことがある場合は、Discordの#avalanche
で質問をしてください。
ヘルプをするときのフローが円滑になるので、 エラーレポートには下記の3点を記載してください ✨
1. 質問が関連しているセクション番号とレッスン番号
2. 何をしようとしていたか
3. エラー文をコピー&ペースト
4. エラー画面のス クリーンショット
おめでとうございます! コントラクトの自動実行を実装することができました!
次のセクションではdappをデプロイします 🏌️♀️