L2技術「Statechains」を実装したMercury wallet
ビットコインのスケーリング問題を解決する技術といえばライトニングネットワークだが、これまでにL2技術の提案は色々されてきた。そのうちの1つに「Statechains」という技術がある。この技術が発表されたのは2018年のスケーリングビットコイン東京で、自分もその発表を聞いていたので今でも印象に残っている(スケーリングビットコイン東京については以下の記事で紹介している)。発表から約4年の月日を経て、昨年ようやくその実装が誕生した。今回はこのStatechainsとその実装について紹介する。
Statechainsとは
ブロックチェーンを使わずにビットコインの所有権を移転するL2技術である。サイドチェーンのようにブロックチェーンとは別の台帳を管理する主体が存在し、この主体とユーザーがやりとりを行うことで所有権の移転を行う。以下の図ではAがその主体であり、BやC、Dはユーザーである。
Statechainの主な流れは以下となる
- まずBがAとのアドレスS※へ入金する(ここがStatechainへの入口)
- BがCへ所有権を移転する場合、CはAと新しい鍵を生成し、AはBとの鍵を削除する
- CがDへ所有権を移転する場合、DはAと新しい鍵を生成し、AはCとの鍵を削除する
- Dは自身とAの署名でオンチェーンへ出金する(ここがStatechainからの出口)
※アドレスSの秘密鍵sは s = a1*b1 = a2*c2 = a3*d3のようになる。a1,a2,a3はStatechainを管理するAが保有し、b1はB、c2はC、d3はDが保有している。Aは所有権の移転があるたびにa1、a2、a3を削除していくが、ここが信頼ポイントとなっている。
上記1で生成した入金アドレスのUTXOの所有権が転々としていくのがStatechainの中核である。ここで所有権がCやDへ移転しても、AがBと供託することでBが出金できてしまうのだが、この不正は証明可能であり、この証明を公開することでAが管理するStatechainからユーザーは撤退するだろう、というのがセキュリティモデル。
Statechain上のビットコインの送受信はUTXO単位で行われ、オンチェーンのようにUTXOを分割することはできない。そのため、Statechain上のビットコイン(これをStatecoinと呼ぶ)の数量は、0.1BTC, 0.01BTC, 0.001BTCなどのような端数のないキリ番として送受信される。
Mercury walletとは
Statechainを実装したウォレットがMercury walletだ(ダウンロードはここ)。以下がウォレットのメイン画面で、Statechainへの入退出するための入金・出金ボタンと、Statechain上でコインの送受信(所有権の移転)をするための送信・受信ボタンがある。
実際にStatechainへの入金から送受信をした結果は以下より確認できる。
Mercury Walletで送受信をする際の送金手数料は無料だが、Mercury Walletから出金する際にサービス手数料を支払う必要がある(現時点で0.5%)。これがStatechainを管理するMercuryのビジネスモデルである。
サイドチェーンとの違い
サイドチェーンにもいくつか種類があるが、Statechainは双方向ペグ型であり、Liquidのようにコインをメインチェーンとサイドチェーンでの間で行き来ができる。サイドチェーンLiquidではフェデレーションと呼ばれる主体が存在しており、Statechainもサイドチェーンを管理する主体が存在する。Liquidではトランザクションをブロックに格納し署名することで承認するが、Statechainではブロックという概念はない。またLiquidではビットコインと同様にスクリプト言語があり、トークン発行機能なども存在するが、Statechainはコインの移転しかできない。
Liquidに対するStatechainのメリットは何だろうか。Liquidの場合、Peg-in/outの処理はフェデレーションに依存している。一方Statechainの場合、入金するユーザーとStatechainの主体(以後、SEと称す)が協調する必要がある。また、SEが応答しなくなった場合でも非協調的にコインをオンチェーンへ回収することができる。以下はStatechainの比較表である(引用元記事)。
Statechainのメリットはサイドチェーンとは異なり、UTXOをそのまま活用できることである。これは他のアプリケーション、例えばLNやDLCなどと連携しやすくなると思われる。Statechainの発案者Ruben SomsenもStatechainのUTXOをLNのチャネル開設として使うことができるかもしれないと言及している。Statechainを詳しく知りたい方はこちらの記事をお勧めする。
state coinはオンチェーン上ではUTXOなんだから、そのUTXOをFundingTXで使うこともできる(かも)ということですね。
とあるUTXOはstate coinでありLNのチャネル資金でもある、みたいな。
チャネル閉鎖で払い戻す時、state coinだと分割できないから残高配分をどうするのか分からん。state chainにおいてもオンチェーンへ払い戻しちゃうのかな。