ERC20トークン標準の徹底ガイド(ERC20トークン契約の作成を含む)

ERC-20トークンはイーサリアム・ブロックチェーン上で動作する暗号通貨である。ERC20トークンはイーサリアムネットワークのスマートコントラクトを燃料とし、それを使用して取引を行い、そのアドレスやウォレットと相互作用します。同時に、ERC 20トークンは、独自のティッカー、供給率、価格、および他のパラメータを持っています。例えば、EOSはイーサリアムトークンですが、時価総額は115億ドルで、これはマイニングによって得られる暗号通貨の大半について言える以上のものです。

ERC20はDeFiの事実上の本拠地となった

ERC20アーキテクチャのアクセシビリティのおかげで、独自のトークンを作ってデプロイし、(ICOの間などに)配布するのはかなり簡単です。ICOや他の種類のオファリングでは、投資家から資金を集めるためにプレセールが行われる。トークンを作成するプロセスは、Token Generation Eventの略でTGEと呼ばれる。プロジェクトは一定数のERC 20トークンを発行し、プリセールの参加者全員にビットコインまたはETHで販売する。

ERC-20トークンは本格的な暗号通貨であり、人気のある暗号取引所に並ぶ可能性はあるが、必ずしもそうなるとは限らないことに注意すべきである。ERC-20トークンは暗号世界を席巻するかもしれないし、永遠にその作成者の残高に留まるかもしれない。

ERC20の実際の使用

当初、トークンは企業発展のための初期資金調達の際に使用された。トークンは固定された義務を持つデジタル資産だった。トークンは開発者から直接購入され、他の場所で売買することはできなかった。

イーサリアムのICOは2014年に行われ、1600万ドル以上を集めた。イーサリアムは、将来的に非効率なビジネスプロセスを最適化し、デジタル化するために使用できるため、多くの業界の代表者の注目を集めている。

ERC-20トークンは、暗号取引所で取引できれば暗号通貨とみなすことができる。ERC20トークンは、独自のブロックチェーンを持つエコシステム全体に発展することもある。独自のブロックチェーンを構築したERC20トークンの例としては、トロンとEOSがある。トロンは、ブロックチェーンゲームが日々人気を集めているというビジョンから、独自のブロックチェーンを構築した。EOSはイーサリアムの競合で、主に分散型取引所やギャンブルに使われている。

イーサリアムトークンは資産や貨幣の一形態として使用することができ、あらゆる種類の貴重品を表したり、プログラムのメンバーシップを付与したり、所有権を確認する手段として機能することもできます。現実世界の資産であれば、現物であれ何であれ、トークン化して暗号取引所で取引することができます。

Moeda Loyalty Points (MDA)は、MOEDAエコシステムを支えるERC 20トークンです。

最も人気のあるERC-20トークン

イーサリアム・ブロックチェーンは暗号の事実上の本拠地であり、今日最大のアルトコインのほとんどをホストしている。最も有名なトークンはERC20トークンであり、暗号エコシステムのほとんどのDAppsはイーサリアムネットワーク上に構築されている。ERC20標準のステーブルコインの一部は、暗号通貨市場を支配していることで知られている。

米ドルセンター

TetherのUSDTとは別に、イーサリアムネットワークで最大のERC20安定コインの1つはUSDCです。

CircleのUSDCはERC20安定コインで2番目に評価されている

CoinbaseがCircleと共同で立ち上げたUSDCは、一般的にTetherに批判的なスタンスの人々によってUSDTのより信頼できる代替手段として見られている。

バイナンスのBEP20標準はバイナンススマートチェーン上でホストされており、それはイーサリアムネットワークから派生している。したがって、Binanceの2つのネイティブトークンであるBNBとBUSDも、技術的にはイーサリアムトークンとみなすことができる。

単一の標準、作成の容易さ、プラットフォームとの互換性により、ERC20トークンは広く流通するようになりました。以下は、ERC20プロトコルを使用した一般的なトークンの例です。

USDT テザー

Tether(USDT)は最も人気のあるERC-20安定コインの一つです。

USD-pegged stablecoin USDTは2015年にTether Limitedによって発行された。ERC 20標準に基づき、それ以来、世界中のほとんどの暗号トレーダーや取引所にとって頼りになるステーブルコインとなっている。USDT Tetherの価値は、同社の口座の米ドルでバックアップされている。

