ERC20の実例

 イーサリアム・プラットフォーム上のトークンはすべてERC20トークンだ。

 本稿執筆時点で8万2815種類存在する。そのうちいくつかを見てみよう。

 イオス(EOS)は現在第5位の規模の仮想通貨で、時価総額はおよそ120億ドルに達しており、ブロックチェーン間コミュニケーションを活用できるネットワークを構築しようとしている。

 トロン(TRX)は本稿執筆時点で全仮想通貨の10位に位置しており、「デジタルエンターテイメント業界のオープンソース・プロトコル」と説明されている。様々なコンテンツを創るすべてのクリエイターをつなぐエコシステムを持つ、コンテンツ・プラットフォームの開始を目指している。

 「企業レベルのパブリック・ブロックチェーン・プラットフォーム」であるヴィチェーン(VEN)は時価総額15位の仮想通貨で、モノのインターネット(IoT)テクノロジーを実装し、個々の製品にプライベートキーを提供して追跡可能にすることを計画している。

ERC20に問題点はあるか

 ERC20は完璧ではない。

 ERC20トークン基準が解決していない問題がいくつか存在する。スマートコントラクトの使用料としてイーサを使わずにトークンが使われた時、トークンが意図せずして破壊されるケースがある。これにより、これまでに推定300万ドル(約3億3000万円)が失われた。

 イーサリアムのコミュニティは、このバグを修正するため、ERC223と命名された新基準に現在取り組んでいる。しかしこの新基準はERC20と互換性がないため、互換性が実現されるまではERC20を使用することが開発者に推奨されている。

 18年4月、batchOverflowというバグのために、多くの取引所がイーサリアムを基盤とするトークンの入出金を停止した。これは「古典的な整数オーバーフロー問題」と説明されており、攻撃者が「大量のトークンを保有」できるようになる可能性がある。

 現時点では、こうした脆弱性を修正できる従来のセキュリティ・アプローチは存在しない。

ERC20の利点は

 ERC20は基本的にすべてをシンプルにする。

 ERC20トークンが登場する前は、開発者は異なる用語をコードに使う可能性があった。たとえば、 「totalAmount」 を使用するトークンもあれば、 「totalNumber」を使用するトークンもあるといった具合だ。

 取引所やウォレットは、それぞれのトークンのコードに対応できるようにプラットフォームを構築しなければならなかった。

 共通基準があれば、トークンがいったん作成されてしまえば、取引所に上場したり、自動的にウォレットに送金したりできる。

 新たなトークンの作成も、ERC20によって非常に容易になる。イーサリアムが17年のICOで最も人気の高いプラットフォームになったのも、このためだ。

 

保有数以上のトークンを持っていると嘘をつけるか

 できない。

 トランザクションが起きる前に、「allowance」機能がユーザーの口座残高をチェックし、充分なトークンがなければトランザクションをキャンセルする。

 我々の「仮想通貨カジノ」では、貸し付けは行わないため、賭けに十分なBLUを各プレーヤーが所有していることを確認する必要がある。1BLUしか持っていなかったら、2BLU賭けることはできない。

 

偽トークンを作る方法はあるか

 まずない。なぜなら「approve」がトークンの総量に対してトランザクションをチェックするからだ。 

 「approve」は、紛失したトークンも、余分なトークンもないことを確認する。我々の仮想のポーカーの完全性を守るもう1つの方法は、誰も余分なBLUをテーブルへ持ち込んでいないと確認することだ。そこで 「approve」 は、テーブルの上のBLUの総数が10に等しいことをチェックすることによって、交換を可能にする。

Is there any way to make a counterfeit token?

.ERC20をほかのユーザーから受け取るには

 「transferFrom」は、ユーザーがトークンを別のユーザーへ転送できる機能だ。

 あなたは1回目のポーカーで勝ち、ほかのプレーヤーから2.5BLU手に入れたとする。

 しかし、彼らからトークンをもらうには「transferFrom」必要だ。これがない場合、あなたのBLUをほかの人間が盗む危険性を排除できない。

How can I get ERC-20 tokens from other users?

