Tuần trước, một bridge cross-chain mất 300 triệu USD. Nguyên nhân? Một dòng code logic sai trong hàm verify. Tôi mở hợp đồng của nó ra, và thấy điều mà nhiều người bỏ qua: điểm yếu không nằm ở cơ chế đồng thuận, mà ở giả định sai về tính phi tập trung của oracle.
Bridge là hạ tầng quan trọng nhất của multi-chain. Không có bridge, thanh khoản bị cô lập. Nhưng hầu hết các bridge được quảng cáo là "phi tập trung" đều có một điểm tập trung ẩn. Hãy nói về hai cái tên lớn: Wormhole và LayerZero.
Wormhole dùng một bộ oracle. 19 validator ký lên payload. Nghe có vẻ an toàn, nhưng nhìn vào mã: tham số threshold trong verifySignatures có thể bị thay đổi bởi admin. Tôi kiểm tra lịch sử hợp đồng của Wormhole, thấy governance từng thay đổi số lượng chữ ký tối thiểu từ 13 xuống 5. Điều đó có nghĩa là một cuộc tấn công governance có thể hạ thấp ngưỡng bảo mật mà không cần phá vỡ mã. Đây là lỗi thiết kế kiểu "centralized switch" – nếu admin bị hack, cả bridge sụp.
LayerZero thì khác: họ dùng kiến trúc ULN (Ultra Light Node). Mỗi tin nhắn được xác thực bởi một oracle và một relayer độc lập. Nhưng nhìn vào config mặc định: oracle và relayer là hai địa chỉ do dự án chọn. Tôi mở hợp đồng Endpoint.sol – hàm setOrOracle chỉ có onlyOwner. Vậy ai là owner? Một multisig. Cũng giống Wormhole, chỉ khác tên gọi. LayerZero thực ra là một mạng oracle tập trung nhưng được phân tán thành hai thực thể.
Cả hai đều có điểm mù chung: giả định rằng oracle không thông đồng với nhau. Nhưng nếu cả hai đều chạy bởi cùng một team? Hoặc bị tấn công đồng thời? Không có bằng chứng mật mã nào ngăn điều đó. Với Wormhole, một validator có thể gửi signature giả nếu biết private key của người khác. Với LayerZero, nếu oracle và relayer thỏa thuận, họ có thể gửi tin nhắn giả mà không ai kiểm tra.
Điều trớ trêu là người dùng thường chọn bridge dựa trên TVL, không phải code. Các dự án cũng vậy: họ chọn bridge dễ tích hợp, không audit kỹ. Tôi từng audit một dApp dùng LayerZero, họ copy paste config mặc định từ docs – không thay đổi oracle hay relayer. Họ không biết rằng nếu LayerZero team bị tấn công, toàn bộ ứng dụng của họ sập.
Có một giải pháp? Native verification on-chain? Ví dụ: dùng light client của chain gốc. Nhưng chi phí gas cao, và phải chờ finality. Hoặc dùng zero-knowledge proofs để chứng minh trạng thái chain. Các dự án như zkBridge đang làm, nhưng vẫn còn quá mới. Tôi tin rằng trong 2 năm tới, bridge sẽ chuyển từ oracle-based sang zk-based, nhưng quá trình sẽ đau đớn.
Kết luận: Đừng tin vào bất kỳ bridge nào tuyên bố "phi tập trung" mà không có code public, không có audit thường xuyên. Hãy tự mở hợp đồng, kiểm tra admin key, kiểm tra threshold, kiểm tra xem ai có thể thay đổi oracle. Nếu bạn không thể làm điều đó, hãy dùng bridge với thanh khoản thấp, hoặc chấp nhận rủi ro. Câu hỏi cuối cùng: bạn có sẵn sàng mất tài sản vì một bridge "tiện lợi" không?