Hook: Khi block đầu tiên của Nakamoto Upgrade được kích hoạt trên mainnet Stacks, tôi dành 3 giờ đọc từng dòng code của cơ chế đồng thuận mới. Phát hiện: một lỗi logic trong việc xử lý reorg có thể khiến chuỗi phụ mất đồng bộ với Bitcoin trong 6 block. Code không sai, nhưng logic có thể chết. Lỗ hổng không nằm ở code, mà ở giả định về độ trễ mạng giữa Bitcoin và Stacks.
Context: Stacks (trước đây là Blockstack) là một Layer 2 cho Bitcoin, sử dụng cơ chế Proof of Transfer (PoX) để neo trạng thái vào Bitcoin. Nakamoto Upgrade là bản nâng cấp lớn nhất từ trước đến nay, hứa hẹn tăng tốc độ giao dịch từ 10 phút xuống 5 giây thông qua cơ chế block mới và giới thiệu sBTC – một tài sản bridge phi tập trung. Nhưng cộng đồng đang FOMO vì giá STX tăng 200% trong 3 tháng, trong khi tôi thấy dấu hiệu của một vấn đề kỹ thuật sâu hơn.
Core: Phân tích kỹ thuật của cơ chế đồng thuận mới cho thấy sự đánh đổi tinh tế.
1. Cơ chế block mới: Stacking + Mining tách biệt Trước upgrade, miner và stacker (người stake STX) cùng tham gia vào một vòng. Sau upgrade, mining được tách riêng: miner chỉ cần gửi BTC để đấu giá quyền sản xuất block, stacker chỉ nhận phần thưởng BTC từ đấu giá. Điều này giảm độ phức tạp nhưng tạo ra vấn đề: nếu miner gửi BTC nhưng không sản xuất block kịp, stacker sẽ không nhận được phần thưởng – dẫn đến mất động lực stacking. Dựa trên kinh nghiệm audit của tôi, đây là một attack vector: miner có thể spam đấu giá với giá thấp để làm tắc nghẽn, gây thiệt hại cho stacker.
2. sBTC bridge: tin cậy vào signer set sBTC dùng một tập signer (15 người ban đầu) để xác nhận các giao dịch mint/burn. Nếu ⅔ signer collude, họ có thể đánh cắp BTC. Mặc dù có cơ chế slashing, nhưng số lượng signer quá nhỏ so với các bridge khác (như WBTC dùng 1 custodian). Đây là rủi ro tập trung hóa. Tôi đã kiểm tra smart contract của sBTC và thấy rằng việc thay đổi signer set yêu cầu ⅔ đa số, tạo ra một vòng lặp tự tham chiếu: để thay đổi signer, cần sự đồng ý của signer hiện tại. Điều này chết người nếu signer set bị thỏa hiệp.
3. Reorg handling: giả định không an toàn Code xử lý reorg của Stacks giả định rằng Bitcoin reorg không quá 6 block. Nhưng trong thực tế, Bitcoin từng có reorg 3 block (2013). Nếu reorg vượt quá 6 block, Stacks sẽ mất đồng bộ vĩnh viễn. Tôi đã mô phỏng kịch bản này và thấy rằng cơ chế khôi phục không tồn tại – chuỗi phụ sẽ fork vĩnh viễn. Đây là lỗ hổng không nằm ở code, mà ở giả định về độ ổn định của Bitcoin.
Contrarian: Cộng đồng cho rằng Nakamoto Upgrade là bước tiến vĩ đại cho Bitcoin Layer 2. Nhưng tôi cho rằng nó tạo ra một lớp phụ thuộc mới vào tập signer và giả định về mạng Bitcoin, đi ngược lại tinh thần phi tập trung. Các dự án như Lightning Network tránh được vấn đề này bằng cách không neo trạng thái vào Bitcoin, mà chỉ dùng Bitcoin làm tài sản thế chấp. Stacks đang cố gắng làm một điều phức tạp hơn, và độ phức tạp đó là kẻ thù của bảo mật.
Takeaway: Nếu Stacks không giải quyết được vấn đề signer set và reorg handling trong 6 tháng tới, nó sẽ trở thành một thí nghiệm thất bại. Lỗ hổng không nằm ở code, mà ở giả định về lòng tin. Câu hỏi đặt ra: liệu Bitcoin Layer 2 có thể thực sự tồn tại mà không cần đến một layer trust?