他の不換紙幣には独自のステーブルコインがある。例えば、Binance GBPは英ポンドに、STASISはユーロに支えられている。

旧システムはビットコイン・ブロックチェーンに基づくOmniプロトコルに基づいていた。手数料の高さと確認時間の長さから、同社はイーサリアム・ブロックチェーンへの移行を決定した。

ラッピングされたビットコインとラッピングされたイーサ

ラップドイーサは、基本的にERC20環境に変換されたETHです。

ETH(イーサ)はイーサリアムの基本通貨である。WETHは「ラップETH」または「シェルのイーサ」である。ETHがERC20標準の採用前に登場したため、標準に準拠していないことから導入された。

イーサリアムをベースとする分散型プラットフォームは、スマートコントラクトに基づいてユーザー間でトークンを交換する。交換が行われるためには、トークンは同じ標準に属していなければならない。

WETHはETHトークンと対応するERC20プロトコルの交換に使用される。

資本力のある大企業を含む数多くのネットワークユーザーが、基本通貨の開発に関心を寄せている。

そのうちのひとつだ:

  • 3億8000万ドル相当の200万ETH以上を所有するWrapped Etherシステム;
  • 大手暗号通貨取引所の一つであるバイナンスに3億7000万ドル;
  • Bitfinex取引所、200万ETH未満。
Wrapped Bitcoin (WBTC)はBTCのERC20に相当する。

ビットコインにはWBTCと呼ばれるERC20のラップバージョンもある。オリジナルのBTCはビットコインブロックチェーンのネイティブトークンで、イーサリアムと親和性がない。WETHのように、WBTCはそれを修正することを意図しています:それは常にビットコインの価格に固定され、イーサリアムのネットワークと完全に互換性があります。ラップトークンは、相互互換性のない異なるネットワーク間でトークンを移転するために使用されることが最も多い。

LCS

LocalCoinSwapは、利用可能な支払い方法のいずれかを使用して暗号通貨を直接売買する機会をユーザーに提供する分散型プラットフォームです。

LocalCoinSwapもERC 20トークンです。

LCSを使えば、ウェブサイトやウォレットを介さずに、通貨の買い手や売り手を見つけ、取引を行うことができる。このプラットフォームは伝統的な入金システムを採用しており、交換可能な暗号通貨資金を保管する。買い手と売り手によって支払いが確認されると、システムは買い手にコインを送る。このプラットフォームは、四半期末に1対1の割合で配当を受け取る権利を与える。

イーサースキャンERC 20 トークンのホーム

ERC20トークンコントラクトは、イーサリアムネットワークのネイティブトラッカーであるEtherscan.ioで見ることができます。

Etherscan.ioはイーサリアムネットワークのネイティブトラッカーです。

ティッカーと簡単な説明とともに、総供給量、時価総額(オンチェーンと流通)、保有者数、価格と価格変動の数値をモニターできる。

すべてのERC20トークンは、EtherscanのTokensメニューで確認できます。

イーサリアムネットワーク上のすべてのERC20トークンコントラクトを表示するには、右上のトークンをクリックし、ERC20トークンを選択する必要があります。多かれ少なかれ競争力のある時価総額を持つすべての新しいトークンがここにリストアップされます。

この記事を書いている時点で、イーサリアムのネットワーク上には少なくとも625,000のERC20トークンコントラクトがデプロイされています。また、他のイーサリアムのトークン標準もここで見ることができます – 非腐敗性トークン(NFT)のERC721とマルチトークンのERC155。

ERC20トークンの技術的側面

基本的に、ERC-20トークンはイーサリアム・ブロックチェーン上のスマートコントラクトである。ERC-20は、コントラクトが従うべき基本ルールのセットを含む統一規格である。この標準は、ネットワーク内のすべてのトークンの互換性を保証する。

ERCは「Ethereum Request for Comments」の略で、20はその識別子番号である。

ERC-20は2015年に構想され、2017年に世界的に普及した。それ以前は、すべてのスマートコントラクトはかなり異種であり、それらの間で互換性の問題を引き起こし、ウォレットはそれぞれの特定のトークンを認識するためにコードの山に対処しなければならなかった。

ERC20トークンとEVM

