ビットコインにおいてサイドチェーンは、メインのブロックチェーンの側鎖に当たる概念です。ビットコインにサイドチェーンを導入することにより主に以下の2つのメリットが得られます。
- ビットコインの機能拡張(スマートコントラクトなど)
- スケーラビリティ問題の対策(トランザクション処理速度の増加および取引手数料の減少)
このようにビットコインに対して革命的な機能向上が期待されているサイドチェーンに対してさまさまな方法が提案されています。
そこで当記事では、その中でも注目を集めているPaul Sztorc氏のグループが開発しているDrivechainについて紹介していきます。
Drivechainとは
Drivechainとは、メインチェーンとサイドチェーン間でデジタルアセットをTwo-way Peg(双方向)でやり取りするための方法です。
サイドチェーンに対してTwo-way Pegする方法は以下の記事で紹介しているようにさまざまな方法があります。例えば、Blockstreamが進めているLiquidではFederationというモデルが採用されています。Federationでは、メインチェーンとサイドチェーンの間に複数の監査人が介することでチェーン間のやり取りを実現する方法です。
参考:ビットコインでTwo-way Pegサイドチェーンを実装する5つの方法
しかし、このような監査人が存在するモデルはP2Pではなく複数の監査人がいたとしても、その監査人が同盟を組むことでデジタルアセットを簡単に盗むことができてしまうリスクがあります。また、Liquid自体がペイメントチャネルと同じことをしているだけとも言われています。
これに対しDrivechainではTwo-way Pegのために特別な監査人を置くことなくサイドチェーンの実装を実現することを目指しています。
Drivechainは、Blockstreamが発表したオリジナルのサイドチェーンのペーパーで用いられていたSPV-Proofを応用したTwo-way Pegの方法です。このSPV-proofではマイナーがブロックに含められるproofを改ざんすることで、ブロックチェーン間を移動するデジタルアセットを盗むことが可能になるという大きな欠点がありました。
そこで、DrivechainではSPV-Proofに「マイナーの投票」を導入することでより安全なサイドチェーンとのTwo-way Pegの方法を実現しようとしているのです。
Drivechainの仕組み
DrivechainのTwo-way Pegにおいて、メインチェーン→サイドチェーンへの移動はとても簡単です。いつものようにある特定のアドレスに対するトランザクションを作成することで可能です。
しかし、サイドチェーン→メインチェーンへの移動を安全に行うのはとても難しくさまざまな工夫が必要になります。なぜなら、サイドチェーンから送られたきた異なるメッセージに対し、どちらのメッセージが正しいかメインチェーン側で判断することが難しいからです。
例えば、Xコインをネイティブ通貨としているサイドチェーンから、10Xコインをメインチェーンの1BTCに送信する状況を考えます。このとき「10Xコイン→1BTC:アリスへ」と「10Xコイン→1BTC:ボブへ」と2つのメッセージがサイドチェーンから送られてきたとき、どちらのメッセージが正しいかメインチェーンは判断しなければならないのです。
そこでDrivechainで提案されている、サイドチェーンにあるXコインをメインチェーンのビットコインに変えるプロセスを見ていきます。
まず、サイドチェーンでWithdrawal transaction(払い戻しトランザクション、以下WT)を作成します。このWTではサイドチェーンのXコインを消費し、メインチェーンの特定のアドレスのアドレスを指定する情報を持っています。
一定期間の間(例えば1週間)、このようなWTはサイドチェーン上で溜めておき、その1週間分のWTをWT^としてまとめます。WT^は「lockboxアドレス」という特殊なアドレスに保存され、WT^のトランザクションIDはサイドチェーン側のブロックヘッダーに記録されています。
WT^をビットコインネットワークにブロードキャストし、ノードは以下のチェック項目を満たしているか確認します。
- そのWT^は正しい形式になっているか
- lockboxアドレスが持っているBTC以下の値になっているか
そして、このトランザクションIDはメインチェーンのcoinbaseトランザクションに含められます。ちなみに、coinbaseトランザクションとはそれぞれのブロックの最初にあるトランザクションでマイナーがマイニング報酬を受け取るための特殊なトランザクションです。
ここである期間の間(例えば3日間)プロセスを止めることで、サイドチェーンのブロックヘッダーに記録されているWT^のトランザクションIDがメインチェーンのcoinbaseトランザクションに記録されているものと一致するかをネットワーク参加者全員が確認できるようにします。
そしてそこから1008個のブロックが追加されるまでの間(ブロック生成時間が10分間だとすると1週間)、そのトランザクションIDを承認するかどうかの「マイナーによる」投票が行われます。
この投票で51%以上の可決が得られれば、有効なトランザクションとしてメインチェーンに記録されるのです。また、このcoinbaseトランザクションを利用したマイナーの投票はcoinbaseコミットメントと呼ばれることもあります。
「マイナーの投票」はマイナーが生成したブロックに「賛成」か「反対」を記すことで行われるので、504個以上の賛成ブロックが必要になります。この一連のプロセスが、Drivechainを使ってサイドチェーンのXコインをメインチェーンのBTCに移す仕組みです。
BMM(Blind Merged Mining)
サイドチェーンで不正が行われないようにメインチェーンのマイナーがマージマイニングで管理する必要があります。マージマイニングとは、メインチェーン以外のブロックチェーンを並行してマイニングすることです。
ハッシュ関数などのアルゴリズムが同じ場合、メインチェーンのマイナーは効率的にサイドチェーンのマージマイニングを行うことが可能なのです。
しかし、サイドチェーンで従来のマージマイニングを行おうとすると以下の2つの欠点が問題になります。
- マイナーがサイドチェーンのフルノードを運営しなければならない
- マイニング報酬がBTCで支払われず、サイドチェーンの通貨で支払われてしまう
つまり、サイドチェーンが増えれば増えるほどマイナーの負担が増加してしまうことになります。また、それぞれのサイドチェーンはあくまでもビットコインのプラグインのひとつであるため、プラグインの価値を増大させるのではなくビットコインの価値を増大させるためにマイニング報酬はBTCで支払われる必要があります。
これらの欠点を解消するために開発が進められているのがBMM(Blind Merged Mining)です。BMMは、サイドチェーンのフルノード運営者とマイナーがそれぞれ独立して働くことを可能にしています。
具体的には、マイナーがサイドチェーンのフルノード運営者に対して報酬を与えることで、フルノードを独立して運営するインセンティブを与えています。これにより、マイナーもサイドチェーンのフルノードを運営する負担を削減することが可能になり、マイニング報酬もBTCで得ることができるのです。
Drivechainの特徴
安全性に優れている
サイドチェーンからメインチェーンに引き戻すときは、過半数以上のマイナーの許可が必要になるので、51%以上のマイナーが同盟を組み不正を働かない限り安全です。
これは、ビットコインネットワークにおける合意形成アルゴリズムのセキュリティレベルと同じであるので、いわゆる51%攻撃のリスクと同程度であることが分かります。
参考:ブロックチェーンの安全性を脅かす「51%攻撃」の仕組みと実態
つまり、ビットコインネットワークがセキュリティ的に安全である以上、Drivechainによるサイドチェーンも安全ということです。
サイドチェーンの実装が簡単
Drivechainでは、サイドチェーンをメインチェーンの機能拡張のための「プラグイン」のように扱うことを目指しています。上記の仕組みのようにDrivechainでは、新しいサイドチェーンを追加するときはマイナーの同意(支持)があればいいので、ただのソフトフォークを行うだけで追加することが可能なのです。
ソフトフォークは以下の記事で解説しているようにマイナーからの支持があれば安全に実行することができます。
参考:【完全版】ブロックチェーンでのソフトフォークとハードフォークの違い
サイドチェーンからの移動が遅い
Drivechainにおいてメインチェーンからサイドチェーンにデジタルアセットを移動させるのは、特定のアドレスに送金するだけなのですぐ実行され完了します。
しかし、サイドチェーンからメインチェーンに移動させるのは上述した仕組みのようにかなり遅いです。しかし、Drivechainではアトミックスワップを利用することにより、この遅さを最小限にできるとされています。
参考:【図解】アトミックスワップのすべて。その仕組みとメリットと問題点