リングの概要
Solana上のすべてのトランザクションは公開されており、アドレス、バランス、転送履歴は誰でも見ることができます。 リングはオンチェーンバランスを暗号化し、デフォルトでは常にノンカストディアルです:- 機密リングでは、資産と金額は非公開で、送信者と受信者は見えるままです。
- 匿名リングでは、資産、金額、送信者、受信者がすべて非公開です。
- デフォルトリングは許可不要で機密です。資産と金額を暗号化し、誰でも使用でき、カスタムポリシーコントロールはありません。
- カスタムリングはSolanaプログラムで、Solana上でプライバシーをプログラム可能にし、Token-2022と似た機能を持ちます。カスタムリングは、ポリシー、レポーティング、可視性のルールを持って機密または匿名状態になります。
ほとんどのアプリケーションには、許可不要で機密性があるデフォルトリングを推奨します。
カスタムポリシーやコンプライアンスコントロールが必要な場合は、こちらからご相談ください。
カスタムリングはプログラム可能
カスタムリングはSolanaプログラムで、プライバシーをプログラム可能にします。Token-2022と似た特徴があります。 カスタムリングは転送および可視性/監査用に完全にカスタムルールを定義できます。カスタムリングポリシーの例
カスタムリングポリシーの例
ユーザーフローとプライバシーの保証
Helius Privacyによるトランザクションはネイティブにオンチェーンで実行され、他のSolanaプログラムと組み合わせて単一のトランザクションにします。 ユーザーはリングに入る、内部でプライベートに転送する、またはリングから退出することができます: 1. デポジットまたはオンランプ。 ユーザーはトークンをパブリックなSolana残高から、またはフィアット残高から直接プライベート残高に送信します。 2. プライベート転送。 ユーザーは同じリング内でプライベート残高間、または別のリングにトークンを送信します。 3. 引き出しまたはオフランプ。 ユーザーはプライベートからパブリックSolana残高、または直接フィアット残高にトークンを送信します。プライベート残高にデポジット:何が非公開か
ユーザーは2つの方法でプライベート残高にデポジットできます:- フィアット残高からプライベート暗号残高へのオンランプ
- 公開からプライベート暗号残高へのデポジット
- On-ramp from fiat balance
- Deposit from public crypto balance
プライベート転送:何が非公開か
ユーザーは2つの方法でプライベート転送を送信できます:- 同じリング内での転送
- 別のリングへの転送
ほとんどのアプリケーションには、許可不要で機密性があるデフォルトリングを推奨します。
カスタムポリシーやコンプライアンスコントロールが必要な場合は、こちらからご相談ください。
- Permissionless Confidential Ring
- Custom Rings
プライベート残高からの引き出し:何が非公開か
ユーザーは2つの方法でプライベート残高から引き出せます:- プライベート暗号からフィアット残高へのオフランプ
- プライベート暗号から公開暗号残高への引き出し
- Off-ramp to fiat balance
- Withdraw to public crypto balance
高レベルのトランザクションフロー
プライベート転送は公開転送に似ており、単一のSolanaトランザクションで実行されます。- プライベート転送
- Solana転送
- ユーザーのSOLまたはSPL残高がオンチェーンで暗号化されます。
- 暗号化された状態を取得してローカルで復号、または委任されたプロバイダが復号して復号化された状態を提供します。
- ウォレットは金額と受取人を設定し、ZK証明を要求します。
- デフォルトでRPCプロバイダがZK証明を生成し、それを返します。カスタムリングはポリシー証明も必要です。
- ウォレットがSolanaトランザクションを構築します。ZK証明は暗号化された状態を明らかにせずに検証されます。呼び出されるプログラムや署名して提出するのはリングに依存します:
- アプリはSolanaトランザクションハッシュを介してステータスを追跡します。
- 無許可機密リング
- カスタム機密リング
- カスタム匿名リング
プライベートウォレット
ユーザーは暗号化された残高をプライベートウォレットに保持します。 プライベートウォレットはユーザーの公開Solanaアドレスで転送を受け取り、これはinboxとして機能します。
このため、送信者は常に受取人のSolanaアドレスを入力します。
プライベートウォレットの作成
プライベートウォレットの作成時に、Solanaアドレスがオンチェーンレジストリに登録されます。 このレジストリは1つのSolanaアドレスを1つのにマッピングします。 転送は裏ですべてシールドアドレスに暗号化されます。 複数のSolanaアドレスが1つのシールドアドレスを共有することはできません。 各レジストリレコードはによって所有されているPDAであり、誰でも調べることでSolanaアドレスがプライベート転送を受け取ることができるかどうかを確認できます。ウォレットアプリでは、ユーザーが専用の”プライベートウォレット”パブリックキー用にのみプライベートウォレットを作成させるか、
任意のパブリックキー用に作成させることができます。
プライベートウォレットへの転送
すべての転送で、プライバシーAPIはレジストリを参照して受取人がプライベートウォレットを持っているか確認します。 一致した場合、裏でシールドアドレスを使用して転送を暗号化します。プライベート転送の受取人がプライベートウォレットを持っていない場合、プライバシーAPIは転送をプライベートからパブリックな引き出しに解決します。
キー管理
プライベートウォレットは、SolanaキーからシールドキーペアをSolanaウォレットに追加します。
シールドキーペアは署名、ナルリファイア、閲覧キーのバンドルであり、Solanaキーペアではありません。
シールドアドレスはシールドキーペアの公開キーであり、転送はそれに暗号化されます。
シールドキーペアの作成
ウォレットは2つの方法でシールドキーペアを作成できます。-
シードフレーズからキーを導出します。
- シードベースのウォレット用に推奨されるアプローチです。
- 機密リング:署名キーはSolanaウォレットがそのシードから導出するEd25519キーと同じです。ナルリファイアキーと観覧キーは同じシードから導出される追加のキーです。
- カスタム匿名リング:署名キーはウォレットシードから導出される追加のP-256キーです。
- Solanaウォレットを再作成する方法と同じ方法でシールドキーペアを常に再作成できます。
-
既存のSolanaキーで固定メッセージからキーを導出します。
- Solana署名は決定論的であるため、同じSolanaキーペアは常に同じシールドキーペアを生成します。アプリは秘密キーを受け取りません。
- テストやシードフレーズを使用しないウォレットに推奨されるアプローチです。統合ウォレットは署名が第三者に露出されないことを保証する必要があります。
シールドキーペアの統合
ウォレットはネイティブウォレット統合によりシールドキーペアを自ら保持できます。 組込みプライバシーウォレットでは、ウォレットプロバイダがシールドキーペアを持ち、そのキー操作を実行します。復号モードとウォレットの同期
所有者のみが観覧キーでプライベートウォレットバランスを復号できます。 選択的開示のために、所有者は観覧キーを監査人と共有し、監査人が利用履歴を読み取ることができます。 カスタムリングでは、ポリシーはそのカスタムリングからすべてのバランスを復号できる監査人を宣言できます。 機密リング(デフォルトリングおよび機密カスタムリング)はローカルおよび委任された復号をサポートします。 匿名リング(カスタムリングのみ)は委任された復号のみをサポートします。ウォレットは、バックフィルが実行されるたびにバランスを復号して更新する必要があります:ウォレットのロック解除時、
プライベートウォレットのオープン時、アプリの再開時、ネットワーク再接続時、ストリームギャップ時、またはウォレットの復元時。
ローカル復号
ローカル復号モードでは、ウォレットはバランスと履歴をローカルで復号して同期します。 Heliusサーバーは、ニーモニック、シード、署名秘密キー、観覧秘密キー、ナーリファイアーシークレットを受け取らない。委任された復号
委任された復号モードでは、ウォレットと選択されたプロバイダは観覧キーを共有します。 これによりプロバイダはバランスと履歴を復号できますが、支払う権限はない。 ウォレットは、プロバイダが過去の活動を同期する権限を与えたとき、過去の観覧キーを共有することもある。 監査人アクセスは委任された復号とは別である。 監査人はポリシー指定されたリングの可視性を受けるが、委任されたプロバイダはウォレットのスケープの同期アクセスを受ける。インデクサは暗号化された状態を提供
公開ウォレットがSolana RPCに依存するように、プライベートウォレットもインデクサに依存します。 インデクサは、ウォレットがバランスを読み取りプライベートトランザクションを構築するために必要な暗号化された状態を提供します。 既定では、インデクサはを通じてアクセス可能です。fallbackとして任意に独自のインデクサを許可なく運営することができます。プライベートウォレットバランス
プライベートウォレットバランスはUTXO(使用されていないトランザクションアウトプット)としてプライベートSolanaトークンアカウントにオンチェーンで保持され、Solanaトークンアカウントではありません。 デフォルトリングとすべてのカスタムリングはすべてのプライベートバランスを1つの状態マークルツリーに保存します。 プライベートウォレットバランスはプライベートウォレットによって所有されるすべてのUTXOの合計です。 Solanaプログラムは通常のSolanaアカウントと同様にUTXOを所有できます。 このドキュメントでは、プライベートSolanaトークンアカウントとUTXOを同じ意味で使用します。UTXOとSolanaアカウントにおけるバランス
UTXOとSolanaアカウントにおけるバランス
ユーザーエクスペリエンスにおいて、バランスがUTXOまたはSolanaトークンアカウントで保持されているかどうかは重要ではありません。技術的には、公開バランスを使うことはSolanaトークンアカウントの
パブリックバランスに引き出しとき、既存のUTXOは使用済みとしてマークされ、トークンはSolanaトークンアカウントにリリースされます。
amountフィールドから減少します。
一方、プライベートバランスを使うことはUTXOのamountフィールドを書き換えません。
その代わり、プライベートトランザクションは既存のUTXOをSDKで自動的に選択されたインプットとして利用し、
インプットを消費し、受取人と送信者の残りのバランスのための新しいアウトプットを作成します。たとえば、アリスが50 USDCを持っていてボブに35を送信する場合:- Solanaトークンアカウントでは、彼女の
amountフィールドは50から15に変わり、ボブのものは35増えます。この数値はその場で変わります。 - UTXOでは、アリスは1つの50 USDCノートを持っていて、トランザクションはそれを使い、その後ボブのために35 USDCのノートとアリスのために15 USDCのチェンジノートを作成します。彼女の古い50ノートは今や使われました。
- 1つのインプットノート
- 複数のインプットノート
SOLおよびSPL資産のプライベートバランスにデポジットすると、Solana Privacy Programによって所有されるインターフェースPDAがトークンをエスクローし、ユーザーを所有者としてUTXOを作成します。
policy_program_idフィールドに保存される特性です。
プライベートSolanaトークンアカウント
プライベートSolanaトークンアカウントはUTXOであり、2つの主要な違いを持ちながらSolanaトークンアカウントと同様に機能します:- プライベートSolanaトークンアカウントは、作成時にレンタ免除が不要であり、
- そのバランスはオンチェーンで暗号化されています。
- 資産: UTXOが保持する単位のミント。SOLはデフォルトのミントアドレスです。資産はSOL、SPL、またはToken-2022のいずれかです。
- 量: ノートが保持する
asset単位数は、その資産の最小単位です。 - プログラムとポリシーデータ: 設定されたリングポリシーのための追加のToken-2022のような機能
- 図
- コード
Solanaトークンアカウントを表示
Solanaトークンアカウントを表示
- 図
- コード