Skip to main content
  1. 入金はユーザーの公開Solanaバランスから自分または他人のプライベートバランスにトークンを移動します。
  2. 入金は単一のSolanaトランザクションでSolanaウォレットアドレスに送信されます。

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

無許可リングは、金額と資産が暗号化されていて機密性があります。 カスタムリングは機密性または匿名性(送信者、受信者、資産、金額が暗号化された状態)として構成できます。

入金の仕組み

入金は、プライベートバランスの結果を伴う公開Solana転送です。
  1. ユーザーのSOLまたはSPLバランスはオンチェーンで公開されています。
  2. ウォレットは金額と受取人を設定し、入金を構築し、所有者が署名します。入金はZK証明を要求しません。
  3. Solanaランタイムは署名を検証し、Solanaプライバシープログラムを呼び出します。
  4. アプリはSolanaトランザクションハッシュを介してステータスを追跡します。
  1. ユーザーのSOLまたはSPLバランスはオンチェーンで公開されています。
  2. ウォレットは公開状態を読み取り、転送を構築し、所有者が署名します。
  3. Solanaランタイムは署名を検証し、システムプログラムまたはトークンプログラムを呼び出し、公開バランスを更新します。
  4. アプリはSolanaトランザクションハッシュを介してステータスを追跡します。
これは、無許可の機密リングの高レベルトランザクションフローです。 カスタムリングとの比較はconceptsをご覧ください。

はじめに

1

前提条件

TypeScript の例には Node.js 24 以降、pnpm 11.18.0、および Solana CLI が必要です。
出典: sdk-libs/ts
Helius APIキーを追加します:
.env
例ではデフォルトで支払者としてSolana CLIウォレットを使用します。支払者はdevnet SOLを保有している必要があります。Devnet SOLの取得方法を参照してください。
2

プライベートバランスへの入金

  • SDKは命令を返します。アプリはそれを署名して送信します。
  • sendAndConfirmFactoryはキットトランザクションを構築し、送信し、署名と到達したスロットを返します。
  • senderAddress は受信者のです。この例では送信者に入金します。受信者には、送信者またはサードパーティのウォレットを指定できます。
  • senderViewTag は senderAddress.confidentialViewTag()、つまり confidential ring における送信者の Solana 公開鍵です。インデクサーはこれを使用して、一致する暗号化出力を返します。
  • client.tree は、新しい出力コミットメントを受け取る状態 Merkle ツリーです。
  • depositor / senderSigner は、公開から非公開への入金に資金を提供し、署名します。
  • DepositAsset.sol() は SOL を選択します。DepositAsset.spl は、SPL および Token 2022 アセットのミント、送信元トークンアカウント、トークンプログラムを受け取ります。
  • recipientOwnerHash は senderAddress.ownerHash() です。受信者の署名公開鍵と nullifier 公開鍵のこのハッシュは、新しい非公開トークンアカウントにコミットされる所有者フィールドです。
  • DEPOSIT_AMOUNT は、SOL には lamport、SPL および Token 2022 アセットにはトークンの基本単位を使用します。
  • sendAndConfirmはSolanaトランザクションとしてdepositIxを署名して送信します。
  • 確認によりインデクサーフェッチをゲートするために使用されたスロットが得られます。

完全なコード例

例をクローンして実行:
例では、こちらのローカル/devnet上にあるコンフィデンシャル Ringを使用します。
deposit_transfer_withdraw.ts

関連ガイド

Create a Private Wallet

Transfer

Withdraw

Read a Private Balance

Read Private History

お探しの情報が見つかりませんでしたか?

ぜひご連絡ください!Telegram | E-Mail | Typeform