EthereumのERC20 Tokenの問題点を解決したERC223 Tokenとは?




どうも高妻です。Twitterでプログラミングのことや暗号通貨のことをつぶやいているのでよかったらフォローしてください。  

ERC20の問題点

ERC20についてはこちらから読んでみてください。

参考記事:EthereumのERC20トークンとは?

ERC20にはトークンをユーザーのアドレスではなくコントラクトのアドレスに間違って送ってもトランザクションが承認されてしまい送金したトークンが二度と引き出すことができなくなるという問題があります。

これは実際に発生してお2017年12月27日現在、約325万ドル以上のトークンが引き出し不可能なものとなっています。ERC20が使われ続ける限りこの額はどんどん大きくなっていくと思います。実際に取り出せなくなったトークンはこちらです。詳細はこちらに記載されています。

  1. QTUM, $1,204,273 lost. watch on Etherscan
  2. EOS, $1,015,131 lost. watch on Etherscan
  3. GNT, $249,627 lost. watch on Etherscan
  4. STORJ, $217,477 lost. watch on Etherscan
  5. Tronix , $201,232 lost. watch on Etherscan
  6. DGD, $151,826 lost. watch on Etherscan
  7. OMG, $149,941 lost. watch on Etherscan
  8. STORJ, $102,560 lost. watch on Etherscan

現状取引所に上場しているEthereumのトークンはほとんどがERC20規格のものなので今後も気をつけなければいけません。

誤送金を防ぐためのERC223

上記問題を解決するために考えられたのが新しい規格のERC223です。

ERC223は送金を行った際にトークンを受け取れることのできるアドレスか確認して問題なければ送金処理を実行してトランザクションが承認されます。

間違ってコントラクトアドレスに送金した場合は元のアドレスに送り返される仕組みとなっているのでERC20のように二度と引き出せないトークンが出てしまうことをプログラムで制御することができます。

ERC20とERC223での実装の違い

ERC20のインターフェースはこちらの記事で紹介しているので読んでみてください。ERC223では2つのメソッドが追加され、1つのメソッドとイベントが削除されました。

追加されたメソッド

ERC20との後方互換を保つために既存のtransfer()メソッドは残しつつ、引数を追加したtransfer()メソッドが追加されました。

一番重要なのがtokenFallback()メソッドとなります。このメソッドにより間違って送られたトークンは送金元に返されるようになります。

transfer ERC20で既に存在したtransferにトランザクションデータを引数に追加した関数
tokenFallback  送金したトークンが間違っていないか確認し、間違っていた場合は送金元に返す関数

削除されたメソッド

approve 引出限度額を設定する関数

削除されたイベント

approval approve関数が呼ばれたら実行されるイベント

まとめ

Ethereumのトークンエコノミーはこのように日々改善されており今後ももっと有用なトークンの実装方法が出てくるかと思います。2018年はPoWからPoSへの移行など大きなイベントもあるのでEthereumから目が離せない年になりそうです。

おすすめ書籍

Ethereumを使ったDApps開発を学びたいなら今だとこの1冊が1番良いです!開発環境の構築から使うべきツール、フレームワーク、実装方法・注意点まで網羅的に解説されている書籍なのでおすすめです。出版も2018年1月ということでかなり新しい本で、DMM Bitcoinを作っているネクストカレンシー所属の方が書いているので信頼できます。

ビットコインとブロックチェーンの詳細をしっかりと学びたい方にはこちらの書籍が非常におすすめです。ウォレットの仕組み、楕円曲線暗号、P2Pプロトコル、公開鍵暗号などビットコインを支える技術について詳細に解説されています。また、サンプルコードを通して実際に手を動かして学べるので非常に濃い内容となっています。

The following two tabs change content below.

高妻智一

2013年CyberAgent新卒入社 スマホゲームを作る子会社に所属し、サーバーサイドのエンジニアを担当。2年目の終わりから新規子会社の立ち上げに参加し、サーバーサイドのエンジニアリーダーとしてサービースのリリースから運用までを担当。 現在はTwitterなどSNSのテキスト解析を行うソーシャルメディア分析のサーバーサイドを開発中。言語はNode.js、Kotlinを使用。






よく読まれている関連記事はこちら



コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です