Skip to main content
  1. 개인 전송은 개인 지갑 간에 링 속에서 토큰을 이동시킵니다.
  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 거래 해시를 통해 상태를 추적합니다.
이는 허가 없는 기밀 링의 고급 거래 흐름입니다. 개념에서 사용자 정의 링과 비교하십시오.

시작하기

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는 해당 잔액에서 하나의 개인 솔라나 토큰 계정을 선택합니다.
  • ProofInputUtxo.fromKeypair는 발신자의 개인 지갑 키페어로 선택된 UTXO를 증명 입력으로 준비합니다.
  • 키페어는 입력 UTXO를 소비한 것으로 표시하는 무효화를 파생하며, 자산과 금액은 암호화된 상태로 유지됩니다.
  • 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는 솔라나 거래에 서명하고 비용을 지불합니다. 기밀 전송을 위해 가스 후원자가 이 역할을 수행할 수 있습니다.
  • inputTreeoutputTreeclient.tree, 사용된 UTXO와 수신자 출력 및 발신자 변경을 받는 상태 머클 트리를 포함합니다.
  • data는 이전 단계에서 생성된 영지식 증명과 암호화된 출력을 포함합니다.
  • 개인 전송은 자산을 개인 잔액 간에만 이동하며, 공개 솔라나 계정이나 토큰 계정을 통과하지 않습니다.
  • sendAndConfirm는 Solana 거래로 transferInstruction에 서명하고 제출합니다.
  • 확인 결과는 인덱서 가져오기를 제한하기 위해 사용된 도달 슬롯을 제공합니다.

전체 코드 예제

예제를 복제하고 실행하세요:
예제는 여기에서 로컬/devnet에서 기밀 링을 사용합니다.
deposit_transfer_withdraw.ts

관련 가이드

입금

출금

개인 잔액 읽기

개인 기록 읽기

Didn’t find what you were looking for?

Reach out! Telegram | E-Mail | Contact