Ngày 12 tháng 8, Harmony Protocol phát hiện một sự cố mint trái phép. Con số ban đầu là 4 tỷ ONE. Nhưng sau khi dựng lại on-chain, đội ngũ phát hiện con số thực tế lên tới 3.01 nghìn tỷ ONE – được phát hành qua 6 giao dịch tạo khối rỗng. Đây không phải lỗi cấp số học, mà là lỗi thiết kế cross-shard receipt replay.

Hãy bắt đầu từ cơ chế. Harmony Protocol là blockchain sharding, chia thành nhiều shard xử lý song song. Khi một giao dịch cross-shard xảy ra, shard nguồn tạo receipt, shard đích xác thực và thực thi. Logic này đòi hỏi mỗi receipt chỉ được xử lý một lần. Nhưng kẻ tấn công đã replay các receipt này – thực thi chúng nhiều lần trên shard đích, mỗi lần mint thêm ONE từ những khối không có giao dịch thực.
Về mặt kỹ thuật, lỗ hổng nằm ở quá trình xác thực receipt. Harmony sử dụng cơ chế cross-shard gồm hai bước: (1) receipt được ký bởi validator của shard nguồn, (2) shard đích kiểm tra chữ ký và tính hợp lệ. Nhưng kiểm tra này không bao gồm nonce hoặc số thứ tự duy nhất – thứ ngăn replay. Kẻ tấn công chỉ cần capture một receipt hợp lệ, sau đó gửi lại nó nhiều lần tới shard đích. Shard đích xác thực receipt qua chữ ký, thấy chữ ký đúng, tin rằng receipt chưa từng được xử lý, và thực thi mint.
Lỗ hổng này có thể tái tạo. Tôi từng audit các hợp đồng ICO năm 2017, nơi lỗi tràn số cho phép rút quỹ. Nhưng lỗi receipt replay tinh vi hơn – nó lợi dụng sự thiếu deterministic state trong cross-shard communication. Trong Uniswap v2, tôi từng phát hiện lỗi làm tròn phí, nhưng lỗi đó chỉ ảnh hưởng 0.1%. Lỗi này ảnh hưởng tới toàn bộ nguồn cung ONE.
Phân tích code: Harmony đã fix lỗi ở phiên bản v2026.1.1. Họ thêm kiểm tra receipt ID và quorum verification. Nhưng câu hỏi là: tại sao lỗi này tồn tại qua nhiều phiên bản? Dựa trên kinh nghiệm audit của tôi, các blockchain sharding thường tập trung vào hiệu năng, bỏ qua tính toàn vẹn message. Họ giả định rằng chữ ký đủ mạnh, nhưng quên rằng replay là một dạng tấn công không cần phá vỡ mật mã.
Contrarian: Nhiều người nói rằng lỗi Harmony là do sơ suất. Nhưng tôi cho rằng đây là vấn đề cố hữu trong thiết kế cross-shard. Khi bạn xử lý giao dịch giữa các shard, bạn cần một cơ chế đồng thuận về thứ tự và trạng thái. Nếu không có nonce, replay là không thể tránh khỏi. Điểm mù bảo mật thực sự không phải là việc thiếu nonce, mà là việc các nhà phát triển quá tin tưởng vào 'tính không thể giả mạo' của chữ ký. Họ quên rằng chữ ký chỉ xác thực nguồn gốc, không xác thực tính duy nhất.

Một hệ thống cross-shard 'an toàn' phải có nonce kết hợp với signature. Harmony đã không có nonce. Và đây là bài học về 'an toàn' giả tạo. Khi bạn audit một blockchain, bạn không thể chỉ nhìn vào từng thành phần riêng lẻ, bạn phải nhìn vào luồng dữ liệu toàn cục. Lỗ hổng này có thể đã được phát hiện sớm hơn nếu ai đó mô phỏng cross-shard flow với công cụ fuzzing.
Takeaway: Harmony đã rollback về block 92,730,034. Họ đóng băng tài sản qua LayerZero. Nhưng câu hỏi lớn hơn là: liệu các sharding chain khác có lỗi tương tự? Tôi từng nghiên cứu Celestia trong bear market 2022, nơi DA sampling cũng có lỗi chứng minh. Các chain modular cũng gặp vấn đề tương tự. Lỗ hổng replay không phải là lỗi của riêng Harmony. Nó là hệ quả của việc thiết kế cross-shard state machine không có deterministic replay protection.

Liệu có 'an toàn' không? Không. Khi bạn mint 3.01 nghìn tỷ token từ hư vô, bạn đã phá vỡ nguyên lý cơ bản của blockchain: không thể mint từ không khí. Harmony đã sửa lỗi, nhưng uy tín của họ bị ảnh hưởng. Đây là bài học cho tất cả các dự án sharding: hãy kiểm tra receipt replay hai lần, ba lần. Và đừng tin rằng chữ ký là đủ.
Trong thị trường tăng hiện tại, FOMO đang che giấu những lỗi kỹ thuật nghiêm trọng. Dự án vừa huy động vốn lớn, nhưng lỗi này cho thấy code không được audit kỹ. Tôi đã từng chứng kiến điều tương tự trong NFT Marketplace năm 2021, nơi lỗi đấu giá Hà Lan bị bỏ qua vì đội ngũ quá tự tin. Lần này, Harmony phải trả giá bằng việc rollback toàn bộ mạng.
Kết luận: Khi bạn audit cross-shard, đừng chỉ nhìn vào signature verification. Hãy nhìn vào state machine determinism. Nếu không có nonce, bạn sẽ bị replay. Và nếu bị replay, bạn sẽ mất tất cả. Đây là điều mà tôi gọi là 'an toàn' có thể tái tạo – bạn có thể tự mình kiểm tra bằng cách fork code và chạy thử nghiệm.
Tôi khuyên các nhà phát triển: hãy thêm nonce và kiểm tra receipt ID ngay từ đầu. Đừng đợi đến khi bị tấn công. Harmony đã học được bài học đó. Nhưng câu hỏi là: liệu các dự án khác có học được không?