導入
イーサリアムは2014年にヴィタリック・ブテリン氏によって設立され、分散型アプリケーション(DApps)を起動するためのオープンソースプラットフォームとして位置づけられています。ブテリン氏が新しいブロックチェーンを作ろうと思った動機の多くは、ビットコインプロトコルの柔軟性の欠如に端を発しています。
イーサリアム ブロックチェーンは、リリース以来、開発者、企業、起業家を魅了し、スマート コントラクトや分散アプリケーションを立ち上げるユーザーの成長産業を生み出してきました。
この記事では、トークンを作成するための重要なフレームワークである ERC-20 標準について説明します。このフレームワークは Ethereum ネットワークに固有のものですが、Binance Chain の BEP-2 など、他のブロックチェーン標準にも影響を与えています。
ERC-20 標準とは何ですか?
Ethereum では、ERC は Ethereum Request for Comments の略です。これは、Ethereum でのプログラミングの標準を概説した技術文書です。Ethereum Improvement Proposals (EIP) と混同しないでください。EIP は、Bitcoin の BIP のように、プロトコル自体の改善を提案します。ERC は、アプリケーションとコントラクトが相互にやり取りしやすくするための規則を確立することを目的としています。
2015 年に Vitalik Buterin 氏と Fabian Vogelsteller 氏によって作成された ERC-20 は、イーサリアムベースのトークンに比較的シンプルなフォーマットを提案しています。この概要に従うことで、開発者は車輪の再発明をする必要がなくなり、業界全体ですでに使用されている基盤を基に構築することができます。
新しい ERC-20 トークンが作成されると、ERC-20 標準をサポートするサービスやソフトウェア (ソフトウェア ウォレット、ハードウェア ウォレット、取引所など) と自動的に相互運用可能になります。
ERC-20 標準は EIP (具体的には EIP-20) に開発されたことに留意してください。これは、その広範な使用により、最初の提案から数年後に起こりました。しかし、数年経った今でも、「ERC-20」という名前は残っています。
イーサリアムトークンの簡単な概要
ETH (イーサリアムのネイティブ暗号通貨) とは異なり、ERC-20 トークンはアカウントによって保持されません。トークンは、自己完結型データベースのようなコントラクト内にのみ存在します。コントラクトはトークンのルール (名前、シンボル、分割可能性など) を指定し、ユーザーの残高をイーサリアム アドレスにマッピングするリストを保持します。
トークンを移動するには、ユーザーはコントラクトにトランザクションを送信し、残高の一部を他の場所に割り当てるように依頼する必要があります。たとえば、アリスが 5,000 BinanceAcademyTokens をボブに送信したい場合、アリスは BinanceAcademyToken スマート コントラクト内の関数を呼び出して、そのように依頼します。

彼女の呼び出しは、トークン コントラクトに 0 ETH を支払う通常の Ethereum トランザクションのように見えるものの中に含まれています。呼び出しはトランザクションの追加フィールドに含まれており、アリスが何をしたいのかを指定します。この場合は、トークンをボブに転送します。
彼女はイーサを送信していないにもかかわらず、トランザクションをブロックに含めるにはイーサ建ての手数料を支払う必要があります。ETH を持っていない場合は、トークンを転送する前に ETH を入手する必要があります。
Etherscan での上記の実際の例を以下に示します。誰かが BUSD 契約を呼び出しています。Value フィールドには 0 ETH が送信されたと表示されていますが、トークンが転送され、手数料が支払われたことが分かります。
ここまでで、一般的な ERC-20 契約の構造をより深く理解するために、内部を詳しく見ていきましょう。
ERC-20 トークンはどのように作成されますか?

