ビットコイン技術ライトニング中級

ecashはなぜ資金を預かりながら利用者を監視できないのか

ライトニングの上で蘇ったチャウムのecash。ブラインド署名が台帳を持てない預かり手を生む仕組み、CashuとFedimintの信頼の分け方、金兌換銀行券と似ている点と決定的に違う点まで。

·10分

ライトニングを初めて使う人の多くは、カストディアルウォレットから始める。チャネルも流動性も気にしなくてよいのだから、合理的な選択だ。しかし預けた瞬間に口座が生まれ、口座があれば台帳がある。運営者は、いつ、いくらを、どのインボイスに支払ったかをすべて記録できる。便利さと引き換えに、プライバシーも一緒に預けてしまったわけだ。

ecash(イーキャッシュ)はこの取引条件を書き換える。資金を預かる側が、そもそも台帳を作れないように暗号学で封じるのだ。預かり手は自分が合計いくら保管しているかは知っているが、それが誰の金か、誰が誰に支払ったかは知りようがない。銀行ではあるが、口座のない銀行である。

四十四年前にすでにあった答え

このアイデアはビットコインより一世代早く生まれた。暗号学者デビッド・チャウム(David Chaum)は1982年の論文 "Blind Signatures for Untraceable Payments" でブラインド署名を提案した。たとえ話も論文自身のものだ。カーボン紙を仕込んだ封筒に文書を入れて手渡すと、署名者は封筒の表に署名するだけで、中の文書に署名が転写される。封筒は開けていないので、何に署名したかは分からない。しかし後日その文書が戻ってきたとき、署名が自分のものであることは確認できる。

チャウムはこれで会社を興した。1989年設立のDigiCashは、銀行が発行し兌換するデジタル現金を作り、1995年にはミズーリ州セントルイスのマーク・トウェイン銀行が最初に導入した。そして1998年、DigiCashは破産した。発行と兌換を既存の銀行に依存する構造であり、銀行にはわざわざ顧客を匿名にしてやる理由がなかった。電子商取引そのものがよちよち歩きの時代だったことも響いた。

振り返れば、チャウムに欠けていたものは二つある。銀行の許可なしに存在する準備資産と、預かり手同士の間を即時に行き来する決済網だ。前者をビットコインが、後者をライトニングが作った。ecashが2020年代に再登場したのは偶然ではなく、欠けていた土台がようやく埋まったからである。

封筒の中の署名

現在のビットコインecashを代表する実装は二つある。calleという筆名の開発者が2022年に始めたCashuと、elsirionが始めたFedimintだ。発行者はミント(mint)と呼ばれる。まずはミントが一つだけのCashuで原理を見よう。プロトコル仕様はNUTという文書群として公開されている。

Cashuの署名はチャウムの元の方式ではない。元の方式はRSAの上にあり、特許で縛られていた。1996年に暗号学者デビッド・ワグナー(David Wagner)がその特許を回避するため、同じ性質をディフィー・ヘルマン問題の上に載せた変種を提案し、Cashuはそれをビットコインが使うsecp256k1曲線の上に実装した。ミントの秘密鍵をk、公開鍵をK = kGとすると、トークン一枚が生まれる過程は四行で書ける。

ウォレット: 秘密値xを選び、曲線上の点 Y = hash_to_curve(x) を作る
ウォレット: B_ = Y + rG をミントに送る       (ランダムなrで目隠し)
ミント:     C_ = kB_ を返す                  (中身を見ないまま署名)
ウォレット: C = C_ - rK を計算する           (目隠しを外す、C = kY)

ミントが署名したのは目隠しされた点B_だけだ。Yもxも見たことがない。ウォレットが目隠しを外して得た (x, C) の組がトークンであり、ミントは後日この組を受け取るとkを掛けて自分の署名かどうか確かめられる。確かめられはするが、いつ誰に発行した署名かは結びつけられない。封筒に署名し続けた銀行員が、後日窓口に戻ってきた文書を見て自分の署名だとは分かっても、どの封筒だったかは思い出せないのと同じである。

ミントで実際に起きること

利用者から見ると、ecashは三つの操作でできている。

発行。ライトニングウォレットや別のミントからミントのインボイスを支払うと、ミントがその金額分のトークンに署名してくれる。ミントは額面ごとに別の鍵を使い、慣例として1、2、4、8サトシのように2のべき乗の額面に分けて発行する。

送金。トークンはただのデータだ。cashuで始まる一つの文字列に収まるので、メッセンジャーでも、QRコードでも、メールでも送れる。決済網を通るのではなく、現金を手渡すように移動する。ただし文字列はコピーできるので、受け取った側はすぐミントに持ち込み、新しいトークンに交換しなければならない。この交換が、送り手の手元に残った複製を無効にする。

兌換。トークンをミントに返し、ライトニングのインボイスを支払わせる。ミントはトークンを焼却し、その分をライトニングで送り出す。

ミントが二重使用を防ぐ方法は、台帳ではなくブラックリストだ。一度交換または兌換された秘密値xの一覧だけを積み上げ、同じxが再び来たら拒否する。口座も、残高表も、取引履歴も要らない。

利用者にとって重要なのは、ライトニングの摩擦がすべて消えることだ。チャネルを開く必要も、受け取り側の流動性を探す必要も、受け取るためにオンラインでいる必要もない。その摩擦はミントが肩代わりする。

ミントに見えるもの、見えないもの

カストディアルウォレットの運営者と並べると違いがはっきりする。