「balanceOf」はどう機能するか

 「balanceOf」機能が実行されると、アドレスが口座に保有しているトークンの数が返される。ポーカーの1回目では、5人のプレーヤーは自分の手札を見てプレーしないことに決める。残りの5人はそれぞれ0.5BLUを賭けることにする。

 「balanceOf」を使うことにより、5人のプレーヤーが1BLU所有していて、5人が0.5BLU所有し所有していることがわかる。

 

What does the function [balanceOf] do?

「transfer」とは

 「transfer」は、トークンの総数から一定数のトークンをユーザーのアカウントへ転送する。ゲームを始める前に、プレーヤーはディーラーからBLUを受け取る必要がある。

 各プレーヤーが1BLUを受け取る。

What about [transfer]?

必須項目:「totalSupply」とは

 「totalSupply」は、作成されたERC20トークンの総数を明らかにする。

 我々のカジノにまず必要なのは、流通しているBLUトークンの総数を明らかにすることだ。我々のポーカーテーブルには10枚のBLUトークンがあり、10人のプレーヤーがいるとしよう。

Now to the mandatory rules: what is [totalSupply]?

実際の仕組みについて

 ERC20のルールを、我々の「仮想通貨カジノ」の例で1つずつ見ていこう。

 開発者がこのルールに従うことが極めて重要だ。

 オプションのルールから始めよう。

 トークン名:ブルーチップ

 シンボル:BLU

 少数:2桁*

 *トークンを分割できるようにするため、プレーヤーが賭けることのできる最小単位を0.01BLUとする。少数を0桁にして最小単位を1にすることも、少数を18桁にして、最小単位を0.000000000000000001BLUにすることもできるが、ここはシンプルにしておこう。

 

スマートコントラクトがトークンを作成したら何が起きるか

 ここでERC20が登場する。

 作成されたトークンは、交換したり使ったり、誰かにあげたりできる。

 ERC20はイーサリアムのネットワーク上のすべてのトークンが使用する共通言語であるため、1つのトークンを別のトークンと交換できる。

 仮想通貨カジノを作るところを想像してみよう。現実のカジノ同様、プレーヤーにはチップを使ってもらいたいとする。そこでプレーヤーは、法定通貨を我々のカジノのトークンへ両替し、ポーカーテーブルに向かう。

 

スマートコントラクトとの関係

 スマートコントラクトはERC20トークンを作成するために使用される。

 トークンの取引を容易にしたり、口座にあるトークンの残高を記録したりすることにも使われる。

 スマートコントラクトはIf-This-Then-That(IFTTT)ロジックに基づいて「ソリディティ」というプログラミング言語で書かれる。自動販売機のようなものだと思ってほしい。

Where do smart contracts fit into all this?

そもそもイーサリアムとは

 イーサリアムはコンピューターの分散型ネットワークで、2つの基本的機能を持つ。

 その2つとは、トランザクションを記録できるブロックチェーンと、スマートコントラクトを作成できる仮想マシンだ。この2つの機能を持つことから、イーサリアムは分散型アプリケーション(DApps)をサポートできる。DAppsは、イーサリアムの技術の上に乗る形で、既存のイーサリアム・ブロックチェーン上に作られる。代わりにイーサリアムは自身のネットワーク内の演算能力に対して開発者に使用料を課し、その使用料はプラットフォーム間の唯一の通貨であるイーサでのみ支払うことができる。

 DAppsは目的に応じて、ERC20トークンを、通貨として機能するように作成する場合もあれば、企業における株、ロイヤリティープログラムのポイント、あるいは、金の保有量や家屋の所有権証明書のように所有権の証明として機能するよう作成する場合もある。

ERC20トークンとは

ERC-20トークンは、イーサリアムのプラットフォーム上のみで使用されることを目的に設計されたトークンである。

一連の基準を満たしていれば、共有したり、ほかのトークンと交換したり、仮想通貨ウォレットへ送金したりすることができる。

イーサリアムのコミュニティはこの基準を、3つのオプションと6つの必須項目として定めている。

 

オプショナル

  • トークン名
  • シンボル
  • 少数点以下の桁数(18桁まで)

マンダトリー必須項目

  • totalSupply
  • balanceOf
  • transfer
  • transferFrom
  • approve
  • allowance

混乱してきただろうか。少し補足しよう。