ERCトークンとってなに?ERC20・ERC223・ERC721の違いを徹底解説

what is erc

sponsored link



イーサリアムとビットコインは同じブロックチェーン技術を利用していますが、違いとして挙げられるのはスマートコントラクトです。

スマートコントラクトについて復習したい方はスマートコントラクト技術についてをご参照ください。

 

では、スマートコントラクトを搭載していることで、実際にはどのような違いがあるのでしょうか?

ビットコインにも条件に沿った着金が確認できたら、取引を自動で実行というスマートコントラクトの基本的な概念はありました。

ただその機能は可用性に乏しく、Dapps用トークンには適さなかったのです。

Dappsについてはブロックチェーン上で動くアプリケーション「dapps」とは?を参照ください。

 

そこでイーサリアムのスマートコントラクトの仕組みがDappsで利用できるトークンを生み出すアイデアに繋がったのです。

イーサリアムのプラットホーム上でICO(資金調達)を行う際の、トークンのやり取りがいい例になっていますね。

ICOについてはICO(Initial Coin Offering)とは?ICOの目的や内容について詳しく解説をご参照ください。

共通のインターフェースと条件が一致した時に指定の機能を実行するため、標準の規格としてERC20が定義されました。

このERC20規格の発表により、仮想通貨関連スタートアップ事業がどんどん加速していきます。

ICOプロジェクトのトークン上場に貢献してきたERC20規格ですが、普及と共にシステムの脆弱性が指摘されるようになります。

浮かび上がった新たな問題についてもわかりやすく解説していきます。

ERC20が仮想通貨市場に与えた影響・光と陰

この統一された規格はオープンソースで公開されているので、誰でもERC20トークンを生成することができます。

ERC20規格は2015年に公開され、様々なICOに採用されてきました。

現在は当たり前にいくつかのトークンを同一ウォレットで保管できますね。

このERC20規格が発表される前は、コイン同士の互換性がなかったのです。

そのためICOを開催する側もプロジェクトに参加するユーザーも、トークンのやり取りの複雑さを感じていました。

この問題を解決に導いたのがまさにERC20規格で、イーサリアムは開発フレームワークとして最大ともいえるプラットホームです。

ERC20規格の統一した仕様書は開発にかかる費用や時間を短縮化でき、新たなコインを次々と上場させることができたのです。

イーサリアムの元で生まれたトークンは現在では、96227件の契約が確認されています。(2018年7月現在)

ERC20準拠トークンリスト

ところがERC20規格のトークン送信方法がトランザクション処理に深刻な問題に発展しました。

誰でも利用できるように単純化されたプロトコルは新たな欠陥を指摘されるようになったのです。

この問題を探るためにイーサリアムのトークンのやり取りは具体的にどのように行われていたのか、詳しくみていきましょう。

ERC20スマートコントラクトはこんな仕組みになっていた

ERC20規格によって統一化が実現できたのは、スマートコントラクトの仕組みが根底にあります。

では実際にイーサリアムのブロックチェーン上で、トークンのやり取りはどのように行われているのでしょうか?

ブロックチェーン技術はよくジュースの自動販売機に例えられますね。

 

購入する際、お金を入れるとジュースが出てくる。

そしてジュースの価格以上の金額を入れた場合はお釣りが出てくる。

 

このシンプルな動作がビットコインの仕組みに似ています。

ビットコインはお釣りがあった場合は、お釣りを受け取るための別アドレスが必要になります。

この部分にビットコインとイーサリアムの違いがあるのです。

イーサリアムのスマートコントラクトも同じように例えると、その自動販売機の中ではどのように処理されているのでしょう?

イーサリアムは送金を受け取るための、トークンアドレスが2つ存在します。

受信アドレスに着金が確認されると、もう1つの残高を示すトークンアドレスを自動で呼びだすのです。

イーサリアムの場合はトークンコントラクトによる状態の変化で残高を示しています。

トークンコントラクトは所有者アドレス、「やり取りをしたトークンの総量を管理しているデータ」と捉えるとわかりやすいです。

この状態の変化というのが、まず受信アドレスが着金したことを確認します。

トークンコントラクトは着金したことで、データを書き換えるために残高を示すアドレス(データ)を呼び出します。

正しいトークン量の増減が確認できると取引が成立したことになります。お釣りが表示されるアドレスに、ちゃんとあっているか確認しているイメージですね。

つまりスマートコントラクトという自動販売機には、所有者のアドレスとトークン残高を確認するためのデータが紐付いているということになります。

