非カストディ型プライバシープロトコル

TORNADO.CASH / TORNADO CASH

Tornado Cash

Tornado Cash は、公開ブロックチェーン上の非公開取引を目的とした分散型プロトコルです。不変のスマートコントラクトプールとゼロ知識証明を組み合わせ、入金アドレスと後の受取アドレスの見える関係を分離します。

Tornado Cash: Tornado Cash は、入金、待機、出金という流れを採用する非カストディ型プライバシープロトコルです。利用者はプライベートノートを保持し、共有プールへコミットメントを公開した後、対応する入金を明かさずに出金権限を証明します。

カストディ非カストディ型
検証zk-SNARK 証明
実行スマートコントラクト
ゼロ知識プライバシーモデル プロトコル状態の可視化
検証済みロジック
01 コミットメント公開ハッシュが集合に入る
匿名集合共有されたオンチェーンコミットメント
02 zk 証明所有権を非公開で証明
03 検証コントラクト有効な証明、入金とのリンクなし
ノート利用者が保管
オンチェーンコミットメント + ヌリファイア
公開情報入金と受取人のリンクなし
01 // 取引フロー

入金。 待機。 出金。

プロトコルは一つのアドレスからコミットメントを受け取り、後で受取人の証明を検証します。プライベートノートは利用者側で両操作を結びますが、オンチェーンには公開されません。

01
コミットメントを作成

入金

ブラウザが秘密値を生成してプライベートノートを作ります。資産とノートのハッシュが固定額プールへ送信されます。

公開commitmentHash
非公開secret + nullifier
02
プールの変化を待つ

待機

同額のコミットメントが増えると、単純な時間相関は弱くなります。ただしプライバシーは利用者の行動やネットワークメタデータにも左右されます。

入金アクティビティ
03
明かさずに証明

出金

クライアントは、有効で未使用のコミットメントがマークルツリーに存在することを証明します。コントラクトが証明を検証し、指定受取人へ送金します。

公開root + nullifierHash
非表示deposit path + secrets
02 // プライバシーモデル

一つのプール。
二つのアドレス。

公開ブロックチェーンは通常、直接の取引経路を示します。Tornado Cash では、送信元がコミットメントを公開し、受取先は後で共有プールに対して有効な証明を提示します。

送信元
0x71…9A2入金アドレス
共有プールマークルツリー
受取人
0xB4…E08出金アドレス
01

ノートは非公開のまま

ノートには証明作成に必要な秘密情報が含まれます。秘密鍵と同様に保護し、共有しないでください。

02

プールが見るのはコミットメント

コントラクトは利用者の秘密ノートではなく、コミットメントをマークルツリーへ記録します。

03

ヌリファイアが再利用を防止

公開ヌリファイアハッシュがノートを使用済みにし、対応するコミットメントは明かしません。

04

証明が受取人を固定

受取人とリレイヤーのパラメータを証明入力に含め、出金先の置換を防ぎます。

03 // 内部構造

運営者ではなく、
コードが検証する。

Tornado Cash コントラクトは暗号学的事実を評価します。プライベートノートを知る必要も、顧客残高を管理する必要も、有効な受取人を選ぶ必要もありません。

プロトコル文書を読む
#
ステップ 01

コミットメント

秘密値とヌリファイアから得たハッシュが、プールのマークルツリーに葉として追加されます。

H(secret, nullifier)
ステップ 02

マークル所属証明

クライアントがツリーを再構築し、コミットメントが受理済みルートに属することを証明します。

leaf ∈ root
Ø
ステップ 03

ヌリファイア確認

コントラクトは使用済みヌリファイアハッシュを拒否し、二重出金を防ぎます。

spent[nHash] == false
ステップ 04

オンチェーン検証

検証コントラクトが証明を確認し、プールが固定額を指定受取人へ送ります。

verifyProof() → true
04 // プロトコルモデル

Classic と Nova。

CLASSIC固定額

プライベートノートと同額プール

Classic プールは同じ額面をまとめます。入金で生成したノートを後の出金証明に使用します。

  • 固定額面
  • プライベートノートの自己保管
  • マークルコミットメント
  • 任意のリレイヤー出金
Classic 文書
NOVA任意額

シールド残高と非公開送金

Nova は任意額と、シールドプール内に留められる送金を、異なるアカウントモデルで実現します。

  • 柔軟な金額
  • シールド送金
  • アカウントベースのアクセス
  • Gnosis Chain への展開
Nova 文書
01

非カストディ型

運営者のアカウントではなく、利用者が持つ秘密情報によって制御されます。

02

オープンソース

コントラクト、回路、証明ツール、インターフェースコードを検証し、独立してホストできます。

03

不変のプール

デプロイ済みプールは元の開発者ではなく、自身のバイトコードに従って実行されます。

04

コミュニティガバナンス

提案と TORN 投票はオンチェーンで行われ、ノート保管とは分離されています。

05 // よくある質問

プロトコルの
詳細。

以下は中核設計の説明です。プライバシーは自動ではなく、時間、アドレス再利用、ブラウザ状態、RPC、適用法も考慮が必要です。

01入金はどのように利用者の管理下に残りますか?+

プールコントラクトは資産と秘密値から作られたコミットメントを受け取ります。プライベートノートは利用者が保管し、出金証明の作成に必要です。一般的なパスワードや復旧データベースはありません。

02入金と出金の間になぜ待機が必要ですか?+

同額の入金が同じプールに増えることで、単純な時間相関を弱めます。待機だけでプライバシーが保証されるわけではありません。

03ゼロ知識証明は何を示しますか?+

受理済みマークルルート内のコミットメントに対応する秘密を知り、関連ヌリファイアが未使用であることを、秘密自体を公開せずに示します。

04リレイヤーの役割は何ですか?+

リレイヤーは受取人に代わって出金トランザクションを送信し、Gas を支払えます。証明は受取人と手数料を固定します。

TORNADO.CASH

プライバシーはプロトコルであり、
約束ではない。

操作前に文書を読み、コントラクトを確認し、ノートを保護し、プライバシーの前提を理解してください。