DEV Community

AJTECH0001
AJTECH0001

Posted on

AlephZero の Hardhat を使用してスマート コントラクトを記述、検証、デプロイする

Aleph Zero EVM は、開発者に、Aleph Zero ブロックチェーンの独自の利点を活用しながら、スマート コントラクトを構築および展開するための使い慣れた環境を提供します。このガイドでは、Hardhat を使用して Aleph Zero でスマート コントラクトを作成、検証、展開する手順を説明します。テストネットまたはメインネットのどちらに展開する場合でも、EVM エコシステム内での作業に慣れていれば、プロセスは使い慣れたものになるでしょう。

前提条件

開始する前に、以下がインストールされていることを確認してください:

Node.js (LTS バージョンを推奨)

Hardhat: グローバルまたはプロジェクト ディレクトリにインストールします。

テストネット/メインネット構成の Metamask (または互換性のあるウォレット)。

Solidity および Hardhat ワークフローの基本知識。

プロジェクトのセットアップ

ハードハット プロジェクトを初期化します。

mkdir alephzero-hardhat && cd alephzero-hardhat
npx hardhat init
Enter fullscreen mode Exit fullscreen mode

指示に従って、基本的な Hardhat プロジェクト構造を作成します。

必要な依存関係をインストールします:

npm install @nomiclabs/hardhat-ethers ethers dotenv
Enter fullscreen mode Exit fullscreen mode

環境変数を設定する:
秘密鍵や RPC URL などの機密情報を保存する .env ファイルを作成します:

PRIVATE_KEY="your_wallet_private_key"
TESTNET_RPC_URL="https://rpc.alephzero-testnet.gelato.digital"
MAINNET_RPC_URL="https://rpc.alephzero.raas.gelato.cloud"
Enter fullscreen mode Exit fullscreen mode

Hardhat を構成する:
hardhat.config.js を更新して、Aleph Zero の RPC エンドポイントとチェーン ID を含めます。

require("@nomiclabs/hardhat-ethers");
require("dotenv").config();

module.exports = {
  solidity: "0.8.20",
  networks: {
    testnet: {
      url: process.env.TESTNET_RPC_URL,
      accounts: [process.env.PRIVATE_KEY],
      chainId: 2039,
    },
    mainnet: {
      url: process.env.MAINNET_RPC_URL,
      accounts: [process.env.PRIVATE_KEY],
      chainId: 41455,
    },
  },
};
Enter fullscreen mode Exit fullscreen mode

スマートコントラクトを書く

contracts/ ディレクトリにシンプルなスマート コントラクトを作成します。以下は ERC20 トークンの例です。

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

import "@openzeppelin/contracts/token/ERC20/ERC20.sol";

contract AlephToken is ERC20 {
    constructor(uint256 initialSupply) ERC20("AlephToken", "AZT") {
        _mint(msg.sender, initialSupply);
    }
}
Enter fullscreen mode Exit fullscreen mode

スマートコントラクトのデプロイ

デプロイメント スクリプトを記述する:
新しいファイル scripts/deploy.js を作成します:

const hre = require("hardhat");

async function main() {
  const AlephToken = await hre.ethers.getContractFactory("AlephToken");
  const token = await AlephToken.deploy(hre.ethers.utils.parseEther("1000"));

  await token.deployed();
  console.log("AlephToken deployed to:", token.address);
}

main().catch((error) => {
  console.error(error);
  process.exitCode = 1;
});

Enter fullscreen mode Exit fullscreen mode

Aleph Zero Testnet にデプロイ:
次のコマンドを実行します:

npx hardhat run scripts/deploy.js --network testnet
Enter fullscreen mode Exit fullscreen mode

デプロイされたコントラクト アドレスがコンソールに出力されます。

スマートコントラクトの検証

Aleph Zero は契約の検証に Blockscout を使用します。Hardhat を使用して契約を検証する方法は次のとおりです。

検証プラグインをインストールします。

npm install @nomiclabs/hardhat-etherscan

Enter fullscreen mode Exit fullscreen mode

検証用の構成を更新します:
hardhat.config.js に次の設定を追加します:

module.exports = {
  ...
  etherscan: {
    apiKey: "",
    customChains: [
      {
        network: "testnet",
        chainId: 2039,
        urls: {
          apiURL: "https://evm-explorer-testnet.alephzero.org/api",
          browserURL: "https://evm-explorer-testnet.alephzero.org",
        },
      },
      {
        network: "mainnet",
        chainId: 41455,
        urls: {
          apiURL: "https://evm-explorer.alephzero.org/api",
          browserURL: "https://evm-explorer.alephzero.org",
        },
      },
    ],
  },
};
Enter fullscreen mode Exit fullscreen mode

検証コマンドを実行します。

npx hardhat verify --network testnet DEPLOYED_CONTRACT_ADDRESS "1000000000000000000000"
Enter fullscreen mode Exit fullscreen mode

DEPLOYED_CONTRACT_ADDRESS とコンストラクター引数を実際の値に置き換えます。

追加リソースへのアクセス

RPC エンドポイント:

テストネット: https://rpc.alephzero-testnet.gelato.digital

メインネット: https://rpc.alephzero.raas.gelato.cloud

ブロック エクスプローラー:

テストネット: Aleph Zero テストネット エクスプローラー

メインネット: Aleph Zero メインネット エクスプローラー

Fauc*et*: テストネット ファウセット

結論

このガイドに従うことで、Hardhat を使用して Aleph Zero にスマート コントラクトを効率的にデプロイおよび検証できます。このプロセスは標準的な EVM 開発手法と密接に連携しており、Ethereum やその他の EVM 互換チェーンにすでに慣れている開発者にとってスムーズな移行が保証されます。提供されているツールとリソースを活用して、Aleph Zero でスケーラブルで安全かつ効率的な dApp を構築してください。

Top comments (0)