Arkプロトコル
Arkプロトコルは、ビットコインのL2プロトコルでスケーリング問題を解決しようとするものです。ライトニングネットワークのようにUTXOを共有してオフチェーンで送受信ができ、LNのようなユーザーがコインを受信するためのセットアップが不要(所謂、LNの抱える流動性問題がない)なのが特徴です。今回はそのArkプロトコルについて見たのでその備忘録です。
Arkは3つの使用用途があります。
- ミクシング:Ecashのようにブラインドされたコインは各セッションごとにミクシングされるのでプライバシーが向上する。
- LNインボイスの支払い:Arkで預託した資金を使いLNのインボイスを支払うことができる。
- 内部的な送受信:受信者はファイナリティを得るにはブロック承認される必要があるが、未承認でも上記のLNインボイスへの支払いにそのコインを使用できる。
ArkはASPと呼ばれるサービスプロバイダーが5秒間隔でプールと呼ばれるトランザクションをブロードキャストします(このプールトランザクションは流動性を提供するのでイーサリアムでいう流動性プールに近い概念です)。このプールトランザクションの基本構成は1つのインプットと3つのアウトプットで、プールの寿命は4週間となっています。プールトランザクションには複数のvTXOと呼ばれるアウトプットがネストされたアウトプットが1つあります。
各vTXOは4週間の有効期限があり、それを所有するユーザーは4週間以内に使わないとASPが回収できるようになっています。そのため、ユーザーは所有するvTXOを期限内に使う必要があり、その使い方には以下があります。
- 自身への新しいvTXOへ交換する
- 他者へvTXOを送金する
- LNインボイスへの支払いをする
- ArkからオンチェーンBTCへ引き出す
1や2は実際にどのように行われるかと言うと、ASPに対して自身のvTXOを消費するように依頼し、ASPはそれが有効なものか検証します。有効であればその依頼を認証して、対象のvTXOを消費するための2-of-2マルチシグ署名をします。そして署名との引き換えにユーザーへクレデンシャルを与えます。これでプールトランザクションに含まれるユーザーのvTXOは消費されたことになります。そして次のプールトランザクションが展開されるセッションでASPへクレデンシャルを公開して新しいvTXOを追加してもらいます。もし古いvTXOをオンチェーンで引き出そうとしてもASPがすぐに回収できるので二重支払いさせることはできません(以下の図のatlc:connect)。これはEltooに似た挙動ですが、EltooのためにはソフトフォークによるAPOというSighashタイプが必要です。しかし、Arkではソフトフォークなしでこれに近い機能を実現しています。その肝となるのがコネクターと呼ばれるアウトプットです。このコネクターに関しては次回の記事で紹介したいと思います。
4のオンチェーンへ引き出す場合、vTXOがネストされているcoins:revealを展開します(以下の図参照)。その後、vtxo:claimを展開させます。そして上図のように、24時間後にatlc:refundを展開してオンチェーン上での払い戻しが完了します。
---
5秒おきにASPが新しいプールトランザクションを展開していくことに最初は違和感を覚えました。しかし、そのプールの中には数千・数万ものvTXOが含まれている、Arkは世界中の人々をビットコインへオンボードさせるためのスケーリング技術であることを考えれば道理にかなっています。もしArk上での送受信が少なければプールトランザクションは1分や10分間隔でも良いわけですね。以下は1つのASPが5秒間隔でプールを展開していく図ですが、各プールには複数のvTXOが含まれており、送受信する度に古いvTXOは消滅して新しいプールに新規のvTXOが追加されていっているのが分かると思います。