読了時間:10分
概要
ERC20トークンは、イーサリアムエコシステムの基盤であり、DeFiプロトコルやDAO、ロイヤリティシステムなどを支えています。しかし、これらは当初から標準化されていたわけではありません。イーサリアムの黎明期には、標準のない状態でトークンが作成されていたため、ウォレットやアプリケーションが新しいトークンすべてに対応するのは困難でした。この問題を解決するため、コミュニティはERC20規格を導入し、トークン開発に一貫性と相互運用性をもたらしました。
このガイドでは、規格に準拠したERC20スマートコントラクトの作成方法、Remixを使用したコンパイルおよびデプロイの手順を、ステップバイステップで解説します。また、ベストプラクティスにも焦点を当てつつ、不要な詳細は省いて説明します。
動画による解説をご希望ですか?ラデクと一緒に、15分でERC20トークンを作成・展開する方法を学びましょう。
主な業務内容
- ERC-20トークンとその活用事例について学ぶ
- Remix.IDE を使用して ERC-20 トークンを作成・展開する
必要なもの
- Web3ウォレット(例:MetaMask、Coinbase Wallet、Phantom、またはWalletConnect対応のウォレットなど)
- ETHを試してみてください( Multi-Chain Quicknodeのファウセットで入手できます)
- 最新のウェブブラウザ(例:Chrome や Brave など)
- リリース後の構築作業用の無料Quicknodeアカウント
このガイドでは、シンプルさを重視し、Remix IDE を使用して、ブラウザベースの開発環境を活用することで、開発とテストを迅速に行います。さらにステップアップしたい方は、Foundry や Hardhat などの最新フレームワークを用いた、より高度なデプロイチュートリアルをご覧ください:
ERC-20トークンとは何ですか?
ERCは「Ethereum Request for Comment」の略で、20は提案の識別番号です。ERC-20は、イーサリアムネットワークの改善を目的として設計されました。
ERC-20は、最も重要なERC規格の一つです。これは、イーサリアムブロックチェーンネットワーク上でスマートコントラクトを作成するための技術標準として確立され、トークンの実装に利用されています。ERC-20には、イーサリアムベースのすべてのトークンが従わなければならない一連のルールが定められています。
ERC-20では、トークンを「送受信が可能で価値を持つ、ブロックチェーンベースの資産」と定義しています。ERC-20トークンは、多くの点でビットコインやライトコインと似ています。しかし、最も大きな違いは、独自のブロックチェーンネットワーク上で動作するのではなく、ERC-20トークンはイーサリアムのブロックチェーンネットワーク上で動作し、取引手数料としてガスを使用する点にあります。
ERC-20が登場する前は、トークンを作成する人は皆、一から作り直さなければならず、その結果、すべてのトークンが互いに異なっていました。例えば、開発者が別のトークンを扱おうとした場合、新しいトークンを構築するための特定の構造やガイドラインが存在しなかったため、そのトークンのスマートコントラクトのコード全体を理解する必要がありました。
これは特にウォレットや取引所にとって大きな負担となっていました。さまざまな種類のトークンを追加するには、開発者が各トークンのコードを一つひとつ確認し、その仕組みを理解した上で、自社のプラットフォームでそれらのトークンを扱えるようにする必要があったからです。言うまでもなく、どのアプリにおいても新しいトークンを追加するのはかなり困難なことでした。
現在、ウォレットや取引所では、ERC-20規格を採用することで、さまざまな標準化されたトークンをプラットフォームに統合するとともに、ERC-20トークンと他のトークンとの間の交換を容易に行えるようにしています。ERC-20トークン規格のおかげで、トークン間のやり取りはほぼシームレスかつ手間なく行えるようになりました。
ERC-20トークンに関する要点
標準化された機能:ERC-20トークンは特定の標準規格に準拠しており、共通のルールや機能のリストが定められています。これには、トークンの譲渡方法、取引の承認方法、ユーザーがトークンに関するデータにアクセスする方法、およびトークンの総供給量などが含まれます。
スマートコントラクトとDeFi:ERC-20トークンにおけるスマートコントラクトの活用により、複雑な金融取引の自動化と執行が可能になります。これはDeFiプラットフォームにとって極めて重要であり、こうしたトークンは、ローンや流動性プールへの出資など、さまざまな金融商品を表すことができます。
相互運用性:ERC-20トークンは同一の規格に準拠しているため、互いに容易に交換可能であり、イーサリアムネットワーク上の他のERC-20準拠トークンやアプリケーションとシームレスに連携できます。この標準化により、新しいトークンの作成プロセスが簡素化され、既存のウォレット、取引所、その他のサービスと即座に互換性が確保されます。
ユースケース:ERC-20トークンは、幅広い資産やユーティリティを表すことができます。例えば、ERC-20トークンは、ローンの担保、イールドファーミングにおける利付資産、分散型自律組織(DAO)における議決権を付与するガバナンストークンなど、さまざまな役割を果たすことができます。
譲渡性と取引:これらのトークンは、ビットコインなどの仮想通貨と同様に、支払いとしてあるアカウントから別のアカウントへ譲渡することができ、さまざまな仮想通貨取引所で取引することも可能です。
ERC-20は、新しいトークンを作成するための規格またはガイドラインです。この規格では、スマートコントラクトが実装すべき6つの必須機能と、3つのオプション機能が定義されています。
必須の関数を、説明とともに以下に示します。
- totalSupply:トークンの総供給量を定義するメソッド。この上限に達すると、スマートコントラクトは新しいトークンの生成を拒否します。
- balanceOf: ウォレットアドレスが保有するトークンの数を返すメソッド。
- transfer:総供給量から一定量のトークンを取り出し、それをユーザーに付与するメソッド。
- transferFrom: ユーザー間でトークンを転送するために使用される、もう1つの転送方式。
- approve:このメソッドは、総供給量を考慮した上で、スマートコントラクトがユーザーに対して特定の量のトークンを割り当てることが許可されているかどうかを検証します。
- 残高確認:この方法は、承認済みの手法と全く同じですが、あるユーザーが別のユーザーに特定の量のトークンを送信するのに十分な残高があるかどうかを確認する点が異なります。
以下に挙げる必須の関数以外は、オプションの関数ですが、これらを利用することでトークンの使い勝手が向上します。
- name: トークンの名前を返すメソッド。
- symbol: トークンのシンボルを返すメソッド。
- 小数: トークンが使用する小数点以下の桁数を返すメソッド。これは、トークンの最小単位を定義するために使用される。たとえば、ERC-20 トークンが
小数値が 6 であるということは、このトークンは小数点以下 6 桁まで分割できることを意味します。
オブジェクト指向プログラミングに詳しい方なら、ERC-20をインターフェースに例えることができます。トークンをERC-20トークンにしたい場合は、ERC-20インターフェースを実装する必要があり、それによってこれら6つのメソッドを実装することが義務付けられます。
ERC-20トークンの作成方法
ERC-20トークンとは何か、その仕組みがわかったところで、次は独自のトークンをどのように作成・展開できるかを見ていきましょう。
このガイドでは、高速で無料、かつ広くサポートされていることから、イーサリアムのセポリア(Sepolia)テストネットを使用します。 ただし、テストネットにデプロイする場合でも、Arbitrum、Base、Avalanche などのメインネットにデプロイする場合でも、手順は同じです。
ステップ1:テスト用ETHを入手する
イーサリアム・セポリア・テストネット上でコントラクトのデプロイを開始するには、テスト用のETHを入手する必要があります。その手順は以下の通りです:
- まだウォレットをお持ちでない場合は、MetaMaskのブラウザ拡張機能をインストールするか、RabbyやPhantomなど、Web3に対応した他のウォレットをご利用ください。
- Quicknodeのイーサリアム・セポリア・ファウセットにアクセスする
- ウォレットを接続するか、ウォレットアドレスを入力して、次に進んでください。追加のボーナスを受け取るためにツイートをシェアするオプションが表示されます。シェアしない場合は、「いいえ、0.05 ETHを送ってください」というオプションを選択するだけで、テスト用のETHを受け取ることができます。
注:このファウセットを利用するには、イーサリアムメインネットの残高が0.001 ETH以上である必要があります。

