初心者Web3開発者向けEthereumトークン開発

このブログでは、Web3開発初心者向けに、OpenZeppelin、Hardhat、Infura、MetaMaskを使用してEthereumブロックチェーン上でERC-20トークンを開発・デプロイする方法を、Lineaテストネットへのデプロイを含めてステップバイステップで解説します。

4分で読める
初心者Web3開発者向けEthereumトークン開発

web3開発の初心者にとって、独自のトークンを開発・デプロイすることは、オンチェーンソフトウェアの構築を始め、Solidityのスキルを磨き、web3開発のライフサイクルを理解するための最も人気のある方法の一つです。

Ethereumには様々なトークン標準があり、これらはトークンがEthereumネットワークや他のdappsとの互換性、コンプライアンス、相互運用性を確保するために従うべき定義済みのルールセットです。

これらの標準には、ファンジブルトークン向けのERC-20、ノンファンジブルトークン(NFT)向けのERC-721、マルチトークンタイプ向けのERC-1155、高度なトークン機能向けのERC-777、セキュリティトークン向けのERC-1400、トークン化されたVault向けのERC-4626が含まれます。

このブログでは、標準的なスマートコントラクトテンプレートの安全でテスト済みの実装を提供するライブラリ、OpenZeppelinを活用してERC-20トークンを開発します。開発環境のセットアップ、トークンコントラクトの作成、そしてLinea layer 2ネットワークへのデプロイまでを順を追って説明します。

ステップ1:HardhatでDevelopment Environmentをセットアップする

Ethereumトークンの開発を始める前に、開発環境をセットアップする必要があります。このブログではHardhatを使用します。以下の手順に従ってください:

  1. Node.jsとnpmをインストールする:Node.jsはJavaScriptランタイムで、npmはそのパッケージマネージャーです。Node.js公式ウェブサイトからダウンロードしてインストールしてください。

  2. 新しいHardhatプロジェクトを作成する:ターミナルを開き、プロジェクト用の新しいディレクトリを作成して移動します。次に、以下を実行します:


mkdir my-token

cd my-token

npm init -y

npm install --save-dev hardhat

npx hardhat
コピー
  1. 必要なHardhatプラグインとOpenZeppelinコントラクトをインストールする


npm install @nomiclabs/hardhat-ethers ethers @openzeppelin/contracts
コピー

ステップ2:Ethereumトークンを作成する

シンプルなERC-20トークンを作成するには、以下の手順に従ってください:

  1. トークンコントラクトを作成する:Hardhatプロジェクトのcontractsディレクトリに移動し、MyToken.solという名前の新しいファイルを作成します。このファイルを開き、トークンコントラクトを定義します:


// SPDX-License-Identifier: MIT

pragma solidity ^0.8.0;

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

contract MyToken is ERC20 {

    constructor(uint256 initialSupply) ERC20("MyToken", "MTK") {

        _mint(msg.sender, initialSupply);

    }

}
コピー

このスマートコントラクトは、OpenZeppelinのライブラリを使用して、シンボル「MTK」を持つ「MyToken」というERC-20トークンを作成します。デプロイ時に、デプロイヤーが指定した初期供給量のトークンをミントし、デプロイヤーのアドレスに割り当てます。

  1. デプロイスクリプトを作成する:scriptsディレクトリにdeploy.jsという名前の新しいファイルを作成し、コントラクトをデプロイするための以下のコードを追加します:


async function main() {

  const [deployer] = await ethers.getSigners();

  console.log("Deploying contracts with the account:", deployer.address);

  const MyToken = await ethers.getContractFactory("MyToken");

  const myToken = await MyToken.deploy(1000000);

  console.log("MyToken deployed to:", myToken.address);

}

main()

  .then(() => process.exit(0))

  .catch((error) => {

    console.error(error);

    process.exit(1);

  });
コピー

上記のスクリプトは、HardhatとEthers.jsを使用して「MyToken」スマートコントラクトをデプロイし、1,000,000トークンの供給量で初期化します。デプロイヤーのアドレスを取得し、コントラクトをデプロイします。

  1. コントラクトをローカルでコンパイル・デプロイする:ターミナルで、Hardhatが提供するローカルブロックチェーンにコントラクトをコンパイルしてデプロイします:


