Skip to main content
プライベートウォレットは署名用のSolanaキー ペア、ヌリファイアキー、および暗号化用のビューイングキーで構成されています。これらのキーがシールドキー ペアを形成します。 キー管理はシールドキー ペアを保持します。 ウォレットコードはプライバシーインターフェースとSDKを使用してプライベートトランザクションを作成します。 キー管理とプライバシーSDKはプライバシーインターフェースを通じて接続します。プライバシーSDKはプライバシーAPIを呼び出します。プライバシーAPIはトランザクションをSolanaに送信します。 この統合により、ユーザーは次のことができます:
  1. 自己管理のプライベートウォレットを作成
  2. Solanaアドレスでプライベート転送を受信
  3. トークンをプライベート残高に入金
  4. Solanaアドレスにプライベートに送信
  5. 任意のSolanaアドレスに出金
  6. プライベート残高とトランザクション履歴をローカルで復号化
統合には次のものが含まれます:
  1. シールドキー ペア – 暗号化のためのキー管理
  2. プライバシーインターフェースとSDK – プライベートトランザクションを構築するため
  3. ユーザーフロー – ウォレットに統合するため

AIのためのコンテキスト

Add a Private Wallet to an existing Solana wallet

Cursorで開く
1

シールドキー ペアの統合

プライベートウォレットの統合は、キー管理にシールドキー ペアを追加します。 シールドキー ペアはトランザクションの署名、暗号化、復号化を行います。シールドキー ペアは署名、ヌリファイア、およびビューイングキーのバンドルです。
  • 署名キー: トランザクションに署名するためのウォレットのEd25519 Solanaキー ペア。
  • ビューイングキー: トランザクションを暗号化および復号化するためのP-256キー ペア。
  • ヌリファイアキー:
ウォレットはシールドキー ペアを2つの方法で作成できます:
  1. シードベースのウォレットの場合、シードフレーズから導き出すを選択。
  2. シードベースでないウォレットの場合、EdDSA署名から導き出すを選択。
シードベースのウォレットは、1つのBIP-39ニーモニックとアカウントインデックス (0, 1, …) からシールドキー ペアを導き出します。各アカウントインデックスは1つのSolanaキー ペアと1つのシールドキー ペアにマップされます。 Solanaキー ペアと同じ方法でシールドキー ペアを復元できます。例:
  • アカウント0: Solanaキー ペア0とシールドキー ペア0
  • アカウント1: Solanaキー ペア1とシールドキー ペア1
シールド署名キーはそのアカウントのSolana Ed25519キーです。 ヌリファイアとビューイングキーは同じシードから導出された追加キーです。
実装例: TypeScript例 · Rust例
2

プライバシーインターフェースとSDKの統合

プライバシーインターフェースにより、コードはプライバシーSDKを使用してキー素材に直接アクセスせずにプライベートトランザクションを構築できます。 キー管理はプライバシーインターフェースを2つの部分で実装します。
  1. プライバシーSDKによるトランザクション構築用の署名インターフェース。ソースを表示: TypeScript/ Rust
  2. 暗号化および復号化インターフェース。ソースを表示: TypeScript/ Rust
プライバシーインターフェースはステートレスであり、残高やトランザクション履歴を保存しません。 パフォーマンス向上のため、ユーザーの残高やトランザクション履歴をローカルでキャッシュすることをお勧めします。

証明生成について

ゼロ知識証明生成には、完全なユーザートランザクションデータとヌリファイアキーの平文入力が必要です。現在、サーバーでの証明生成は標準的なHelius RPC URLを通じて利用可能です。ローカルでの証明生成は近日公開予定です。 メインネットローンチ前にAWS Nitroでのエンドツーエンド暗号化サーバー証明生成を計画しています。
3

ユーザーフローの統合

プライベートウォレットを作成

プライベートウォレットは2つのステップで作成されます:
  1. シールドキー ペアを導き出す
  2. Solanaアドレスをオンチェーンレジストリに登録
レジストリは署名公開鍵をヌリファイアおよびビューイング公開鍵にリンクします。これらの公開鍵がシールドアドレスを形成します。
各レジストリレコードはが所有するPDAであり、誰でもSolanaアドレスがプライベート転送を受け取れるかどうかを確認できます。

プライベート残高とトランザクション履歴の同期

残高同期は暗号化された状態をRPCから取得し、ウォレットで復号化します。RPCは復号化を行いません。所有者のみがビューイングキーを使ってプライベート残高を復号化できます。
ウォレットはプライベートトランザクションの前やバックフィルの際、ウォレットのロック解除、プライベートウォレットのオープン、アプリの再開、ネットワークの再接続、ストリームギャップ、ウォレットの復元時に残高を復号化し更新すべきです。

プライベート残高の読み取り

プライベートトランザクション履歴の読み取り

プライベート残高への入金

ユーザーは次の2つの方法でプライベート残高に入金できます:
  1. フィアット残高からプライベート暗号残高へのオンランプ
  2. 公共のSPLアカウントからプライベート残高への入金
オンランプと入金はプライバシーの保証が異なります。 より良いプライバシーのためにオンランプの使用をお勧めします。

オン/オフランプ

プライベート残高へ直接フィアットのオン/オフランプを実行します。

入金

公共の暗号残高から入金。

プライベート転送

ユーザーは任意のSolanaウォレットアドレスにプライベート転送を送信できます。各プライベート転送に対して、プライバシーSDKはオンチェーンレジストリでウォレットアドレスを確認し、受取人がプライベートウォレットを持っているか確認します。受取人がプライベートウォレットを持っていない場合、プライバシーSDKはプライベートからパブリックの出金にプライベート転送を解決できます。
誤ってパブリック残高に出金しないよう、UIでトランザクションを出金とラベル付けすることをお勧めします。

プライベート転送

プライベート残高へプライベートに転送します。

パブリック残高への出金

出金は次の2つの方法で使用できます:
  1. プライベートウォレットを持たない受取人へのプライベート転送のフォールバックとして、または
  2. 公共のSPLトークンアカウントへの直接出金として。
出金には、シードフレーズやプライベートキーのエクスポートのように、ユーザーがプライベート残高を離れることを明確にラベル付けすることをお勧めします。

出金

パブリック暗号残高に出金します。

Didn’t find what you were looking for?

Reach out! Telegram | E-Mail | Contact