ERC-20とは何ですか?イーサリアムの経済を支えるトークン規格です。
MetaMaskウォレットにはUSDTが入っています。LINKも少し、先週のスワップで手に入れたUNIも少し、それから誰かがエアドロップしてくれたドッグトークンも売るのを忘れてばかりいます。これらのトークンは全く異なる機能を持っています。Tetherは現金と国債に裏付けられたステーブルコインです。Chainlinkは現実世界のデータをスマートコントラクトに供給するオラクルネットワークを運営しています。Uniswapはイーサリアム上で最大のDEXを管理しています。ドッグトークンは特に役に立ちません。しかし、私のウォレットではこれらすべてが同じリストに表示され、同じボタンで送金でき、私が使っているすべてのDeFiプロトコルが特別な設定なしで受け入れてくれます。
それは、4つすべてが同じルールに従っているからこそ成り立つのです。これらはすべてERC-20トークンです。インターフェースも機能も、ルールブックもすべて同じです。そして、ERC-20が実際に何を意味するのかを理解することが、イーサリアムが経済としてどのように機能するのかを理解する第一歩となります。
ファビアン・フォーゲルステラーは2015年11月にこの提案書を作成しました。彼は「イーサリアム・リクエスト・フォー・コメント第20号」という味気ない名前を付けました。ヴィタリック・ブテリンが最終版を共同執筆しました。2017年には正式に採用され、その後ICOブームが到来しました。ERC-20のおかげでトークン発行がほぼ無料になったため、何千ものプロジェクトが一夜にしてトークンを発行しました。50万件ものトークン契約が発行された後も、この標準は依然として業界を牽引しています。これがERC-20の仕組みであり、たとえSolidityを一行も書く予定がなくても、なぜこの標準に関心を持つべきなのかを説明するものです。
ERC-20規格の仕組み
名前がやや専門的すぎる。ERCはEthereum Request for Commentの略。20は提案番号。それだけだ。Fabianという開発者が「すべてのトークンが従うべきルールはこれだ」と述べ、次に空いていた番号20を提案に付けた。ルールが20個あるわけでも、トークンが20個あるわけでもない。単にEthereumの改善キューにおける提案番号20番なのだ。
これらのルールが意味するところは、イーサリアム上で代替可能なトークンを作成する場合、スマートコントラクトにこれらの特定の機能を含める必要があるということです。「代替可能」とは、各トークン単位が同一であることを意味します。1つのUSDCは他のすべてのUSDCと同じです。UNIトークンはすべて交換可能なので、どの特定のUNIトークンを保有しているかは気にする必要はありません。NFTは正反対です。それぞれがユニークです。異なる基準、異なる記事です。
ERC-20規格では、6つの関数と2つのイベントが規定されています。時価総額1400億ドルのUSDTから、30秒前に誰かが立ち上げたばかりのミームコインまで、規格に準拠したすべてのトークンコントラクトは、これらの同じ呼び出しを実装しています。
| 関数 | 平易な英語訳 |
|---|---|
| 総供給量() | 「世界にはこれらのトークンがいくつ存在するのか?」 |
| バランス(アドレス) | 「この財布にはいくつ入っていますか?」 |
| 送金(宛先、金額) | 「私のウォレットからこの相手にXトークンを送る」 |
| 承認(支出者、金額) | 「このDeFiプロトコルに私のトークンを最大X個まで使わせてください」 |
| transferFrom(from, to, amount) | 「ウォレットAからウォレットBへトークンを移動する許可を得ています」 |
| 手当(所有者、支出者) | 「この浪費家は、手当からあといくら使えるだろうか?」 |
何らかのイベントが発生するたびに、2つのイベントがブロックチェーン上に記録されます。Transferイベントは、トークンがウォレット間で移動するたびに発生します。Proprovalイベントは、誰かが支出の許可を与えたときに発生します。Etherscanなどのブロックチェーンエクスプローラーは、これらのイベントを使用して、トークンを検索したときに表示されるトランザクション履歴を作成します。
3つのオプションフィールドでトークンに個性を加えることができます。nameはトークンに人間が読みやすいラベル(「Chainlink」など)を付け、 symbolはティッカーシンボル(「LINK」など)で、 decimalsはトークンを分割できる粒度を設定します(ほとんどのトークンはETHに合わせて18を使用しますが、USDTは6を使用しており、それが原因で誰も認めたくないほど多くのバグが発生しています)。
関数は6つ。イベントは2つ。オプションのフィールドは3つ。これが仕様のすべてです。ナプキンに印刷してもコーヒーの染みがつく余地が残るほどです。しかし、このナプキンサイズの仕様が、数千億ドル規模のトークン経済を支えているのです。MetaMaskはこれらの関数を読み取って残高を表示します。Uniswapはこれらの関数を呼び出してスワップを実行します。Aaveはこれらの関数を使ってレンディングを管理します。あなたがこれまで使ってきたすべてのDeFiプロトコルは、この同じインターフェースを通してトークンと通信しています。シンプルさこそが重要なのです。

