Skip to main content

リングの概要

Solana上のすべてのトランザクションは公開されており、アドレス、バランス、転送履歴は誰でも見ることができます。 リングはオンチェーンバランスを暗号化し、デフォルトでは常にノンカストディアルです:
  • 機密リングでは、資産と金額は非公開で、送信者と受信者は見えるままです。
  • 匿名リングでは、資産、金額、送信者、受信者がすべて非公開です。
2つのSolana取引カードが並んでいます。機密カードは取引ハッシュ、送信者、受信者を示し、資産と金額は黒く塗りつぶされています。匿名カードは取引ハッシュのみを表示し、送信者、資産、金額、受信者はすべて黒く塗りつぶされています。トランザクションハッシュはどちらも公開されたままです。 さまざまな種類のリングが存在します:
  1. デフォルトリングは許可不要で機密です。資産と金額を暗号化し、誰でも使用でき、カスタムポリシーコントロールはありません。
  2. カスタムリングはSolanaプログラムで、Solana上でプライバシーをプログラム可能にし、Token-2022と似た機能を持ちます。カスタムリングは、ポリシー、レポーティング、可視性のルールを持って機密または匿名状態になります。
ほとんどのアプリケーションには、許可不要で機密性があるデフォルトリングを推奨します。 カスタムポリシーやコンプライアンスコントロールが必要な場合は、こちらからご相談ください。
2つのリングを保持する破線のオンチェーンゾーンとして表示されるプライベートバランス。デフォルトリングは機密性があり、セルフカストディアルで、許可不要です。カスタムリングは機密性または匿名性があり、セルフカストディアルで、カスタムポリシーとカスタムコンプライアンスを追加します。各デポジットはSolanaパブリックバランス層にデポジットおよび引き出しを行います。

カスタムリングはプログラム可能

カスタムリングはSolanaプログラムで、プライバシーをプログラム可能にします。Token-2022と似た特徴があります。 カスタムリングは転送および可視性/監査用に完全にカスタムルールを定義できます。
リングの権威はリング作成時に宣言され、ユーザーはリングを選ぶ前にポリシーを確認できます。 デフォルトリングは許可不要であり、カスタムの権威や監査人はありません。
カスタムリングのセットアップをご希望の場合は、こちらからご連絡ください。 ご自身のコンプライアンスを持ち込むか、HeliusのKYCおよび制裁スクリーニングソリューションを利用できます。

ユーザーフローとプライバシーの保証

Helius Privacyによるトランザクションはネイティブにオンチェーンで実行され、他のSolanaプログラムと組み合わせて単一のトランザクションにします。 ユーザーはリングに入る、内部でプライベートに転送する、またはリングから退出することができます: 1. デポジットまたはオンランプ。 ユーザーはトークンをパブリックなSolana残高から、またはフィアット残高から直接プライベート残高に送信します。 2. プライベート転送。 ユーザーは同じリング内でプライベート残高間、または別のリングにトークンを送信します。 3. 引き出しまたはオフランプ。 ユーザーはプライベートからパブリックSolana残高、または直接フィアット残高にトークンを送信します。 リングのライフサイクル図。100 USDCの公開バランスがリングにデポジットされ、USD / EUR / ...のフィアットバランスが同じリングにオンランプし、プライベート転送で2つのプライベートバランス間で資金が移動し、その後パブリックバランスに引き出し、またはフィアットバランスにオフランプします。 ユーザーはSolanaウォレットアドレスにトークンを送信します。 プライバシーAPIは、受取人が持っている場合、転送を自動的にプライベートウォレットにルーティングします。 そうでない場合、転送は受取人のパブリックアドレスへの引き出しです。 受取人のパブリックウォレットアドレスを知っているだけで、誰でもプライベートウォレットにデポジットできます。 送信者のアプリがプライバシーをサポートしていない場合、受取人は資金を公開で受け取り、次のステップで自分のプライベート残高に暗号化できます。

プライベート残高にデポジット:何が非公開か

