Skip to main content

Giới thiệu về Ring

Mọi giao dịch trên Solana đều có thể được đọc công khai: bất kỳ ai cũng có thể xem địa chỉ, số dư và lịch sử chuyển tiền. Ring mã hóa số dư onchain và luôn mặc định là không lưu ký:
  • Trong Ring bảo mật, tài sản và số tiền được giữ riêng tư, còn người gửi và người nhận vẫn hiển thị.
  • Trong Ring ẩn danh, tài sản, số tiền, người gửi và người nhận đều được giữ riêng tư.
Two Solana transaction cards side by side. The confidential card shows the transaction hash, sender, and recipient while the asset and amount are blacked out. The anonymous card shows only the transaction hash; the sender, asset, amount, and recipient are all blacked out. The transaction hash stays public on both. Có nhiều loại Ring:
  1. Default Ring không cần cấp quyền và có tính bảo mật. Ring này mã hóa tài sản và số tiền, bất kỳ ai cũng có thể sử dụng và không có các tùy chọn kiểm soát chính sách tùy chỉnh.
  2. Custom Ring là các chương trình Solana giúp khả năng riêng tư trên Solana có thể lập trình được, tương tự Token-2022. Custom Ring có thể là Ring bảo mật hoặc ẩn danh, với các quy tắc tùy chỉnh về chính sách, báo cáo và khả năng hiển thị.
Đối với hầu hết ứng dụng, chúng tôi khuyên dùng Default Ring bảo mật và không cần cấp quyền. Để sử dụng các tùy chọn kiểm soát chính sách và tuân thủ tùy chỉnh, hãy liên hệ với chúng tôi để bắt đầu với Custom Ring.
Private Balances shown as a dashed onchain zone holding two rings. The Default Ring is confidential, self-custodial, and permissionless. The Custom Ring is confidential or anonymous, self-custodial, and adds custom policy and custom compliance. A private transfer connects the rings, and each deposits into and withdraws from a Solana Public Balances layer below.

Custom Ring có thể lập trình

Custom Ring là các chương trình Solana đơn giản giúp khả năng riêng tư có thể lập trình được, với các tính năng tương tự Token-2022. Custom Ring có thể xác định các quy tắc hoàn toàn tùy chỉnh cho việc chuyển tiền và khả năng hiển thị/kiểm toán.
Các bên có thẩm quyền của Ring được khai báo khi tạo Ring, vì vậy người dùng có thể kiểm tra chính sách trước khi chọn Ring. Default Ring không cần cấp quyền và không có bên có thẩm quyền hoặc kiểm toán viên tùy chỉnh.
Nếu muốn thiết lập Custom Ring riêng, hãy liên hệ với chúng tôi và chúng tôi sẽ hỗ trợ bạn thiết lập. Bạn có thể tự cung cấp giải pháp tuân thủ hoặc sử dụng giải pháp KYC và sàng lọc lệnh trừng phạt do Helius quản lý.

Luồng người dùng và cam kết về quyền riêng tư

Các giao dịch với Helius Privacy được thực thi trực tiếp trên onchain và kết hợp với các chương trình Solana khác trong một giao dịch duy nhất. Người dùng có thể tham gia Ring, chuyển tiền riêng tư bên trong Ring hoặc rời khỏi Ring: 1. Nạp tiền hoặc chuyển tiền pháp định vào. Người dùng gửi token từ số dư Solana công khai hoặc số dư tiền pháp định trực tiếp đến số dư riêng tư. 2. Chuyển tiền riêng tư. Người dùng gửi token giữa các số dư riêng tư trong cùng một Ring hoặc sang một Ring khác. 3. Rút tiền hoặc chuyển thành tiền pháp định. Người dùng gửi token từ số dư riêng tư đến số dư Solana công khai hoặc trực tiếp đến số dư tiền pháp định. Diagram of the Ring lifecycle. A public balance of 100 USDC deposits into a Ring and a fiat balance of USD / EUR / ... on-ramps into the same Ring, funds move between two private balances via private transfer, then withdraw to a public balance or off-ramp to a fiat balance. Người dùng gửi token đến một địa chỉ ví Solana giống như khi sử dụng số dư công khai. Privacy API tự động định tuyến giao dịch chuyển tiền đến Private Wallet nếu người nhận có ví này. Nếu không, giao dịch chuyển tiền sẽ trở thành một giao dịch rút tiền đến địa chỉ công khai của người nhận. Bất kỳ ai cũng có thể nạp tiền vào Private Wallet khi chỉ biết địa chỉ ví công khai của người nhận. Khi ứng dụng của người gửi không hỗ trợ quyền riêng tư, người nhận sẽ nhận tiền công khai và có thể mã hóa số tiền đó vào số dư riêng tư của mình trong bước thứ hai.

