ノンカストディアルなライトニングをエンドユーザー向けにスケールさせることの難しさはウォレット事業者が一番痛感しています。これが最近の記事でも取り上げた「Nodeless Lightning(Liquid Networkを使わせるライトニングウォレットのバックエンド実装)」のようなアイデアにつながっています。

セルフカストディ型のライトニングウォレットのスケーラビリティを補完できる技術は出てくるのか
ライトニングでセルフカストディをしようと思うと、最低でも自分でチャネルを保有する必要があり、よりトラストレス性を高めようと思えば自分のノードを立てることになります。したがって、世の中にあるセルフカストディ型のライトニングウォレットはこのいずれかの形をとっています。 しかし、この使い方にはコストがつきものです。例えばチャネルの開設には今のオンチェーン手数料が低迷している環境でも数十円、場合によっては数千円以上になることも考えられます。ライトニングノードの維持も無料ではありません。(趣味で維持している場合は無料のように考えてしまいますが) ライトニングはカストディ型で普及する、という今では主流の主張はこれらのコスト面と、それに関連したユーザーエクスペリエンスの問題を根拠にしています。コストやUXの課題を軽減しつつ、セルフカストディを捨てない折衷案はないのでしょうか? 今日はその折衷案として考えられる、ライトニングが使えるセルフカストディ型のウォレット方式を2つ考えてみます。 ・現行のセルフカストディ型ライトニングウォレットは大別して2種類に分かれ、それぞれに課題がある ・Muti
Liquid Networkはライトニングのライトユーザーの受け皿になりうるのか?試算してみた
ライトニングノードやチャネルの維持には費用がかかります。現行のノンカストディアルウォレットはLSP型が主流ですが、エンドユーザーがLSPに支払う手数料は足りているのでしょうか。この夏の記事でも紹介したように、そんなことはないという事例が蓄積してきています。 LSPは儲からない?ノンカストディアル・ライトニングウォレットを支えるインフラからVoltageが撤退皆さんが主に使われているライトニングウォレットはノンカストディ型のものでしょうか? ライトニングウォレットは大別するとカストディ型・ノンカストディ型に分けられますが、一般的にはカストディ型のもののほうが人気があります。ライトニングノードほどではなくとも、初めて使うときにチャネルの開設が必要であったり、ときどき起動して同期しないといけないなど、多少の不便やコストがあるためです。 とはいえ、ノンカストディ型のライトニングウォレットにも需要はあり、大きな金額を安心して使いたいユーザーが使っていたり、カストディ型のウォレット運営が規制面などで難しい地域で提供されていたりします。昔はスマホにがっつりライトニングノードを丸ごと載せてしまうアプ

ライトニングウォレットのバックエンドを提供している事業者の中でもLightsparkは取引所などに対してサービスを提供しており、開発者にライトニングの発明者であるTadge Dryjaを擁していたなど特徴的な企業です。そんなLightsparkもエンドユーザー向けのライトニングセルフカストディに課題を感じていて、アンサーとして独自設計のビットコインレイヤー2を発表しました。Sparkです。

*Spark
A trust-minimized solution designed to scale Bitcoin and extend the Lightning Network.

今日はSparkがどのような設計になっているか見ていきましょう。

・SparkはStatechainsが源流。Statechainsの課題をおさらい

・ArkにもインスパイアされたトランザクションツリーSpark Tree

・Sparkの今後

SparkはStatechainsが源流。Statechainsの課題をおさらい

Sparkは構造的にはStatechainsを改善していったものと見なせるので、Statechainsを復習してみましょう。Statechainsに関する過去記事を2つ貼っておきます。

