イベントレポート

イーサリアム上でのトークン実装の実演から見るDApps開発の3つの課題

Oracle Code Tokyo 2019よりG.U. Lab西村代表の講演レポート

 日本オラクル株式会社は5月17日、「Oracle Code Tokyo 2019」と題したITエンジニア向けの技術カンファレンスを開催した。イベントはシェラトン都ホテル東京の1フロアを利用して開催され、丸一日をかけて30を越えるセッションが催された。来場者数800名規模で開催の大規模なITカンファレンスとなる。

 イベントでは、同社の提供するデータベース技術をはじめとした、最先端のIT技術に関する多彩なテーマが扱われた。仮想通貨 Watchでは、午後に行われたG.U. Lab株式会社・代表取締役の西村祥一氏による講演「Dapp開発の現状と課題」を取材した。

西村祥一氏講演「Dapp 開発の現状と課題」

 G.U. Labの西村代表がDAppsの開発について、従来のWebアプリケーション開発との違いなど、その現状と課題を語った。西村氏は元日本オラクルでデータベース関連のコンサルティングを手がけた後、株式会社コンプス情報技術研究社を立ち上げる。そこからブロックチェーン技術研究に特化した会社として分離したのが現在のG.U. Labとのこと。

G.U. Lab株式会社・代表取締役の西村祥一氏

 話が前後するが、西村氏は講演の最後でG.U.Labの取り組みとして「G.U.Chain」というサービスを開発中であることを明らかにした。リリース時期を含め詳細まで語られなかったが、これは複数のマネージドブロックチェーンサービスを総合管理するサービスとのこと。リリース時点ではAmazonのAWS、Oracle Cloud Infrastructureの2つのBaaSに対応する予定であり、両サービスが混在するネットワークを構築できるような仕組みになるという。

G.U.Labが開発中のG.U.Chain。各社が提供するマネージドブロックチェーンサービスを総合管理する

 また、将来的には先の2つに加えてMicrosoft Azure、Google Cloud Platformを含めた代表的な4つのBaaS(サービスとして提供するブロックチェーン)でのコンソーシアム型ブロックチェーンの作成や既存のネットワークへの参加といった機能が提供されるとのこと。

G.U.Chainのコンソーシアム型ブロックチェーン作成画面(※開発中)。リリース時点ではAmazonとOracleのBaaSに対応予定

 話を戻して、今回の西村氏の講演は、Ethereumのブロックチェーンをベースとしたものとなる。主題となるDAppsは、分散型アプリケーションと訳される。ブロックチェーン上で動作するプログラムであるスマートコントラクトを組み合わせたものだ。約45分間にわたる氏の講演は、前半をブロックチェーンの概説、後半をEthereumのRemix開発環境を用いた暗号通貨(トークン)発行の実演となる。本稿では後半部分に焦点を当てる。

暗号通貨(トークン)を作ってみる

 講演の後半、約20分という短い時間で西村氏は実際にSolidityのコードを書き、スマートコントラクトを作成。Ethereumのテストネット上で新しくトークンを発行することを実演した。その過程で生じる、DApps開発の課題について検討していく。

 通貨は、「総発行量・各自の保有量がいつでも確認でき、保有者間で保有量を限度として交換(送受信)ができるもの」と定義される。定義に基づいて、EthereumではERC20トークンで制定された様式で、最低限の要素で構成されるスマートコントラクトのベースとなるものが提案されているという。

Ethereum上で発行するERC20トークンの最小仕様

 上図でconstruct SimpleCoinという命令は、Oracle Code Coin(OCC)という通貨を発行する。通貨の最小単位(decimals)は0.001、総発行量(totalSupply)は0としている。関数transferとbalanceOfはそれぞれ、通貨の移転と残高の確認を行う。以上で、このコードは先述の「通貨の定義」の最小要件を満たす。

 ここから、西村氏が実際にコーディングを行っていく。開発環境はWebベースの「Remix」を使用。氏は「Remixは発展途上で使いにくい部分もある。ブロックチェーンの開発環境はどれもそうだ」とし、今後の改善が望まれる部分の一つとして挙げた。

Remix上でのコーディングが一通り終了。発行量は1億とし、スマートコントラクトの発行者自身のアドレスに全トークンを送る

 詳細な説明は省略するが、上図の通りコーディングが完了し、Oracle Code Coinを発行するスマートコントラクトが完成した。次にChromeのアドオンである「Metamask」のアドレスと連携し、テストネット上へのデプロイ(展開)を進めていく。新たなスマートコントラクトをデプロイするためにはETHが必要となる。

MetamaskのEthereumアドレスと連携することで、Remix上からスマートコントラクトをデプロイできる
デプロイしたスマートコントラクトはEtherscanなどのブロックチェーンブラウザサービスを通じて確認可能
Etherscan上でスマートコントラクトのコンパイル情報を追加することで、同サービスからコンパイル前のコード情報が閲覧できるようになる

 デプロイしたスマートコントラクトを含むトランザクションは、EthereumのブロックチェーンブラウザであるEtherscanを通じて確認できる。さらに、トランザクションにコンパイル情報を追加することで、コンパイル前のコードを閲覧可能になるという。

 デプロイしたスマートコントラクトが外部から閲覧可能であることを確認した後、西村氏は発行したトークンが異なるアドレスに移転可能であることを確かめた。以上で、新規に発行したトークンが想定どおりに機能していることを確かめ、実演を終えた。

DApps開発の現状の課題まとめ

 西村氏は講演のまとめとして、今回の実演を通じて垣間見えた、3つの課題を述べた。まずはスケーラビリティの問題だ。実演の中でもスマートコントラクトのデプロイや発行したトークンを送るといった工程では、ブロックチェーンのトランザクション処理で1分程度時間がかかってしまうことを説明していた。

 次に手数料の問題がある。今回のように独自の通貨として振る舞うトークンを発行しても、そのトークンを利用するためには別の仮想通貨(ETH)が必要になってしまうので扱いにくいという。

 3つ目は開発環境が整っていないことだという。今回Webベースの開発環境「Remix」を用いたが、正直使い勝手が良くなく、改善の余地があると西村氏は語った。

 余談だが今回の講演は当初西村氏が予定していたものが濃すぎる内容だったため、内容を変更して今回のブロックチェーンの概説+トークン発行の実演という構成になったという。日本オラクルは6月にブロックチェーンエンジニア向けイベントの開催を計画しており、西村氏はそちらにも登壇する予定とのこと。今回発表できなかったブロックチェーン開発環境についての深い話をしたいと語っていた。

Ethereumブロックチェーンを取り巻く開発環境の一覧。黒字のものが今回使用した物。「当初これらを全部解説する予定だったが、内容が深すぎたので今回は方針を変えた」(西村氏談)

日下 弘樹