Nạp tiền vào số dư riêng tư: Thông tin nào được giữ riêng tư

Người dùng có thể nạp tiền vào số dư riêng tư theo hai cách:
  1. Chuyển từ số dư tiền pháp định vào số dư tiền mã hóa riêng tư
  2. Nạp từ số dư tiền mã hóa công khai vào số dư tiền mã hóa riêng tư

Chuyển tiền riêng tư: Thông tin nào được giữ riêng tư

Người dùng có thể thực hiện giao dịch chuyển tiền riêng tư theo hai cách:
  1. Chuyển tiền trong cùng một Ring
  2. Chuyển tiền sang một Ring khác
Đối với hầu hết ứng dụng, chúng tôi khuyên dùng Default Ring bảo mật và không cần cấp quyền. Để sử dụng các tùy chọn kiểm soát chính sách và tuân thủ tùy chỉnh, hãy liên hệ với chúng tôi để bắt đầu với Custom Ring.

Rút tiền từ số dư riêng tư: Thông tin nào được giữ riêng tư

Người dùng có thể rút tiền từ số dư riêng tư theo hai cách:
  1. Chuyển tiền mã hóa riêng tư thành số dư tiền pháp định
  2. Rút từ số dư tiền mã hóa riêng tư sang số dư tiền mã hóa công khai

Luồng giao dịch cấp cao

Giao dịch chuyển tiền riêng tư hoạt động tương tự giao dịch chuyển tiền công khai và được thực thi trong một giao dịch Solana duy nhất.
  1. Số dư SOL hoặc SPL của người dùng được mã hóa onchain.
  2. Truy xuất trạng thái đã mã hóa và giải mã cục bộ, hoặc một nhà cung cấp được ủy quyền sẽ giải mã và cung cấp trạng thái đã giải mã.
  3. Ví đặt số tiền và người nhận, sau đó yêu cầu bằng chứng ZK.
  4. Theo mặc định, nhà cung cấp RPC tạo và trả về bằng chứng ZK. Custom Ring cũng yêu cầu bằng chứng chính sách.
  5. Ví tạo giao dịch Solana. Bằng chứng ZK được xác minh mà không tiết lộ trạng thái đã mã hóa. Các chương trình được gọi, cũng như bên ký và gửi giao dịch, phụ thuộc vào Ring:
  1. Ứng dụng theo dõi trạng thái qua hàm băm giao dịch Solana.

Private Wallet

Người dùng giữ số dư đã mã hóa trong Private Wallet. Private Wallet nhận giao dịch chuyển tiền tại địa chỉ Solana công khai của người dùng, đóng vai trò là inbox. Nhờ đó, người gửi luôn nhập địa chỉ Solana của người nhận giống như khi chuyển tiền công khai.

Tạo Private Wallet

Khi Private Wallet được tạo, địa chỉ Solana sẽ được đăng ký trong một sổ đăng ký onchain. Sổ đăng ký ánh xạ một địa chỉ Solana tới một . Ở tầng bên dưới, các giao dịch chuyển tiền được mã hóa đến Shielded Address. Nhiều địa chỉ Solana không thể dùng chung một Shielded Address. Mỗi bản ghi trong sổ đăng ký là một PDA thuộc sở hữu của . Bất kỳ ai cũng có thể tra cứu bản ghi này để biết một địa chỉ Solana có thể nhận giao dịch chuyển tiền riêng tư hay không. User wallet showing two public Solana wallets and a private wallet. An inbox arrow connects Public Wallet A's public key to the private wallet's Shielded Address.
Trong ứng dụng ví, bạn có thể chỉ cho phép người dùng tạo ví riêng tư cho một khóa công khai “Private Wallet” chuyên dụng, hoặc cho bất kỳ khóa công khai nào.

