使用專用網絡部署智能合約
導言
在本指南中,我們將指導您使用 Kaia Hardhat Utils 在專用 Kaia 網絡上部署 Greeter 合同。 通過本指南,您將學會如何
- 設立 "硬頭巾 "項目。
- 啟動一個模擬啟明星測試網的專用網絡。
- 利用 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
中要求或導入它們。
(建議)安裝硬帽速記裝置。 但您仍然可以使用 npx 硬頭盔執行任務。
npm install hardhat-shorthand --save
第 4 步:初始化硬頭盔項目
運行以下命令啟動硬頭盔項目:
npx 硬頭盔啟動
在本指南中,你將選擇 "創建一個空的 hardhat.config.js "項 目,如下圖所示:
888 888 888 888888 888 888 888888 888 888 888 888b. 888d888 .d88888 88888b. 8888b. 888888888888 "88b 888P" d88" 888888 "88b "88b 888888888 .d88888 888888 .d88888 888888888888 888888 Y88b.888 888 "Y888888 888 "Y88888 888 "Y888888 "Y888👷 歡迎訪問 Hardhat v2.22.9 👷?您要做什麼? … 創建一個 JavaScript 項目 創建一個 TypeScript 項目 創建一個 TypeScript 項目(使用 Viem)👷 創建一個空的 hardhat.config.js 退出
第 5 步:創建 .env 文件
現在在項目文件夾中創建 .env
文件。 該文件可幫助我們將環境變量從 .env
文 件加載到 process.env 文件中。
在終端中複製並粘貼此命令,創建一個 .env
文件
touch .env
配置您的 .env 文件如下:
private_key="複製並粘貼本地專用網絡提供的任意私人密鑰"
在下一節啟動專用網絡時,就可以訪問本地網絡提供的私鑰。
第 6 步:設置硬頭盔配置
用以下配置修改 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 控制檯,請執行以下命令:
hh klaytn-node --attach
輸入 kaia 或 personal 可獲得可用功能列表。
查看賬戶餘額
當我們啟動私人網絡時,它為我們提供了賬戶列表、私人密鑰和每個賬戶的預資助值。
要查看賬戶餘額,請執行以下命令。
kaia.getBalance("0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266")
配置硬帽網絡環境
現在我們正在運行一個獨立的本地網絡,外部客戶端(錢包、dApp)可以連接到該網絡,我們需要通過運行此命令配置 hardhat 以使用該網絡:
export HARDHAT_NETWORK=localhosthh accounts
hh --network localhost 賬戶
創建 KaiaGreeter 智能合約
在本節中,您將創建一個 KaiaGreeter 智能合約。
步驟 1: 在資源管理器窗格中新建一個名為 "合同"的文件夾,單擊 "新建文件 "按鈕並新建一個名為 "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'];
步驟 3: 在終端運行以下命令,告訴 Hardhat 在專用網絡上部署你的 KaiaGreeter 合同。
hh 部署
使用區塊資源管理器驗證交易
步驟 1: 要使用本地 blockscout 瀏覽器驗證我們的交易,請在新終端中運行以下命令:
hh explorer --network 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 網絡 blockscout_default 創建 網絡 blockscout_default 創建 容器 blockscout-db-1 創建 容器 blockscout-frontend-1 創建 容器 blockscout-smart-contract-verifier-1 創建 容器 blockscout-創建 Container blockscout-smart-contract-verifier-1 創建 Container blockscout-db-1 創建 Container blockscout-frontend-1 創建 Container blockscout-redis_db-1 創建 Container blockscout-backend-1 創建 Container blockscout-backend-1 創建 Container blockscout-frontend-1 Starting Container blockscout-redis_db-1 Starting Container blockscout-smart-contract-verifier-1 Starting Container blockscout-db-1 Starting Container blockscout-db-1 Started Container blockscout-redis_db-1 Started Container blockscout-smart-contract-verifier-1 Started Container blockscout-backend-1 Started Container blockscout-frontend-1 Started Container blockscout-backend-1 Started
第 2 步: 要訪問這個區塊資源管理器,請在瀏覽器中打開 http://localhost:4000。
第 3 步:在搜索欄中複製並粘貼已部署的合同地址,然後按 Enter 鍵。 您應該能看到最近部署的合同。