プライベートネットワークを使用したスマートコントラクトのデプロイ
はじめに
このガイドでは、Kaia Hardhat Utils を使用して、プライベート Kaia ネットワーク上に Greeter 契約をデプロイする手順を説明します。 このガイドに従うことで、その方法を学ぶことができる: このガイドの通り行うことで、デプロイ方法を学ぶことができる:
- Hardhatプロジェクトを立ち上げる。
- Kairos Testnetをシミュレートしたプライベートネットワークを立ち上げる。
- Hardhatユーティリティを利用して、このプライベート・ネットワーク上にスマート・コントラクトをデプロイする。
前提条件
このチュートリアルに従うには、次のことが前提条件となる:
- コードエディタ:VS Codeなどのソースコードエディタ。
- Docker: dockerがインストールされていない場合は、こちらのリンクからインストールしてください。
- Node.jsとnpm:Node バージョン 18 以上。
開発環境のセットアップ
このセクションでは、hardhat、Kaia hardhat utils、その他プロジェクトのブートストラップに必要な依存関係をインストールする。
ステップ1:プロジェクト・ディレクトリを作成する。
mkdir $HOME/kaia-greetercd kaia-greeter
ステップ2: npmプロジェクトの初期化.
npm init -y
ステップ3: hardhat、hardhat-utils、その他の依存関係をインストールする。
- 以下のコードをターミナルにコピー&ペーストして、hardhatとhardhat-utilsをインストールする。
npm i hardhat @klaytn/hardhat-utils
- 他の依存関係をイ ンストールするには、以下のコードをコピー&ペーストしてください。
npm install @nomiclabs/hardhat-ethers hardhat-deploy dotenv
hardhat-utils プラグインは hardhat-ethers と hardhat-deploy プラグインに依存しています。 hardhat.config.js
またはhardhat.config.ts
で、これらをrequireまたはimportしてください。 hardhat.config.js
またはhardhat.config.ts
で、これらをrequireまたはimportしてください。
(推奨)Hardhatの速記をインストールする。 (推奨)ハードハットの速記をインストールする。 しかし、npxのハードハットでもタスクは可能だ。
npm install hardhat-shorthand --save
ステップ4:ハードハット・プロジェクトを初期化する。
以下のコマンドを実行して、Hardhatプロジェクトを開始する:
npx Hardhat
このガイドでは、以下のように「空のhardhat.config.jsを作成する」プロジェクトを選択する:
888 888 888888 888 88888888888 8888b. 888d888 .d88888 88888b. 8888b. 888888888 888 "88b 888P" d88" 888 888 "88b "88b 888888 888 .d888888 888 888 .d888888 888888 888 888 888 Y88b 888 888 Y88b.888 888 "Y88888 888 888 "Y88888👷 ようこそHardhat v2.22.9 👷?何をしたいのですか? … JavaScriptプロジェクトを作成する TypeScriptプロジェクトを作成する TypeScriptプロジェクトを作成する(Viemを使用)❯ 空のhardhat.config.jsを作成する 終了する
ステップ5:.envファイルを作成する。
プロジェクトフォルダーに .env
ファイルを作成する。 プロジェクトフォルダーに .env
ファイルを作成する。 このファイルは、.env
ファイルからprocess.envに環境変数をロードするのに役立つ。
以下のコマンドをターミナルにコピー&ペーストして、.env
ファイルを作成する。
タッチ.env
.envファイルを次のように設定する:
private_key="ローカル・プライベート・ネットワークから提供された秘密鍵のコピー&ペースト"
次のセクションでプライベート・ネットワークを起動すると、ローカル・ネットワークが提供する秘密鍵にアクセスできるようになる。
ステップ6:Hardhat 設定のセットアップ」。
以下の設定で hardhat.config.js
を修正する:
require("@nomiclabs/hardhat-ethers");require("hardhat-deploy");require("@klaytn/hardhat-utils");require('dotenv').config()const accounts = [ process.env.PRIVATE_KEY];/** @type import('hardhat/config').HardhatUserConfig */module.exports = { solidity: "0.8.24", networks: { localhost: { url: process.env.RPC_URL || "http://localhost:8545", accounts: accounts, }, kairos: { url: process.env.RPC_URL || "https://public-en-kairos.node.kaia.io", accounts: accounts, }, kaia: { url: process.env.RPC_URL || "https://public-en.node.kaia.io", accounts: accounts, } }, namedAccounts: { deployer: { default: 0, // here this will by default take the first account as deployer }, },};
プライベートネットワークの立ち上げ
プライベート・ネットワークを立ち上げるために、hardhat utilsプラグインは簡単に立ち上げるタスクを提供してくれる:
hh klaytn-node
コンソールの取り付け
プライベート・ネットワークにはJavaScriptのコンソールが付属している。 コンソールのコマンドラインから、ネットワークへのKaia APIコールの一部を開始することができます。 JavaScriptコンソールに接続するには、以下のコマンドを実行する: コンソールのコマンドラインから、ネットワークへのKaia APIコールの一部を開始することができます。 JavaScriptコンソールに接続するには、以下のコマンドを実行する:
hh klaytn-node --attach
kaiaまたはpersonalと入力すると、利用可能な機能のリストが表示されます。
アカウント残高の確認
プライベート・ネットワークを立ち上げると、アカウントのリスト、秘密鍵、各アカウントの事前入金額が提供された。
口座の残高を見るには、以下のコマンドを実行する。
kaia.getBalance("0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266")
ハードハット・ネットワーク環境の設定
外部クライアント(ウォレットやdApp)が接続できるスタンドアローン・ローカル・ネットワークが稼働しているので、このコマンドを実行して、ハードハットがこのネットワークを使用するように設定する必要がある:
export HARDHAT_NETWORK=localhosthh accounts
hh --network localhost accounts
KaiaGreeterスマートコントラクトの作成
このセクションでは、KaiaGreeterスマート・コントラクトを作成する。
ステップ1: エクスプローラーペインにcontractsフォルダという新しいフォルダを作成し、新規ファイルボタンをクリックし、KaiaGreeter.sol
という名前の新規ファイルを作成します。
**ステップ2:**ファイルを開き、以下のコードを貼り付ける:
// SPDX-License-Identifier: UNLICENSEDpragma solidity ^0.8.0;import "hardhat/console.sol";contract KaiaGreeter { uint256 totalGreetings; constructor() { console.log("Yo yo, Welcome to Kaia"); } function greet() public { totalGreetings += 1; console.log(msg.sender, "says hello kaia!"); } function getTotalGreetings() public view returns (uint256) { console.log("We have %d total waves!", totalGreetings); return totalGreetings; }}
KaiaGreeterを展開する
このセクションでは、hardhat-deployプラグインを使ってコントラクトをデプロイする。
ステップ1: エクスプローラーペインで、deploy という新しいフォルダーを作成し、新規ファイルボタンをクリックして deploy.js
という名前の新規ファイルを作成します。
**ステップ2:**以下のコードをコピーし、ファイル内に貼り付ける。
module.exports = async ({getNamedAccounts, deployments}) => { const {deploy} = deployments; const {deployer} = await getNamedAccounts(); await deploy('KaiaGreeter', { from: deployer, args: [], log: true, });};module.exports.tags = ['KaiaGreeter'];
**ターミナルで、以下のコマンドを実行し、Hardhatにプライベートネットワーク上にKaiaGreeter契約を展開するように指示します。
hh 配備
ブロックエクスプローラを使用したトランザクションの検証
**ステップ1:ローカルのblockscoutエクスプローラーを使用してトランザクションを検証するには、新しいターミナルで以下のコマンドを実行します:
hhエクスプローラ --ネットワーク localhost
[+] env: { DOCKER_RPC_HTTP_URL:'http://host.docker.internal:8545/', DOCKER_LISTEN: '0.0.0.0:4000', DOCKER_DISABLE_TRACER: 'false', DOCKER_DEBUG: '0'}.[+] ブラウザで開く: http://localhost:4000 Network blockscout_default 作成 Network blockscout_default 作成 Container blockscout-db-1 作成 Container blockscout-frontend-1 作成 Container blockscout-smart-contract-verifier-1 作成 Container blockscout-redis_db-1 作成 blockscout-smart-contract-verifier-1 作成 コンテナ blockscout-db-1 作成 コンテナ blockscout-frontend-1 作成 コンテナ blockscout-redis_db-1 作成 コンテナ blockscout-backend-1 作成 コンテナ blockscout-backend-1 作成 コンテナ blockscout-frontend-1 開始 コンテナ blockscout-redis_db-1 開始 コンテナ blockscout-smart-contract-verifier-1 開始 コンテナ blockscout-db-1 開始 コンテナ blockscout-db-1 の開始 コンテナ blockscout-redis_db-1 の開始 コンテナ blockscout-smart-contract-verifier-1 の開始 コンテナ blockscout-backend-1 の開始 コンテナ blockscout-frontend-1 の開始 コンテナ blockscout-backend-1 の開始
ステップ2: このブロック・エクスプローラーにアクセスするには、ブラウザで http://localhost:4000 を開いてください。
ステップ 3: 配備された契約書アドレスを検索フィールドにコピー&ペーストし、Enterキーを押します。 最近配備された契約が表示されるはずだ。 最近配備された契約が表示されるはずだ。