見出し画像

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

今回は以上です。

サポートをしていただけたらすごく嬉しいです😄 いただけたサポートを励みに、これからもコツコツ頑張っていきます😊