見出し画像

KAIAにコントラクトをデプロイしてみよう

こんにちは!チューリンガムの開発部門に所属の智中ニア(@nia_tn1012)です。
今回は、アジア発のブロックチェーンネットワーク「KAIA」にコントラクトをデプロイしてみたいと思います。

1. KAIAとは

KAIA(カイア)」は、韓国のカカオが開発した「Klaytn(クレイトン)」とLINEが開発した「Finschia(フィンシア)」のブロックチェーンが統合されて、2024年8月に誕生した、EVMベースのブロックチェーンです。
公式のドキュメントによると、ブロックの生成と確認はわずか1秒と高速に処理でき、ガス代が安価(イーサリアムの約1/10)とされています。
Solidityで記述したコントラクトをサポートするので、既存で開発したコントラクトのコードをそのまま利用することもできます。

2. Hardhatを使って、コントラクトをKAIAにデプロイ

ここでは、Hardhatを使用して、コントラクトをKAIAのテストネット「Kairos(カイロス)」にデプロイしていきます。

2.1. KAIAのネットワークの設定

Hardhatの設定ファイル( hardhat.config.ts )に、KAIAのネットワークの設定を追加します。

const config: HardhatUserConfig = {
	// ...
	networks: {
		// KAIAのメインネットのネットワークの設定
		kaia: {
			url: "https://public-en.node.kaia.io",
			accounts: typeof process.env.PRIVATE_KEY === "string" ? [process.env.PRIVATE_KEY] : [],
		},
		
	  // KAIAのテストネット(Kairos)のネットワークの設定
		kairos: {
			url: "https://public-en-kairos.node.kaia.io",
			accounts: typeof process.env.PRIVATE_KEY === "string" ? [process.env.PRIVATE_KEY] : [],
		},
	},
};

デプロイに使用するウォレットアドレスに、KAIA Faucetのページから、KAIAのテストネットのトークンを付与します。

2.2. コントラクトをデプロイ

以下のコントラクトを、KAIAのテストネットにデプロイします。

//SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;

import "@openzeppelin/contracts/access/Ownable.sol";

contract Greeter is Ownable {
    string private message;

    constructor(string memory _message) {
        message = _message;
    }

    function greet() public view returns (string memory) {
        return message;
    }

    function setGreeting(string memory _message) public onlyOwner {
        message = _message;
    }
}
// デプロイ用スクリプト(scripts/deploy.ts)
import { ethers, upgrades } from "hardhat";

async function main() {
  const factory = await ethers.getContractFactory("Greeter");
  const contract = await upgrades.deployProxy(factory, ["Hello, world!"]);

  await contract.deployed();

  console.log("Greeter deployed to:", contract.address);
}

main().catch((error) => {
  console.error(error);
  process.exitCode = 1;
});
# KAIAのテストネットへのデプロイコマンド
yarn hardhat run scripts/deploy.ts --network kairos

# ※npmを使用している場合は、yarn → npx に変えて実行します。

デプロイしたコントラクトは、KaiaScan(KAIAのブロックチェーンエクスプローラー)などで確認できます。

https://kairos.kaiascan.io/ (テストネットはこちら)

3. KAIAにデプロイしたコントラクトをverify

KAIAにデプロイしたコントラクトは、 hardhat-verify プラグインを使用して、verifyすることができます。

// Hardhatの設定ファイル(hardhat.config.ts)
import "@nomicfoundation/hardhat-verify";

const config: HardhatUserConfig = {
	// ...
	etherscan: {
		apikey: {
      kaia: "<KaiaScan_API_KEY>" || "",
      kairos: "<KaiaScan_API_KEY>" || "",
		},
		customChains: {
			{
        network: "kaia",
        chainId: 8217,
        urls: {
          apiURL: "https://mainnet-api.kaiascan.io/hardhat-verify",
          browserURL: "https://kaiascan.io",
        },
      },
      {
        network: "kairos",
        chainId: 1001,
        urls: {
          apiURL: "https://kairos-api.kaiascan.io/hardhat-verify",
          browserURL: "https://kairos.kaiascan.io",
        },
      },
		},
	},
};

KaiaScanのAPIキーは、メインネットのKaiaScanのページから、アカウントを作成して取得します。

以下のコマンドで、KAIAにデプロイ済みのコントラクトをverifyします。

yarn hardhat verify {CONTRACT_ADDRESS} "Hello, world!" --network kairos

# {CONTRACT_ADDRESS}: 
#  2.でデプロイしたコントラクトのアドレス
# ※npmを使用している場合は、yarn → npx に変えて実行します。

4. チューリンガムからのお知らせ

チューリンガムは、LINEヤフー株式会社のグループ会社であるLINE NEXTとミニDapp(Mini Dapp)の導入支援を行うエージェンシー契約を締結いたしました。

ミニDapp(Mini Dapp)のリリースを検討中の企業様はこちらのフォームからお問い合わせください。

またチューリンガムでは、実績豊富なプロフェッショナル達が手厚くサポートしながら皆様のビジネスに合ったWeb3の構築を行うことができます。 Web3ビジネスをご検討中の方や、現在Web3に関してお困りの方も是非お気軽に弊社へご相談ください!
https://turingum.com/

いいなと思ったら応援しよう!