コンテンツ
導入
ERC-20規格とは何ですか?
イーサリアムトークンについての簡単な注意事項
ERC-20 トークンはどのように作成されますか?
ERC-20 トークンは何ができるのですか?
ステーブルコイン
トークン投資家
ユーティリティトークン
ERC-20トークンをマイニングできますか?
ERC-20トークンの長所と短所
ERC-20トークンの利点
ERC-20トークンの欠点
ERC-20、ERC-1155、ERC-223、ERC-721、違いは何ですか?
結論としては
導入
イーサリアムは 2014 年に Vitalik Buterin によって設立され、分散型アプリケーション (DApps) を起動するためのオープンソース プラットフォームとしての地位を確立しました。ブテリン氏が新しいブロックチェーンを作成する動機は、ビットコインの柔軟性の欠如に基づいています。
イーサリアム ブロックチェーンはその立ち上げ以来、開発者、企業、起業家を魅了し、スマート コントラクトや分散型アプリケーションを立ち上げるユーザーの成長産業を生み出しています。
この記事では、トークンを作成するための重要なフレームワークである ERC-20 標準について見ていきます。このフレームワークはイーサリアム ネットワークに特有のものですが、バイナンス チェーンの BEP-2 などの他のブロックチェーン標準にも影響を与えています。
ERC-20規格とは何ですか?
イーサリアムでは、ERC はイーサリアムのコメント要求です。これらは、イーサリアム上のプログラミングの標準を定義する技術文書です。これらを、ビットコインの BIP と同様にプロトコル自体の改善を提案するイーサリアム改善提案 (EIP) と混同しないでください。むしろ、ERC はアプリケーションとコントラクト間の相互作用を促進する規則を確立することを目指しています。
2015 年に Vitalik Buterin と Fabian Vogelsteller によって定義された ERC-20 は、イーサリアムベースのトークンに比較的単純な形式を提供します。彼の青写真に従えば、開発者は車輪を再発明する必要がありません。代わりに、その地域ですでに使用されている基礎の上に構築することができます。
新しい ERC-20 トークンが作成されると、ERC-20 標準をサポートするサービスおよびソフトウェア (ソフトウェア ウォレット、ハードウェア ウォレット、取引所など) と自動的に相互運用可能になります。
ERC-20 標準は EIP (具体的には EIP-20) によって開発されたことに注意する必要があります。これは、広く使用されたため、最初の提案から数年後に起こりました。しかし、数年経っても「ERC-20」という名前は残りました。
イーサリアムトークンについての簡単な注意事項
ETH (イーサリアムのネイティブ暗号通貨) とは異なり、ERC-20 トークンはアカウントによって保持されません。トークンは、スタンドアロンのデータベースのようなコントラクト内にのみ存在します。トークンのルール (名前、シンボル、分割可能性) を指定し、ユーザーの残高とイーサリアム アドレスを関連付けるリストを管理します。
トークンを移動するには、ユーザーは残高の一部を他の場所に割り当てるように要求するトランザクションをコントラクトに送信する必要があります。たとえば、アリスが 5,000 BinanceAcademyToken をボブに送信したい場合、彼女は BinanceAcademyToken スマート コントラクト内の関数を呼び出して、ボブにそうするように依頼します。

彼の呼び出しは、トークンコントラクトに 0 ETH を支払う通常のイーサリアムトランザクションのように見えるものの中に含まれています。この呼び出しはトランザクションの追加フィールドに含まれており、アリスが何をしたいのかを指定します。この例では、トークンを Bob に転送します。
たとえイーサを送信しなくても、トランザクションをブロックに含めるために手数料を支払わなければなりません。 ETH を持っていない場合は、トークンを転送する前に ETH を取得する必要があります。
Etherscan での上記の実例を次に示します。誰かが BUSD コントラクトに呼び出しを行います。値フィールドには 0 ETH が送信されたことが示されていますが、トークンが転送され、手数料が支払われていることがわかります。
基本を理解したところで、典型的な ERC-20 契約の構造をより深く理解するために内部を見てみましょう。
ERC-20 トークンはどのように作成されますか?

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

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



