メインコンテンツまでスキップ

lesson-3_Upkeepを登録しよう

🔥 Upkeep を登録しましょう

chainlinkのUIを使用することで、Upkeepを簡単に登録することができます。

まず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をデプロイします 🏌️‍♀️