ERC-20 に準拠するには、コントラクトに 6 つの必須関数 (totalSupply、balanceOf、transfer、transferFrom、approve、allowance) を含める必要があります。さらに、name、symbol、decimal などのオプション関数を指定することもできます。これらの関数が何をするのかは、名前からわかるかもしれません。そうでなくても心配しないでください。詳しく説明します。
以下は、Ethereum の専用 Solidity 言語で表示される関数です。
総供給量
関数 totalSupply() パブリックビューは (uint256) を返します。上記の関数は、ユーザーによって呼び出されると、コントラクトが保持するトークンの総供給量を返します。
バランス
関数balanceOf(address _owner) パブリックビューは (uint256 balance) を返します。totalSupply とは異なり、balanceOf はパラメータ (アドレス) を取ります。呼び出されると、そのアドレスのトークン保有残高を返します。Ethereum ネットワーク上のアカウントは公開されているため、アドレスがわかっていればどのユーザーの残高も照会できることを覚えておいてください。
移行
関数 transfer(address _to, uint256 _value) public は (bool success) を返します。transfer は、トークンをあるユーザーから別のユーザーに適切に転送します。ここでは、送信先のアドレスと転送する金額を指定します。
呼び出されると、転送はイベント (この場合はイベント転送) と呼ばれるものをトリガーし、基本的にブロックチェーンに参照を含めるように指示します。
からの転送
関数 transferFrom(address _from, address _to, uint256 _value) public は (bool success) を返します。transferFrom 関数は、分散型アプリケーションでもう少しプログラミング性を高める transfer の便利な代替手段です。transfer と同様に、トークンを移動するために使用されますが、それらのトークンは必ずしもコントラクトを呼び出す人に属している必要はありません。
つまり、誰か(または別の契約)に、あなたに代わって資金を送金する権限を与えることができます。考えられるユースケースとしては、サブスクリプションベースのサービスの支払いが挙げられますが、毎日/毎週/毎月手動で支払いを行いたくない場合、代わりにプログラムに送金を任せることができます。
この関数は転送と同じイベントをトリガーします。
承認する
関数はapprove(address _spender, uint256 _value) publicで、(bool success)を返します。承認は、プログラム可能性の観点から見ても便利な機能です。この機能を使用すると、スマート コントラクトが残高から引き出すことができるトークンの数を制限できます。この機能がないと、コントラクトが誤動作したり(または悪用されたり)、すべての資金が盗まれたりするリスクがあります。
サブスクリプション モデルの例をもう一度見てみましょう。大量の BinanceAcademyToken があり、ストリーミング DApp への毎週の定期支払いを設定したいとします。昼夜を問わず Binance Academy のコンテンツを読むのに忙しいので、毎週時間をかけて手動でトランザクションを作成したくはありません。
BinanceAcademyToken の残高が膨大で、サブスクリプションの支払いに必要な金額をはるかに超えています。DApp がそれらをすべて使い果たしてしまうのを防ぐには、approve で制限を設定できます。サブスクリプションの費用が 1 週間あたり 1 BinanceAcademyToken だとします。承認された金額を 20 トークンに制限すると、サブスクリプションの支払いが 5 か月間自動的に行われます。
最悪の場合でも、DApp がすべての資金を引き出そうとしたり、バグが見つかったりしても、失うのは 20 トークンだけです。理想的ではないかもしれませんが、保有資産をすべて失うよりは確かに魅力的です。
呼び出されると、approve は承認イベントをトリガーします。転送イベントと同様に、ブロックチェーンにデータを書き込みます。
手当
関数 allowance(address _owner, address _spender) パブリックビューは (uint256 残り) を返します。allowance は、approve と組み合わせて使用できます。トークンを管理する権限をコントラクトに付与した場合、これを使用して、まだ引き出せるトークンの数を確認できます。たとえば、サブスクリプションで承認された 20 個のトークンのうち 12 個が使用されている場合、allowance 関数を呼び出すと、合計 8 個が返されます。
オプション機能
前述の関数は必須です。一方、名前、シンボル、小数点は含める必要はありませんが、ERC-20 コントラクトを少し見栄えよくすることができます。それぞれ、人間が読める名前を追加したり、シンボル (ETH、BTC、BNB など) を設定したり、トークンを何桁まで分割できるかを指定したりできます。たとえば、通貨として使用されるトークンは、資産の所有権を表すトークンよりも、分割しやすい方がメリットが大きい場合があります。
実際の契約におけるこれらの要素を確認するには、GitHub のこの例を確認してください。
ERC-20 トークンは何ができるのでしょうか?