ミントに見えるもの。ライトニングで出入りした金額と時刻、自分が発行した額面ごとの総量、使用済み秘密値の一覧。つまり自分の負債の総量は知っている。

ミントに見えないもの。どの入金がどの出金につながったか、トークンが誰の手を経たか、いま誰がいくら持っているか。口座データベースそのものが存在しないので、流出する顧客名簿もない。

CoinJoinのようなオンチェーン手法と向きが違う点にも注目したい。オンチェーンのプライバシー手法は、誰もが読める台帳の上で痕跡をぼかす営みであり、ecashは痕跡が書き込まれる台帳をそもそも作らせない営みだ。もちろん限界はある。ミントは入出金の金額と時刻は見えるので、利用者が極端に少ないミントでは相関の推測が可能になる。匿名性は、同じミントを使う群衆の厚みの分しか厚くならない。

信頼モデルを正直に言うと

ここまで良い話ばかりだったので、反対側をはっきりさせておく必要がある。ecashはカストディアルだ。トークンはビットコインではなくミントへの請求権であり、ミントが準備金を持って消えれば、トークンはその瞬間に無意味な文字列になる。差し押さえやハッキングでも同じ結末だ。

もっと微妙な問題もある。ミントの目を封じたまさにその暗号学が、外部からの検証も阻む。発行済みトークンが誰の手にあるか誰にも分からないため、ミントが準備金の裏付けなしにトークンをこっそり増発しても、つまり部分準備を運営しても、兌換が殺到するまで表に出ない。準備金と負債を証明する方式が研究されているが、まだプロトコルの既定値ではない。

だから使い方が決まってくる。ecashに置く金は、財布に入れて持ち歩く現金と同じ額であるべきだ。失っても耐えられる少額、間もなく使う金。貯蓄はセルフカストディに置くのが筋で、この原則はecashの開発者たち自身が真っ先に口にしている。

ミントを分割する、Fedimint

単一ミントへの信頼が重すぎるなら、ミント自体を複数の当事者に分ける道がある。Fedimintのやり方だ。

Fedimintでは、ガーディアン(guardian)と呼ばれる複数の運営者が連合を組む。署名鍵は分散鍵生成で作られ、最初から誰か一人の手に丸ごと置かれたことがなく、トークンへの署名はしきい値ブラインド署名(threshold blind signature)で行われる。定足数のガーディアンがそれぞれ署名の断片を出して初めて完全な署名になる。状態の変更はビザンチン障害耐性のある合意(AlephBFT)で決まるので、たとえばガーディアン4人の構成なら、そのうち1人が落ちても悪意を持っても連合は回り続ける。準備金を持ち逃げするには定足数の共謀が要る。

連合そのものはライトニングノードではない。外の世界との支払いは、ゲートウェイという別の参加者が担う。利用者がecashを連合のコントラクトにロックすると、ゲートウェイが自分のライトニングノードでインボイスを代わりに支払い、その証拠であるプリイメージを連合に提出してecashを受け取る。ゲートウェイは信頼の対象ではなく、証拠を出さなければ金をもらえない交換相手である。

二つの実装の性格の違いは、信頼構造の違いから来る。Cashuのミントは一人で運営でき、立ち上げが容易で、数も多いので嫌になったら乗り換えやすい。Fedimintは連合を組む費用がかかる代わりに、共同体が顔を知っている人々でガーディアンを構成するコミュニティバンキングに向く。銀行へのアクセスが乏しい地域の共同体金庫を狙ったFediのようなアプリが、この方向の代表だ。

金兌換銀行券の再来

経済学の目で見れば、ecashは見慣れない代物ではない。金準備を保管し、その兌換請求権である銀行券を発行していた銀行と同じ構造だ。ミントは発券銀行であり、トークンは銀行券であり、準備金は金ではなくビットコインである。こっそり増発できるという弱点まで、同じ場所にある。

違うのは、規律が働く速度だ。銀行券の時代に発券銀行を乗り換えるには、窓口へ行き、金に兌換し、別の銀行へ運ばねばならなかった。ecashの兌換はライトニング決済一回、数秒だ。ミントを立てるのに免許は要らないので、発行者間の競争も開かれている。歴史上もっとも離脱コストの低い銀行券というわけだ。ただし市場の規律は、顧客が兌換を実際に行使するときにだけ働く。便利だからと残高を積み上げた瞬間、この構造は百年前の銀行と同じ弱点に退行する。

何に使う道具なのか

いまecashが実際に使われている場所は、この信頼モデルと正確に噛み合っている。

  • 少額の日常決済とチップ。数百から数万サトシ規模の、現金のようにやり取りする金。
  • ライトニング入門。チャネル開設費用が見合わない少額利用者が、摩擦なしに始める経路。
  • 機械の財布。失ってもよい予算だけを持たせられるので、AIエージェントの決済手段として定着した。
  • 共同体の金庫。銀行がない、または信じがたい土地で、Fedimint連合として営む村落規模のカストディ。

まとめ

ecashはセルフカストディの代替品ではない。どうせ便利さのために誰かに預けるつもりだった少額があるなら、台帳を持つ預かり手と、台帳を持てない預かり手のどちらかを選べるようになった。それがecashの変えた地点だ。

チャウムの答えは四十四年待って居場所を見つけた。発行は誰の許可も要らないビットコインが受け持ち、預かり手同士の決済はライトニングが受け持ち、プライバシーはブラインド署名が受け持つ。1998年に破産したのはアイデアではなく、そのアイデアを銀行に鎖でつないでいた構造のほうである。

関連記事