見出し画像

コントラクトをEtherscanで最適化しよう。(verifyを行いましょう)

こんにちは、CryptoGamesの高橋です。

↓4万種類以上のエアドロなどの実績があります。気になる方は是非。


今回の記事は下の記事の続きです。

さて、みなさんのコントラクト、作ったばかりだと、Etherscanで見た時にこんな風になっていませんか?

画像19

これは「Verify and Publish」という作業が行われていないためです。

この工程を経ることによって、「Etherscan」上でCodeを読んだり、コントラクトの読み書きができるようになります。

是非まだの方はやってみましょう。


1 Etherscanを見に行こう

まずは、Etherscanを見にいきましょう。

OpenSeaの下の「Details」の「Contract Address」を選択します。

スクリーンショット 2021-12-12 18.52.44

すると、このように「Etherscan」の画面になりました。Polygonの場合は「Polygonscan」になります。

「contract」を選択しましょう。

スクリーンショット 2021-12-12 18.55.43

すると、こんな画面になります。

ここから「Verify and Publish」 という作業が必要になってきます。

スクリーンショット 2021-12-12 19.01.10

では、「Verify and Publish」を選択しましょう。

2 そもそもVerifyって何?(飛ばしても大丈夫です)

ちなみに、そもそもverifyとはどういったもので、なぜこれが必要なのでしょう?

実は、やることは自分が作ったコードなどをコピペして、「verify」を行うだけです。なんでこんな二度手間が必要なんでしょう?

私は一般的にパスワードなどが2回聞かれるのと一緒なのかなと思います。

すでにコントラクトはデプロイしていますが、本当に意図通りのコードになっているのかの確認のために同じコードのverifyが必要なのかなと思います。

これによって、このコントラクトは、少なくとも意図通りのコントラクトであるということが示されることになります。

3 Verifyをしよう

さて、戻りまして、verifyを行っていきましょう。

この赤い枠を選択していくことになります。

一つ一つみていきましょう。

スクリーンショット 2021-12-12 19.03.36

3ー① Please select Compiler Type

まずはコンパイラのタイプが聞かれています。

今回は、下のように「contracts」フォルダ内にある「PurpleEye.sol」という一つのファイルに対してのみ実施しましたので「solidity(single file)」を選択します。

スクリーンショット 2021-12-12 19.18.44

3ー② Please select Compiler Version

次はコンパイラのバージョンです。

Remixを見てみましょう。

スクリーンショット 2021-12-12 19.21.03

このようにバージョンが書かれていますので、「0.8.7+commit.e28d00a7」を選びましょう。

3ー③ Please select Open Source License Type

次はオープンソースのライセンスタイプです。

何を言っているの?という感じかもですが、簡単です。

スクリーンショット 2021-12-12 19.27.09

こんな感じで、コードの一行目に書いてありますので、ここでは「MIT」を選択します。

ちなみにこの部分、コメントにもかかわらず、これがないとどこかのバージョンからか、警告が出るようになりました。

結構大事なものなんですね。

というわけで、全て選択できましたので、「continue」で次に進みましょう。

3ー④ Optimization(最適化)

この新しい画面、ちょっと難しそうですが、大丈夫です。

まずこの「Optimization」についてです。

スクリーンショット 2021-12-12 19.32.51

コンパイラを見てみると、下のように「Enable optimization」にチェックをつけていましたね。

そのため、「Yes」にします。

スクリーンショット 2021-12-12 19.35.32

3ー⑤ Enter the Solidity Contract Code below

スクリーンショット 2021-12-12 19.37.22

なんだか難しそうなんですが、要は、コントラクトのコードを貼り付けてくださいと言っています。

そのため、コードをコピペして、そのままここに貼り付けちゃいましょう。

3ー⑥ Constructor Arguments

おそらく、一番の引っ掛かりポイントがここです。

コンストラクタの引数を入れてください。と書いてあります。

スクリーンショット 2021-12-12 19.41.18

そのため、コンストラクタで引数の設定をしていない場合はここは無視して構いません。

でも引数を設定している場合は、、、ABIって言われても。。。とちょっと泣きそうになるかもしれません。

大丈夫です。デプロイの際にこちらを押してコピーしたのを覚えていますでしょうか?

スクリーンショット 2021-12-12 19.48.46

このコピーしたものは適当な場所に保存してみてください。

なんだか目が痛くなりそうですねw

スクリーンショット 2021-12-12 19.51.16

大事なのは一番下です。

スクリーンショット 2021-12-12 19.52.21

見てみると、突然0が連続しだしたところがありますね。

ここです。

ここから最後までがコンストラクタの引数の部分になります。

最初に入っている値を全て消してからこの0以下の部分をコピペしましょう。

3ー⑦ Verify and Publish

これで全てできましたので「I'm not a robot」にチェックを入れて、「Verify and Publish」 を選択しましょう。

スクリーンショット 2021-12-12 19.57.44

少し待つと。。

スクリーンショット 2021-12-12 19.58.06

こんな風になれば成功です。

スクリーンショット 2021-12-12 19.58.32


4 コントラクトを見てみよう

では、コントラクトを見てみましょう。

このように「Code」「Read Contract」「Write Contract」と出ていれば成功です。

これで、Etherscan上でコントラクトの読み書きができるようになりましたね。

ちなみにその下に「Contract Source Code Verified(Exact Match)」とあるのでコードが完全一致しているよということも書かれているのですね。

スクリーンショット 2021-12-12 20.03.29


いかがだったでしょうか。

Verifyの際の参考にしていただければ幸いです。

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