ステップ 2:トークン用のスマートコントラクトを作成する
イーサリアムブロックチェーン上では、さまざまなグループによって開発された、ERC20準拠のトークンがすでに多数運用されています。これらの実装はさまざまで、ガス料金の削減に重点を置いているものもあれば、セキュリティの強化を優先しているものもあります。
堅牢かつ安全な実装を実現するため、多くの開発者はOpenZeppelinのERC20トークン規格を採用しています。OpenZeppelinは、十分にテストされ、コミュニティによる監査を受けた再利用可能なスマートコントラクトのライブラリを提供しており、これにはERC20トークン向けの信頼性が高く安全なフレームワークが含まれているため、トークン開発におけるコンプライアンスとセキュリティを確保するための最適な選択肢となっています。
利便性とセキュリティの観点から、トークンの作成にはOpenZeppelinのERC-20コントラクトを使用します。OpenZeppelinを使えば、ERC-20インターフェースをすべて自作する必要はありません。代わりに、ライブラリコントラクトをインポートして、その関数を利用することができます。
Ethereum RemixIDE にアクセスし、新しい Solidity ファイル(例:MyToken.sol)を作成してください。
新しいSolidityスクリプトに、以下のコードを貼り付けてください:
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.20;
import "@openzeppelin/contracts/token/ERC20/ERC20.sol";
contract MyToken is ERC20 {
constructor() ERC20("MyToken", "MT") {
_mint(msg.sender, 1000000 * (10 ** uint256(decimals())));
}
}
上記のコードの説明:
- 「SPDX-License-Identifier」コメントには、契約がどのライセンスに基づいて公開されているかが明記されています。
- その
pragmaこのディレクティブは、使用するコンパイラのバージョンを指定します。 - その
ERC20OpenZeppelin の契約がインポートされ、ベースとして使用されます。 MyTokenはあなたのコントラクトの名前であり、ERC20コントラクトを拡張したものです。- その
コンストラクタこの関数は、トークンに名前(「MyToken") と記号 ("MTK")。 - その
_mintコンストラクタ内の関数により、トークンの初期供給量が発行されます。この例では、100万枚のトークンが発行され、コントラクトをデプロイしたアドレスに割り当てられます。トークンの枚数は、小数値。OpenZeppelinの実装では、デフォルト値は18です。
私たちは
ERC20OpenZeppelinのスマートコントラクトと、MyTokencontract はERC20契約上、すべての関数を定義する必要はありません。ERC20契約は、MyToken契約。より詳細なERC-20コードの全文をご覧になりたい場合は、こちらのファイルをご確認ください。 こちら
それでは、ご希望であれば、少し時間を取って、ご自身の情報に合わせてスマートコントラクトをカスタマイズしてください。以下の部分を更新することで、トークンの名前とシンボルを変更できます―― ERC20("MyToken", "MT").
OpenZeppelinとHardhatを使用して、アップグレード可能なERC20コントラクトを展開する方法について、こちらのガイドをご覧ください。
ステップ 3: トークンのデプロイ
スマートコントラクトのカスタマイズが完了したら、コンパイルに進んでください。
まず第一に: をクリックして Solidityコンパイラ ボタン。コンパイラのバージョンと選択されているコントラクトを確認してください。コンパイラのバージョンは、少なくとも 0.8.20 列のせいで pragma solidity ^0.8.20; スマートコントラクト内で。次に、 MyToken.sol をコンパイルする ボタン。すべてが正常に処理されれば、「コンパイル」ボタンの横に緑色のチェックマークが表示されます。

次へ: 「Deploy & Run Transactions」タブに移動します。デプロイには、「Environment」の下にある「Injected Provider」オプションを使用してください。デプロイを行う前に、MetaMaskがSepoliaテストネットに設定されていること、およびMyTokenコントラクトがデプロイ対象として選択されていることを確認してください。最後に、「Deploy」ボタンをクリックしてコントラクトをデプロイします。
ネットワークの変更方法がわからない場合は、MetaMask拡張機能を開き、左上隅にあるネットワークセレクターをクリックして、「Sepolia」を選択してください。表示されない場合は、「テストネットワークを表示」オプションが有効になっていることを確認してください。MetaMaskにQuicknodeのRPC URLを追加する方法については、こちらのQuicknodeガイドをご覧ください。

デプロイ前に「この契約は抽象的な可能性があります」というエラーメッセージが表示された場合は、「契約」タブで適切な契約が選択されていることを確認してください。
最後に:MetaMaskで取引を確認してください:

これで完了です!トークン契約がイーサリアムのセポリア・テストネットにデプロイされました!
それでは、実際に操作してみましょう。「Deployed Contracts」セクションにあるコントラクト名の横にある矢印(>)をクリックすると、そのコントラクトの関数を確認できます。次に、名前ボタンをクリックすると、コントラクトでカスタマイズした名前が表示されるはずです。他の関数もぜひ試してみてください。
Remix.IDE では、関数はその性質や効果に応じて、インターフェース上で色分けされています:
-
ブルーボタンの機能:これらは不変関数または 純粋関数を表します。これらのボタンをクリックしても、新しいトランザクションが開始されたり、コントラクトの状態が変更されたりすることはありません。コントラクトから値を返すだけであり、ガス料金は発生しません。
-
オレンジ色のボタンの機能:これらは、コントラクトの状態を変更するものの、イーサを受け取らない非支払型機能です。これらの機能を起動するとトランザクションが生成されるため、ガス代がかかります。
-
赤いボタンの機能:赤いボタンが付いた機能は有料であり、イーサを受け取るトランザクションを作成できます。これらのトランザクションの金額は、「Gas Limit」フィールドの下にある「Value」フィールドに入力します。また、実行時にはガス料金が発生します。

ブロックチェーンエクスプローラー(さまざまなブロックチェーンデータを分析するための、初心者にも使いやすい便利なツール)で自分のコントラクトを確認するには、Etherscan Sepolia Explorerにアクセスし、自分のコントラクトのアドレスを検索してください。
「トークントラッカー」セクションの下に、トークン名とトークンシンボルが表示されます。

それでは、トークンの名前をクリックしてください。開いたページには、そのトークンの名前、シンボル、最大総供給量、および小数点以下の桁数が表示されます。

MetaMaskでトークンを確認したい場合は、契約名の横にある「コピー」ボタンを使用して、デプロイ済みの契約アドレスをコピーしてください。その後、MetaMaskを開き、「トークンをインポート」ボタンをクリックして、「トークン契約アドレス」欄に契約アドレスを貼り付けてください。 MetaMaskがトークンのシンボルと小数点以下の桁数を自動的に取得します。「次へ」をクリックし、「インポート」をクリックすると、トークンがウォレットに追加され、MetaMaskの「資産」セクションで確認できるようになります。

Etherscanでスマートコントラクトを検証するには、当サイトのステップバイステップガイドに従ってください。
よくある質問
ERC20トークンを作成・展開するには何が必要ですか?
web3ウォレット(MetaMaskなど)、ファウセットから入手したテスト用ETH、最新のウェブブラウザ、およびRemix IDEへのアクセスが必要です。デプロイ後の開発には、Quicknodeの無料トライアルアカウントの利用をお勧めします。
なぜOpenZeppelinのERC20ライブラリを使うべきなのでしょうか?
OpenZeppelinは、十分にテストされ、コミュニティによる監査を経た、安全なERC20実装を提供しており、ガス代を削減し、準拠性を確保します。標準仕様をゼロからすべて記述する代わりに、これをインポートするだけで済みます。
Sepoliaテストネットにデプロイするためのテスト用ETHは、どのように入手すればよいですか?
Quicknode Multi-Chain Faucetにアクセスし、ウォレットを接続するかアドレスを入力して、無料のテスト用ETHを受け取りましょう。このファウセットを利用するには、イーサリアムメインネット上に少なくとも0.001 ETHを保有している必要があります。
自分のERC20トークンを、イーサリアム・セポリア以外のネットワークにデプロイすることはできますか?
はい、ガス代を支払うためのネイティブトークンを所持しており、ウォレットでネットワークを切り替えることができれば、Arbitrum、Base、AvalancheなどのEVM互換チェーンであれば、テストネットかメインネットかを問わず、同じRemixのデプロイ手順が適用できます。
ERC20トークン規格とは何ですか?
ERC20は、イーサリアムブロックチェーン上でトークンを作成するための技術規格であり、6つの必須関数(totalSupply、balanceOf、transfer、transferFrom、approve、allowance)と3つのオプション関数(name、symbol、decimals)を定義することで、ウォレットやアプリケーション間の相互運用性を確保しています。
Remixからトークンコントラクトをデプロイするにはどうすればよいですか?
Remixでは、Solidityコンパイラ0.8.20以降を使用してコントラクトをコンパイルし、「Deploy & Run Transactions」に移動して、「Injected Provider」(MetaMaskをSepoliaに接続した状態)を選択し、対象のコントラクトを選んで「Deploy」をクリックし、ウォレットでトランザクションを確認してください。
デプロイ済みのERC20トークンをMetaMaskに追加するにはどうすればよいですか?
Remixからデプロイ済みのコントラクトアドレスをコピーし、MetaMaskを開いて「トークンのインポート」をクリックし、コントラクトアドレスを貼り付けます。すると、MetaMaskが自動的にトークンのシンボルと小数点以下の桁数を取得し、資産一覧に表示します。
ERC20トークンの発行にはどれくらいの費用がかかりますか?
デプロイにかかる費用は、ネットワークの状況やその時点のガス料金によって異なります。Sepoliaテストネットでは、無料のテスト用ETHを使用します。イーサリアムメインネットでは、ネットワークの混雑状況に応じてガス料金を支払う必要があるため、デプロイには実際のETHが必要となります。
結論
イーサリアム・セポリア・テストネット上で、ご自身のトークンの作成に成功されましたね。おめでとうございます!
初のトークンを発行した今、無料のQuicknodeアカウントを利用して、オンチェーンの旅の次のステップへ進みましょう。今すぐ登録すれば、エンタープライズグレードのインフラストラクチャに支えられた、最速のRPCノード、包括的なWeb3 APIライブラリ、そして最高性能のブロックチェーンETLツールを即座にご利用いただけます。
その他のトークン規格やスマートコントラクトのデプロイについて詳しく知りたい場合は、以下のQuicknodeガイドをご覧ください:
- ERC-721(NFT)の作成と展開方法
- ERC-1155 NFTの作成と展開方法
- アップグレード可能なERC20トークンの作成と展開方法
- Solidity を使って「Hello World」スマートコントラクトを作成する方法
- Hardhat を使用してスマートコントラクトを作成・デプロイする方法
また、Quicknodeガイドの以下の各セクションもご覧ください:
Web3やブロックチェーンに関する記事やガイドをもっと読みたい方は、ニュースレターにご登録ください。ご質問やサポートが必要な場合は、お気軽にDiscordサーバーにご参加いただくか、以下のフォームからフィードバックをお寄せください。Twitter(@Quicknode)やTelegramの告知チャンネルをフォローして、最新情報をチェックしてください。
皆様からのフィードバックを心よりお待ちしております!❤️
ご意見や新しいトピックに関するご要望などがありましたら、ぜひお知らせください。皆様からのご連絡を心よりお待ちしております。
