chart-networkzERC20 の仕組み

zERC20のプライベート転送(Private Transfer)の仕組みと、提供されるプライバシー保証について

プライベート転送の流れ

ステップ1:バーンアドレスを生成する

送信者または受信者が バーンアドレス(Burn Address) を生成します。バーンアドレスとは、対応する秘密鍵が存在しない、一度限りのEthereumアドレスです。このアドレスは、受信者の引き出し先アドレスと Secret(秘密値)をもとに暗号学的に導出されます。

ステップ2:バーンアドレスに送金する

送信者は、MetaMaskなどの標準ウォレットを使ってzERC20をバーンアドレスに転送します。このアドレスには秘密鍵が存在しないためトークンは事実上「バーン(Burn)」された状態となり、誰も移動できません。

ステップ3:ゼロ知識証明 - ZKP(Zero-Knowledge Proof)で引き出す

受信者は以下の事実を証明する ZKP(Zero-Knowledge Proof) を生成します:

  • バーンアドレスの導出に使用した Secret を知っていること

  • そのバーンアドレスに指定のトークンが送信されていること(バーンアドレスに到達していること)

この証明により受信者は任意のアドレスへ同額を引き出せます。証明からはそのバーンアドレスがどのアドレスに紐づいているのかは一切わかりません。

circle-info

この引き出しプロセスを "Teleport" と呼んでいます。トークンが一つのアドレスから消え、追跡不能な形で別のアドレスに現れることに由来しています。

何がプライベートなのか?

zERC20のプライバシーモデルを正しく理解することは、安全に利用するうえで非常に重要です。

1. Sender-Recipient Unlinkability(送受信者の紐付け不能性)

送信者のアドレスと受信者の引き出しアドレスの関係は、 オンチェーン上では一切公開されません 。Tornado Cash が Deposit と Withdrawal の紐付けを隠すのと同様の仕組みです。

2. バーンアドレスの可視性

zERC20をバーンアドレスに送るトランザクション自体は 公開されています 。ただし、第三者はそのバーンアドレスがどの引き出しアドレスと紐付いているかを知ることはできません。

3. 誰が何を知っているのか?

シナリオ
送信者が知ること
受信者が知ること
オンチェーンの第三者が知ること

受信者がバーンアドレスを生成

バーンアドレスのみ

送信者のアドレス

送信者が不明なアドレスに送金したこと

送信者がバーンアドレスを生成

受信者の引き出しアドレス

送信者のアドレス

送信者が不明なアドレスに送金したこと

  • 受信者がバーンアドレスを生成する場合:送信者はバーンアドレスしか知らず、資金がどこに引き出されるかはわかりません。受信者にとって最もプライバシーが高い方法です。

  • 送信者がバーンアドレスを生成する場合:バーンアドレスを生成するために、送信者は受信者の引き出しアドレスを知る必要があります。受信者のアドレスはオンチェーンの第三者からは秘匿されますが、送信者には開示されます。

circle-exclamation

4. 金額のプライバシーについて

Wrap・Unwrap / Deposit・Withdrawal の金額は オンチェーン上で公開されます123.456789 zUSDC のような特殊な金額は、トランザクションの紐付けに利用される可能性があります(Amount Fingerprinting)。

対策:

対策
説明

バッチ引き出し(Batch Withdrawal)

複数の受け取りを1回の引き出しにまとめる。オンチェーンに公開されるのは合計金額のみ。

一部引き出し(Partial Withdrawal)

受け取った全額ではなく一部のみを引き出す。例:123.456789 zUSDC を受け取った場合、123 zUSDC を引き出して残りはそのままにする。

クロスチェーン転送

zERC20はブロックチェーン間でのプライベート転送に対応しています:

  1. 任意のサポートチェーン上のバーンアドレスにzERC20を送る

  2. 別のサポートチェーンの任意のアドレスに引き出す

クロスチェーンのメッセージングはLayerZeroが担い、全チェーンの転送ルートをグローバルなMerkle Treeに集約することで実現しています。

技術概要

暗号技術の詳細に興味のある開発者向けの概要です:

  • Merkle Tree:Poseidon Hash ベースの Merkle Tree で、すべてのバーンを追跡

  • ZKP(Zero-Knowledge Proof):Novaフォールディングスキーム(バッチ)とGroth16(単体)で引き出し資格を証明

  • Hash Chain:SHA-256 Hash Chainですべての転送の順序を決定論的に保証

  • ステルスメッセージング: VetKD を活用した ICP canister が、バーンアドレスの暗号化配信を実現

技術的な詳細は アーキテクチャ概要 を参照してください。

最終更新