- PoR chứng minh custodian giữ đủ tài sản để cover nghĩa vụ. 3 loại: Attestation → Merkle PoR → ZK-PoR (phức tạp tăng dần, trust giảm dần).
- FTX có PoR tài sản nhưng không có PoL (Proof-of-Liabilities) — đây là lỗ hổng chết người.
- WBTC có thể verify on-chain: total supply ERC-20 vs BTC trong custody address = 1:1.
- ZK-PoR là hướng tốt nhất về lý thuyết nhưng chi phí compute vẫn cao — chưa phổ biến.
1Proof-of-Reserves Là Gì và Tại Sao Cần?
Vấn đề fractional reserve ẩn
Trong hệ thống ngân hàng truyền thống, ngân hàng được phép cho vay nhiều hơn tiền gửi thực tế (fractional reserve banking) vì được bảo hiểm và có lender of last resort. Trong crypto, không có cơ chế nào tương tự. Custodian hoặc exchange crypto có thể dùng tài sản của user để trade, cho vay, hoặc đầu cơ — và nếu khoản đầu tư xấu đi, tài sản của user mất mà user không hề biết cho đến khi quá muộn. Đây chính xác là điều đã xảy ra với FTX, Celsius, BlockFi, và Voyager.
Proof-of-Reserves (PoR) là cơ chế cho phép custodian chứng minh công khai rằng tài sản họ đang giữ ≥ tổng số dư người dùng. Mục tiêu: người dùng có thể verify solvency của custodian mà không cần đặt niềm tin mù quáng. PoR không phủ nhận rủi ro — nó làm rủi ro minh bạch hơn.
PoR áp dụng cho ai?
PoR quan trọng cho bất kỳ entity nào giữ tài sản thay mặt người dùng: centralized exchange (Binance, Coinbase, OKX), custodian (BitGo, Anchorage), và cả wrapped asset issuer (WBTC cần chứng minh BTC backing cho ERC-20 supply). Với wrapped BTC cụ thể, PoR là câu hỏi cốt lõi: "Có đủ BTC thực để back toàn bộ WBTC đang lưu thông không?"
2So Sánh 3 Phương Pháp
| Phương pháp | Verify bởi | Trust assumption | User self-verify? | Privacy | Dùng bởi |
|---|---|---|---|---|---|
| Attestation | Auditor/Firm bên ngoài | Trust auditor | Không | Cao (không tiết lộ detail) | BitGo/WBTC, Coinbase |
| Merkle PoR | User tự verify với Merkle proof | Trust exchange publish đúng root | Có — tự verify balance | Trung bình (path tiết lộ một phần) | Binance, Kraken, Bybit |
| ZK-PoR | ZK validity proof | Trust ZK math | Có — verify proof | Cao (privacy-preserving) | Polygon Hermez, nghiên cứu |
3Phương Pháp 1: Attestation
Cách hoạt động: Custodian thuê auditor bên ngoài (thường là Big 4 hoặc firm chuyên crypto như Armanino, Mazars) để kiểm tra tài sản tại thời điểm snapshot. Auditor verify rằng địa chỉ ví được khai báo thực sự thuộc custodian (thông qua signed message), đọc số dư on-chain, và so sánh với sổ kế toán nội bộ. Kết quả: báo cáo attestation ký bởi auditor xác nhận "tại thời điểm T, custodian giữ X tài sản".
Giới hạn: Attestation là point-in-time snapshot — không ngăn custodian dùng tài sản vào trước/sau thời điểm audit. Không có cơ chế continuous verification. User không thể tự verify — phải trust auditor. FTX từng có attestation nhưng không phát hiện được vấn đề với Alameda vì Alameda là entity riêng biệt không trong scope audit.
Áp dụng cho WBTC: BitGo cung cấp monthly attestation của BTC custody addresses. Đây là phương pháp PoR của WBTC — đơn giản nhưng có thể verify on-chain một cách thủ công vì Bitcoin blockchain public.
4Phương Pháp 2: Merkle Proof-of-Reserves
Cấu trúc Merkle Tree: Exchange tạo Merkle tree với mỗi leaf node chứa: (userID_hash, balance). Các nodes được hash pair-wise lên đến root. Exchange publish root hash này cùng với tổng số tài sản on-chain. Mỗi user được cấp Merkle path — chuỗi sibling hashes từ leaf của họ lên đến root.
Cách user tự verify: User hash thông tin của mình → verify path dẫn đến root đã publish → xác nhận balance của mình trong tổng. Nếu root hash khớp, balance của user được include. Không cần tin tưởng exchange hay auditor — chỉ cần tin vào SHA256.
// Verify Merkle path (pseudo-code)
function verifyMerklePath(
userBalance,
userId,
merklePath, // array of sibling hashes
publishedRoot
) {
let hash = sha256(userId + ":" + userBalance);
for (const siblingHash of merklePath) {
hash = sha256(min(hash, siblingHash) + max(hash, siblingHash));
}
return hash === publishedRoot; // true = your balance is included
}
Giới hạn: Merkle PoR chỉ prove rằng user balance có trong tree — không prove tổng tree = tổng liabilities. Exchange có thể tạo leaf nodes fake với negative balances để inflate tổng. Exchange cũng phải chứng minh tổng của tất cả leaf nodes ≤ tổng assets on-chain — cần thêm bước aggregate sum verification. Ngoài ra, Merkle path tiết lộ một phần cấu trúc tree — bị chỉ trích về privacy.
Binance là exchange lớn đầu tiên triển khai Merkle PoR (11/2022, sau sự cố FTX). Kraken, Bybit, OKX và nhiều exchange khác đã follow sau đó.
5Phương Pháp 3: ZK Proof-of-Reserves
Ý tưởng: Dùng zero-knowledge proof để chứng minh câu lệnh: "Tổng tài sản ≥ tổng nghĩa vụ, và không có nghĩa vụ âm nào" — mà không tiết lộ bất kỳ balance cá nhân hay địa chỉ ví nào. ZK-PoR giải quyết đồng thời cả assets và liabilities trong một proof duy nhất, không yêu cầu trust auditor hay trust exchange publish đúng.
Tại sao khó: ZK proof phải cover constraint phức tạp: tổng của hàng triệu user balances cùng lúc (từng balance phải ≥ 0), đối chiếu với on-chain assets. Chi phí compute để generate proof cho hàng triệu accounts vẫn rất cao. Hiện tại chỉ có một số exchange nhỏ và project nghiên cứu đã triển khai ZK-PoR trong production.
ZK-PoR cho wrapped assets: Về lý thuyết, tBTC và WBTC tương lai có thể dùng ZK-PoR để prove mọi lúc rằng total minted tokens ≤ total BTC locked, với privacy hoàn toàn cho custodian addresses. Đây là hướng phát triển 5-10 năm tới khi ZK tooling trưởng thành.
6FTX Paradox: Tại Sao PoR Không Đủ
FTX collapse (11/2022) là bài học rõ nhất về giới hạn của PoR. FTX có Proof-of-Reserves một phần — nhưng fail ở điểm cốt lõi: không có Proof-of-Liabilities.
FTX dùng FTT token làm collateral
FTX PoR bao gồm FTT — token tự phát hành bởi FTX, giá trị do FTX tự kiểm soát. Khi FTX publish "tài sản $8B", phần lớn trong đó là FTT. Khi Binance tuyên bố bán FTT, giá FTT sập, "tài sản" trong PoR biến mất — nhưng liabilities (số tiền user gửi) vẫn còn nguyên. Một PoR đúng đắn phải loại trừ self-issued tokens khỏi tài sản.
Loophole: mượn tài sản trước audit
Ngay cả Merkle PoR không ngăn được "window dressing": exchange mượn tài sản từ bên thứ ba ngay trước snapshot, tạo PoR, rồi trả lại sau. Đây là lý do cần continuous PoR (realtime, không chỉ monthly snapshot) kết hợp với PoL verified bởi auditor độc lập.
Bài học thực tế: Nhìn PoR như một điều kiện cần nhưng không đủ. PoR tốt khi: (1) assets không bao gồm self-issued token; (2) có PoL kèm theo; (3) continuous hoặc frequent, không phải annual; (4) auditor độc lập verify cả hai vế.
7Hướng Dẫn Tự Verify WBTC On-chain
WBTC là trường hợp đặc biệt: cả tài sản (BTC trên Bitcoin blockchain) và representative token (ERC-20 trên Ethereum) đều hoàn toàn public, bất kỳ ai cũng có thể verify mà không cần tool đặc biệt.
Bước 1: Kiểm tra WBTC Total Supply trên Ethereum
WBTC contract address: 0x2260FAC5E5542a773Aa44fBCfeDf7C193bc2C599
Truy cập Etherscan hoặc dùng eth_call để đọc totalSupply(). Kết quả là số WBTC đang lưu hành (đơn vị: satoshi, chia 108 để ra BTC). Ví dụ: totalSupply = 1.500.000 * 108 = 150.000 WBTC.
Bước 2: Kiểm tra BTC trong Custody
BitGo công bố danh sách custody addresses tại wbtc.network. Cộng tổng balance của tất cả địa chỉ này trên Bitcoin blockchain. Tool: blockchain.info, mempool.space, hoặc Bitcoin Core node nếu bạn tự run.
Bước 3: Đối chiếu
Verify condition: sum(BTC in custody) >= WBTC totalSupply / 1e8
Ví dụ:
BTC in custody addresses: 150,234.5 BTC
WBTC total supply: 150,000 WBTC (= 1.500.000 * 10^8 satoshi)
Ratio: 150,234.5 / 150,000 = 100.16% — fully backed ✓
Nếu ratio < 100%: WBTC under-collateralized (PoR fail)