Skip to main content
  1. 出金はトークンをプライベートバランスからパブリックSolanaバランスに移動させます。
  2. 出金は、単一のSolanaトランザクションでSolanaウォレットアドレスに送信されます。

出金: プライベートとは何か

パーミッションレスのリングは暗号化された金額および資産で機密性があります。 カスタムリングは、機密または匿名(送信者、受信者、資産、および金額を暗号化)として構成できます。

出金の仕組み

出金は、パブリックなSolana転送と同様に動作します:
  1. ユーザーのSOLまたはSPLバランスはオンチェーンで暗号化されます。
  2. ユーザーはプライベートステートを復号し、ウォレットが出金を構築し、所有者が署名します。
    • 専用のRPCメソッドで暗号化された状態を取得します。ユーザーだけがローカルでバランスを復号できます。
    • ウォレットは金額と受取人を設定し、ZK証明を要求します。RPCプロバイダーはデフォルトでZK証明を生成し、それを返します。
  3. Solanaランタイムは署名を検証し、Solanaプライバシープログラムを起動して、暗号化された状態を開示せずにZK証明を検証します。
  4. アプリはSolanaトランザクションハッシュを介してステータスを追跡します。
  1. ユーザーのSOLまたはSPLバランスはオンチェーンで公開されています。
  2. ウォレットはパブリックステートを読み取り、転送を構築し、所有者が署名します。
  3. Solanaランタイムは署名を検証し、システムプログラムまたはトークンプログラムを呼び出し、公開バランスを更新します。
  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 はキットトランザクションを構築し、それを提出し、署名とランディングスロットを返します。
  • この例では、前の転送後に残ったプライベートSolanaトークンアカウントを使って支出します。出金は複数のUTXOを支出できます。
  • withdrawalUtxo はそのバランスから1つのプライベートSolanaトークンアカウントを選択します。
  • ProofInputUtxo.fromKeypair 選択されたUTXOを送信者のプライベートウォレットキーペアで証明入力として準備します。
  • キーペアは、入力UTXOを支出済みとしてマークするナリファイアを導き出しますが、入力資産と金額は暗号化されたままです。
  • senderAddress は送信者のシールドアドレスです。出金はこのウォレットから支出されます。
  • [withdrawalInput] は送信者の選択されたUTXOをリストします。出金は複数のUTXOを支出できます。
  • senderSigner.address は手数料支払い者のSolanaアドレスです。ガススポンサーが機密出金でこの役割を果たすことができます。
  • WithdrawalTarget.sol は公開Solana受取人です。受取人は所有者または第三者である可能性があります。
  • SOL_MINT はSOLを選択します。SPLまたはトークン2022の出金はトークンミントを渡します。
  • WITHDRAW_AMOUNT は資産の基本単位で計上されます。SOLはラマポートを使用します。SPLおよびトークン2022資産はトークンの基本単位を使用します。
  • withdrawal.sign は状態遷移を承認し、残りのプライベートチェンジを暗号化し、ゼロ知識証明者の入力を生成します。
  • assets はサポートされているプライベート資産を解決するために使用する資産レジストリです。
  • client.proveTransact は署名された出金からゼロ知識証明を生成し、シリアル化された命令データを返します。
  • 証明は、送信者が入力を所有し、支出できることを示します。引き出された資産と金額は公開されます。入力金額とチェンジは暗号化されたままです。
  • payer はSolanaトランザクションの署名と支払いを行います。ガススポンサーが機密出金でこの役割を果たせます。
  • inputTreeoutputTreeclient.tree で、支出されたUTXOを含み、送信者のプライベートチェンジを受け取る状態Merkleツリーです。
  • withdrawalTransactWithdrawal.sol で、公開Solana受取人アカウントを供給します。
  • data は前のステップで生成されたゼロ知識証明と暗号化されたチェンジを含んでいます。
  • 出金は資産をプライベートバランスから公開Solanaアカウントに移動させます。それは公開受取人アカウントを渡します。
  • sendAndConfirm は署名し、withdrawalInstruction をSolanaトランザクションとして送信します。
  • 確認はインデクサ取得をゲートするのに使用されるランディングスロットをもたらします。

完全なコード例

例をクローンして実行します:
この例はローカル/Devnetでの機密Ringを使用しています ここ
deposit_transfer_withdraw.ts

関連ガイド

入金

転送

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

プライベート履歴を読む

Didn’t find what you were looking for?

Reach out! Telegram | E-Mail | Contact