npx hardhat compile

npx hardhat run scripts/deploy.js --network localhost
コピー

ステップ3:トークンコントラクトをLinea testnetにデプロイする

ERC-20トークンをローカルで開発・デプロイしたので、次はInfuraとMetaMaskを使用してLinea testnetにデプロイします。以下の手順に従って、Linea testnetでトークンを公開しましょう。

  1. Infuraアカウントをセットアップする:Infuraは様々なブロックチェーンネットワークとそのtestnetへの簡単なアクセスを提供します。新しいプロジェクトを作成し、サポートされているネットワークのメニューからLinea Sepolia testnetを選択して、プロジェクトIDをコピーします。

  2. MetaMaskを設定する:MetaMaskウォレットを開き、ネットワークセクションに移動します。ドロップダウンメニューで「テストネットワークを表示」がオンになっていることを確認し、Linea Sepolia testnetを選択します。

  3. Linea Sepolia ETHを取得する:コントラクトをデプロイする際、ガス代の支払いにLinea Sepolia ETHが必要です。Linea Sepolia公式フォーセットにアクセスして、Linea ETHを取得できます。

  4. Hardhatの設定を更新する:Hardhatプロジェクトで、hardhat.config.jsをLinea testnetの設定を含むように更新します:


require("@nomiclabs/hardhat-ethers");

require("dotenv").config();

module.exports = {

  solidity: "0.8.0",

  networks: {

    lineaTestnet: {

      url: `https://linea-sepolia.infura.io/v3/${process.env.INFURA_PROJECT_ID}`,

      accounts: [`0x${process.env.PRIVATE_KEY}`],

      chainId: 59141

    }

  }

};
コピー

.envファイルに必要な環境変数が含まれていることを確認してください:


INFURA_PROJECT_ID=your_infura_project_id

PRIVATE_KEY=your_private_key
コピー
  1. コントラクトをLinea Sepolia testnetにデプロイする

次に、トークンコントラクトをLinea testnetにデプロイするために、以下のコマンドを実行します:


npx hardhat compile

npx hardhat run scripts/deploy.js --network lineaTestnet
コピー

このスクリプトは、MetaMaskに接続されたアカウントを使用して、ERC-20トークンコントラクトをLinea testnetにデプロイします。

MetaMask DeveloperでWeb3 Dapp開発をさらに進める

Ethereumトークン開発の基礎を習得し、開発環境をセットアップし、ベストプラクティスに従うことで、独自のEthereumトークンを成功裏に開発・デプロイできます。新しい暗号通貨の作成でも資産のトークン化でも、Ethereumはアイデアを実現するためのツールとエコシステムを提供しています。

Sign-in-with-Ethereum(SIWE)、EIP-6963のサポート、SnapsによるMetaMaskとのシームレスな統合など、より高度な開発ニーズにはMetaMask Developerポータルをご覧ください。ユーザーのオンボーディングを効率化し、開発者がMetaMaskユーザー向けにカスタマイズされた独自のパーミッションレスなウォレット接続とdapp内エクスペリエンスを構築できるよう設計された、包括的なツール、API、SDKのスイートを提供しています。

AIによる翻訳です。エラーが含まれている可能性があります。常に情報を確認してください。

翻訳を評価する
  • Kingsley Okonkwo
    Kingsley Okonkwo

    Kingsley, a certified Ethereum Blockchain developer, serves as a technical writer at Consensys, with a special focus on developer tools. Before joining Consensys, Kingsley worked as a freelance backend developer on sevral platforms including Gigster and Braintrust. Boasting 5 years of software development experience, he's proficient with tools such as JavaScript (Node.js & React), GoLang, SQL, and Docker. Kingsley excels in producing step-by-step tutorials and how-to guides, utilizing the latest in web3 technology to help fellow developers build better dapps. Currently based in Dubai, Kingsley enjoys playing basketball and soccer in his free time

    すべての記事を読む