lesson-2_基本的なコーディング
🏃 ホワイトリスト機能付きのスマートコント ラクトをデプロイする
最初の試み
準備はできましたか? それでは始めましょう!
まず、左側のExplorerでcontracts
というフォルダを作成しましょう。
作成したcontractsフォルダの中に、Whitelist.sol
という新しいスマートコントラクトファイルを作成しましょう。
Whitelist.sol
では、シンプルなコードのブロックから始めましょう。
// SPDX-License-Identifier: UNLICENSED
pragma solidity ^0.8.20;
contract Whitelist {
constructor() {
}
}
コードを一行ずつ解説します。
// SPDX-License-Identifier: UNLICENSED
この行はSPDXライセンス識別子
と呼ばれ、その後に続くコードの著作権の問題に対処します。一般的には、UNLICENSED
とMIT
が最もよく使われる接尾辞で、これは以下のコードが誰でも使ってよいことを示します。言い換えれば、皆さんは自由にコピー&ペーストすることができます。詳細はこちらで確認できます。
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
」をクリックしてください。
下部にABIとBYTE CODEが生成されているのがわかります。一般的に、ABIはスマートコントラクトと他のアプリケーションとの間の通信プロトコルを定義し、それらが相互に呼び出しや対話を行うことを可能にします。実際、これはスマートコントラクトがフロントエンドとどのように対話するかの点で非常に役立ちます。BYTE CODEはバイナリエンコーディングであり、EVMベースのチェーン(ETH、Polygon、BNB Chain、Conflux、EVMを基盤として使用す る他のチェーン)にコントラクトをデプロイするための基本原理は、BYTE CODEをアップロードすることで実現します。
Deploy & Interactionパネルに切り替え、JS VMに接続し(JS VMはJavaScriptで実装されたEVMで、ブラウザサイドのテストに非常に便利です)、「Deploy
」をクリックします。
下のINTERACT
セクションで、今デプロイしたスマートコントラクトを見ることができます。まだ関数も状態変数もないので、完全に空っぽです。次に、スマートコントラクトをより充実したものにするために、これらの要素を追加していきます。
🙋♂️ 質問する
ここまでの作業で何かわからないことがある場合は、Discordの#polygon
で質問をしてください。
ヘルプをするときのフローが円滑になるので、エラーレポートには下記の4点を記載してください ✨
1. 質問が関連しているセクション番号とレッスン番号
2. 何をしようとしていたか
3. エラー文をコピー&ペースト
4. エラー画面のスクリーンショット