これらの取引はトークンコントラクトの存在があるから、成立するのです。

ERC20準拠のトークンとは?その特徴を解説

通常のスマートコントラクトではエラーがあれば取引を無効化できます。

それは受信者側で条件が合わないと拒否をして、スマートコントラクトを取り消すからです。

ERC20準拠トークンではエラーがあった場合でも、取引の無効化ができないことが問題になりました。

ERC20の仕様には、8つの関数(データを受け取ったら指示どおり動作する)と2つのイベント(実行中のプログラムからの処理要求)が実装されています。

トークンの名前を返す関数やトークンの総供給量を返す関数、残高を返す関数などのシンプルなものが含まれています。

主にトークンの転送を行うための関数の定義で構成され、条件どおりに自動で実行してくれるのがERC20の特徴です。

その標準化された関数の中に取引の無効化ができないケースがありました。

トークンの転送元を指定するための関数(transferFrom)引き出し限度額を設定する関数(approve)が要因です。

この組み合わせはコントラクトアドレスにトークンを送信するための関数だからです。

もうひとつが別のアドレスからトークンの転送を可能にする関数(transfer )です。

もしも通常の受信者のアドレスに着金が確認できないまま、コントラクトアドレスが正常なトランザクションが確認できなかった場合はどうなってしまうのでしょう。

 

着金してから、トークンの残高を表すデータを呼びだす仕組みでしたね。

transfer関数はトークンの残高の増減の変化を確認しないまま、トランザクションの処理を正常に行うことはできません。

この仕組みを無視して、コントラクトアドレスに対応しないトークンを送金してしまうと予測外のことが起きていました。

正常にトランザクションが行われないまま、承認されてしまいます。

このことがトークンの引き出しができなくなってしまったり、そのまま消失してしまう原因になっていたのです。

ERC20を改良したERC223とは?ERC721もご紹介

イーサリアムでは重大なバグが発生したといわれていますが、多くは前述したような局所的な問題です。

通常の動作でない範囲外のことが起きると、システムが誤作動してしまうケースがいくつかあります。

イーサリアムのERC20自体が重大なバグではありません。

ERC20規格のエラーはユーザーによる転送ミスであって、通常の手順でトークンを送信すれば起こりえないケースです。

イーサリアムの設計上の不具合があるというよりも、ユーザーにこの特徴が周知されていないことが問題です。

とはいえこの仕組みによって凍結したトークンは3.6億円以上あるという現実から、単なる操作ミスでは無視できない事態でしょう。

そこで解決策として、誤送金を防ぐ機能が実装されました。

それは意外にも容易に改善できるものだったのです。

改良されたERC223についても、どんな特徴的を持つのか詳しくみてみましょう。

ERC20トークンの転送ミスを防ぐERC223とは?

ERC223はERC20との互換性を保ちつつ、新たな関数を追加することで誤送金があった場合にも対処できるようになっています。

token fullback は送ったトークンが間違っていないのか確認して、対応していればそのままトランザクションを実行します。

もしエラーが発生した場合は、そのトークンを送信元に返還します。

トークンを受け取ることが可能なアドレスかどうか確認できることで、ERC20トークンの時のような事態を防ぐことができたのです。

こういった新しい規格は日々研究と開発が進み、開発者とコミニュティによって議論が交わされています。

このERCの後の数字は議論された順番を表しています。

Ethereum Request for Comment(イーサリアムの技術や運用規則を定めた文書)の20番目、223番目という意味合いになります。

ERC223はこのtoken fullback の他に、トークンを送る際にわずかな燃料であるGasを抑えることができます。

ERC20に代わる新しい規格ともいわれていますが、慎重に審議がかわされています。

その他にもあったERC規格・ERC 721とは

ERC規格はERC20の仕様を改良するためだけに作られているわけではないのです。

様々な仕様がある中で、目的別で様々な特徴をもつ規格も提案されています。

ERC721はNFT(Non-Fungle token)という特徴があり、イーサリアムのDappsゲームで利用されています。

NFTは個々のトークンに異なる価値(希少性や独自に指定した)を持たせるように設計してあります。

ゲームで主に求められるのは、独自の価値を持たせ個別のトークンとして扱われることです。

このERC721はこの特性から爆発的に人気になったクリプトキティーという猫を育てるゲームで、一番最初に採用されました。

クリプトキティ公式HPはこちら

これらはほんの一部の紹介で、目的に沿った特徴を持つ規格が次々と提案されています。

今後もイーサリアムの可用性にあわせた新しい規格が誕生していくことでしょう。

sponsored link