
【完全保存版】力技で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」がうまくできていました。

今回は以上です。
いいなと思ったら応援しよう!