EVM(Ethereum Virtual Machine)は、仮想コンピューティング環境であり、イーサリアムネットワーク上のアルゴリズム(スマートコントラクト)の実行を担う分散型コンピュータである。

EVMはチューリング完全であると考えられており、理論的には(十分なリソースがあれば)コンピュータで可能なあらゆる計算タスクを処理することができる。

スマートコントラクトの実行に対する支払いとして、EVMはETHの最小単位である「gwei」で測定される「ガス」を使用する。ガスはトランザクションのコストに含まれる。ユーザーが支払わなければならない具体的なガスの量は、実行される計算の複雑さとイーサリアム・ブロックチェーンの現在の作業量に依存する。

ERC-20トークンの生成には、EVM上で定義されたデータ構造に従うスマートコントラクトが使用される。このデータ構造はトークンの命名、配布、供給量、監視を制御する。

ERC20=コード?

ERC20はコードと言えるのだろうか?答えは正確ではありません。ERC20トークンは、イーサリアムのネットワーク内で動作するための基本的なルールを概説することを目的としたガイドラインのセットとして、より多くの役割を果たしています。

ERC20トークン標準はまた、ネットワーク内の異なるDApps(分散型アプリ)の互換性を保証する。

ERC 20トークン契約の内部

ERC20標準は、スマートコントラクトが適切に機能するために従わなければならない6つの必須機能と3つの任意機能の概要を示している。

すべてのトークンには名前とトークン・シンボル(ティッカーとも呼ばれる)が必要です。また、小数点以下、つまり10で割った数を指定しなければならない。以下に、必須関数の一式を紹介するが、最初は少し難しいと感じる人もいるかもしれない:

function () public view returns (uint256);
function balanceOf(address tokenOwner) public view returns (uint);
function allowance(address tokenOwner, address spender)
public view returns (uint);
function transfer(address to, uint tokens) public returns (bool);
function approve(address spender, uint tokens)  public returns (bool);
function transferFrom(address from, address to, uint tokens) public returns (bool); 

これらの関数が表すものは以下の通りだ:

  • TotalSupply:発行されるトークンの総数;
  • BalanceOf:トークン所有者の口座残高;
  • 転送:トークンを使用した取引に対して、指定されたアドレスに指定された数のトークンの転送を自動的に実行する;
  • TransferFrom:トークンを使用して、指定されたアドレスから指定されたトークン数の転送を自動的に実行します;
  • 承認する:使用者が、指定されたアカウントから、指定された金額を上限として、設定された数のトークンを引き出すことを許可する;
  • 許可:使用者から所有者に設定された数のトークンを返す;
  • 移籍:転送が成功したときにトリガーされるイベント(イベント);
  • 承認:承認されたイベント(事象)のログ。

適切な認証があれば、ERC20の機能により、外部のエンティティ、例えば暗号ウォレット・アプリが残高を確認したり、ユーザー間でトークンを転送したりすることができる。

スマート・コントラクトが認識するイベントには2種類ある:

event Approval(address indexed tokenOwner, address indexed spender,
 uint tokens);
event Transfer(address indexed from, address indexed to,
 uint tokens);

イベントの内容は以下の通り:

  • 被呼
  • エミッション

イーサリアムアカウントが誰かにトークンを引き出す権利を与えた後、トークンが実際に移転された後に、どちらかが発生する。標準に従って、’function transfer’ はトークンの転送が成功すると Transfer イベントを発行しなければなりません。

function allowance(address owner, address spender) external view returns (uint256);2
 

ERC-20標準では、あるアドレスが他のアドレスにトークンを取得するための許容値を与えることができる。このゲッターは、使用者が所有者に代わって使用することを許可されるトークンの残数を返します。この関数はゲッターであり、コントラクトの状態を変更しません。

ERC 20 トークンの作成

ステップ1

  • 例えば、Best Coin(ベストコイン)など。
  • 記号を選び、BECとする。
  • 総供給量を決める
  • トークンが割り切れるかどうか、割り切れる場合は小数点以下何桁まで割り切れるかを決める。

ステップ2

トークンのデプロイ

リンク先で利用可能なスマート・コントラクトに以下のデータを入力する。両方の.solファイルをダウンロードする。リミックス・エディターにアクセスする。両方のファイルをダウンロードする。

Load(Open)ボタンでファイルを読み込みます。両方のファイルを選択します。

NewToken.solを開き、必要な値を変数の代わりに

