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ư.
- 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.
- 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.
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.Example Custom Ring policies
Example Custom Ring policies
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.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:- Chuyển từ số dư tiền pháp định vào số dư tiền mã hóa riêng tư
- 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ư
- On-ramp from fiat balance
- Deposit from public crypto balance
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:- Chuyển tiền trong cùng một Ring
- 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.
- Permissionless Confidential Ring
- Custom Rings
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:- Chuyển tiền mã hóa riêng tư thành số dư tiền pháp định
- Rút từ số dư tiền mã hóa riêng tư sang số dư tiền mã hóa công khai
- Off-ramp to fiat balance
- Withdraw to public crypto balance
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.- Private transfer
- Solana transfer
- Số dư SOL hoặc SPL của người dùng được mã hóa onchain.
- 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ã.
- Ví đặt số tiền và người nhận, sau đó yêu cầu bằng chứng ZK.
- 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.
- 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:
- Ứng dụng theo dõi trạng thái qua hàm băm giao dịch Solana.
- Permissionless Confidential Ring
- Custom Confidential Ring
- Custom Anonymous Ring
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.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.-
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.
-
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.Balances in UTXOs vs Solana accounts
Balances in UTXOs vs Solana accounts
Đố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
amountcủ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.
- One input note
- Multiple input notes
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.
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.
- 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ị
assetmà 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
- Diagram
- Code
View Solana token account
View Solana token account
- Diagram
- Code