Quai Networkでシンプルなシングルチェーンスマートコントラクトをデプロイするためのガイド
NodeJS | Javascript実行環境。LTSバージョンを使用してください。 |
hardhat-example | Quai Network用のサンプルコントラクトとデプロイスクリプトを含むHardhatプロジェクト |
Quais.js | Quai Networkと対話するためのJavaScriptライブラリ |
hardhat-example
リポジトリをクローンし、このチュートリアルで使用するSolidity
ディレクトリに移動して、npm
経由で依存関係をインストールします。
Solidity/
ディレクトリには、contracts/
ディレクトリ内に2つのサンプルコントラクトが含まれています:ERC20.sol
とERC721.sol
。両方のコントラクトはOpen Zeppelinライブラリから派生した実装です。
このチュートリアルではERC20.sol
サンプルコントラクトを使用しますが、独自のコントラクトを追加したり、他のライブラリのコントラクトを使用することもできます。
hardhat-example
リポジトリのルートには、トークンの詳細、秘密鍵、RPC URLを安全に管理するためのサンプル環境ファイル.env.dist
が含まれています。
.env.dist
ファイルはテンプレートファイルであり、そのまま使用すべきではありません。.env.dist
ファイルを新しい.env
ファイルにコピーする必要があります。このファイルはhardhat-example
リポジトリのルートにあり、Solidity/
ディレクトリの設定ファイルとして機能します。.env.dist
ファイルをリポジトリルートの新しい.env
ファイルにコピーします:
.env
ファイルを開き、デプロイしたいコントラクトの秘密鍵、RPC URL、トークン引数を追加します。.env
ファイルは次のようになります:
PK
値はすべて一意のアドレスに対応し、ゾーン名に対応する必要があります。
つまり、CYPRUS1_PK
はCyprus1アドレスの秘密鍵である必要があります。hardhat-example
リポジトリは、単一のRPC URLのみを使用してネットワーク接続を設定するためにQuais SDKを使用します。SDKがネットワークプロバイダーを設定する方法の詳細については、SDKプロバイダーの例セクションをご覧ください。
秘密鍵とRPC URLを入力したら、hardhat.config.js
内で安全に使用する準備が整いました。
hardhat.config.js
ファイルを使用してスマートコントラクトのデプロイを設定します。設定ファイルでは、デプロイネットワーク、タスク、コンパイラーなどを定義できます。
hardhat-example
には、ネットワーク内の任意のシャードでスマートコントラクトをデプロイおよび検証するための設定が含まれた事前構築済みのhardhat.config.js
ファイルがあります。
Hardhat設定ファイルのサンプル
hardhat-example
リポジトリの一部として提供されています。cyprus1
cyprus2
cyprus3
paxos1
paxos2
paxos3
hydra1
hydra2
hydra3
hardhat.config.js
は.env
ファイルから秘密鍵とRPC URLを取得し、それらを使用してコントラクトをデプロイおよび検証します。solidity
オブジェクトでSolidityバージョンとコンパイラー設定を指定することもできます。
Hardhatでコンパイル
npx
を使用して実行できます。contracts/
ディレクトリ内のすべてのコントラクトを以下でコンパイルします:デプロイスクリプトの設定
scripts/
ディレクトリ内には、ERC20とERC721コントラクトの両方のデプロイスクリプトがあります:deployERC20.js
とdeployERC721.js
。このチュートリアルでは、ERC20コントラクトをデプロイします。deployERC20.js
スクリプトは、hardhat.config.js
からネットワーク設定を、リポジトリルートの.env
ファイルからトークン引数を取得し、それらを使用してコントラクトをデプロイします。トークン引数はtokenArgs
配列で使用されます:provider
とwallet
変数内で使用され、新しいコントラクトインスタンスを作成します:deployERC721.js
スクリプトも同様に機能しますが、異なるコントラクト引数と異なるコントラクトABIおよび
バイトコードを使用します。デプロイしたい任意のコントラクトに対してこの設定を複製できます。コントラクトのデプロイ
--network
フラグを取ります(利用可能なオプションはこちらで確認できます)。このチュートリアルでは、cyprus1
にデプロイします。ERC20.sol
とERC721.sol
のサンプルコントラクトは、例示目的のための各トークンの基本的な実装です。
本番環境で使用する前に、特定のユースケースに合わせてこれらのコントラクトを変更することを強く推奨します。