Skip to main content
  1. プライベート転送は、プライベートウォレット間でトークンをリング内に移動します。
  2. プライベート転送は、1 つの Solana トランザクションで Solana ウォレットアドレスに送信されます。

転送: プライベートとは

許可不要のリングは、額や資産が暗号化されており、秘密です。 カスタムリングは、(送信者、受信者、資産、額が暗号化されている)秘密または匿名として設定できます。

転送の仕組み

プライベート転送は、パブリックなSolana転送と同様に動作します。
  1. ユーザーのSOLまたはSPLバランスはオンチェーンで暗号化されます。
  2. ユーザーはプライベート状態を復号し、ウォレットが転送を作成し、所有者が署名します。
    • 専用のRPCメソッドで暗号化された状態を取得します。状態を復号できるのはローカルでユーザーのみです。
    • ウォレットは、金額と受取人を設定し、ZK証明を要求します。デフォルトでRPCプロバイダーがZK証明を生成し、それを返します。
  3. Solanaランタイムは署名を検証し、Solana Privacy Programを呼び出して、暗号化された状態を明らかにすることなくZK証明を検証します。
  4. アプリはSolanaトランザクションハッシュを通じてステータスを追跡します。
  1. ユーザーのSOLまたはSPLバランスはオンチェーンで公開されます。
  2. ウォレットが公開状態を読み取り、転送を作成し、所有者が署名します。
  3. Solanaランタイムは署名を検証し、System ProgramまたはToken Programを呼び出して公開バランスを更新します。
  4. アプリはSolanaトランザクションハッシュを通じてステータスを追跡します。
これは、許可不要の秘密リングの高レベルトランザクションフローです。 conceptsでカスタムリングと比較してください。

はじめに

1

前提条件

The TypeScript examples require Node.js 24 or later, pnpm 11.18.0, and the Solana CLI.
Source: sdk-libs/ts
Add a Helius API key:
.env
The examples use the Solana CLI wallet as the payer by default. The payer must hold devnet SOL. See How to Get Devnet SOL.
2

プライベートバランスへの転送

  • SDKは指示を返します。アプリがそれを署名して送信します。
  • sendAndConfirmFactoryがKitトランザクションを構築して送信し、署名とその後のスロットを返します。
  • この例では、先行するデポジットで作成されたプライベートソラナトークンアカウントを支出しています。転送は複数のUTXOを使用できます。
  • transferUtxoがそのバランスから1つのプライベートソラナトークンアカウントを選択します。
  • ProofInputUtxo.fromKeypairが選択されたUTXOを送信者のプライベートウォレットキーペアを使って証明入力として準備します。
  • キーペアは、資産と額が暗号化されたままで、使用済みとして入力UTXOをマークするnullifierを導出します。
  • senderAddressは送信者のです。転送はこのウォレットからスピンドします。
  • [transferInput]は送信者の選択されたUTXOをリストします。転送は複数のUTXOをスピンドできます。
  • senderSigner.addressは手数料支払者のソラナアドレスです。ガススポンサーが機密転送においてこの役割を果たすことができます。
  • recipientは受信者のシールドアドレスです。送信された出力は受信者の表示キーに暗号化されます。
  • SOL_MINTがSOLを選択します。SPLまたはToken 2022転送はトークンミントを渡します。
  • TRANSFER_AMOUNTは資産の基本単位で示されます。SOLはラメポーツを使用します。SPLとToken 2022資産はトークンの基本単位を使用します。
  • transfer.signは状態遷移を承認し、資産と額を暗号化し、ゼロ知識プロバーへの入力を生成します。
  • assetsはサポートされるプライベート資産を解決するために使用される資産レジストリです。
  • client.proveTransactが署名された転送からゼロ知識証明を生成し、シリアル化された命令データを返します。
  • 証明は、送信者が暗号化された資産や額を明らかにせずに入力を所持し支出できることを示します。
  • payerがソラナトランザクションで署名し料金を支払います。ガススポンサーが機密転送においてこの役割を果たすことができます。
  • inputTreeおよびoutputTreeclient.tree、消費されたUTXOを含み、受取人の出力と送信者の釣銭を受け取る状態Merkle木です。
  • dataは前のステップで生成されたゼロ知識証明と暗号化された出力を含みます。
  • プライベート転送は資産をプライベートバランス間でのみ移動します。公開ソラナアカウントまたはトークンアカウントを通過しません。
  • sendAndConfirmが署名し、transferInstructionをソラナトランザクションとして送信します。
  • 確認は、インデクサーの取得をゲートするために使用されるスロットをもたらします。

完全なコード例

例をクローンして実行します。
例はこちらでローカル/デブネット上の機密リングを使用しています。
deposit_transfer_withdraw.ts

関連ガイド

デポジット

引き出し

プライベートバランスを読む

プライベート履歴を読む

Didn’t find what you were looking for?

Reach out! Telegram | E-Mail | Contact