ユーザーは2つの方法でプライベート残高にデポジットできます:
  1. フィアット残高からプライベート暗号残高へのオンランプ
  2. 公開からプライベート暗号残高へのデポジット

プライベート転送:何が非公開か

ユーザーは2つの方法でプライベート転送を送信できます:
  1. 同じリング内での転送
  2. 別のリングへの転送
ほとんどのアプリケーションには、許可不要で機密性があるデフォルトリングを推奨します。 カスタムポリシーやコンプライアンスコントロールが必要な場合は、こちらからご相談ください。

プライベート残高からの引き出し:何が非公開か

ユーザーは2つの方法でプライベート残高から引き出せます:
  1. プライベート暗号からフィアット残高へのオフランプ
  2. プライベート暗号から公開暗号残高への引き出し

高レベルのトランザクションフロー

プライベート転送は公開転送に似ており、単一のSolanaトランザクションで実行されます。
  1. ユーザーのSOLまたはSPL残高がオンチェーンで暗号化されます。
  2. 暗号化された状態を取得してローカルで復号、または委任されたプロバイダが復号して復号化された状態を提供します。
  3. ウォレットは金額と受取人を設定し、ZK証明を要求します。
  4. デフォルトでRPCプロバイダがZK証明を生成し、それを返します。カスタムリングはポリシー証明も必要です。
  5. ウォレットがSolanaトランザクションを構築します。ZK証明は暗号化された状態を明らかにせずに検証されます。呼び出されるプログラムや署名して提出するのはリングに依存します:
  1. アプリはSolanaトランザクションハッシュを介してステータスを追跡します。

プライベートウォレット

ユーザーは暗号化された残高をプライベートウォレットに保持します。 プライベートウォレットはユーザーの公開Solanaアドレスで転送を受け取り、これはinboxとして機能します。 このため、送信者は常に受取人のSolanaアドレスを入力します。

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

プライベートウォレットの作成時に、Solanaアドレスがオンチェーンレジストリに登録されます。 このレジストリは1つのSolanaアドレスを1つのにマッピングします。 転送は裏ですべてシールドアドレスに暗号化されます。 複数のSolanaアドレスが1つのシールドアドレスを共有することはできません。 各レジストリレコードはによって所有されているPDAであり、誰でも調べることでSolanaアドレスがプライベート転送を受け取ることができるかどうかを確認できます。 ユーザーウォレットが2つの公開Solanaウォレットとプライベートウォレットを表示しています。受取トークンが公開ウォレットAの公開キーからプライベートウォレットのシールドアドレスに接続されています。
ウォレットアプリでは、ユーザーが専用の”プライベートウォレット”パブリックキー用にのみプライベートウォレットを作成させるか、 任意のパブリックキー用に作成させることができます。

プライベートウォレットへの転送

すべての転送で、プライバシーAPIはレジストリを参照して受取人がプライベートウォレットを持っているか確認します。 一致した場合、裏でシールドアドレスを使用して転送を暗号化します。
プライベート転送の受取人がプライベートウォレットを持っていない場合、プライバシーAPIは転送をプライベートからパブリックな引き出しに解決します。
ユーザーが誤って公開バランスに引き出さないように、UIで別のユーザー署名を要求することを推奨します。

キー管理

プライベートウォレットは、SolanaキーからシールドキーペアをSolanaウォレットに追加します。 シールドキーペアは署名、ナルリファイア、閲覧キーのバンドルであり、Solanaキーペアではありません。 シールドアドレスはシールドキーペアの公開キーであり、転送はそれに暗号化されます。

シールドキーペアの作成