totalSupply – トークンの総数。

name – トークンのフルネーム。

decimal – 小数点以下のザック数。コントラクトでは、すべてが整数値でのみ保存されるという事実がある。したがって、整数でない数のトークンをクレジットしたい場合は、文字数を指定する必要があります。

  • シンボル – 取引所のシンボル
  • 広告を購入する
  • プラグを抜く

こんな感じになるはずだ:

保存する。あとは契約書をネットワークにアップロードします。例えば、ロプステンのテストネットにインストールします。デプロイには任意のクライアントが必要です。MetaMaskを使いましょう。MetaMaskはSolidity上でスマートコントラクトをコンパイルする方法を知らないので、最初にコンパイルします。

リミックス・エディターの右側で、コンパイル・タブを開いてください。デフォルトでは、コントラクトは自動的にコンパイルされます。selectでコントラクトを選択し、Detailsをクリックすると、バイトコードやその他の情報を見ることができます。

デプロイするには、Runをクリックし、Injected Web3を選択し、デプロイするアカウントを選択する(ブラウザにMetaMaskがインストールされていれば自動的にロードされるはず)。フィールドに必要な情報(gas、value)を入力し、Createをクリックする。

MetaMaskはページからアクションをピックアップする。

送信をクリックします。契約が成立します。MetaMaskでは、文書のアイコン(取引ページへのリンク)と「Contract published(契約書発行)」と表示され、発送が確認されます。

封印されたスマート・コントラクトはトークンである。

ステップ3

トークン・オペレーション

イーサリアムベースのトークン取引には2つのウォレットが必要です – すでにトークンを持っているウォレット(デフォルトでは、コントラクト作成者、ERC20標準)と、トークンを転送する必要があるウォレットです。

トークンを使って操作を行う(例えば、トークンを転送する)。etherscanのスマートコントラクトページ(MetaMaskのリンク)かremixページで実行できます。

青が読み取り操作、ピンクが書き込み操作。

ERC-20トークンを送金するには、受取人のアドレスと数量を入力する。その後(もちろんブロックチェーンにデータを入力して)、balanceOfという操作で自分の残高やトークンの受取人の残高を確認できます。

完了した!

ERC 20トークン規格の問題点

ERC 20トークンの問題には2つのレイヤーがある。ユーザー・エンドとデベロッパー・エンドだ。

トークン・ユーザーの皆様へ

一般的なユーザーにとって、最も広く見られる不都合は以下の通りである:

  • スループットの低下 – イーサリアムのネットワークは、CryptoKitties(その後、独自のFlowブロックチェーンに移行した)のようなDappsが高い需要を経験したときに詰まったことがある。このような場合、ネットワークは遅くなり、トランザクションはより高価になる。
  • トランザクションが遅い – ブロックタイムは約14秒なので、トランザクションの処理には最大1分かかる。これは用途によっては十分な場合もあれば、遅すぎる場合もある。
  • ガス決済用のETH – ERC-20トークンを含む取引が行われる場合、取引手数料を支払うために2つ目の暗号通貨が必要になる。その結果、異なるプラットフォーム上に「塵」のような残高が蓄積されることになり、時間とコストの両方が追加される可能性がある。

トークン開発者向け

ERC20トークンには、金銭的損失を引き起こすことが知られている2つの重大な問題がある。それは

  1. トランザクション処理の欠如。

ERC20トークンで取引を行うには2つの方法がある:

  • 伝達関数。
  • approve + transferFrom メカニズム。

トークンの残高は、トークンコントラクト内の変数に過ぎない。

トークンの取引は、スマートコントラクトの内部変数の変更です(送信者の現在の残高は減少し、受信者の残高は増加します)。

送金機能は、取引が行われたことを受取人に通知しません。受信者は受信したトランザクションを認識できない!これは、未処理の取引や金銭的損失につながる可能性があります。

その結果、受信者がスマートコントラクトである場合、ユーザーは承認 +transferFrom アルゴリズムを使用して erc20 トークンを転送する必要があります。受信者が外部所有のアカウントアドレスである場合、ユーザーはtransfer関数を使ってトークンを転送しなければならない。

もしユーザーが間違えて間違った関数を選択した場合、トークンはスマートコントラクト内でスタックし、取引が認識されなくなる。したがって、スタックしたerk20トークンは取り出すことができない。

