【完全保存版】力技でVerifyの処理を行ってみよう!
0 はじめに
1 Verifyとは?
「Etherscan」などで、コントラクトの状態を確認すると、多くの場合、緑色のチェックがついています。
こうなっていれば、コードを読めたり、コントラクトの読み書きができます。
一方、ついていない場合は、下のようになります。
これでは、コードを読んだり、コントラクトの読み書きがここではできません。
これが、「Verify」がされているかいないかの違いです。
2 力技でVerifyするのが良いの?
一方、今回紹介する、「verify」の方法を私は普段行っていません。
普段は、「Remix」であれば、下のプラグインを使ったり、「Hardhat」であれば、コマンドで対応しています。
ただ、今回のやり方が、根本的なやり方だとは思いますので、この記事で紹介いたします。
慣れてきましたら、別のやり方でお試しするのも良いと思います。
3 テストトークンを取得する
今回は、Polygonのテストトークンの「mumbai」で行います。
https://faucet.polygon.technology/
下のように、アドレスを貼り付けて、「Submit」
「Confirm」を選択
このようになれば成功です。
1 importのないコントラクトでverifyを行おう
1 コントラクトの作成
では、まずは、簡単なコントラクトを作ってみましょう。
Remixから進んでいきます。
「+ Create」で作業場を作ります。
このまま「OK」で進みます。
コードを下のように、若干変えました。
すでにブロックチェーン上に存在しているコードの場合、「verify」が自動で行われてしまうため、「12345」の辺りを適当に変更してください。
また、下のように、「constructor」を追加しました。
これはデプロイ時に一度だけ行われる処理です。
引数をどのように渡すのかも後で確認したいため、追加しました。
constructor(uint256 num) {
number = num;
}
下の部分で、コンパイルを行います。
次に、デプロイを行います。
「ENVIRONMENT」を「Injected Provider」に変更します。
「80001」となっていることを確認します。(mumbaiのチェーンIDです)
「1」となっていると、実際のETHのガス代が使われてしまうので、十分ご注意ください。
適当な値(ここでは20)を入れて、「Deploy」します。
メタマスクを実行させると、このように、デプロイが完了しました。
コントラクトアドレスをコピーします。
では、できたコントラクトをPolygonscan(mumbai)で見てみましょう。
https://mumbai.polygonscan.com/
下のように、アドレスを貼り付けて、検索します。
2 verifyの実行
このように、「コントラクト」を確認します。
なお、このように表示されるのに、少し時間がかかるかもしれません。
「Verify and Publish」を選択して、Verifyを行います。
下のように入力し、「Continue」
上で指定した、バージョンとライセンスタイプは、下の部分をもとに設定しています。
下の部分にコードを貼り付けます。
コードはこちらからをコピーしました。
こちらの「Constructor Arguments」(Constructorの引数)も確認してみましょう。
すでに値が入っていると思いますが、16進数の「14」は10進数の「20」なので、先ほど設定した値が入っています。
「Verify and Publish」を選択します。
すると、このように、無事、「Verify」ができました。
コントラクトアドレスを選択してみましょう。
すると、このように「verify」ができていることが確認できました。
2 importがあるコントラクトでverifyを行おう
1 コントラクトの作成
先ほどと同様に作っていきましょう。
「+ Create」を選択します。
こちらの、「ERC20」を選択します。
「OK」を選択
下のように、コントラクト名を適当に決めて、コンパイルを行います。(自動でverifyされないようにするためです。)
チェーンIDが「80001」であることを確認した上で、「Deploy」
すると、下のように、デプロイが完了しましたので、コントラクトアドレスをコピーします。
2 verifyの実行
先ほどと同様に、「Verify and Publish」を選択します。
先ほどと同様に、項目を選択して、「Continue」
ちなみに、参考にしているのは、この辺りです。
先ほどと同様に、まずは、貼り付けを行います。
その後、下の「import」の部分を消します。
ここに該当する部分を直接べたうちすることになります。
このように、「import」の部分を消しました。
ちなみに、このコントラクトを見ると、下のように「is ERC20」となっています。
ここで、ERC20のコントラクトを取り込んでいます。
これは、「継承」と呼ばれます。
「継承」を行う場合、下のように、上にコードを記載する必要があります。
下の「ERC20.sol」のコントラクトをコピーして
下のように、貼り付けました。(MyToken890コントラクトより上に貼り付けています。)
そして、「ERC20」も下の3つ(Context, IERC20, IERC20Metadata)を継承していますね。
では、同様にやってみましょう。
下の、「Context」をコピーして
このような位置に貼り付けます。
同様に、「IERC20」も貼り付けます。
同様に、こんな位置関係になりました。
最後に、「IERC20Metadata」も同様に、、と思ったら、こちらは「IERC20」を継承しているようですね。
ということは、「IERC20」の方が上に来て欲しいです。
そのため、少し順番を入れ替えてみました。
これでOKです。
あとは「Verify and Publish」を行ってみましょう。
こちらを少し待つと。。
このように成功しました。
コントラクトアドレスを確認すると、このように「verify」がうまくできていました。
今回は以上です。
サポートをしていただけたらすごく嬉しいです😄 いただけたサポートを励みに、これからもコツコツ頑張っていきます😊