161 / 736CASHU

Cashu

特定の発行者に支払いを依存するデジタル現金

Cashu では、メッセージで送れるような形のデジタル現金を扱えます。ただし受け手は、誰が発行したのか、どう受け取ればよいのか、どうビットコインに戻せるのかを知る必要があります。プライバシーが高まっても、運営者への信頼は不要になりません。

Cashu は、mint と呼ばれる発行者が発行するデジタルトークン、e-cash のためのオープンなプロトコルです。ビットコイン建ての金額を表すことが多く、入出金には例えば Lightning Network を利用できます。利用者が管理するのはトークンであり、mint のビットコインの鍵ではありません。引き続き発行者の協力が必要です。

アンナが個別のメッセージでペトルに Cashu トークンを送る場面を考えましょう。Bitcoin の取引をブロックチェーンに送信しているわけではありません。該当する mint で引き換えられるデータを渡しています。一つのトークンには、一つまたは複数の証明データ(Proof)を収められます。各データには金額、秘密値、mint の署名などが含まれます。Cashu は共通のプロトコルであり、共通の準備資産を持つ単一サービスではありません。発行者、通貨単位、署名鍵の組が重要です。sats はビットコインの小さな単位ですが、数字が同じでも単位が違えば意味は変わります。ある mint のトークンが別の mint で自動的に通用するわけでもありません。形式に関心があれば、V4 は簡潔なバイナリ形式 CBOR を使い、単一の mint の証明データを収める、と覚えておくとよいでしょう。 [1] [2] [9]

追加の支出条件がない通常のトークンなら、アンナはコピーを手元に残せます。そのためペトルには swap が必要です。ウォレットが古い証明データを mint に渡し、アンナの知らない秘密値を持つ新しいものを受け取ります。mint は古い入力を無効にします。この交換が成功して初めて、アンナは同じコピーを再利用できなくなります。状態を照会するだけでは不十分です。UNSPENT は処理中でも使用済みでもないという記録上の状態で、ペトルのための予約ではありません。PENDING は処理中、SPENT は引き換え済みです。トークンを支払いの領収書のように公開しないでください。使えるコピーを得た人が先に引き換える可能性があります。 [3] [5]

Blind Signature、盲署名は、発行時と利用時のつながりを隠す助けになります。ウォレットは秘密値を作り、その数学的な表現を隠して mint に署名を求め、後で隠す処理を取り除きます。mint は、引き換えられるトークン自体から元の発行要求を特定できないようにします。ただし、何もかも隠れるわけではありません。額面ごとに異なる鍵を使うため、発行者はどの額面を発行したかを知っています。技術的には BDHKE という方式で、secp256k1 曲線を使います。支払いを理解するために曲線上の点を計算する必要はありません。どのつながりを守る仕組みなのかが重要です。 [1]

任意の拡張 NUT-12 は DLEQ を追加します。これは、署名に使われた秘密鍵が mint の公開鍵に対応するものと同じだと示す数学的な証明です。必要な付随データがあれば、ペトルは mint に接続せず署名を確認できます。しかし、別のコピーがすでに使われたか、サービスが応答するか、準備資産が十分かは分かりません。DLEQ が添付されている場合、仕様はウォレットに検証を求めています。それでも署名検証は完了した swap の代わりにはなりません。Counterparty risk、運営者が約束を果たさないリスクは残ります。 [7]

ペトルは新しいトークンを受け取る代わりに、Lightning Network の支払い要求を支払いたいかもしれません。この交換を melt と呼びます。ウォレットはまず見積もりを取得し、必要な数量と単位、有効期限、手数料の予備額があるかを確認します。入力手数料が加わることもあります。その後に証明データを渡し、mint が外部への支払いを行います。HTTP 200 はウェブ要求の処理成功を表しますが、支払い成功とは限りません。PENDING はまだ処理中、PAID は成功を示します。ウォレットは最終結果と、支払い方式に応じた確認情報を追跡する必要があります。 [4]

mint は署名鍵の組を更新できます。active=false は古い鍵で新しいトークンを発行しなくなったという意味で、それだけで古い証明データを入力に使えなくするわけではありません。任意の final_expiry は別のものです。この最終期限を過ぎると、仕様上は mint が引き換えの約束を履行する義務を負わなくなります。混同しないでください。また input_fee_ppk は入力ごとの料金であり、単純な送金額の割合ではありません。使う全証明データの料率を合計し、その合計を 1000 で割ってから、手数料を整数単位に切り上げます。例えば、単位が sat の鍵の組で 3 個の入力がそれぞれ 100 ppk なら合計は 300 となり、割り算と切り上げの後の手数料は 1 sat です。同じ金額でも、証明データの数や鍵の組が違えば手数料も変わり得ます。 [2]

盲署名は支払いの時刻、金額、ネットワーク接続情報を消しません。新しい額面を要求する方法も手掛かりになります。NUT-03 は要求する値を小さい順に並べることを勧めています。順番から支払いとお釣りの区切りを余計に漏らさないためです。送り手が渡したトークンの状態を繰り返し照会することも、受け手との関連付けを助ける場合があります。Cashu は資金移動のプライバシーを高める道具を提供しますが、すべてのアプリや状況で、すべてのつながりが自動的に隠れるわけではありません。 [3] [5]

復元方法は使用するウォレットと mint に合っている必要があります。NUT-13 は、出発点となる秘密値 seed、鍵の組、カウンターからトークンの秘密値とブラインディング係数を再導出する方法を説明しています。鍵の組のバージョン 01 は HMAC-SHA256、旧版の 00 は BIP32 を使います。seed 自体では作れない署名を NUT-09 で mint から取得し、その後、使用済みかを確認します。「Seed Phrase があればどこでも全部戻せる」というだけでは不十分です。利用前にバックアップと復元の手順、少額の引き出しを確認してください。バックアップは消えた mint に応答を強制したり、準備資産を補充したりできません。 [8] [6]

理解を深めるには、この項目とあわせて次もお読みください Fedimint, Chaumian eCash, Blind Signature, Lightning Network, Counterparty risk, Satoshi. 次の項目からも参照されています Chaumian eCash, Blind Signature, Fedimint, Fiduciary Media.

DOC · 001Cashu — NUT-00: Protocol and tokens仕様 DOC · 002Cashu — NUT-02: Keysets and fees仕様 DOC · 003Cashu — NUT-03: Swap tokens仕様 DOC · 004Cashu — NUT-05: Melting tokens仕様 DOC · 005Cashu — NUT-07: Token state check仕様 DOC · 006Cashu — NUT-09: Restore signatures仕様 DOC · 007Cashu — NUT-12: Offline signature validation仕様 DOC · 008Cashu — NUT-13: Deterministic secrets仕様 DOC · 009Cashu — Project introduction一次資料
改訂日: 一次資料を優先 · 投資助言ではありません