上記のすべての機能をまとめると、ERC-20 コントラクトが完成します。総供給量を照会したり、残高を確認したり、資金を送金したり、他の DApp にトークンを管理する権限を与えたりすることができます。
ERC-20 トークンの大きな魅力は、その柔軟性です。定められた規約は開発を制限するものではないため、当事者は追加機能を実装し、ニーズに合わせて特定のパラメータを設定できます。
ステーブルコイン
ステーブルコイン(法定通貨にペッグされたトークン)は、多くの場合、ERC-20 トークン標準を使用します。先ほど参照した BUSD 契約へのトランザクションは一例であり、ほとんどの主要なステーブルコインもこの形式で利用できます。
一般的な法定通貨に裏付けされたステーブルコインの場合、発行者はユーロやドルなどの準備金を保有します。そして、準備金の1単位ごとにトークンを発行します。つまり、10,000ドルが金庫に保管されている場合、発行者は10,000個のトークンを作成し、それぞれを1ドルで換金できることになります。
技術的に言えば、これをイーサリアムで実装するのは非常に簡単です。発行者は 10,000 トークンの契約を開始するだけです。次に、発行者はトークンをユーザーに配布し、後でトークンを比例した量の法定通貨と引き換えることができるという約束をします。
ユーザーはトークンを使ってさまざまなことができます。商品やサービスを購入したり、DApps で使用したりできます。あるいは、発行者にトークンをすぐに交換するよう要求することもできます。その場合、発行者は返却されたトークンを焼却し (使用不可にします)、準備金から適切な量の法定通貨を引き出します。
前述のように、このシステムを管理する契約は比較的単純です。ただし、ステーブルコインを立ち上げるには、物流、規制遵守などの外部要因に関する多くの作業が必要です。
セキュリティトークン
セキュリティ トークンはステーブルコインに似ています。契約レベルでは、どちらも同じように機能するため、同一である可能性もあります。違いは発行者のレベルで生じます。セキュリティ トークンは、株式、債券、または物理的な資産などの証券を表します。多くの場合 (常にそうであるとは限りませんが)、セキュリティ トークンは、所有者にビジネスまたは商品に対する何らかの権利を付与します。
ユーティリティトークン
ユーティリティ トークンは、おそらく現在見られるトークンの中で最も一般的なタイプです。前の 2 つのトークンとは異なり、ユーティリティ トークンは何も裏付けられていません。資産担保型トークンが航空会社の株式のようなものだとすると、ユーティリティ トークンはマイレージ プログラムのようなもので、機能は果たしますが、外部的な価値はありません。ユーティリティ トークンは、ゲーム内通貨、分散型アプリケーションの燃料、ロイヤルティ ポイントなど、さまざまな用途に対応できます。
➠ 暗号通貨を始めようと考えていますか? Binance でイーサを購入しましょう!
ERC-20トークンをマイニングできますか?
イーサ (ETH) はマイニングできますが、トークンはマイニングできません。新しいトークンが作成されると、トークンは鋳造されます。契約が開始されると、開発者は計画とロードマップに従って供給を分配します。
通常、これはイニシャル コイン オファリング (ICO)、イニシャル エクスチェンジ オファリング (IEO)、またはセキュリティ トークン オファリング (STO) を介して行われます。これらの頭字語のバリエーションを目にすることもあるかもしれませんが、これらの概念は非常に似ています。投資家は契約アドレスにイーサを送信し、代わりに新しいトークンを受け取ります。集められたお金は、プロジェクトのさらなる開発に資金として使用されます。ユーザーは、プロジェクトの発展に合わせてトークンを (すぐにまたは後日) 使用したり、利益を得るために再販したりできることを期待しています。
トークンの配布は自動化する必要はありません。多くのクラウドファンディング イベントでは、ユーザーはさまざまなデジタル通貨 (BNB、BTC、ETH、USDT など) で支払うことができます。それぞれの残高は、ユーザーが提供したアドレスに割り当てられます。
ERC-20トークンの長所と短所
ERC-20トークンの利点
代替可能
ERC-20 トークンは代替可能で、各ユニットは他のユニットと交換可能です。BinanceAcademyToken を保有している場合、どのトークンを保有しているかは関係ありません。他の人のトークンと交換することができ、現金や金と同じように機能的に同一です。
これは、トークンが何らかの通貨になることを目指している場合に理想的です。個々のユニットに識別可能な特性を持たせることは望ましくありません。そうすると、トークンが非代替的になります。これにより、一部のトークンが他のトークンよりも価値が高くなったり、価値が低くなったりして、トークンの目的が損なわれる可能性があります。
フレキシブル
前のセクションで説明したように、ERC-20 トークンは高度にカスタマイズ可能で、さまざまなアプリケーションに合わせて調整できます。たとえば、ゲーム内通貨、ロイヤルティ ポイント プログラム、デジタル コレクタブルとして使用したり、美術品や財産権を表すために使用したりすることもできます。
人気のある
暗号通貨業界での ERC-20 の人気は、それを青写真として使用する非常に説得力のある理由です。新しくリリースされたトークンと互換性のある取引所、ウォレット、スマート コントラクトはすでに多数あります。さらに、開発者サポートとドキュメントも豊富です。
ERC-20トークンの短所
スケーラビリティ
多くの暗号通貨ネットワークと同様に、イーサリアムも成長痛から逃れられるわけではありません。現在の形態では、拡張性が低く、ピーク時にトランザクションを送信しようとすると、高額な手数料と遅延が発生します。ERC-20 トークンを起動してネットワークが混雑すると、その使い勝手が影響を受ける可能性があります。
これは Ethereum に限った問題ではありません。むしろ、安全な分散システムでは必要なトレードオフです。コミュニティは、Ethereum Plasma や Ethereum Casper などのアップグレードを実装する Ethereum 2.0 への移行でこれらの問題に対処する予定です。
スケーラビリティの問題の詳細については、「ブロックチェーンのスケーラビリティ: サイドチェーンと支払いチャネル」を参照してください。
詐欺
技術自体の問題ではありませんが、トークンの発行の容易さは、いくつかの点で欠点と考えられるかもしれません。シンプルな ERC-20 トークンの作成には最小限の労力しかかかりません。つまり、良くも悪くも、誰でも作成できるということです。
そのため、何に投資するかには注意が必要です。ブロックチェーン プロジェクトを装ったネズミ講やポンジ スキームが数多く存在します。投資する前に自分で調査を行い、機会が正当なものかどうかについて独自の結論を出してください。
ERC-20、ERC-1155、ERC-223、ERC-721 – 違いは何ですか?
ERC-20 は最初の (そして現在まで最も人気のある) Ethereum トークン標準ですが、決して唯一の標準ではありません。長年にわたり、ERC-20 の改良を提案したり、まったく異なる目標を達成しようとしたりする他の標準が数多く登場してきました。
あまり一般的ではない標準の中には、非代替性トークン (NFT) で使用されるものがあります。場合によっては、異なる属性を持つ固有のトークンを持つことでユースケースにメリットがもたらされることがあります。ユニークな芸術作品やゲーム内アセットなどをトークン化したい場合は、これらの契約タイプのいずれかがより魅力的かもしれません。
たとえば、ERC-721 標準は、非常に人気のある CryptoKitties DApp に使用されました。このような契約は、ユーザーが独自の非代替トークンを作成し、メタデータ (画像、説明など) をエンコードするための API を提供します。
ERC-1155 標準は、ERC-721 と ERC-20 の両方の改良版と見ることができます。これは、同じ契約で代替可能なトークンと代替不可能なトークンの両方をサポートする標準の概要を示しています。
ERC-223 や ERC-621 などの他のオプションは、使いやすさの向上を目指しています。前者は、偶発的なトークン転送を防ぐための安全策を実装しています。後者は、トークンの供給量を増減するための追加機能を追加します。
NFT に関する詳細については、「暗号収集品と非代替トークン (NFT) のガイド」を必ずご覧ください。
最後に
ERC-20 標準は長年暗号資産の分野で主流を占めてきましたが、その理由は明らかです。比較的簡単に、誰でも幅広いユースケース (ユーティリティ トークン、ステーブルコインなど) に適したシンプルな契約を展開できます。とはいえ、ERC-20 には他の標準で実現されている機能の一部が欠けています。後続のタイプの契約が ERC-20 に取って代わるかどうかはまだわかりません。

