IXTの森

イギリス発保険のブロックチェーンカンパニーiX Technology Groupの情報と、プラットフォームのiXledger及びERC20トークンの$IXTに関する情報を発信していきます。

ERC20トークンのコードを解析

今回はiXledgerのERC20トークンのコードを見てみます。

特に技術者でなければ興味ないと思うので、興味ない人は「いいね」だけお願いします🙏

 

まずERC20について。

いわゆるイーサリアムプラットフォーム上で使えるトークンを定義する規格です。

こちらに本文があります。

github.com

 

Ethereumとしてソースコードとか発行用のプログラムを用意してくれてるわけではなく上記の規格に沿って各々がsolidityなどでコーディングします。

サンプルコードは上のページから辿っていくと用意されてます。

 

規格の中身としては最低限以下のメソッドとイベントというものをコーディングすれば乗っ取っていると言えます。(もちろんインプット、アウトプットなども合わせる)

 

Methods

  • name
  • symbol
  • decimals
  • totalSupply
  • balanceOf
  • transfer
  • transferFrom
  • approve
  • allowance

 

Events

  • Transfer
  • Approval

 

実際のコードを見てみる

で、IXTの実際のコードはこちらで見れます。

https://etherscan.io/address/0xfca47962d45adfdfd1ab2d972315db4ce7ccf094#code

気になったら見てみてください。

 

コントラクトの関連図 

コードレベルだと全体が把握しにくいのでコントラクトレベルでまとめたIXTコントラクトの関連図。

矢印は継承を表します。

f:id:ixtchihuahua:20180708070626p:plain

最終的にはCrowdsaleTokenというコントラクトがあり、これにコントラクトアドレスが割り当てられてIXTのコントラクトとなっています。

他のトークンとかを見るとZRXやFirstBloodなら以下のような感じ。明らかにIXTのコードは構造が複雑ですね。最後のCrowdsaleTokenコントラクトはIXTTokenとかにして欲しかったけど、まぁ問題はないです。

f:id:ixtchihuahua:20180708070940p:plain

メソッド単位で見てみる

ということで何がどうなってるんだろうとまとめたのがこちら。小さくてすいません。

必須以外に色々なメソッドが用意されてました。

f:id:ixtchihuahua:20180708070716p:plain

大別すると5つのカテゴリからなります。

  1. ERC20トークンとして必須のメソッド
  2. 追加情報や管理用のメソッド
  3. 鋳造(マイニングみたいなもの)に関するメソッド
  4. ICO後のリリース関連のメソッド
  5. コードにバグがあった場合などにコントラクトを別に移すためのメソッド

なるほど。

良くできてるんですね。

おそらくこれを書いたのはiXledgerチームではなくICOの実施を担当したTokenMarket側の開発者。IXTに限らずICOを実施するトークンに汎用的に対応するために上記の構造になっています。

 

これで何がわかったって言うとICOするときにこうやって書くのかーって言うマニアックな内容でした。

コード内を見るとFirstBloodやGolemなどのコードからもインスパイアを受けているみたいです。

 

あとIXTのコントラクトコードはSafeMathを使っているし、以下のBatchOverFlowで問題となったBatchTransfer関数も実装されていないこともわかりました。

※ZRXはSafeMathコントラクトはないけれど同様のことを内部でやってます。

 

blockchain.gunosy.io

 

 

以上です。