Diamond Hands Magazine 💎ビットコイン&ライトニングニュース🙌

Diamond Hands Magazine 💎ビットコイン&ライトニングニュース🙌

ライトニングネットワーク誕生秘話:ビットコインを支えたもう一人の立役者【後編】

yutaro's avatar
yutaro
Oct 07, 2025
∙ Paid

イザベル:
Utreexoって何?そこから教えてもらえない?

タッジ:
オーケー、まずはそこから始めよう。



こんにちは!yutaro です。

本日のPro向け「BTCインサイト」では、ライトニングネットワーク論文(ホワイトペーパー)を共同執筆したひとり、Tadge Dryja氏へのインタビュー後編です。

Utreexo、任意データ戦争、マークルツリー、量子コンピューター論とLifeboatなど、本日もとても興味深く面白い話題が満載です。

(※本日は最終章です… 前編 | 中編)


Utreexo、そして「任意データ」論争

イザベル:
Utreexoって何?そこから教えてもらえない?

タッジ:
オーケー、良い説明の仕方としては——ノードを走らせるとき、
大きなデータが入ったフォルダが二つある。一つは「chainstate」、もう一つは「blocks」。
「blocks」フォルダはブロックチェーン。ビットコインでこれまで起きた全トランザクションが入ってる。
今は700何十ギガとか?
で、「chainstate」は、その結果——つまり、今どのビットコインが存在するか、ってやつ。
こっちはずっと小さい。15ギガとか、そのくらい。
実際、小さくなったりもする。上がったり下がったりする。

ブロックチェーンは増える一方。新しいブロックが出るたびに増える。
一方は全トランザクションのデータで、もう一方は、
「この瞬間みんなのウォレットに何があるか」のスナップショット、みたいなもの。

イザベル:
そうだね。残高が残っている、ということ。

タッジ:
ブロックチェーンをざっと走査すれば、その結果としてchainstateが得られる。
で、スケーリングは最初から課題だった。
サトシの論文に対する最初のコメントも「これはスケールしない」だったし。

でも直感に反するのは、巨大な700ギガの方——ブロックチェーンは、
chainstateに比べると、本質的なボトルネックではない、ってこと。
実際のボトルネックはchainstateの方。

今のビットコイン・コアでは、ブロックチェーンは剪定(prune)できる。
「2009年から2017年までのブロックを全部消す」みたいなことができる。
必要ないからね。もう走査したんだし。
必要なのは、まだ使ってる他の人にそれを供給するためだけ。

イザベル:
ちなみに、今みんなが言い争ってる任意データも、同じように剪定できるのよね?

タッジ:
あるよ——言いたくないけど——
データをブロックではなくchainstate側に入れるプロジェクトがある。

イザベル:
剪定できないようにするため?

タッジ:
バカげてる。Utreexoなら剪定できるから。
でも現状のままだと剪定できない。

とはいえ、ビットコインに載せられてる任意データの大半は剪定できる。
セグウィットの割引があるから。ウィットネスは重みが1/4で数えられる。

イザベル:
ここで大穴に落ち込みそう。「なぜ人々はフィルタリングとかじゃなくて、
単に剪定しないの?」って質問を延々したくなる。

タッジ:
みんなやってるよ。
いや、剪定って「一切触らない」って意味じゃない。
剪定は「メンプールで受け取り、ブロックで見る」ってこと。

イザベル:
でも剪定はノードの負荷を軽くする、ってことよね?

タッジ:
ディスクから消すだけ。けど、処理はする。
ネットワークで受け取る。
つまり時間の問題。状態をノードに取り込むのに時間がかかる。
でも保存はしない、ってだけ。

しばらくは持つけどね。
大抵のノードは数週間分は持って、その後古いのを消せる。

イザベル:
つまり基本的には時間の問題。ノードの同期に時間がよりかかる、ってこと?

タッジ:
そう、でもインスクリプションやJPEGは、バイトあたりの検証はすごく速い。

イザベル:
本当に?署名がないから?

タッジ:
そう、「300KBのJPEGがあります」ってきたら、ノードは「ハッシュ一致、終わり」。
一方、300KBの署名があると——検証でガリガリ回す。

イザベル:
じゃあ速度の議論はそこまで強くない?

タッジ:
個人的には気にしてない。オーディナルズを見ても「これは馬鹿げてる」って思った。
でも、「ビットコインへの攻撃だ」とまでは思わない。
やりやすい攻撃ではあるけど、そんなに心配してない。

