ERC20準拠の「めそコイン」を発行して一攫千金を狙ってみた
この2、3ヶ月、ICO(Initial Coin Offering)という資金調達方法が話題になっています。新規株式公開であるIPO(Initial Public Offering)を真似て暗号通貨トークンを公募、売り出しすることですが、バブルともいえる熱狂と裏腹にほとんどのICOは実態のないプロジェクトの資金調達(詐取)であったり、中国でICOが全面禁止されたりと数多くの問題を抱えています。
現在のICOはビットコインではなくEthereumのトークンで行われることが主流で、そのほぼ全てがERC20という流通規格に則ったスマートコントラクトです。すでに全国紙を賑わせるバズワードとなったICOの技術的側面の理解を深めるべく、実際にERC20準拠トークンを作成しテストネット上で販売します。今回紹介するコードを流用すればあなたもICOで一攫千金を狙えるはずです。また前回に引き続き、ブロックチェーントークンのビジネスモデルを考察します。
なぜ握手券ではICOができないのか
前回、Ethereumでめそ子の握手券トークンを作成、発行しました。代金となるethの支払い方法などがあらかたコーディングされていますが、どこが不十分なのでしょうか。
めそ子の握手券は握手券の名の通り、主催者が金券を発行して販売する→代金は主催者が受け取る 以上のことが決まっていません。購入者がダフ屋行為を働こうが御構いなしですし、二次流通したもの効力、取り扱いなど所有と権利の位置付けが曖昧です。何より流通総量の限定の仕方が完売後のコントラクト自己破壊という金券にしてはやや乱暴な手法を採用しています。
Ethereumの技術的に書くと以下の通りです。
- トークン販売後の権限移譲が定義されていない。
- 所有者の入手経路が簡単に追えない。
- 二次流通後の対eth換金方法がなく、トークンの値付けが困難。
- 数値の扱い方が雑で、オーバーフロー攻撃に対して脆弱。
2015年にこういったEthereumトークンの商習慣を話し合ったのがERC20 (Ethereum Request for Comments: Token Standard #20)です。
ERC20自体は何かのライブラリでもなければコーディングプロトコルでもなく、ただただトークンとはどうあるべきかというディスカッションにすぎません。しかしこのスレッド内の言葉遣いや最低限おさえておくべき機能、注意事項を守ってトークンを作成することによってトークン作成者、ウォレット、取引所などの利便性が格段に上がるため、多くのプロジェクトがこれを採用、準拠することになり、成り行きで2年以上も使われ続けています。
そしてついに先週、ERC20はEIP (Ethereum Improvement Proposal)として正式にEthereumの仕様に盛り込まれることが決定しました。
Ethereum's ERC-20 token standard has been formalized as an EIP! ?https://t.co/58TXuP88ih pic.twitter.com/XJnySmg8C1
— Hudson Jameson (@hudsonjameson) 2017年9月11日
ERC20のキモはトークンの権限の明確化です。権限の委譲経路をはっきりさせることで権利書の発行、受け渡し、期限設定、流通といったIPOのプラクティスがなぞれることからICOでの利用が急速に広がりましたが、それは同時にEthereumがもともと想定しているトークン、マネタイズ、非中央集権自律組織(DAO)の要件を満たす機能といえます。
めそコイン (MTC) の製作
めそコインは前回の握手券トークンをERC20に当てはめる形で作り、下記の機能を実装します。
- 最初に発行者(オーナー)が全発行トークンを保有する。
- ethと固定レートでトークンを全量無期限に販売する。(発行日以前の日時からのリクエストは弾くよう制御する)
- 適切に権限設定されたトークンを購入者に送付し、購入者はウォレット内にそれを保持できる。
- 購入者はオーナーから権限が委譲されているので、保有しているトークンを第三者に送付できる。
- オーバーフロー攻撃への対策を施す。
そしてコインの概要は以下の通りです。
- トークン名: Metho Coin
- ティッカー: MTC
- 総発行数: 1,000 (1,000.000-)
- レート: 20mtc = 1eth
- 時価総額: 1,505,162円 (2017年9月22日現在)
実際に作ってみた。
https://gist.github.com/shigahi/28066c657081b8516e424aeb7c810a39
おおよそ振ったコメントの通りのコーディングですが、ライブラリとしてOpenZeppelin製のセキュリティフレームワークのひとつ、SafeMathをインポートしています。スマートコントラクトで怖いのはオーバーフロー攻撃もさることながらuintに対して負の数字を渡すアンダーフロー攻撃なので、その脆弱性をふさぐために全ての四則演算は += のような演算子を使わず、SafeMathのメソッドで行なっています。
めそコインの発行、販売、流通
では早速テストネットRinkebyにトークンコントラクトを発行します。
前回にならい、MetamaskでRinkebyに接続し、Injected Web3を選択したRemix上にめそコインのコードとライブラリになるSafeMath.solをコピペして配置します。発行者のアドレスは0x55CAC865Ef29e282AFA5D63d48052bd62199b933です。
Createをヒットして発行します。
コントラクトがブロックチェーン0xa9d22b23bb879bcde649280089bfc3d29acd2dd7に記帳されました。こちら(EtherScan)で当該ブロックとコントラクト情報が確認できます。これを発行者(のアドレスのウォレットをもつ人)がMetamaskの Add Token にコピペすると、ブロックを読み取って照合し、発行全量のMTCがウォレット上に表示されます。
ではMetamaskを別のウォレットアドレスに切り替えて、発行者からMTCを購入してみます。
購入者アカウントBがコントラクトアドレスに1ethを送付することでコントラクトが自動執行され、20mtcを受け取り、発行者アカウントAに代金1ethが転送、かつ20mtcが差し引かれていることがわかります。
MetamaskのUIはカスタムトークンの送付機能が備わっていないので、アカウントBに接続したまま(Injectionしたまま)Ethereumウェブウォレットのコントラクトページを開きます。
Add TokenでコントラクトアドレスをコピペするとアカウントBにある20mtcが表示されます。トークンの権限が委譲されているので、このうち10mtcを別のアカウント(アカウントC)に送付することが可能です。さらにアカウントCはコントラクトアドレスにトークンを送付し、コントラクト上に預託することで、アカウントAからの買い戻しなどの手続きを安全に進めることができます。
以上のトランザクションはもちろんブロックチェーンに記帳されているので、上記のEtherScan等で全てトラッキングできます。またERC20に準拠してコーディングされているので、同サイトのトークンエクスプローラーで保有者のシェアや概要が一覧できます。
トークンエクスプローラーの部品リンクをWebサイトに埋め込んだり準備されているAPIを使ってアプリを作ることでICOの事務が簡素化できます。コードやホワイトペーパーをどこかから借用すればものの1時間で億単位も夢ではない資金調達の準備が整うわけです。
皆さんもRinkeby上で0xa9d22b23bb879bcde649280089bfc3d29acd2dd7にethを送付してめそコインを入手してはいかがでしょうか。
Ethereumトークンの展望
ERC20がICO用途に乱用されているためEthereumトークンが何か不健全な印象を受けてしまいますが、前回紹介したユーロトークンの例を出すまでもなく、トークンは資金調達に限定されないEthereumビジネス(マネタイズ)の根幹をなす要素です。
トークンを元に株式会社のような意思決定を行うEthereum上の組織がDecentralized Autonomous Organization (DAO) です。トークンの保持数に応じて議決権があり、意思決定されたプロジェクトはスマートコントラクトで配当などが自律実行される仕組みです。これはなぜEhtereumプロジェクトがドイツやヨーロッパで盛んなのかに繋がってきますが(ERC20の発議者はベルリン在住だったりします)、大陸ヨーロッパでは組織化(Incorporation)の契約は自由で、規制される証券ではないという伝統があります。そのためEthereumトークン、スマートコントラクト、ICOによる資金調達は証券取引ではないものとされています。
しかし、最初のDAOとして組織されたThe DAOの事件によって状況は変わります。
2016年5月、初の大規模ICOとしてThe DAOのトークンのクラウドセールが始まり、1カ月足らずで1.5億ドル相当のethを集めました。しかし6月半ば、スマートコントラクトのバグをついたハッカーが資金の1/3にあたるethを抜き出します。これはもともと備わっていたコントラクトの機能の不正利用であったため、抜き出したethは27日間移動できない、つまり取引所などに送金して換金できない状況におかれました。
The DAOはそもそもEthereumプロジェクトのコアメンバーが多数関わっていたこと、その被害額がethのシステムと市場価値に甚大な影響を与えるものであったたため、その27日間に交わされた賛否両論を経てEtherumはハードフォークし、抜き出されたethはethとして取り扱われないようになり、the DAOは解散、ethは出資者に(これもスマートコントラクトを通じて)返還されました。
この事件から約1年後、アメリカのSECはThe DAOは証券であり、遡及して罰則は与えないものの証券取引上違法だったというレビューを発表しました。トークンや組織がヨーロッパで作られたものであっても、米国人投資家に投資機会があるような非限定のものはSECの管理、規制下にあることが確定しました。このため巨額の資金を集めていたICOブームは規制リスクを抱えることになります。
Ethereumでビジネスを進めることを考えると、非限定的に出資者を集めるようなトークンのクラウドセールは上記のような経緯からグレーというよりも積極的に回避すべき行動といえますが、限定された組織内での流通はERC20のEthereum正式採用で応用の幅が広がります。
すでに開発が進んでいるimTokenのような複数のERC20トークンを簡単に保持できるウォレットが今後多数登場するでしょうし、めそコインのようなICO仕様のトークンは発行者を管理者と定めることで社内通貨に転用できます。また、先の電気売買に使用されるユーロトークンに限らず、オンラインギャンブルやゲームの会員内通貨の用途では、スマートコントラクトから逸脱する神の手による通貨の新規発行や不正会計を防げるため透明性が上がり、ユーザーの信頼と利便性を向上できます。
ERC20トークンの権限管理と自律執行の仕組みは今後資金調達以外の形で広く普及し、Ethereumビジネスの拡大を加速させるでしょう。
クラスメソッドで、ヨーロッパリージョンで勤務しませんか? クラスメソッドでは、日本、バンクーバー、ベルリンで一緒に働く仲間を募集しています! 採用情報 | クラスメソッド株式会社