

EthereumはVitalik Buterinが2014年に設立し、分散型アプリケーション(DApps)を展開するためのオープンソースプラットフォームとして位置づけられています。Buterinが新たなブロックチェーンを構築した主な背景は、Bitcoinプロトコルの柔軟性の不足にありました。
Ethereumの登場以降、ブロックチェーンには開発者や企業、起業家が集まり、スマートコントラクトや分散型アプリケーションを活用するユーザーによる新たな産業が形成されています。
本記事では、トークン生成のための重要な枠組みであるERC-20標準について解説します。この標準はEthereumネットワーク専用ですが、他の多くのブロックチェーンにも影響を与えています。
EthereumにおけるERCとは、Ethereum Request for Commentsの略称です。これは、Ethereum上でのプログラミング標準をまとめた技術文書です。Ethereum Improvement Proposals(EIPs)はBitcoinのBIPs同様、プロトコル自体の改善提案ですが、ERCはアプリケーションやコントラクト間の連携を容易にする規約の確立が目的です。
ERC-20はVitalik ButerinとFabian Vogelstellerによって2015年に提案され、Ethereumトークンのためのシンプルな仕様を示しています。開発者はこの規格に従うことで、業界で広く使われている基盤上で効率的にトークンを開発できます。
新たなERC-20トークンは、ERC-20標準対応のサービスやソフトウェア(ソフトウェアウォレット、ハードウェアウォレット、取引所など)と即座に相互運用可能となります。
なお、ERC-20標準は後にEIP(EIP-20)として正式化されました。これは提案から数年後、利用が広がった結果です。この進化を経ても「ERC-20」は標準名称として定着しています。
ETH(Ethereumのネイティブ暗号資産)とは異なり、ERC-20トークンはアカウントが直接保有するのではなく、コントラクト内にのみ存在します。コントラクトはデータベースのように機能し、名称、シンボル、分割性などのルールを定め、ユーザーの残高をEthereumアドレスに紐づけて管理します。
トークンの移動には、ユーザーがコントラクト宛てにトランザクションを送り、残高の一部を別のアドレスへ割り当てるよう依頼します。例えばAliceがBobに5,000トークンを送る場合、スマートコントラクトの該当関数を呼び出して処理を依頼します。
この呼び出しは、トークンコントラクトへの0 ETH送付を伴う通常のEthereumトランザクションに含まれ、追加フィールドでAliceの意図(Bobへのトークン送付)が指定されます。
ETH自体は送信しなくても、トランザクションをブロックに記録するための手数料(ETH建て)は必要です。ETHがなければ、事前に調達する必要があります。
基礎を理解したところで、標準的なERC-20コントラクトの構造を詳しく見ていきましょう。
ERC-20準拠コントラクトには、totalSupply、balanceOf、transfer、transferFrom、approve、allowanceの6つの必須関数が必要です。加えて、name、symbol、decimalなどのオプション関数を加えることもできます。
function totalSupply() public view returns (uint256)
この関数を呼び出すと、コントラクトが管理するトークンの総供給量を返します。
function balanceOf(address _owner) public view returns (uint256 balance)
totalSupplyと異なり、balanceOfはアドレス情報をパラメータとして受け取ります。呼び出すことで、そのアドレスが保有するトークン残高が返されます。Ethereumのアカウントは公開されているため、アドレスさえ分かれば誰でも残高を照会可能です。
function transfer(address _to, uint256 _value) public returns (bool success)
transfer関数は、ユーザー間でトークンを移転します。呼び出し元が送信先のアドレスと数量を指定します。
呼び出されると、event(event transfer)が発生し、ブロックチェーンにトランザクションの記録が残ります。
function transferFrom(address _from, address _to, uint256 _value) public returns (bool success)
transferFrom関数はtransferの代替として、分散型アプリでプログラマビリティを高めます。transfer同様トークンを移動しますが、必ずしも呼び出しユーザーの所有するトークンである必要はありません。
ユーザーは他者や別のコントラクトに資金移動の権限を与えられます。実用的な例として、サブスクリプションサービスでは毎回手動で支払う代わりに、プログラムに自動処理を任せられます。
この関数はtransferと同じイベントを発生させます。
function approve(address _spender, uint256 _value) public returns (bool success)
approve関数はプログラマビリティの観点で重要です。これにより、ユーザーはスマートコントラクトが自身の残高から引き出せるトークンの上限を設定できます。これがないと、コントラクトの不具合や悪用による資金流出リスクが高まります。
サブスクリプションモデルの場合、ユーザーが大量のトークンを保有し、毎週自動支払いを設定したいとき、approveで引き出し上限を事前に決められます。
残高が必要額を大きく上回る場合、approveで上限値を設定できます。例えば週1トークンの支払いなら、承認値を20トークンにして5か月間自動化できます。
万が一DAppに不具合が発生しても、失うのは20トークンのみで済みます。これは全資金損失よりも安全です。
呼び出し時はapprovalイベントが発生し、ブロックチェーンに記録されます。
function allowance(address _owner, address _spender) public view returns (uint256 remaining)
allowance関数はapproveと連携し、ユーザーがコントラクトに権限を与えた後、残りの引き出し可能トークン数を確認できます。例えば承認済み20トークンのうち12トークンが消費されていれば、allowance関数で残り8が返されます。
上記の必須関数に加え、name、symbol、decimalはオプションです。これらを設定することで、コントラクトはより使いやすくなります。名称は人が読めるようになり、シンボル(ETH、BTCなど)や分割単位を設定できます。通貨用途では細かい分割性が求められる場合もあります。
各関数を組み合わせることで、開発者は機能的なERC-20コントラクトを構築できます。ユーザーは総供給量の照会、残高確認、資金移動、他DAppへの権限付与などが可能です。
ERC-20トークンの最大の魅力は柔軟性です。規格は開発を制限せず、各種の追加機能やパラメータを自由に組み込めます。
法定通貨連動型トークン(ステーブルコイン)はERC-20標準を広く利用しており、主要ステーブルコインの多くがこの形式です。
一般的な法定通貨担保型ステーブルコインでは、発行者が法定通貨準備金を保有し、その単位ごとにトークンを発行します。例えば$10,000を保管していれば、1トークン$1換算で10,000トークンを発行可能です。
この仕組みはEthereum上で技術的にシンプルに実装でき、発行者は必要な数だけコントラクトで発行し、後でユーザーへ配布します。ユーザーは後日トークンを法定通貨と交換できます。
ユーザーはトークンを商品・サービス購入やDApps利用、発行者への償還申請に利用可能です。償還時に発行者は返却されたトークンをバーンし、準備金から同額の法定通貨を引き出します。
この仕組みのコントラクトは比較的簡単ですが、ローンチにはロジスティクスや規制対応など外部要因への対策が欠かせません。
セキュリティトークンはステーブルコインと構造が似ています。コントラクトの機能は同じでも、発行者の目的が異なります。セキュリティトークンは株式や債券、資産などの証券を表し、保有者にビジネスや資産への持分を付与する場合もあります。
ユーティリティトークンは暗号資産分野で最も一般的です。前述2タイプと異なり、外部資産に裏付けられていません。資産担保型が航空会社株のようなものであれば、ユーティリティトークンはマイレージプログラムのイメージです。特定の機能はありますが、外部価値はありません。ゲーム内通貨、分散型アプリの燃料、ロイヤルティポイントなど、多様な用途があります。
ether(ETH)はマイニング可能ですが、トークン自体はマイニングできず、新規発行時にはminted(発行)と呼ばれます。コントラクト展開時に、開発者が供給量を計画・ロードマップに基づいて分配します。
分配はInitial Coin Offering(ICO)、Initial Exchange Offering(IEO)、Security Token Offering(STO)などで行われます。名称は異なっても、仕組みは大きく変わりません。投資家がコントラクトアドレスにetherを送り、発行されたトークンを受け取ります。資金はプロジェクト開発に活用され、ユーザーはトークンを使ったり、後で売却して利益を得ることを期待します。
分配は必ずしも自動化されている必要はなく、多くのクラウドファンディングでは様々な暗号資産で支払いが可能です。参加者が指定したアドレスに、それぞれの残高が割り当てられます。
ERC-20トークンは代替可能で、どの単位も他と交換できます。特定のERC-20トークンを持っていても、どれかは関係なく、他人と交換しても機能は同じです。現金や金と同様です。
この特性は通貨用途に最適です。識別可能な特徴を持つ場合は非代替性となり、価値の違いが生まれて交換媒体としての役割を損ないます。
ERC-20トークンは高度なカスタマイズが可能で、ゲーム内通貨、ロイヤルティポイント、デジタルコレクティブル、美術品や財産権の表現など、多くの用途に適応できます。
ERC-20は暗号資産業界で最も普及しており、利用する強力な理由となっています。多くの取引所やウォレット、スマートコントラクトが新規トークンに対応し、情報も豊富です。
Ethereumは多くの暗号資産ネットワーク同様、スケーラビリティの課題を抱えています。現状では拡張性が低く、ピーク時のトランザクションは高額な手数料や遅延につながります。ERC-20トークンの利用は、ネットワーク混雑時に大きな影響を受けることがあります。
これはEthereum固有ではなく、安全な分散型システムのトレードオフです。コミュニティはアップグレードやネットワーク改善で対応を進めています。
技術自体の問題ではありませんが、トークンの発行が容易なことは時にリスクを伴います。ERC-20トークンの作成は容易なため、誰でも発行でき、正規・不正目的の区別がつきにくい状況です。
投資の際には十分な注意が必要です。多くのピラミッド型やポンジスキームがブロックチェーンプロジェクトを装っています。投資前の徹底調査が重要です。
ERC-20はEthereumで最初かつ最も普及しているトークン標準ですが、唯一のものではありません。時を経て、多くの新しい規格が登場し、ERC-20の改良や異なる目的に対応しています。
非代替性トークン(NFT)用の標準も登場しています。用途によってはユニークな属性を持つトークンが有用です。例えば美術品やゲーム内資産をトークン化したい場合、これらの規格が最適です。
ERC-721標準は、人気DApp「CryptoKitties」で使用されました。このコントラクトは、ユーザーが独自のNFTを発行し、画像や説明などのメタデータを記録できます。
ERC-1155標準はERC-721とERC-20両方の改良版とされ、1つのコントラクトで代替性・非代替性トークンを同時に扱えます。
ERC-223やERC-621は使い勝手向上を目的とし、ERC-223は誤送付防止機能、ERC-621は供給量の増減機能を追加しています。
ERC-20標準は長年に渡り暗号資産分野を牽引しています。ユーティリティトークンやステーブルコインなど多様な用途に、簡便なコントラクト展開が可能です。一方、ERC-20には他規格が持つ機能が一部不足しています。今後、より進化した規格が業界標準となるかどうかは注目されます。
ERC-20トークンはEthereumブロックチェーン上で技術規則に基づき発行される標準化デジタル資産です。Bitcoinなどのネイティブ暗号資産と異なり、スマートコントラクトにより生成され、Ethereumネットワーク内で価値を持ち、独自のトークンエコノミクスや用途を実現します。
ERC-20トークンはEthereum上のスマートコントラクトで運用され、標準化プロトコルに従いトークン転送・残高管理・承認が可能です。全トランザクションはブロックチェーンに記録され、透明性と安全性を担保し、ユーザーはシームレスにトークンの送受信ができます。
ERC-20はEthereum上の代替性トークン用標準インターフェースです。主な機能はアドレス間のトークン移転、支払い承認、残高管理、総供給量管理、イベント記録です。これによりウォレットや分散型アプリ間の相互運用性が確保されます。
Ethereum上でSolidityスマートコントラクトを作成し、Remix IDEやHardhatなどで展開します。ERC-20標準インターフェース(mint/transfer関数)を実装してメインネットに公開します。デプロイにはガス代が必要です。
ERC-20はEthereumの代替性トークン標準で、資産が相互交換可能です。BEP-20はBinance Smart Chainの同等規格。ERC-721はユニーク属性を持つ非代替性トークン(NFTs)を生成します。ERC-20は同一・分割可能、ERC-721は唯一・分割不可という違いがあります。
主なリスクはスマートコントラクトの脆弱性、フィッシング、秘密鍵盗難、不正トークンです。安全なウォレットの利用、コントラクトアドレスの確認、二段階認証の有効化、正規プラットフォームのみの利用で資産を守れます。