この問題で少なくとも40万ドルが失われた。

  1. approve + transferFrom メカニズムは潜在的に安全ではない

approve + transferFromのメカニズムは、二重支出を許すことが知られている。

これは、target=”_blank”> target=”_blank”> Bancorトークンチェンジャーのようなカスタム・トークン・エクスチェンジを作成する可能性がない限り、関係ありません。

これを解決するのがERC223トークン規格だ。

ERC #223トークン標準は、ERC 20トークン標準の問題点を解決するために特別に開発された。

すべてのトークン開発者はこの点に注意を払うべきである。ユーザーに金銭的損失をもたらすようなトークンを開発することは、良い解決策ではありません。自分の行っている開発に責任を持ってください。

実際にどのように機能するか

Aliceは10個のERC20トークンを持っている。彼女は3トークンをBobに送りたい。

一般ユーザーにとっては、アリスが「アカウント残高に」トークンを持っているように見えるかもしれないが、トークンの残高はトークンコントラクト内の変数に過ぎない。

アリスは取引を開始している。実際、すべてのトークン取引はトークン契約の呼び出しである。

アリスはトークン契約に、自分の残高を3減らし、同時にボブの残高を3増やすよう頼んでいる。

取引がマイニングされた後、このERC 20トークンコントラクトの内部変数は変更される。トランザクションが発生したことを受信者(この場合はボブ)に伝える者はいない。

これは外部所有のアカウント(つまり人間が所有するアカウント)では問題ない。アリスは自分がトークンを送ったとボブに言うことができます。ボブは自分の残高を見て、それが実際に起こったことに気づくことができます。

これはコントラクトにとって致命的な問題であり、トークンの紛失につながる。トークンを扱うように設計されていないコントラクトは、トークンのトランザクションを拒否しなければならない。さもなければ、不適切なトークン転送を拒否できないため、各コントラクトがトークンの罠に陥る可能性がある。

ここでのERCは、技術用語では「公開定数シンボル」と呼ばれる。イーサリアム・リクエスト・フォー・コメントは、ブロックチェーン上でトークンを作成するためのルールを記述した文書の名称である。

ERC20の法的意味合い

法的な観点から見ると、ERC 20トークンを取り巻く状況は暗号通貨よりもさらに曖昧である。

ERC20の法的地位については、多くの議論が交わされている。

世界のほとんどの国では、この分野の規制はまったく存在しないか、「禁止」に傾いている。これには以下のような要因がある:

  • 大量のERC 20トークン関連の詐欺。トークンの本質が最も広まったのはICOに関連してであり、その多くがあからさまな、あるいは隠れた詐欺であったため、このコンセプトにはネガティブな印象が残った。
  • 暗号通貨は比較的若い分野である。ブロックチェーン技術は金融技術の世界に深刻な革新をもたらした。まず第一に、分散化技術や偽の匿名性の利用に関連して、この領域を規制することの複雑さである。第二に、世界経済における新しい分野である。

ERC 20トークン=セキュリティ?

  • ERC 20トークンを有価証券として認めることについて、多くの議論が行われている。特に、ICOなどで独自のトークンを作成・配布しようとする人々に関するものだ。事実、ERC 20トークン(「所有者にリターンを与える株式」)は、米国をはじめとするほとんどの場所で証券法の対象となる。複雑なHoweyテストに当たる必要もない。ランドレス・ティンバーや他の類似のテストがそのトリックを行う – 企業の利益持分はいずれにせよ有価証券とみなされる。
  • トークンが証券だからといって、それを売ることができないわけではない。人々は常に証券を売買している(シリコンバレーの新興企業を思い浮かべてほしい)。しかし、そうするためには、証券法で定められた有価証券の私募の免除規定のいずれかに従わなければならない。それは通常、一般大衆に提供しない、広告しない、などを意味する。- つまり、ほとんどのトークン・セールが行っていることとは正反対なのだ。
  • あるいは、Reg A+のルートで、トークンを一般に提供することもできる。ただし、調達額の上限は5,000万ドルで、最初にSECの承認を得て、いくつかの継続的な報告を行う(本格的な取引所法報告企業に必要な報告ほどひどくはない)。証券取引法の一般的な範囲内であれば、他にもいくつかのミックス・アンド・マッチの選択肢がある。