21 UTXO cho vạn người chơi: leaderboard sharding on-chain trên Cardano Hydra
Vì sao bảng xếp hạng cho hàng vạn người chơi không thể nằm gọn trên một UTXO duy nhất, và cách sharding trạng thái qua các Hydra Head giải bài toán tranh chấp và thông lượng.
Trên mô hình eUTXO, một trạng thái dùng chung là một UTXO - và mỗi UTXO chỉ cho phép một giao dịch tiêu tại một thời điểm. Đặt cả một bảng xếp hạng lên một UTXO nghĩa là mọi lượt cập nhật đều tranh chấp cùng một đầu ra: thông lượng giảm còn một giao dịch mỗi block.
Vì sao một UTXO là không đủ
Xét một bảng xếp hạng nằm trên một đầu ra duy nhất:
-- Trạng thái sống trên đúng một UTXO → tuần tự hoá toàn cục
data Leaderboard = Leaderboard
{ entries :: [(PlayerId, Score)]
}
Mỗi lần một người chơi ghi điểm, giao dịch phải tiêu UTXO hiện tại và tạo UTXO mới. Hai người chơi trong cùng một block sẽ xung đột: chỉ một giao dịch thành công, phần còn lại phải thử lại.
Sharding trạng thái
Ý tưởng: chia không gian người chơi thành N phân mảnh, mỗi phân mảnh là một UTXO độc lập, để các cập nhật ở phân mảnh khác nhau không còn tranh chấp.
| Thiết kế | UTXO tranh chấp | Thông lượng |
|---|---|---|
| Một đầu ra | 1 | Thấp |
| Sharding 21 phân mảnh | 21 song song | Cao hơn ~21× |
Vai trò của Hydra
Hydra Head đưa giao dịch xuống off-chain nhưng vẫn giữ nguyên ngữ nghĩa eUTXO, cho phép cập nhật với độ trễ thấp rồi kết toán về Layer 1. Kết hợp sharding bên trong Head, ta có cả độ trễ thấp lẫn thông lượng cao.