Chuyển tiền đến Private Wallet

Trong mỗi giao dịch chuyển tiền, Privacy API tra cứu địa chỉ ví trong sổ đăng ký onchain để kiểm tra xem người nhận có ví riêng tư hay không. Nếu tìm thấy, API sử dụng Shielded Address ở tầng bên dưới để mã hóa giao dịch chuyển tiền.
Khi người nhận giao dịch chuyển tiền riêng tư không có Private Wallet, Privacy API chuyển giao dịch thành một giao dịch rút tiền từ riêng tư sang công khai.Chúng tôi khuyên bạn nên yêu cầu một chữ ký người dùng riêng trong giao diện người dùng để tránh việc người dùng vô tình rút tiền vào số dư công khai.

Quản lý khóa

Private Wallet thêm một cặp khóa được che chắn vào ví Solana từ cặp khóa Solana của bạn. Cặp khóa được che chắn là một gói gồm khóa ký, khóa vô hiệu hóa và khóa xem. Đây không phải là cặp khóa Solana. Shielded Address là các khóa công khai của cặp khóa được che chắn. Các giao dịch chuyển tiền được mã hóa đến địa chỉ này.

Tạo cặp khóa được che chắn

Ví có thể tạo cặp khóa được che chắn theo hai cách.
  1. Dẫn xuất khóa từ cụm từ hạt giống.
    • Phương pháp được khuyên dùng cho các ví dựa trên hạt giống.
    • Ring bảo mật: khóa ký là cùng khóa Ed25519 mà ví Solana dẫn xuất từ hạt giống đó. Khóa vô hiệu hóa và khóa xem là các khóa bổ sung được dẫn xuất từ cùng hạt giống.
    • Custom Ring ẩn danh: khóa ký là một khóa P-256 bổ sung được dẫn xuất từ hạt giống của ví.
    • Bạn luôn có thể tạo lại cặp khóa được che chắn theo cùng cách tạo lại ví Solana.
  2. Dẫn xuất khóa từ một thông điệp cố định bằng khóa Solana hiện có.
    • Chữ ký Solana có tính xác định, vì vậy cùng một cặp khóa Solana luôn tạo ra cùng một cặp khóa được che chắn. Ứng dụng không bao giờ nhận khóa riêng tư.
    • Phương pháp được khuyên dùng cho hoạt động kiểm thử và các ví không sử dụng cụm từ hạt giống. Ví tích hợp phải đảm bảo chữ ký không bị tiết lộ cho bên thứ ba.

Tích hợp cặp khóa được che chắn

Ví có thể tự giữ cặp khóa được che chắn thông qua Tích hợp ví gốc. Với Embedded Privacy Wallet, Wallet Provider sẽ giữ cặp khóa được che chắn và thay ví thực hiện các thao tác với khóa.

Chế độ giải mã và đồng bộ hóa ví

Chỉ chủ sở hữu mới có thể giải mã số dư Private Wallet bằng khóa xem. Để tiết lộ có chọn lọc, chủ sở hữu có thể chia sẻ khóa xem với kiểm toán viên, cho phép kiểm toán viên đọc hoạt động nhưng không thể chi tiêu. Trong Custom Ring, chính sách có thể khai báo một kiểm toán viên có khả năng giải mã mọi số dư từ Custom Ring đó. Ring bảo mật (Default Ring và Custom Ring bảo mật) hỗ trợ giải mã cục bộ và giải mã được ủy quyền. Ring ẩn danh (chỉ Custom Ring) chỉ hỗ trợ giải mã được ủy quyền.
Ví nên giải mã và cập nhật số dư ở mọi thời điểm chạy quá trình truy xuất dữ liệu cũ: khi mở khóa ví, mở ví riêng tư, tiếp tục ứng dụng, kết nối lại mạng, luồng bị gián đoạn hoặc khôi phục ví.

