Chuyển đến nội dung chính
  1. Thao tác nạp chuyển token từ số dư Solana công khai của người dùng sang số dư riêng tư của chính họ hoặc của người khác.
  2. Khoản nạp được gửi trong một giao dịch Solana duy nhất đến địa chỉ ví Solana.

Nạp tiền: Những gì được giữ riêng tư

Ring không cần cấp quyền có tính bảo mật, với số lượng và tài sản được mã hóa. Ring tùy chỉnh có thể được cấu hình ở chế độ bảo mật hoặc ẩn danh (mã hóa người gửi, người nhận, tài sản và số lượng).

Cách hoạt động của thao tác nạp

Thao tác nạp là một giao dịch chuyển Solana công khai, tạo ra số dư riêng tư.
  1. Số dư SOL hoặc SPL của người dùng được công khai trên chuỗi.
  2. Ví thiết lập số lượng và người nhận, tạo khoản nạp, sau đó chủ sở hữu ký. Thao tác nạp không yêu cầu bằng chứng ZK.
  3. Môi trường thực thi Solana xác minh chữ ký và gọi Solana Privacy Program.
  4. Ứng dụng theo dõi trạng thái thông qua hàm băm giao dịch Solana.
  1. Số dư SOL hoặc SPL của người dùng được công khai trên chuỗi.
  2. Ví đọc trạng thái công khai, tạo giao dịch chuyển, sau đó chủ sở hữu ký.
  3. Môi trường thực thi Solana xác minh chữ ký và gọi System Program hoặc Token Program để cập nhật số dư công khai.
  4. Ứng dụng theo dõi trạng thái thông qua hàm băm giao dịch Solana.
Đây là luồng giao dịch cấp cao cho Ring bảo mật không cần cấp quyền. So sánh với các Ring tùy chỉnh trong Luồng giao dịch cấp cao.

Bắt đầu

1

Điều kiện tiên quyết

Các ví dụ TypeScript yêu cầu Node.js 24 trở lên, pnpm 11.18.0 và Solana CLI.
Thêm khóa API Helius:
.env
Theo mặc định, các ví dụ sử dụng ví Solana CLI làm bên thanh toán. Bên thanh toán phải có SOL trên devnet. Xem Cách nhận SOL trên devnet.
2

Nạp vào số dư riêng tư

  • SDK trả về các lệnh. Ứng dụng ký và gửi các lệnh đó.
  • sendAndConfirmFactory tạo một giao dịch Kit, gửi giao dịch đó và trả về chữ ký cùng slot đã được ghi nhận.
Mỗi mint SPL cần một giao diện token để lưu giữ các token đã nạp. Nếu giao diện chưa tồn tại, hãy tạo giao diện trong cùng giao dịch nạp tiền. Người tạo thanh toán phí thuê tài khoản.
  • senderAddress là của người nhận. Ví dụ này nạp tiền cho người gửi. Người nhận có thể là người gửi hoặc ví của bên thứ ba.
  • senderViewTag là senderAddress.confidentialViewTag(), khóa công khai Solana của người gửi trong các Ring bảo mật. Bộ lập chỉ mục sử dụng khóa này để trả về các đầu ra được mã hóa phù hợp.
  • client.tree là cây Merkle trạng thái nhận cam kết đầu ra mới.
  • depositor / senderSigner cấp vốn và ký giao dịch nạp từ công khai sang riêng tư.
  • DepositAsset.sol() chọn SOL. DepositAsset.spl nhận mint, tài khoản token nguồn và chương trình token cho các tài sản SPL và Token 2022.
  • recipientOwnerHash là senderAddress.ownerHash(). Giá trị băm đó của khóa công khai dùng để ký và khóa công khai nullifier của người nhận là trường chủ sở hữu được cam kết trong tài khoản token riêng tư mới.
  • DEPOSIT_AMOUNT sử dụng lamport cho SOL hoặc đơn vị cơ sở của token cho các tài sản SPL và Token 2022.
  • sendAndConfirm ký và gửi depositIx dưới dạng một giao dịch Solana.
  • Quá trình xác nhận trả về slot đã được ghi, dùng để kiểm soát việc truy xuất của bộ lập chỉ mục.

Ví dụ mã đầy đủ

Sao chép kho lưu trữ và chạy ví dụ:
Các ví dụ sử dụng một Ring bảo mật trên local/devnet tại đây.
deposit_transfer_withdraw.ts

Hướng dẫn liên quan

Create a Private Wallet

Transfer

Withdraw

Read a Private Balance

Read Private History

Không tìm thấy nội dung bạn đang tìm kiếm?

Hãy liên hệ với chúng tôi! Telegram | Email | Liên hệ