僕が理解する限りでより厄介なのは——
「偽(Fake)の公開鍵」を使うやつ。

ウィットネス領域にJPEGを置く代わりに、JPEGを公開鍵っぽい小片に切って、
アウトプットに入れる。

イザベル:
誰がそんなことを?

タッジ:
たぶん、JPEGが悪だって証明したい人たち。

イザベル:
理論上の話でしょ?本物のデジェンがやってるわけじゃないよね。

タッジ:
いや、かなり大きい。何十メガもある。たくさんある。

イザベル:
でも、それって本当のプロジェクトがやってるの?

タッジ:
たぶん「Stamps」って呼ばれてる。

イザベル:
ああ、Stampsね。オーケー、分かった。まさにそれね。
彼らはただトロールしてるんだと思う。

タッジ:
でも——ああ、そうだ。Stampsは剪定できない。

イザベル:
了解。

タッジ:
chainstateに入ってるから、Stampsは剪定できない。
UTXOセットにね。

ノードはそれをUTXO——未使用トランザクションアウトプットだと思う。
それが「使えない」なんて分からない。
僕が見れば「これは本物のトランザクション・アウトプットじゃない」って分かる。

イザベル:
Stampsのデータはどこに入ってる?

タッジ:
アウトプット。

イザベル:
つまり、アドレス自体ってこと?

タッジ:
ウィットネスとは対照的にね。基本的には。

タッジ:
ウィットネスは完全に普通。
でも発想はこう。「JPEGを持ってる。これを32バイトのチャンクに切る。
アウトプットは32バイト。その中に入れる」。
だから君のコンピューターは「これは公開鍵だ」と思う。
「誰かが次の10分でこれを使うかもしれない」。
だからメモリ上、あるいはUTXOセットに保持しないといけない。
でも見れば「これは鍵じゃない」。見た目が鍵じゃない。でも鍵「かもしれない」。
「鍵じゃない」とは証明できない。

イザベル:
そうね、「鍵じゃない」は証明できない。
だから、ノードを作って「これらは剪定する」ってやろうとしても——

タッジ:
アウトプットは基本的に剪定できない。

イザベル:
OP_RETURNならできるでしょ?

タッジ:
できる。OP_RETURNの発想は、「アウトプットにこの1バイト(を先頭に)入れたら、
それは使えない」ってこと。

だからOP_RETURNを置いて好きなデータを置く。
するとノードはOP_RETURNを見て、「オーケー、これはchainstateフォルダには保存しない。
無視する。だってこれは絶対に使えないから」となる。
だから追跡する必要がない。

でも、もしアドレス側——つまりトランザクションのどの部分かというと、
基本的にアドレスになるけど——そこに入れて、
実在しないアドレスに送る、って形にして、データをエンコードしちゃえば——

イザベル:
分かった。
私はStampsを知ってて、剪定できないってのも知ってた。
まさにあなたの言う通り、それが彼らの主張の核だった。
だからアドレスに入れるって決めたのね。

タッジ:
ナンセンスだと思う。だってそれは要求できないから。
ウィットネスデータなら要求できる。
同じやり方で要求できるんだ。
「ブロックチェーンからこのJPEGを取得したい」って言うなら、
(そんなこと本当にやる人がいるか分からないけど)任意のノードに接続して、
「提供可能な履歴、全部ちょうだい。あのブロック、くれる?」って聞ける。
そしたらブロックをくれる。で、JPEGが見られる。

アウトプットを要求する方法はない。
「UTXOセットのこの部分を見せて」って言えない。
だからどっちにしても、まったく同じコマンドでデータを要求することになる。

つまり、Stampsは、現状では剪定できない任意データの良い例だけど、
Utreexoがあれば無意味になる。

イザベル:
うん、うん、うん。オーケー。

タッジ:
つまり、chainstate——UTXOセットは、分からない、
いつも変わるけど、1億何千万という小さなUTXOで構成されてる。
で、遅い理由はまさにそこ。ビットコインのスケーリングの制限要因になってる。

イザベル:
UTXOセットが、ね。

タッジ:
そう。だから、オーディナルとかインスクリプションが原因じゃなくて、
本質的にUTXOセットこそが、長期的にノードを膨らませる問題になる。

イザベル:
そう言っていいと思う?

タッジ:
言えると思う。もちろん物事は複雑だけど、だいたいそんな感じ。

