Hồi đầu tuần, một tin đồn lan ra: Hong Kong Stock Exchange (HKEX) đang cân nhắc bỏ giờ nghỉ trưa, kéo dài thời gian giao dịch để bắt kịp các thị trường toàn cầu. Bài phân tích kinh tế vĩ mô tôi đọc được cho thấy đây là một động thái 'trung tính tích cực', tập trung vào lợi ích thanh khoản cho các nhà môi giới. Nhưng với tư cách là một kỹ sư giao thức nền tảng, tôi thấy một điểm mù thú vị: trong thế giới crypto – nơi thị trường chạy 24/7, không có khái niệm 'nghỉ trưa' – mỗi lần một sàn giao dịch tập trung (CEX) hay phi tập trung (DEX) thay đổi thời gian giao dịch, họ lại mở ra một họ lỗ hổng audit mới.
Câu chuyện bắt đầu từ năm 2022, khi tôi audit một smart contract cho một sàn DEX mới nổi. Họ quảng cáo 'giao dịch liên tục 24/7 – không giờ nghỉ'. Tôi hỏi họ: 'Vậy khi nào các bạn update oracle feed?' Im lặng. Và đó chính là điểm mấu chốt: thị trường crypto không ngủ, nhưng các nhà cung cấp dữ liệu bên ngoài (oracle) thì có lịch bảo trì, lỗi mạng, thậm chí là downtime có chủ đích. Một CEX kéo dài giờ giao dịch đồng nghĩa với việc họ phải đảm bảo hệ thống thanh toán, matching engine, và các oracle price feed hoạt động ổn định trong suốt thời gian đó. Nhưng không ai kiểm tra code của họ.
Context: Từ HKEX đến mô hình 24/7 của crypto
HKEX hiện tại có giờ giao dịch từ 9:30 sáng đến 4:00 chiều, nghỉ trưa 12:00-13:00. Việc bỏ giờ nghỉ trưa nhằm tăng tính liên tục, giảm chi phí cơ hội cho nhà đầu tư nước ngoài. Trong crypto, 'nghỉ trưa' không tồn tại. Bitcoin khai thác block mỗi 10 phút, Ethereum sau Merge mỗi 12 giây. Nhưng các sàn CEX như Binance, Coinbase vẫn có cửa sổ bảo trì – thường được lên lịch vào cuối tuần hoặc giờ thấp điểm. Vậy điều gì xảy ra nếu một sàn CEX quyết định không có bảo trì, chạy 24/7 tuyệt đối? Họ sẽ phải đối mặt với một vấn đề mà bài phân tích HKEX bỏ qua: độ trễ của oracle feed.
Từ kinh nghiệm phát triển module zkML trên Move của tôi năm ngoái, tôi biết rằng mọi dữ liệu on-chain đều đến từ một nguồn tin cậy. Nếu sàn CEX lấy giá từ Chainlink, mà Chainlink lại cập nhật mỗi 1-2 phút (hoặc lâu hơn nếu độ lệch giá không vượt ngưỡng), thì trong khoảng thời gian chênh lệch đó, người dùng có thể khai thác chênh lệch giá. Đó chưa phải là lỗi mạng, mà là lỗi thiết kế.
Core: Phân tích kỹ thuật – audit thời gian giao dịch mở rộng
Tôi nhớ lại lần audit Uniswap v2 năm 2020. Tôi phát hiện hàm swap có một bất thường trong cách tính feeTo khi có nhiều giao dịch liên tiếp trong cùng một block. Điều đó dẫn đến việc phí có thể bị tính sai nếu block time thay đổi. Nhưng với một sàn CEX, vấn đề còn nghiêm trọng hơn. Hãy xét mã giả của một matching engine cơ bản: