Khi tôi mở file trace của giao dịch thất bại trên trình thám thử Etherscan, điều đầu tiên đập vào mắt tôi không phải là lỗi gas hay một dòng revert thông thường. Đó là một khoảng lặng dài bất thường – 127 khối – giữa lúc một hợp đồng thông minh gọi đến oracle feed và thời điểm nó nhận được phản hồi. Đối với một hệ thống được quảng bá là 'phi tập trung và tức thời', 127 khối (khoảng 21 phút) là một thế kỷ. Và đó chính là nơi mà câu chuyện về vụ IPO thất bại, hay nói đúng hơn là 'vụ bỏ cọc' IPO của một Layer-2 danh tiếng, thực sự bắt đầu.
Bối cảnh mà hầu hết các bài báo tài chính đã bỏ lỡ là cấu trúc của chính giao thức đó. Layer-2 này, hãy tạm gọi nó là 'ChainY', không chỉ đơn thuần là một chuỗi sidechain. Kiến trúc của nó là một tập hợp các 'zk-rollup' được kết nối với nhau thông qua một cầu nối chung. Điểm mấu chốt ở đây, như tôi đã phát hiện ra khi đọc kỹ whitepaper của họ, là cầu nối này không sử dụng một bộ xác thực đa chữ ký (multi-sig) đơn giản. Thay vào đó, nó dựa vào một oracle feed duy nhất từ một nhà cung cấp dữ liệu bên ngoài để quyết định trạng thái của các chuỗi khác nhau. Đây là một thiết kế vay mượn từ các giao thức phái sinh, nhưng được áp dụng một cách nguy hiểm vào lớp nền tảng của một rollup. Vào thời điểm IPO được công bố, ChainY đã huy động hàng trăm triệu USD và hứa hẹn về một kỷ nguyên mới của khả năng mở rộng. Nhưng điều mà các dev không nói với bạn là sự phụ thuộc chết người của chúng vào một điểm lỗi duy nhất.
Điều tinh tế (và đáng sợ) trong thiết kế này là cách mà oracle feed kiểm soát toàn bộ quá trình xác thực giao dịch chéo chuỗi. Hãy cùng trace execution path của một giao dịch chuyển tài sản từ rollup A sang rollup B. Hợp đồng thông minh trên A sẽ gửi một bằng chứng (proof) đến cầu nối. Cầu nối, thay vì tự xác minh bằng chứng đó bằng mật mã, lại gọi đến oracle feed để hỏi: "Trạng thái mới nhất của rollup A có hợp lệ không?". Oracle này, thường là một node tập trung do chính đội ngũ ChainY vận hành, sẽ trả lời. Nếu oracle không phản hồi hoặc phản hồi sai, toàn bộ cầu nối sẽ bị đóng băng hoặc, tệ hơn, cho phép các giao dịch gian lận. Insight ở cấp độ giao thức mà hầu hết mọi người bỏ lỡ là sự đánh đổi này: bạn đánh đổi bảo mật mật mã của zk-rollup lấy 'tính linh hoạt' của một oracle tập trung, và kết quả là bạn tạo ra một hệ thống yếu hơn nhiều so với một sidechain đa chữ ký đơn giản.
Phần lớn phân tích sai về vụ sập giá token của ChainY sau IPO là do 'tâm lý thị trường' hay 'FUD'. Nhưng thực tế, nó bắt nguồn từ một lỗ hổng kỹ thuật. Một bot arbitrage đã phát hiện ra rằng, bằng cách spam một lượng lớn các giao dịch rác lên một trong các rollup phụ, nó có thể làm quá tải oracle feed. Khi oracle bị quá tải, nó bắt đầu trả về dữ liệu cũ (stale data). Điều này tạo ra cơ hội cho một cuộc tấn công 'sandwich' trên diện rộng giữa các rollup. Bot đã vay mượn một lượng lớn tài sản trên một sàn DEX, thực hiện giao dịch trên rollup A với giá cũ (do oracle cũ), và sau khi oracle được cập nhật, nó bán ra trên rollup B với giá mới. Lợi nhuận của bot là từ chênh lệch giá do chính độ trễ của oracle tạo ra. Khi sự việc bị phát hiện, nhóm phát triển ChainY đã phải tạm dừng cầu nối, 'cô lập' rollup A. Hành động 'cô lập' này, trên thực tế, là một sự thừa nhận rằng hệ thống của họ không có khả năng phục hồi. Từ góc nhìn của một auditor, một hệ thống yêu cầu can thiệp thủ công để sống sót sau một cuộc tấn công về cơ bản là một hệ thống đã thất bại. Đây không phải là một vụ hack do lỗi code Solidity, mà là một thất bại trong thiết kế kiến trúc.
Câu chuyện của ChainY là một lời nhắc nhở cay đắng về điểm mù của toàn bộ ngành DeFi: sự phụ thuộc quá mức vào cơ sở hạ tầng oracle tập trung. Hầu hết các giao thức đều nói về 'phi tập trung', nhưng khi bạn đào sâu vào, bạn thấy một cấu trúc lai ghép: một lớp ứng dụng phi tập trung chạy trên một lớp oracle cực kỳ tập trung. Đây là một nghịch lý. Chainlink, với các nút vận hành độc lập, là một bước tiến, nhưng nó không giải quyết được vấn đề gốc rễ: đó vẫn là một lớp dữ liệu bên ngoài mà không có sự đảm bảo về mặt toán học. Các Layer-2, được cho là đỉnh cao của khả năng mở rộng, lại đang lặp lại sai lầm tương tự. Họ xây dựng những cỗ máy mật mã tuyệt vời, nhưng lại kết nối chúng với nhau bằng những sợi dây thừng mục nát của các oracle tập trung.
Vậy bài học từ vụ 'bỏ cọc' IPO này là gì? Đối với tôi, sau 28 năm trong ngành, đó không phải là về định giá hay tâm lý nhà đầu tư. Đó là về một sự thật kỹ thuật khó chịu: cho đến khi các oracle feed có thể chứng minh được tính chính xác của chúng thông qua mật mã (như zk-proofs hoặc TEE), thì bất kỳ giao thức DeFi nào dựa vào chúng để vận hành các chức năng cốt lõi đều đang tồn tại trên một ranh giới mong manh. Sự phấn khích của thị trường tăng giá thường che giấu những lỗ hổng này. Nhưng khi thị trường đào sâu, như trong trường hợp ChainY, code luôn nói lên sự thật. Liệu ngành của chúng ta có thể học được bài học này, hay chúng ta sẽ chờ đợi một thất bại lớn hơn, một sự kiện 'sự sụp đổ của cầu nối' quy mô toàn hệ thống, để thực sự thay đổi?