イザベル:
オーケー。

タッジ:
今はUTXOセットはブロックチェーンに比べればかなり小さい。
でも、そうであり続ける必要はない。
もし誰かが——アイデアを与えたくないけど——
大金を持ってビットコインを攻撃したいなら、
UTXOセットを10分ごとに1MBずつ膨らませることができる。
そうすれば、剪定できない100GBのUTXOセットにだってできる。
で、それを全部保持してトランザクションを検証しなきゃいけない。しかも速く。

もし君がマイナーなら、ブロックを見て、UTXOセットに照らしてチェックして、
「オーケーかどうか」を素早く判断しないと、競争で勝てない。

イザベル:
で、さっき言ってたように、署名の検証は遅い。
でもそれは別問題でしょ?

タッジ:
そう、CPU時間の話。署名検証のための。
もう一つ遅いのはディスクI/O。
つまり、UTXOセットがあって——たとえば1億5千万個の小さなエントリ。
一つ一つは60バイトくらい。
で、ブロックが来ると、5,000とか6,000個の小さなエントリを参照しないといけない。

タッジ:
もしスピニングHDDなら、物理的にヘッドを5,000回も動かすことになる。
すごく小さなエントリを探すためにね。だからめちゃくちゃ時間がかかる。
誰もHDDは使わない。だからSSDを使う。
でもSSDでも、すごく小さな読み出しが大量に発生する。これはコンピューターにとって遅い。
そういうものなんだ。
だから、これが速度とスケーラビリティの制限要因になることが多い。


ブリッジノードと「圧縮されたUTXO」案

タッジ:
で、Utreexoのアイデアは——いや、昔からあるアイデアだけど——
たぶん僕を動かしたのは、Financial Cryptoってところにいた時。
暗号通貨の「クリプト」じゃない、ビットコインよりずっと前からあるカンファレンスで、
金融暗号(Financial Cryptography)のこと。
大体いつも、ビーチとかでやるんだけど。
そこでsipa、Pieter Wuilleと話してて、彼が言ってたのは——

彼はこのアイデアはうまくいかないと思ってる。つまり、アキュムレータ(累積器)という発想、UTXOセット全体を保存する代わりに、ギュッと潰した表現だけを保存して、人々が自分のコインがその集合に入っていることを証明する、というやつ。

彼いわく、「ブリッジノードが必要だから無理だ」。わかると思うけど、ゼロから始めるなら動く。みんなが「オーケー、これが俺たちのビットコインの使い方。UTXOセットは持たない。小さな累積値だけ追跡する」って合意できるならね。

で、みんなのウォレットが証明を持つ。だからウォレットでトランザクションを作るとき、所有の署名をするだけじゃなくて、それが存在することも証明する。

イザベル:
どうやって、自分のUTXOがその圧縮状態に含まれているって証明するの?さっきあなたに聞こうとしてた質問はそれ。

タッジ:
うん、当初のアイデアでは——こういうアキュムレータと呼ばれるものに関する研究の大半はRSAアキュムレータなんだ。特性が良いからね。証明がとても小さい。ひとかけらの小さな証明でブロック全体を証明できる。だから、それは本当に良さそうに見える。

でも問題は、その証明を更新しないといけないこと。誰もが証明を受け取れるように、証明を提供するコンピュータが必要になる。全員に「ウォレットで自分の証明を持ってね」と要求しない限りはね。で、RSAの証明は十分な速さで更新できない。だからUtreexoがやっているのは、マークルツリーを使うこと。

そう、Utreexo。つまり、UTXOセット全体をマークルツリーの集合に入れる。


なぜ複数のマークルツリー?木の本数と二進数

イザベル:
なぜマークルツリーの“集合”なの?木はいくつ必要?

タッジ:
だいたい20本。

イザベル:
オーケー、20本のツリー。なぜ20本?UTXOセットを20本のマークルツリーに入れる必要があるの?

タッジ:
オタクっぽく説明すると、必要な木の本数は、UTXO数の二進数表現における1の個数なんだ。だから、もしUTXOが16個なら、必要なのは1本だけ。17個なら2本必要。65,535個なら15本必要、みたいな。

イザベル:
なるほど。

タッジ:
そう、二進数で書いて1の数を数える。それが必要な木の本数。

イザベル:
じゃあ、これは設計上の選択ってことね。技術的な制限じゃなくて。そういう設計にしたってこと?

