いよいよ正式サービスのローンチを控えたマイクリプトヒーローズ(MCH)。
βバトルを終えての振り返りをインタビューします。
バトルのβリリースでは、ゲーム専用のサイドチェーンLoomNetworkを使ってもトランザクション詰まりが起こってしまう等いくつかの問題がありました。
今回、マイクリプトヒーローズを運営する、double jump.tokyo株式会社のCEOである上野広伸氏と、COOの玉舎直人氏に、βバトルを終了してからの振り返りを聞いてきました。
上野氏 : 予見は出来ました。
これはちょっとHI-CONで語ろうと思っているんですけど、
一戦20秒かかるものの、複数人きても耐えられるようなシャーディング構成を実は一回踏んでいるんですよ。対外的には発表していないんですけど。
いわば自前シャーディングです。
やっぱりそれでも耐えれないなというのもあったので、仕方なくバトルロジックの一部をオフチェーン化しました。
ここらへんは11/10のHI-CONで詳しくお話します。
玉舎氏 : ちなみにZilliqaさんらからは僕らのシステムを見てCRAZYだって言われました。
木村 : それはシャーディングについてですか?
上野氏 : いえ、そもそも本格的なゲームのバトルロジックをsolidityで実現するというか、ブロックチェーンで全部実現するという事自体がなかなか…
玉舎氏 : 本当にこんなの世界でお前らだけだと。
上野氏 : ちょっと技術用語が混じってもいいですか?
バトルロジック自体はべき等性(ある操作を1回行っても複数回行っても結果が同じであること)を保った形になっていて、どこのノードで実行しても全く同じ結果になるというようなものにしたんですよね。
そうすると、本来同じブロックチェーン上で実行するのが正なんですけど、別のブロックチェーンで実行しても全く結果が変わらないのでそれを良しとして、サイドチェーンのメイン以外のところで、バトルロジックだけは別に実行するために実は5つくらいノードを用意してバトルロジックを計算していたんですよ。
木村 : それはバトルロジックのみ分散させている?
上野氏 : そうです、バトルのみ。バトルはあくまでも計算だけなので。
木村 : 一つのバトルを分散させているんですか?それともバトル毎に分散させているんですか?
上野氏 : バトル毎に分散させています。
バトル自体を分散させることは不可能で、直列にしか計算できないのです。
木村 : イメージとしてはロードバランサー?
上野氏 : そうですね。ロードバランシングですね。全部それを自前で実装しました。
一週間くらいで、
上野氏 :理由は二つです。
分散させたからとて、1バトル20秒かかるものは20秒かかる。
20秒が40秒にならないだけで、分散させたところで同じです。
(もう一つは)バトルロジックは、バトルβの途中で半オフチェーンにしたものの、バトルロジックを開始する前段となるバトル開始コントラクトが、
編成コントラクトと入れ子になっていて、重くなるという事が避けられなかったんですよね。
バトルロジックのボトムネックを解消したら、次にバトル開始コントラクトの問題が顕在化しただけで、結局、UXと言うか、全体のバトルの流れとしては十分に改善できなかった。
上野氏 : LoomNetworkに係わらず、そもそもブロックチェーン上でゲームのような複雑なロジックを全て動かすというのがなかなか厳しいということです。
ブロックチェーンの1つのトランザクション処理はどこまでどうやったとしても1台でしかできないわけで、ノードを並べてもそれはあくまでも可用性の担保であって性能がアップするわけではない。シャーディングと言っているものも、このコントラクトとこのコントラクトは別物だから別々に計算してもいいよねと言っても、同じコントラクトはやっぱり一個なんです。
普通のソシャゲであれば、性能減って来たから三台四台並べましょうって言ってるじゃないですか。
ソシャゲが1台で耐えれないような性能である時点で、どんな高速なチェーンを使ってもバトルのような複雑なゲームロジックを動かすのは無理でしょうね。
そこが、ブロックチェーンの今の技術の限界ではある。
玉舎氏 : もっと飛躍的にノードあたりの計算性能が上がらない事にはどうにもならない。
上野氏 : 今のブロックチェーンの流れとしては、ブロックチェーンそのものの性能改善だけではなく、
ステイトチャネルやビットコインのライトニングネットワークとかもそうですけど、
オフチェーンを許容しつつ、オフチェーンで不正をしたら発見できるみたいな、
そういう世界観で、ブロックチェーンオンリーで計算しきるというよりも、
論理的に不正が行いにくい構造にすることでオフチェーンを認めるという方向になってきていて、そういう形で進歩していくんだろうなと思います。
結局、MCHは最終的に三層構造にしました。ブロックチェーンで、一番大事なデジタルアセットの価値を保存するみたいなところにおいては、データだけをブロックチェーンにして、あとは大胆にオフチェーン化することを決断しました。
ここにいたるまでには色々試行錯誤しましたけど、結果的にはそこに落ち着きました。
上野氏 : 実はそれぞれの層は、差し替え可能なんですよ。
サイドチェーン層はサイドチェーン層で差し替え可能、オフチェーン層はオフチェーン層で差し替えが可能な設計にしています。