LNを補完するStatechains、サイドチェーンの伏兵Drivechain
最近は特にライトニングネットワークや、その上で様々なアセット・スマートコントラクトを動かせるようになるかもしれないRGBプロトコルなどについて触れてきましたが、今日はLNを「補完する」と表現されることのあるStatechainsと、なかなか議論が進みませんが有力なサイドチェーンの実現方式であるDrivechainについて紹介させていただきます。 どちらも最近あまり注目されていない気がします。 STATECHAINS ビットコインでは通常、トランザクションに秘密鍵で署名して新しい秘密鍵で使用できるアドレスに送金します。Statechainsはこれとは異なり、秘密鍵自体を渡すことでUTXOごと送金する(=オンチェーントランザクションが不要)というコンセプトです。 封入された秘密鍵ごとUSBデバイスを譲渡することでオフチェーンでビットコインを譲渡することのできるOpendimeと同様の考えですね。 仕組みは比較的シンプルです:まず、Statechainに入金したいアリスが、Statechainの「仲介人」を務めるボブとの2-of-2マルチシグアドレスにある金額のビットコインを入金し
Statechainsを実装したMercury Layerはどのようなレイヤー2なのか?
BRC-20トークンブームの再来によりビットコインの送金手数料が再び高騰している今月、ライトニングネットワークでは送金トラブルなどによるチャネルの強制閉鎖によって大きな出費を強いられるノード運用者が目立ちました。 背景としては送金手数料の高騰以外にもライトニングウォレットのZeusがHodl Invoiceというテクニックを使ったオフライン受け取りを実装したところ、Mutinyというブラウザウォレットとの相性が悪く強制閉鎖を招きやすかったという事情があります。また、Phoenixなど必要に応じてオンチェーントランザクションでライトニングチャネルの容量を拡張するウォレットは当然手数料高騰のあおりを受けてしまいます。いずれにせよ、手数料高騰時の強制閉鎖は金額的なインパクトも大きく、話題になりやすいものです。 Just one FC. 250k+ sats for one sweeped expired HTLC. One of seven. There are no words. I’m thinking. pic.twitter.com/EUqABPV3k0 — SunnySar

Statechainsとは、ユーザーとStatechain Entity(SE)のマルチシグアドレスに最初に入金されたコインを、オンチェーントランザクションで新しいアドレスに送金することなく、そのアドレスを使って送金できる主体を新しいユーザーとSEの2-of-2マルチシグに移転していく技術です。ある意味、Opendimeに似ています。

Opendimeとは?|btc_dakara
今回の題材であるOpendimeですが、実は過去に触れたことがあります。当時の記事をご覧下さい。(最下部にちょろっと書いてます) Opendimeとは カナダのCoinKite社(ガチビットコイナー企業)が製造する、ユーザーの手元に届いてから生成される秘密鍵を封入するUSB型デバイスです。公式サイトから1つあたり2000円未満で買えます(3個単位)。使い捨てウォレットのようなものですが、とてもユニークな工夫があります。 使い方はシンプルで、最初に届いたときにセットアップします。具体的には、好きなファイルをいろいろドラッグアンドドロップで移動することで、秘密鍵をランダム

このとき、マルチシグといっても使用するマルチシグはシュノア署名の導入で利用可能になった、鍵を加算するタイプのマルチシグです。

Statechainでは、最初にAliceがStatechainに入金する(オンチェーンTxn0)。最初はAliceが出金に使用できるオフチェーンTxn1を持っているが、Bobにこのコインを送金するとSEとBobの秘密鍵を組み合わせて同じアウトプットを出金できるようになる(Txn2)。出典:spark.info

これによって、最初は(ユーザーAの秘密鍵+SEの秘密鍵①)でアンロックできたコインを、ユーザーA、ユーザーB、SEが協力することで(ユーザーBの秘密鍵+SEの秘密鍵②)に付け替えることができるようになります。これを繰り返していくことで、最初に入金した金額の所有を移転していくことができます。

コンセプト的には比較的シンプルなStatechainsですが、欠点は主に2つあります。

1つ目はそれぞれのStatechain自体に寿命があることです。これは、過去のユーザーがSEと結託して過去の所有権を主張(オフチェーントランザクションをビットコインネットワークに配信)したときに、より最近の所有者が自身が持つRefund Transactionをネットワークに配信(異議の申し立て)できる期間を設けるためのものです。しかもこの寿命はStatechainの作成時に「作成者=最初の保有者が出金できるまでの待ち時間」として決まってしまうため、そのStatechainがあまり使われなかったら勿体ないです。