タッジ:
ある意味、そう“せざるを得ない”。Utreexoは、やってると宇宙に「いや、それがやり方だよ。他に道はない」って言われてる感じがするやつなんだ。つまり、「log⁡nlogn 個(正確にはおよそその半分)のルートが要る」って世界が決めてるみたいな。

じゃあどうやるの?って言われたら、自然にそうなる。そこが取り組んでて楽しいところで、Utreexoには自然なエレガンスがある。いや、エレガントかは分からないけど、「そう、こうしないと……」みたいな。

イザベル:
Sjors Provoostは、Bitcoin ExplainedのUtreexo回で「エレガント」って評してたよ。あれはすごくオススメ。

タッジ:
うん。ライトニングやDLCよりも、数学的に「おっ、ここハマるね」って楽しいところがある。最初にUtreexoに取り組んだときは本当に楽しかったよ。「こうやればいい」って手がかりがあって、「あ、動くじゃん」ってなって、さらに「あ、これも」って続く感じ。


「読むのは削除時だけ」—ビットコイン特有の整合

タッジ:
それに、ビットコイン特有で良い点がある。ビットコインでは、UTXOセットは普通はHDD上にあって、新しいUTXOは書き込まれる。誰かがトランザクションを作ると、出力が保存される。誰かがそれを使うと、読み出されて、削除される。

で、良いのは、「読む」のが必要になるのは削除するときだけ、ってこと。Utreexoではこれが本当にうまく噛み合う。証明するときに、その証明が削除に必要なデータにもなっている。全体として気持ちよくハマるんだ。ちょっと楽しい。

イザベル:
そこが「エレガント」だって言われてた部分ね。

タッジ:
そう。自然にそうなった。狙ってやったわけじゃない。「お、動いた、クール」って感じ。僕について「クールなアイデアをいっぱい持ってる」みたいに言う人もいるけど、実際は多くが「早く始めた」ってだけだと思う。

もし僕がライトニングに取り組まなかったら、誰かが1年後に同じことを思いついてたはず。


なぜ「RSA式」はダメで、UtreexoはOKなのか

イザベル:
じゃあ、これが良い前振りなんだけど、Pieter Wuilleが「これは動かない」と言った理由は?

タッジ:
みんながRSAベースとか、他の——「派手」とは言いたくないけど——圧縮可能な証明を持つアキュムレータで考えていたから。例えば、「証明が必要です。はい、ブロックが出ました。入力が6,000個あります。6,000のUTXOが使われてます」。RSAアキュムレータなら、数百バイトの小さな証明ひとつで済む。「6,000全部証明しました。終わり」。それは素晴らしい。

でもUtreexoはそういう動き方をしない。Utreexoでは、基本的に6,000全部に対して証明が要る。これは欠点、完全に認めるよ。だけどトレードオフとして、オンデマンドで何でも証明してくれる「ブリッジノード」は、ラップトップでも全然やれる。RSAの方だと、それが……。

イザベル:
理屈ではブリッジノードは1つあれば足りるのよね?すごく中央集権的だけど。

タッジ:
ただ、とても脆い。だから、たくさん欲しい。できるだけ多くのブリッジノードが欲しい。
でも、RSA式でもハッシュ系アキュムレータでも、技術的には1個のブリッジノードで回るのは確か。みんなが使い始めたら、ブリッジノードは要らなくなる。みんながUtreexoノードを走らせるのが当たり前になればね。

でも、それってどうやって起こるの?文字どおり「全員」じゃないといけない。ブリッジノードがなくなって、誰か1人が「コインを使いたい」ってなったら、「え、証明は?」って言われる。「証明って何?」みたいな。

だから、おそらくブリッジノードは永遠に必要。ブリッジノードが必要——明確に言うと、ブリッジノードってのは両方のソフトを動かしてるノード。古いUTXOセットも持ってて、フルのマークルツリーも持ってるから、何でも証明できる。

イザベル:
でも、みんながそのブリッジノードに接続するって、どうやって分かるの?

タッジ:
今のソフト(ちゃんと動く)では、ブリッジノードは自分がブリッジだと広告しない。完全にステルスで見抜けない、とは言わないけど、「やあ、ブリッジノードだよ」とは名乗らない。

イザベル:
じゃあ、誰に接続すればいいか、どうやって分かるの?