ウォレットは2つの方法でシールドキーペアを作成できます。
  1. シードフレーズからキーを導出します。
    • シードベースのウォレット用に推奨されるアプローチです。
    • 機密リング:署名キーはSolanaウォレットがそのシードから導出するEd25519キーと同じです。ナルリファイアキーと観覧キーは同じシードから導出される追加のキーです。
    • カスタム匿名リング:署名キーはウォレットシードから導出される追加のP-256キーです。
    • Solanaウォレットを再作成する方法と同じ方法でシールドキーペアを常に再作成できます。
  2. 既存のSolanaキーで固定メッセージからキーを導出します。
    • Solana署名は決定論的であるため、同じSolanaキーペアは常に同じシールドキーペアを生成します。アプリは秘密キーを受け取りません。
    • テストやシードフレーズを使用しないウォレットに推奨されるアプローチです。統合ウォレットは署名が第三者に露出されないことを保証する必要があります。

シールドキーペアの統合

ウォレットはネイティブウォレット統合によりシールドキーペアを自ら保持できます。 組込みプライバシーウォレットでは、ウォレットプロバイダがシールドキーペアを持ち、そのキー操作を実行します。

復号モードとウォレットの同期

所有者のみが観覧キーでプライベートウォレットバランスを復号できます。 選択的開示のために、所有者は観覧キーを監査人と共有し、監査人が利用履歴を読み取ることができます。 カスタムリングでは、ポリシーはそのカスタムリングからすべてのバランスを復号できる監査人を宣言できます。 機密リング(デフォルトリングおよび機密カスタムリング)はローカルおよび委任された復号をサポートします。 匿名リング(カスタムリングのみ)は委任された復号のみをサポートします。
ウォレットは、バックフィルが実行されるたびにバランスを復号して更新する必要があります:ウォレットのロック解除時、 プライベートウォレットのオープン時、アプリの再開時、ネットワーク再接続時、ストリームギャップ時、またはウォレットの復元時。

ローカル復号

ローカル復号モードでは、ウォレットはバランスと履歴をローカルで復号して同期します。 Heliusサーバーは、ニーモニック、シード、署名秘密キー、観覧秘密キー、ナーリファイアーシークレットを受け取らない。

委任された復号

委任された復号モードでは、ウォレットと選択されたプロバイダは観覧キーを共有します。 これによりプロバイダはバランスと履歴を復号できますが、支払う権限はない。 ウォレットは、プロバイダが過去の活動を同期する権限を与えたとき、過去の観覧キーを共有することもある。 監査人アクセスは委任された復号とは別である。 監査人はポリシー指定されたリングの可視性を受けるが、委任されたプロバイダはウォレットのスケープの同期アクセスを受ける。

インデクサは暗号化された状態を提供

公開ウォレットがSolana RPCに依存するように、プライベートウォレットもインデクサに依存します。 インデクサは、ウォレットがバランスを読み取りプライベートトランザクションを構築するために必要な暗号化された状態を提供します。 既定では、インデクサはを通じてアクセス可能です。fallbackとして任意に独自のインデクサを許可なく運営することができます。

プライベートウォレットバランス

プライベートウォレットバランスはUTXO(使用されていないトランザクションアウトプット)としてプライベートSolanaトークンアカウントにオンチェーンで保持され、Solanaトークンアカウントではありません。 デフォルトリングとすべてのカスタムリングはすべてのプライベートバランスを1つの状態マークルツリーに保存します。 プライベートウォレットバランスはプライベートウォレットによって所有されるすべてのUTXOの合計です。 Solanaプログラムは通常のSolanaアカウントと同様にUTXOを所有できます。 このドキュメントでは、プライベートSolanaトークンアカウントとUTXOを同じ意味で使用します。 複数のUTXOノートに接続されたプライベートウォレット。各ノートで1つの資産の量を保持。ウォレットバランスはノートの合計。
ユーザーエクスペリエンスにおいて、バランスがUTXOまたはSolanaトークンアカウントで保持されているかどうかは重要ではありません。技術的には、公開バランスを使うことはSolanaトークンアカウントのamountフィールドから減少します。 一方、プライベートバランスを使うことはUTXOのamountフィールドを書き換えません。 その代わり、プライベートトランザクションは既存のUTXOをSDKで自動的に選択されたインプットとして利用し、 インプットを消費し、受取人と送信者の残りのバランスのための新しいアウトプットを作成します。たとえば、アリスが50 USDCを持っていてボブに35を送信する場合:
  • Solanaトークンアカウントでは、彼女のamountフィールドは50から15に変わり、ボブのものは35増えます。この数値はその場で変わります。
  • UTXOでは、アリスは1つの50 USDCノートを持っていて、トランザクションはそれを使い、その後ボブのために35 USDCのノートとアリスのために15 USDCのチェンジノートを作成します。彼女の古い50ノートは今や使われました。