2つ目の問題はStatechain内の処理は直列的で、コインの分割などが行えないことです(つまり、1BTCのStatechainはその1BTCを丸ごとやりとりする使い方になる)。これまでの解決策はLNなどと併用しておつりを扱ったり、複数のサイズのStatechainを扱うもので、煩雑でした。

SparkはSpark Treeという概念の導入によってStatechainsのこれらの課題を解決しています。

ArkにもインスパイアされたトランザクションツリーSpark Tree

Sparkという名称にはArk系のプロトコルに共通する「~ark」という語尾がついています。Spark自体はコベナンツを使うものではありませんが、オフチェーンのアウトプット、つまりVTXOをツリー状にして管理する構造がArkに類似しており、多少はインスピレーションを受けたと思われます。(Spark=火花、Lightsparkという社名との共通点など、ネーミングはめちゃくちゃ上手いなと感心しました)

簡単に見ていきましょう。

出典:spark.info

さっきの図ではStatechainの寿命であるタイムロックはオンチェーンTxn0にかかっていたため、Statechain作成時点で決定してしまい時限爆弾となっていました。一方、Spark TreeにおいてはタイムロックはオフチェーンTxn1において規定されているため、Statechainが強制決済されるまでカウントダウンが始まりません。これによってStatechain強制決済時の処理を効率的に詰めることができ、1つのSparkで処理できるトランザクション数が大きくなります。

(例:従来のStatechain→寿命は作成から10000ブロック、トランザクションあたり異議申し立て期間は144ブロックに設定しているが、実際はトランザクションが不定期に発生するため、Statechainの寿命までに20トランザクションほどしか処理できなかった。一方、Sparkにおいてはこの期間を効率的に詰めることができるため、20トランザクション発生した時点でまだ{10000-(21*144)}/144=48トランザクション詰め込める)

ただし、各ユーザーが盗難のリスクを負わずに単独で異議を申し立てられる期間は十分に取る必要があるため、「最初から決まっているStatechainの寿命」はなくなっても「強制決済時に資金を回収できるまでのユーザーあたり期間」は現実の制約を受けます。例えば資金拘束を最大100日に抑えたくてユーザーあたり異議申し立て期間を1日とした場合、そのSparkは100個のトランザクションしか処理できません。(この制約は作成時に寿命が決まる従来のStatechainにもあるので、新しい制約ではありませんが)

また、この木構造を採用することで並列処理が行えるようになり、1つのSparkの中でコインの分割、つまりおつりが扱えるようになります。処理できるトランザクション数も倍々に増えます。なので、さっきのStatechainとの比較例は正確ではなく、もっと差が開きます。

逆に、Sparkを強制決済した際にオンチェーンに放たれるトランザクション数はStatechainと比べるとかなり多くなるため、強制決済時のコスト面では不利と言えます。前述の資金拘束等の側面も踏まえると、なんとしても協調決済したいですね。 

Sparkの今後

Lightsparkは今後SparkをOSSにしていくとしており、現時点では一部の顧客とクローズドアルファで試運転しているようです。これが完成したプロダクトとして世に出てくるとしても数年後かもしれません。

しかし、ライトニングのラストワンマイル問題やカストディアルなウォレットの規制対応コストを強く実感しているであるLightsparkがリソースを割いて開発していること自体には大きなコミットメントを感じます。

個人的にはそこまでしてノンカストディアルなレイヤー2として解決すべき課題なのか(そして少額をオンチェーンに戻す経済合理性はあるのか)は疑問ですが、もし仮に使いやすいものになればトランザクションの集約技術として一定の利用が見込めるかもしれません。Lightsparkは、Taproot Assetsなどのプロトコルにも対応できることに強みがあると主張しています。何より、コベナンツを必要とするArkなどとは違い、Taprootで導入されたシュノア署名のおかげで今すぐに使えるプロトコルなのが秀逸です。

これまでそれほど脚光を浴びてこなかったStatechains系の技術ですが、ひょっとすると見直されるタイミングが来ているかもしれません。