タッジ:
普通にピアに接続して、トランザクションを中継し合うだけ。例えば、ブリッジノードがあるとして、そいつは通常の非Utreexoトランザクションを見る。メンプールで見かけた非Utreexoトランザクション全部に証明をくっつけて、反対側(Utreexo側)に流す。だから、必ずしもブリッジノードから直接情報をもらう必要はない。ブリッジから受け取った別のノードからもらってもいい。

つまり、通常のメンプールと同様に、ピアツーピアのゴシップネットワークになる。他の人とゴシップできる。それが重要だと思ってる。そうしない方が楽だけど、あえてそうした。最初はブリッジノードが10〜20しかないかもしれない。利用者が少ないからね。そういうのを、Electrumノードみたいな「狙われる的」にしたくない。


RSAアキュムレータが抱える“更新”の壁と論文の示唆

イザベル:
Pieter Wuilleは、なぜブリッジノードが「致命的」とは思わなかったの?

タッジ:
RSAアキュムレータの場合は、ちょっと混乱するんだけど……いや、複雑すぎるってこと。要するに、UTXOごとに証明を個別に更新しないといけない。

イザベル:
なるほど。

タッジ:
他にも緩和策になり得るテクニックはあるけど、本質的にはこう。「1億5,000万UTXOがあって、ブロックが出ました」。これは不利だよね。で、ジョー・ボノーの2~3年前の良い論文があって、これはハードリミットだ、回避策はないって示している。証明の変更をゼロにはできない、みたいな。僕は証明の仕方は分からないけど、彼は「Utreexoがほぼ最善」だと言ってくれてる感じ。

つまり、「証明が変わる」という現実がある。それは悪い。なぜならビットコインの最大の成功パターンの一つは「シードフレーズを持って、ビットコインを持って、覚えるなり金庫に入れるなりして、10年後に取り出す」。保持するのはシードフレーズだけ、というモデル。

「ビットコインを使うために、変わり続けるデータを追いかけなきゃいけない」という発想は良くない。ライトニングネットワークの最大の問題の一つも、まさにそれ。

イザベル:
解決策はないの?

タッジ:
アキュムレータでは、ない。

イザベル:
ソフトフォークで解ける、とかでもなく?コアのブロックチェーン側に焼き込む形で?

タッジ:
いや。ブリッジノードが解決する。発想はこうだ。「証明を自分で追わない。他の誰かが自分のためにやってくれる」。だって今は全員がそうしてる。全員がUTXOセット全部を持ってる。だから、「それを持って証明できるノードが限定的に存在する」って状態にするだけ。

RSA設計だとそれは非現実的だった。ブロックが出るたびに1億5,000万回みたいなオペレーションが必要になるから。Utreexoだとそうじゃない。必要なのはアキュムレータの変化分に対する操作だけ。つまり、6,000に対して2~3倍くらい。数千回の操作で済む。何億回でもない。


量子耐性「Lifeboat」へ—量子コンピュータ観と備え

イザベル:
ソフトフォークの話で言うと、時間のあるうちにLifeboatの話まで行きたい——

というか、そう。理論的にはLifeboatはソフトフォーク提案になる。Lifeboatを機能させるにはソフトフォークが必要。

タッジ:
そこは触れないでおく。

イザベル:
その前に——これが最後のトピックにするって約束するから。Lifeboatに入る前に、これは量子への解決提案よね。なぜ、というか、量子と、今のビットコイン界の量子への注目について、あなたの見解は?

タッジ:
僕はね……そう。昨年のTabConfで誰かに言ってたんだけど、「自分が生きてるうちに量子コンピュータは存在しない」と思ってる。賭けてもいい。「僕の生きてる間に量子コンピュータは現れない」に賭けるよ、って。


DH Magazine Proへの招待

月7ドルでDH Magazine Proに参加して、より詳細な情報を受け取りつつ、Diamond Handsの活動を支援しよう!


詳細は以下のPro版の内容紹介記事をご確認ください。

DH Magazine Proに参加して、ビットコインライフをさらに楽しもう

DH Magazine Proに参加して、ビットコインライフをさらに楽しもう

Koji Higashi
·
September 4, 2023
Read full story

Keep reading with a 7-day free trial

Subscribe to Diamond Hands Magazine 💎ビットコイン&ライトニングニュース🙌 to keep reading this post and get 7 days of free access to the full post archives.

Already a paid subscriber? Sign in
© 2025 Diamond Hands Community
Privacy ∙ Terms ∙ Collection notice
Start your SubstackGet the app
Substack is the home for great culture