#dusk $DUSK

@Dusk の取引モデルを扱うとき、ずっと疑問に思っていたことがあります。

Phoenix は sender、receiver、amount を隠せるのに、なぜ完全に公開の Moonlight を残しているのでしょう?

さらに integration ドキュメントを読み進めると、答えはわりと現実的です。

公開が必要な場面があるのです。

たとえば取引所が DUSK を受け取るケース。

取引所は、すでに final になっている入金記録をスキャンし、どの口座がいくら送金してきたのかを把握する必要があります。さらに、オンチェーンの記録と自社の custody ledger を突き合わせることも求められます。

このような状況では、Moonlight の account model のほうがむしろずっとシンプルです。

Phoenix は別のロジックを採用しています。資金は shielded notes として存在し、ZK proof により入力が有効であり double spend がないことを証明します。取引当事者と金額を、ブラウザ上で全員に見える形にする必要がありません。

両方のモデルはいずれも DuskDS 上で処理されますが、満たしているのは同じ要件ではありません。

この細部によって、Dusk の privacy 設計に対する見方がかなり変わりました。

以前はこう思っていました。

プライバシーは強ければ強いほど良い。

でも今はそう思っていません。

金融システムでは、公開には公開ならではの用途がありますし、プライバシーにもプライバシーならではの用途があります。取引所の入金対応にはスキャン可能であることが必要です。一方で、通常の送金やセンシティブな資金の流れには、取引を恒久的に公開する理由が必ずしもあるとは限りません。

さらに面白いのは、Dusk Wallet 自体が Moonlight と Phoenix の間の変換もサポートしていることです。

つまり、ユーザーに陣営を選ばせるものではない。

公開が必要なら Moonlight を使い、shielded なフローが必要なら Phoenix に入る。

私は今、むしろこの2つのモデルを並存させるほうが、すべての取引を無理やり「プライバシー」という2語に押し込めるよりも現実的だと感じています。

ここでいう「公開」は、プライバシーがうまくできていないということではなく、能動的に残されてきた機能なのです。