アリスが彼女の50 USDCからボブに35を送信します。Solanaトークンアカウントでは、量フィールドがその場で変わり50から15になります。UTXOでは、アリスの50 USDCノートが使われ、ボブに35 USDCノート、アリスに15 USDCチェンジノートが作成されます。
SOLおよびSPL資産のプライベートバランスにデポジットすると、Solana Privacy Programによって所有されるインターフェースPDAがトークンをエスクローし、ユーザーを所有者としてUTXOを作成します。
パブリックバランスに引き出しとき、既存のUTXOは使用済みとしてマークされ、トークンはSolanaトークンアカウントにリリースされます。
1つのプライベートウォレットが複数のリングでバランスを保持することができ、リングの数には制限がありません。 バランスがどのリングに属するかは、ウォレットの特性ではなく、それぞれのUTXOのpolicy_program_idフィールドに保存される特性です。

プライベートSolanaトークンアカウント

プライベートSolanaトークンアカウントはUTXOであり、2つの主要な違いを持ちながらSolanaトークンアカウントと同様に機能します:
  • プライベートSolanaトークンアカウントは、作成時にレンタ免除が不要であり、
  • そのバランスはオンチェーンで暗号化されています。
それでもプライベートSolanaトークンアカウントは同じデータを保存します:
  • 資産: UTXOが保持する単位のミント。SOLはデフォルトのミントアドレスです。資産はSOL、SPL、またはToken-2022のいずれかです。
  • 量: ノートが保持するasset単位数は、その資産の最小単位です。
  • プログラムとポリシーデータ: 設定されたリングポリシーのための追加のToken-2022のような機能
プライベートSolanaトークンアカウント。Solana Privacy Programはプライベートトークンアカウントを所有し、それがPrivateAccountフィールド(所有者、資産、量、ポリシーデータ、ポリシープログラムID)に展開されます。
Solanaトークンアカウント。アカウントデータ(ミント、所有者、量)で展開されたアカウント情報フィールド(データ、実行可能、ランポート、所有者)に拡張されたトークンプログラム所有のトークンアカウント。

同時実行について

ユーザーはトランザクションが最終的なものである限りプライベートバランスを使用できます。 つまり、キーアペアのバランスは複数のUTXOで分割された場合に同時に使用できます。 ウォレットがどのUTXOを使うかを選択します。 1つのマークルツリーが許可不要デフォルトリングとすべてのカスタムリングのためのプライベート状態を保存します。 このツリーは1つの書き込み可能なSolanaアカウントに保存されます。 プライベート転送はこのアカウントに書き込みを行うので、Solanaの1ブロックあたり12百万CUの同一アカウント書き込みロック制限を共有します。 1つのプライベート転送は約220,000 CUを消費します。 したがって、1つのツリーは1ブロックあたり約54回のプライベート転送をサポートし、現在のSolanaブロック時間約400ミリ秒で約130トランザクション毎秒をサポートします。 プロトコルはスループットを増やすためにより多くのツリーを追加できます。 各ツリーはそれ自身のパーアカウント計算予算を持つ個別の書き込み可能アカウントであり、異なるツリー上のトランザクションは同じ書き込みロック予算で競争しません。

証明生成時間について

零知識証明は現在プローバーサーバーで生成されています;通常の機密転送は数十ミリ秒で証明されます;機密リング用のローカル証明は計画されています。 証明時間はスムーズなユーザーエクスペリエンスのために積極的に最適化されています。

用語

Didn’t find what you were looking for?

Reach out! Telegram | E-Mail | Contact