ERC-20がイーサリアムのすべてを変えた理由
私が暗号通貨業界で働いていたのは2016年、この標準規格が存在する前のことでした。まさに混沌としていました。トークンはすべてカスタム開発で、誰かが独自の関数名、独自の送金ロジック、独自の残高確認方法でトークンコントラクトを構築していました。MetaMaskはこれらのトークンの半分が何なのかさえ把握していませんでした。取引所が新しいトークンのサポートを追加するには、それぞれにカスタム統合コードが必要だったため、数ヶ月かかりました。DEXの構築?それは無理でした。個々のトークン実装ごとにハンドラーを作成する必要があったのです。
ERC-20は、そんな混乱に終止符を打ちました。この規格が採用されると、コントラクトアドレスを貼り付けた瞬間に新しいトークンがMetaMaskに表示されるようになりました。Uniswapは誰の許可も得ずにそれを上場でき、Aaveはカスタムコードを一行も書かずに担保として受け入れることができました。一つの規格で、普遍的な互換性が実現したのです。
2017年のICOブームがその証拠だった。寮の部屋にいる学生なら、昼食後にERC-20トークンをデプロイし、ホワイトペーパーを掲載したウェブサイトを立ち上げ、真夜中には投資家からETHを受け取ることができた。私はそれをリアルタイムで目撃した。プロジェクトは数十億ドルを調達した。中には正当なものもあり、実際に製品を開発した。ほとんどは粗悪品だった。中には明らかな詐欺もあった。しかし、その基盤となる技術はどうだったか?完璧に機能した。この規格は、トークンの作成とやり取りを極めて容易にするという、まさに設計通りの役割を果たしたのだ。
その規模は今や驚異的です。イーサリアムネットワーク上には50万を超えるERC-20トークン契約が存在します。ERC-20トークンの時価総額は数千億ドルに達し、USDTだけでも1400億ドルを超えています。USDC、LINK、UNI、DAI、SHIB、MKRなどを加えると、イーサリアムの経済価値の大部分がERC-20契約の中に存在していることになります。
| 人気のERC-20トークン | カテゴリ | 時価総額(概算) |
|---|---|---|
| USDT(テザー) | ステーブルコイン | 1400億ドル以上 |
| USDC(丸印) | ステーブルコイン | 600億ドル以上 |
| リンク(チェーンリンク) | オラクルネットワーク | 80億ドル以上 |
| UNI(Uniswap) | DEXガバナンス | 40億ドル以上 |
| DAI(メーカー) | 分散型ステーブルコイン | 50億ドル以上 |
| AAVE | 融資プロトコル | 20億ドル以上 |
| SHIB(柴犬) | ミームコイン | 60億ドル以上 |
| MKR(メーカー) | ガバナンス | 15億ドル以上 |
ERC-20トークンの作成:思っているより簡単
以前、YouTubeのライブ配信で誰かがERC-20トークンをデプロイする様子を見たことがある。14分かかった。チャットで何をしているのかを説明する時間も含めてだ。
これは配信者の賢さを自慢しているわけではありません。OpenZeppelinがいかに簡単にこれを実現したかを示すものです。OpenZeppelinは、監査済みで実績のあるSolidityコードのライブラリであり、面倒な処理をすべて自動で行ってくれます。トークン名(「MyToken」)、シンボル(「MTK」)、小数点以下の桁数(ETHと同じ18桁)、初期供給量を選択するだけで済みます。ライブラリは、6つのERC-20関数、イベント、セキュリティチェックを処理します。テンプレートをコピーし、4つの変数を変更してイーサリアムにデプロイすれば、本物のトークンが手に入ります。
デプロイにかかるガス料金は変動します。ネットワークが静かな時は20~50ドル程度。NFTのミント日などのピーク時の混雑時は200~500ドル。イーサリアムのメインネットではなく、ArbitrumやBaseにデプロイすれば、料金は数ドルにまで下がります。費用面での障壁はほぼゼロです。
こうしたアクセスのしやすさには、暗い側面もあります。イーサリアムのブロックチェーンは、トークン契約が正当かどうかを検証しません。チームの検証、コードの監査、ビジネスモデルの評価も行いません。ガス料金を支払えるなら、トークンをデプロイできます。そのため、Etherscanには数十万ものトークン契約が掲載されていますが、そのほとんどは放棄された実験的なものか、現在も活動中の詐欺です。ERC-20規格は互換性を保証しますが、トークンを保有する価値があるかどうかについては一切保証しません。
ERC-20とその他のイーサリアムトークン規格の比較
よく「ERC-20は唯一のトークン規格ですか?」と聞かれますが、いいえ、全く違います。しかし、ERC-20は最初に機能した規格であり、その後登場した規格はERC-20が残した問題を解決しました。
ERC-721が登場し、NFTが誕生しました。ERC-20トークンはすべて互換性がありますが(あなたのUSDCは私のUSDCと同じです)、ERC-721トークンはそれぞれ固有のIDを持っています。Bored Ape #4293はBored Ape #7810とは全く異なる資産です。内部的には似たような関数名が使われていますが、ロジックは一般的な数量ではなく個々のアイテムに対して動作します。Bored Apeを半分だけ送ることはできません。すべて送るか、何も送らないかのどちらかです。
ERC-1155は、アイテムの種類ごとに個別のコントラクトを用意することにうんざりしたゲーム開発者によって開発されました。1つのコントラクトで、金貨(ERC-20と同様に代替可能)、鉄の剣(半代替可能、同一アイテム50個)、そして唯一無二の伝説のヘルメット(非代替可能、世界に1つ)を扱います。バッチ転送によりガス代を節約できます。1回のトランザクションで100種類のアイテムを移動できるため、100回の個別のトランザクションで済むわけではありません。
BEP-20は、Binance Smart Chainが自社バージョンを呼んでいる名称です。機能もイベントも同じですが、ブロックチェーンが異なります。ERC-20をより安価なネットワークにコピー&ペーストしたようなものです。SolanaのSPL規格は、SolanaがEthereumとの互換性を考慮して設計されていないため、全く異なるアーキテクチャで同じ機能を実現しています。
| 標準 | トークンタイプ | 代替可能? | ユースケース | ネットワーク |
|---|---|---|---|---|
| ERC-20 | 代替可能なトークン | はい | 通貨、ガバナンス、ユーティリティ | イーサリアム |
| ERC-721 | 非代替性トークン | いいえ(固有ID) | NFT、デジタルアート、コレクターズアイテム | イーサリアム |
| ERC-1155 | マルチトークン | 両方 | ゲーム、複合アセットタイプ | イーサリアム |
| BEP-20 | 代替可能なトークン | はい | ERC-20と同じ | BNBチェーン |
| スプル | 代替可能 + NFT | 両方 | ソラナ生態系 | ソラナ |
DeFiにおけるERC-20トークン:なぜこの規格が分散型金融を支えるのか
ERC-20を取り除けば、DeFiは一夜にして崩壊する。「苦戦」ではなく、崩壊だ。システムのあらゆる要素が、トークンが同じ言語で通信することを前提としているからだ。
Uniswapは、2つのERC-20トークンをプールにペアリングし、それらの間で交換できるようにします。USDCでも、SHIBでも、友人が午前2時にローンチしたあのミームコインでも使えます。DEXはトークンの機能には関心がありません。コントラクトがtransfer()とapprove()を実装していることだけが重要です。流動性プールを追加すれば、取引が開始されます。上場申請も、取引所の審査も、待ち時間もありません。
AaveとCompoundはERC-20トークンの貸し出しを行います。プロトコルはbalanceOf()を呼び出して預け入れた金額を確認し、transfer()を呼び出してトークンを移動させます。ローンを返済する際にはapprove()とtransferFrom()を使用します。インターフェースが既に確立されているため、新しいトークンの貸し出し市場は、トークンがデプロイされたその日に立ち上げることができます。
次に、奇妙なETHの問題があります。ETHはERC-20よりも前に存在していたため、標準に準拠していません。そのため、構成可能性が損なわれます。解決策はWETHです。Wrapped Etherは、ネイティブETHをラップしたERC-20ラッパーです。1 ETHを預けると、DeFiプロトコルが通常どおり処理できる1 WETHを受け取ります。WBTCはビットコインに対しても同様のことを行い、保管されている実際のビットコインによって1対1で裏付けられたERC-20トークンとして、BTCの価値をイーサリアムのエコシステムに取り込みます。
実際の結果として、私は今日、これまで作成されたすべてのERC-20トークン(まだ存在しないトークンも含む)に対応するDeFiプロトコルを構築できます。私のコードはUSDTについて具体的に知る必要はありません。明日誰かが新しいステーブルコインをローンチしても、更新する必要はありません。インターフェースがすべてを処理します。この構成可能性こそが、イーサリアムが他のどのブロックチェーンよりも多くのDeFi活動、より多くのTVL、そしてより多くの開発者ツールを持っている理由です。ERC-20規格は、他のすべての基盤となるものです。
セキュリティリスクと一般的なERC-20の問題点
DeFiユーザーに数百万ドルの損失をもたらし、実際に被害を受けるまでほとんど誰もその存在に気づかない承認バグについてお話ししましょう。
Uniswapでトークンを交換したり、Aaveに入金したりする際、dAppはトークンの使用を「承認」するよう求めます。ほとんどのdAppはデフォルトで無制限の承認を許可しています。一見無害に思えますが、その意味を理解すると、スマートコントラクトは、あなたが明示的に許可を取り消すまで、いつでも、永久に、ウォレットにあるそのタイプのトークンをすべて使用できることがわかります。もし6か月後にコントラクトがハッキングされた場合、攻撃者はあなたが以前に許可したことを忘れていたトークンまで、古い承認を利用して使い果たしてしまう可能性があります。
これは実際に起こったことです。一度だけではありません。解決策は単純ですが面倒です。各取引に必要な金額だけを承認してください。または、Revoke.cash を使用して、忘れていた古い承認を整理してください。私は数か月ごとに確認していますが、いつも予想以上にひどい状態です。ERC-2612 は、オンチェーン承認を署名付き許可証に置き換える新しい標準であり、このリスクを軽減します。しかし、ほとんどの dApps は依然として古いパターンを使用しています。
偽トークンは毎週のように人々を騙しています。詐欺師は「Uniswap」や「Chainlink」といったERC-20コントラクトを、わずかに異なるコントラクトアドレスで展開します。DEXでそのコントラクトを検索し、見覚えのある名前を見つけて偽物を購入してしまうと、お金は詐欺師のウォレットに直接送金されてしまいます。本物のLINKコントラクトアドレスは0x514910771AF9Ca656af840dff83E8264EcF986CAです。偽物のアドレスは0x514910...といった具合です。必ずCoinGeckoや公式プロジェクトサイトからアドレスをコピーしてください。名前だけで検索してはいけません。
さらに、巧妙な仕掛けが施されたトークンも存在します。表面上は標準的なERC-20コントラクトのように見えますが、実際にはデプロイヤーが無制限に新規トークンを発行できる機能を追加していたり、トークンをスワップしようとした際に99%の手数料を徴収する売却税を設定していたり、デプロイヤー以外の誰も売却できないブラックリストを設定していたりします。ERC-20規格は、コントラクトが何をしてはいけないかについては何も規定していません。最低限の機能のみを規定しており、それ以外はすべて開発者次第です。トークン監査、DextScore、Etherscanの検証済みコントラクトといったサービスは、この規格の簡素さと詐欺師の創意工夫との間のギャップを埋めるために存在しているのです。