ERC223で独自トークンの発行や作り方
Ethereumの独自トークンは大半がERC20ですが、最近は改良が進んだERC223が出てきており、注目を集めています。
特徴としては、コントラクアドレスに間違って送信された場合にエラーになり持ち主に返却するように設計されています。
また、tokenFallback関数が使われており、逆にTransferFrom、approve、allowanceなどが無くなることで、コードをシンプルにして余分なGasの消費を抑えています。そのため、コントラクトアドレスへの送金手数料はERC20に比べるとは半額程度になるようです。
ERC223はとてもメリットがあるように感じますが、デメリットもあります。
何よりも、Ethereum財団が正式に勧告した訳ではありません。現段階では議論が進んでいる状況です。*2018年上旬現在
取引所によってはERC223やERC721で設計されたトークンの上場や取り扱いを断る所もあります。ERC223はtransferFrom,approve関数がないため、この関数を利用するDEX取引所などには対応できません。
例えば、BancorなどEthereumトークン同士で取引や交換ができる取引所です。
また、世界的に見てもERC20設計が標準的です。国内ではERC223が上位互換だけに注目が集まり、高値が付きやすいようです。
実際にはERC20もERC223も性能は大差がある訳でなく同じです。
Ethereumのアドレスには通常のウォレットアドレスとスマートコントラクアドレスがあります。
ERC223はスマートコントラクアドレスに間違って送金した場合に返却されます。
なお、Ethereumを失う大半はウォレット自体を紛失したり、間違ったウォレットアドレスに送金して失うケースが大半であり、ERC223で全てが解決された訳ではありません。
また、送金手数料が単純に半額になるかは、トランザクションの混み具合やコード設計にもよります。単純にERC20の送金がガス価格2wei:リミットが54000程度でできたとして、ERC223が1wei:54000でできるかと言われれば困難です。但し、ガスリミットの消費は2,3割は削減できます。
いずれはEthereumのRaiden機能が実装されればトークン全体も送金手数料は僅かになります。
また、ERC223のTransferイベント(送金完了通知)をetherscan側で正しく把握できないため送金履歴が記録されません。
もしも、独自トークンを発行するのであれば、正式なERC20が良いと思いますが、イメージ的にERC223の方が高性能と思われているので検討してください。
この記事ではERC223の独自トークンを作成する方法を解説します。
ERC223のトークン
ERC223のトークンの有名な銘柄には、「NANJCoin」や「eDogecoin」があります。
どちらも高性能で完成れたコードです。特にNANJCoinはAirDorp機能やアドレスのロックアップや凍結、発行量を増やすMintや減らすBurnなど機能が多彩です。
技術のある人が運営チームにいると思います。
これらのコインはEtherscanでコードが公開されています。
NANJCoin
URL:NANJCoinコード
eDogecoin
URL:eDogecoinコード
ERC223の作り方を学ぶのに参考になると思います。
ERC223の作り方
ERC223トークンはGithub上に標準的なタイプが有志の方により、公開されています。
これを使えば簡単に作成できます。
今回練習用として、サンプルERC223を作成してみました。
Githubに公開しているので参考にしてください。
使い方としてはフォルダ内にある「erc223」を開くとERC223のコードがあります。
これをbrowser-solidityに貼り付けるだけです。
URL:browser-solidity
browser-solidityの詳しい使い方は過去の記事に掲載しています。参考にしてください。
コードは改変する部分があります。以下の部分を修正してください。
1 2 3 4 |
string public name; string public symbol; uint8 public decimals; uint256 public totalSupply; |
この部分を好きなように変えていきます。
1 2 3 4 |
string public name = "TESTCoin"; string public symbol = "TEST"; uint8 public decimals = 8; uint256 public totalSupply = 10 * 10 ** (8); |
次のようになりました。
- トークン名:TESTCoin
- シンボル:TEST
- 小数点:8桁
- 発行枚数:1000000000
browser-solidityではコントラクト名の「ERC223Token」を選択します。
「create」をクリックすればトークンは発行されます。
ERC223のまとめ
ERC223トークンはこれから標準的になっていくかは分かりませんが、作成方法を覚えておくと便利だと思います。
いずれにしても、イーサリアムのトークンは殆どが同じようなものだと思ってもらえれば良いかと・・そもそもEthereum上で動いているだけです。
独自トークンはXCPやWaves、NEMでも作れますが、やはりEthereumが一番良いと思います。
今後、RaidenやPlasma機能が実装されれば、Ethereumは送金手数料や速度、スケーラビリティが解消されて、トークン全体も価値が上がると思います。