- UTXO không phải là tài khoản Solana nên không cần được miễn tiền thuê.
- Số dư của UTXO được mã hóa trên chuỗi.
- Chủ sở hữu – cặp khóa Solana, PDA hoặc khóa P-256.
- Tài sản – mint (SOL, SPL hoặc Token-2022).
- Số lượng – số đơn vị của
asset, tính theo đơn vị nhỏ nhất. - Dữ liệu – UTXO có thể lưu trữ dữ liệu tùy ý, chẳng hạn như chủ sở hữu của các token ký quỹ.
- Dữ liệu chương trình và chính sách – cấu hình tuân thủ Ring không bắt buộc.
- Diagram
- Code
Xem mã nguồn: Đặc tả · sdk-libs/transaction/src/utxo/note.rs
View Solana token account
View Solana token account
- Diagram
- Code
Số dư riêng tư
Số dư riêng tư là tổng của tất cả UTXO thuộc một tài sản do ví riêng tư sở hữu. Ví hiển thị một số dư, bất kể số dư riêng tư bao gồm một hay nhiều UTXO. Một giao dịch chuyển riêng tư có thể chi tiêu nhiều UTXO cùng lúc.Chuyển riêng tư
Giao dịch chuyển riêng tư bằng UTXO hoạt động khác với giao dịch chuyển công khai bằng tài khoản token SPL:- Giao dịch chuyển từ tài khoản token SPL cập nhật
amount. - Giao dịch chuyển riêng tư bằng UTXO không cập nhật
amountcủa UTXO. Thay vào đó, giao dịch chuyển riêng tư chi tiêu các UTXO hiện có và tạo UTXO mới cho người nhận cũng như cho số dư còn lại của người gửi.
- Với tài khoản token SPL,
amountcủa Alice giảm từ 50 xuống 15, còn của Bob tăng thêm 35. - Với UTXO, Alice nắm giữ một UTXO có 50 USDC. Giao dịch chi tiêu UTXO hiện có và tạo hai UTXO mới: một UTXO có 35 USDC cho Bob và một UTXO có 15 USDC cho Alice.
- Transfer with one UTXO
- Transfer with multiple UTXOs
Chọn UTXO
Đối với giao dịch chuyển riêng tư, SDK chọn các UTXO chưa được chi tiêu có tổng giá trị đủ để chi trả số tiền bạn muốn chuyển. Thuật toán chọn UTXO chi tiêu ít UTXO nhất có thể cho mỗi giao dịch chuyển:- SDK lọc các UTXO của bạn theo tài sản được gửi và sắp xếp chúng theo số lượng.
- SDK chọn số lượng UTXO cần thiết để chi trả số tiền chuyển. SDK chọn các UTXO lớn nhất trước cho đến khi đủ số tiền chuyển.
Biến thể giao dịch
Mỗi giao dịch chuyển riêng tư sử dụng một biến thể giao dịch: một số lượng vị trí cố định dành cho các UTXO sẽ được chi tiêu và các UTXO mới sẽ được tạo. Các biến thể hỗ trợ từ 1 đến 36 UTXO được chi tiêu và mỗi biến thể có mạch ZK riêng. Mạch này chứng minh rằng các UTXO được chi tiêu là hợp lệ và các UTXO mới chứa cùng tổng số lượng. Nếu giao dịch chuyển cần nhiều hơn 36 UTXO, hãy hợp nhất chúng trước. SDK chọn một biến thể phù hợp với giao dịch chuyển và điền các vị trí không dùng bằng UTXO giả. UTXO giả không chứa giá trị và trông giống UTXO thật trên chuỗi.- 1 spent, 2 new
- 2 spent, 2 new
- 3 spent, 3 new
- 4 spent, 3 new
Alice gửi cho Bob 30 USDC. UTXO lớn nhất của cô ấy đủ để chi trả giao dịch chuyển.
Supported transaction variants
Supported transaction variants
Xem mã nguồn: Đặc tả · Các biến thể được hỗ trợ
Hợp nhất UTXO
Việc nhận nhiều giao dịch chuyển mà không chi tiêu có thể phân mảnh số dư riêng tư thành nhiều UTXO. Nếu một giao dịch chuyển cần nhiều hơn 36 UTXO, hãy hợp nhất chúng trước để người dùng có thể chi tiêu toàn bộ số dư trong một giao dịch chuyển. Hầu hết người dùng sẽ hiếm khi gặp số dư bị phân mảnh vì một giao dịch chuyển có thể chi tiêu tối đa 36 UTXO.- Một lần hợp nhất kết hợp các UTXO có cùng chủ sở hữu và tài sản thành một UTXO có cùng tổng giá trị.
- Một lần hợp nhất không thể chi tiêu tiền hoặc thay đổi chủ sở hữu.
- Quá trình hợp nhất có thể diễn ra ngầm mà không ảnh hưởng đến trải nghiệm của người dùng cuối.
Mỗi lần hợp nhất là một giao dịch Solana có bằng chứng ZK và chuyển tối đa 36 UTXO thành một UTXO.
Vì kết quả hợp nhất mang tính xác định, các bằng chứng hợp nhất và bằng chứng chuyển được tạo song song.
Ví dụ về cách sử dụng chỉ thị hợp nhất
Ứng dụng của bạn có thể hợp nhất tại hai thời điểm:- Khi đồng bộ hóa số dư riêng tư: 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, có khoảng trống trong luồng hoặc khôi phục ví.
- Trước một giao dịch chuyển: khi giao dịch chuyển cần nhiều hơn 36 UTXO.
Các lần hợp nhất chạy mà không cần chữ ký của người dùng. Ring tùy chỉnh thiết lập quyền hợp nhất riêng.
Khi sử dụng ví riêng tư nhúng, quá trình hợp nhất được thực hiện ngầm cho bạn.
Example for Merge
Example for Merge
Ví dụ: một ví riêng tư nắm giữ 1.296 USDC trong 1.296 UTXO sau khi nhận 1.296 giao dịch chuyển riêng tư, mỗi giao dịch có 1 USDC.
Một giao dịch chuyển chi tiêu tối đa 36 UTXO, vì vậy ví chi tiêu số dư theo hai giai đoạn:
- 36 giao dịch hợp nhất chạy song song và tạo 36 UTXO, mỗi UTXO có 36 USDC.
- Một giao dịch chuyển có 36 đầu vào chi tiêu toàn bộ số dư 1.296 USDC.
Khả năng xử lý đồng thời của UTXO
Người dùng có thể chi tiêu số dư riêng tư ngay khi giao dịch được hoàn tất. Một số dư riêng tư có thể được chi tiêu đồng thời khi được chia thành nhiều UTXO. Mỗi UTXO có thể được chi tiêu trong một giao dịch riêng biệt cùng lúc. Ví dụ: số dư gồm ba UTXO, mỗi UTXO có 100 USDC, có thể cấp tiền cho ba giao dịch chuyển tối đa 100 USDC cùng lúc. Ví chọn các UTXO cần chi tiêu.Tìm hiểu thêm
Overview
Ring, các bảo đảm về quyền riêng tư và luồng giao dịch.
Architecture
Cách ví, dịch vụ RPC và chương trình Solana tương tác với nhau.
Encryption and Privacy Guarantees
Cách tài sản được mã hóa và vai trò của cặp khóa được che chắn.
Custom Enterprise Rings
Tìm hiểu cách cấu hình Ring tùy chỉnh.