Giải mã cục bộ

Trong chế độ giải mã cục bộ, ví giải mã và đồng bộ hóa số dư cũng như lịch sử ngay trên thiết bị. Máy chủ Helius không nhận cụm từ ghi nhớ, hạt giống, khóa ký riêng tư, khóa xem riêng tư hoặc bí mật vô hiệu hóa.

Giải mã được ủy quyền

Trong chế độ giải mã được ủy quyền, ví và nhà cung cấp được chọn chia sẻ một khóa xem. Nhờ đó, nhà cung cấp có thể giải mã số dư và lịch sử nhưng không có quyền chi tiêu. Ví cũng có thể chia sẻ các khóa xem trước đây khi ủy quyền cho nhà cung cấp đồng bộ hóa hoạt động lịch sử. Quyền truy cập của kiểm toán viên tách biệt với giải mã được ủy quyền. Kiểm toán viên nhận khả năng hiển thị Ring do chính sách xác định, còn nhà cung cấp được ủy quyền nhận quyền truy cập đồng bộ hóa trong phạm vi ví.

Bộ lập chỉ mục cung cấp trạng thái đã mã hóa

Giống như ví công khai phụ thuộc vào RPC Solana, Private Wallet phụ thuộc vào một bộ lập chỉ mục. Bộ lập chỉ mục cung cấp trạng thái đã mã hóa mà ví cần để đọc số dư và tạo giao dịch riêng tư. Theo mặc định, có thể truy cập bộ lập chỉ mục qua ; bất kỳ ai cũng có thể tự vận hành bộ lập chỉ mục mà không cần cấp quyền để làm phương án dự phòng.

Số dư Private Wallet

Số dư Private Wallet được giữ onchain trong các Tài khoản token Solana riêng tư dưới dạng UTXO (đầu ra giao dịch chưa chi tiêu), không phải tài khoản token Solana. Default Ring và tất cả Custom Ring lưu trữ số dư riêng tư trong một cây Merkle trạng thái. Số dư Private Wallet là tổng của tất cả UTXO thuộc sở hữu của một Private Wallet. Chương trình Solana có thể sở hữu UTXO tương tự như tài khoản Solana thông thường. Tài liệu này sử dụng Tài khoản token Solana riêng tư và UTXO thay thế cho nhau. A Private Wallet connected by dashed lines to several UTXO notes, each holding one amount of one asset. The wallet balance is the sum of the notes.
Đối với trải nghiệm người dùng, việc số dư được giữ trong UTXO hay tài khoản token Solana không tạo ra khác biệt.Ở cấp độ kỹ thuật, việc chi tiêu số dư công khai sẽ làm giảm amount trong tài khoản token Solana. Việc chi tiêu số dư riêng tư không ghi đè trường amount của UTXO. Thay vào đó, giao dịch riêng tư lấy các UTXO hiện có làm đầu vào (do SDK tự động chọn), tiêu thụ các đầu vào và tạo đầu ra mới cho người nhận cũng như phần số dư còn lại của người gửi.Ví dụ: Alice có 50 USDC và gửi cho Bob 35 USDC.
  • Trong tài khoản token Solana, trường amount của Alice giảm từ 50 xuống 15, còn trường của Bob tăng thêm 35. Giá trị được thay đổi tại chỗ.
  • Với UTXO, Alice giữ một tờ ghi chú 50 USDC. Giao dịch chi tiêu tờ ghi chú đó và tạo hai tờ ghi chú mới: một tờ 35 USDC cho Bob và một tờ tiền thừa 15 USDC cho Alice. Tờ ghi chú 50 USDC cũ của Alice giờ đã được chi tiêu.
