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

lesson-2_基本的なコーディング

🏃 ホワイトリスト機能付きのスマートコントラクトをデプロイする

最初の試み

準備はできましたか? それでは始めましょう!

まず、左側のExplorerでcontractsというフォルダを作成しましょう。

image-20230222151853564

作成したcontractsフォルダの中に、Whitelist.solという新しいスマートコントラクトファイルを作成しましょう。

image-20230222152021342

Whitelist.solでは、シンプルなコードのブロックから始めましょう。

// SPDX-License-Identifier: UNLICENSED

pragma solidity ^0.8.20;

contract Whitelist {
constructor() {
}
}

コードを一行ずつ解説します。

// SPDX-License-Identifier: UNLICENSED

この行はSPDXライセンス識別子と呼ばれ、その後に続くコードの著作権の問題に対処します。一般的には、UNLICENSEDMITが最もよく使われる接尾辞で、これは以下のコードが誰でも使ってよいことを示します。言い換えれば、皆さんは自由にコピー&ペーストすることができます。詳細はこちらで確認できます。

pragma solidity ^0.8.20;

これは、コントラクトに使用するSolidityコンパイラのバージョンを指定します。0.8.20から0.9.0の間のバージョンのSolidityコンパイラのみが使用できることを意味します。

contract Whitelist {
constructor() {

}
}

これがSolidityコードの本体です。.solファイルには複数のコントラクトを含めることができますが、プライマリコントラクトの名前はファイル名と同じでなければなりません。この場合はWhitelistです。ここでは、1つのコントラクトのみを含めています。コンストラクタは、コントラクトがデプロイされたときに実行される関数です。さらに、最初の中括弧{}には状態変数や関数などが含まれ、これらは一般的にコードの約85~95%を占めます。

コードの実行方法

右側のSolidity Compilerパネルをクリックすると、ChainIDEが自動的にコンパイラのバージョンを選択してくれているのがわかります。「Optimization」を選択すると、コンパイルされたバイトコードが最適化され、デプロイ時のガスが削減されます。今はチェックする必要はないので、そのまま「Compile Whitelist.sol」をクリックしてください。

image-20230222154237333

下部にABIとBYTE CODEが生成されているのがわかります。一般的に、ABIはスマートコントラクトと他のアプリケーションとの間の通信プロトコルを定義し、それらが相互に呼び出しや対話を行うことを可能にします。実際、これはスマートコントラクトがフロントエンドとどのように対話するかの点で非常に役立ちます。BYTE CODEはバイナリエンコーディングであり、EVMベースのチェーン(ETH、Polygon、BNB Chain、Conflux、EVMを基盤として使用する他のチェーン)にコントラクトをデプロイするための基本原理は、BYTE CODEをアップロードすることで実現します。

image-20230222155740298

Deploy & Interactionパネルに切り替え、JS VMに接続し(JS VMはJavaScriptで実装されたEVMで、ブラウザサイドのテストに非常に便利です)、「Deploy」をクリックします。

image-20230222155859096

下のINTERACTセクションで、今デプロイしたスマートコントラクトを見ることができます。まだ関数も状態変数もないので、完全に空っぽです。次に、スマートコントラクトをより充実したものにするために、これらの要素を追加していきます。

image-20230222160157031

🙋‍♂️ 質問する

ここまでの作業で何かわからないことがある場合は、Discordの#polygonで質問をしてください。

ヘルプをするときのフローが円滑になるので、エラーレポートには下記の4点を記載してください ✨

1. 質問が関連しているセクション番号とレッスン番号
2. 何をしようとしていたか
3. エラー文をコピー&ペースト
4. エラー画面のスクリーンショット