Alice sends Bob 35 of her 50 USDC. On a Solana token account the amount field changes in place from 50 to 15. With UTXOs, Alice's single 50 USDC note is spent and two new notes are created: a 35 USDC note for Bob and a 15 USDC change note for Alice.
Khi nạp tài sản SOL và SPL vào số dư riêng tư, một PDA giao diện thuộc sở hữu của Solana Privacy Program sẽ ký quỹ token và tạo UTXO với người dùng là chủ sở hữu.Khi rút tiền về số dư công khai, các UTXO hiện có được đánh dấu là đã chi tiêu và token được giải phóng vào các tài khoản token Solana.
Một Private Wallet có thể đồng thời giữ số dư trong nhiều Ring mà không bị giới hạn số lượng Ring. Ring chứa một số dư không phải là thuộc tính của ví. Đó là thuộc tính của từng UTXO, được lưu trong trường policy_program_id của UTXO.

Tài khoản token Solana riêng tư

Tài khoản token Solana riêng tư là một UTXO hoạt động tương tự tài khoản token Solana, với hai điểm khác biệt cốt lõi:
  • Tài khoản token Solana riêng tư không yêu cầu miễn tiền thuê khi được tạo, và
  • số dư của tài khoản được mã hóa onchain.
Tuy vậy, Tài khoản token Solana riêng tư vẫn lưu trữ cùng loại dữ liệu, chẳng hạn như:
  • Tài sản: mint mà UTXO giữ các đơn vị của tài sản đó. SOL là địa chỉ mint mặc định. Tài sản có thể là SOL hoặc bất kỳ tài sản SPL hay Token-2022 nào.
  • Số tiền: số đơn vị asset mà tờ ghi chú giữ, tính theo đơn vị nhỏ nhất của tài sản.
  • Dữ liệu chương trình và chính sách: dữ liệu tùy chọn để chính sách Ring đã cấu hình bổ sung chức năng tương tự Token-2022
A Private Solana Token Account. The Solana Privacy Program owns a Private Token Account, which expands into its PrivateAccount fields: owner, asset, amount, policy data, and policy program id.
A Solana Token Account. The Token Program owns a Token Account, expanded into its AccountInfo fields (Data, Executable, Lamports, Owner) and the Data field expanded into Account Data (Mint, Owner, Amount).

Về xử lý đồng thời

Người dùng có thể chi tiêu số dư riêng tư ngay khi giao dịch được hoàn tất. Cụ thể, số dư của một cặp khóa có thể được sử dụng đồng thời khi được chia cho nhiều UTXO. Ví sẽ chọn các UTXO cần chi tiêu. Một cây Merkle lưu trữ trạng thái riêng tư cho Default Ring không cần cấp quyền và tất cả Custom Ring. Cây được lưu trong một tài khoản Solana có thể ghi. Các giao dịch chuyển tiền riêng tư ghi vào tài khoản này dùng chung giới hạn khóa ghi 12 triệu CU trên mỗi tài khoản trong mỗi khối của Solana. Một giao dịch chuyển tiền riêng tư tiêu thụ khoảng 220.000 CU. Do đó, một cây hỗ trợ khoảng 54 giao dịch chuyển tiền riêng tư mỗi khối, tương đương khoảng 130 giao dịch mỗi giây với thời gian khối Solana hiện tại là khoảng 400 mili giây. Giao thức có thể thêm nhiều cây hơn để tăng thông lượng. Mỗi cây là một tài khoản có thể ghi riêng biệt với ngân sách tính toán riêng cho từng tài khoản, vì vậy các giao dịch trên những cây khác nhau không cạnh tranh cùng một ngân sách khóa ghi.

Về thời gian tạo bằng chứng

Bằng chứng không kiến thức hiện được tạo bởi máy chủ chứng minh; một giao dịch chuyển tiền bảo mật thông thường được chứng minh trong vài chục mili giây; tính năng chứng minh cục bộ cho Ring bảo mật đã được lên kế hoạch. Thời gian chứng minh đang được tích cực tối ưu hóa để đảm bảo trải nghiệm người dùng mượt mà.

Thuật ngữ

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ệ