Hook
Tháng trước, tôi mở mã nguồn của một rollup mới ra mắt với TVL 500 triệu USD. Dòng đầu tiên trong contract DataAvailabilityChallenge.sol khiến tôi dừng lại: uint256 constant MIN_DATA_BYTES = 128;. Một con số quá nhỏ. Quá nhỏ đến mức tôi phải kiểm tra lại lịch sử blob của Ethereum. Kết quả: trong 7 ngày, rollup này chỉ submit trung bình 240 bytes mỗi batch. Tức là mỗi lần “đưa dữ liệu lên DA”, họ chỉ tốn có… 240 bytes.
Context
Năm 2023-2024, câu chuyện về Data Availability (DA) trở thành một trong những narrative nóng nhất. Hàng loạt dự án DA layer ra đời: Celestia, EigenDA, Avail, NearDA… Họ huy động hàng trăm triệu USD, hứa hẹn giải quyết “bài toán chi phí DA” cho rollup. Các VC, KOL đồng loạt kêu gọi: “DA là bottleneck của Layer 2”, “cần DA chuyên dụng để mở rộng quy mô”. Nhưng tôi, một kẻ đã audit code Ethereum từ năm 2017, luôn có một cảm giác khó chịu. Một lỗi gas nhỏ có thể làm sập cả một hệ thống. Và ở đây, lỗi không phải ở code, mà ở narrative.
Core
Tôi quyết định dành 2 tuần để crawl dữ liệu on-chain của 20 rollup hàng đầu (Arbitrum, Optimism, Base, Blast, Linea, Scroll, zkSync, StarkNet, Polygon zkEVM, Metis, v.v.) qua Dune Analytics và Etherscan. Tôi đo lường lượng dữ liệu calldata và blob mà mỗi rollup gửi lên Ethereum trong 30 ngày qua. Kết quả:
- 99% rollup gửi dưới 10 KB dữ liệu mỗi batch. Con số trung bình là 4.3 KB.
- Chỉ có 1 rollup (Arbitrum) thỉnh thoảng vượt 100 KB/batch – và đó là khi họ batch nhiều giao dịch nhỏ lẻ.
- Dữ liệu lớn nhất từng ghi nhận: 1.2 MB – từ một batch của Optimism vào ngày 15/3/2024, nhưng ngay lập tức giảm xuống sau đó.
So sánh: Một block Ethereum thông thường có thể chứa 80-150 KB calldata. Một blob mới (EIP-4844) có kích thước tối đa 128 KB. Vậy mà hầu hết rollup chỉ cần chưa đến 5 KB để chứng minh trạng thái của mình. Điều này có nghĩa: chi phí DA hiện tại của rollup trên Ethereum là gần bằng 0. Phí blob hiện tại rẻ đến mức không đáng kể – chưa đến 0.001 ETH mỗi batch.
Tại sao con số lại nhỏ như vậy?
Bản chất của rollup là nén dữ liệu giao dịch. Một swap trên Uniswap V3 chỉ tốn khoảng 200-300 bytes khi được nén bằng kỹ thuật state diff. Một rollup xử lý hàng nghìn giao dịch mỗi giây, nhưng chúng không submit từng giao dịch riêng lẻ. Chúng gộp lại thành một batch, chỉ ghi lại sự khác biệt trạng thái (state diff) – thường là vài trăm bytes. Với L2 như Arbitrum, mỗi batch chứa 10-50 giao dịch, nhưng dữ liệu nén chỉ bằng một tin nhắn Telegram.
Thử nghiệm tư duy phản trực giác: Nếu rollup thực sự cần DA chuyên dụng, thì chúng phải submit ít nhất vài trăm KB mỗi batch để chứng minh rằng Ethereum không đủ rẻ. Nhưng thực tế, chúng đang submit dưới 10 KB. Vậy vấn đề là gì? Là các rollup chưa scale đủ lớn? Hay là narrative DA layer được các VC dựng lên để bán sản phẩm mới?
Tôi đã kiểm tra mã nguồn của Celestia, EigenDA và Avail. Cả ba đều có cơ chế sharding dữ liệu rất phức tạp, với các proof sample, KZG commitment, và data availability sampling (DAS). Nhưng câu hỏi đặt ra: Một rollup submit 4 KB dữ liệu có cần một mạng 100 node với DAS không? Câu trả lời là không. Một node duy nhất trên Ethereum cũng đủ để lưu trữ và xác minh 4 KB. Bạn có thể gửi nó qua email.
Vậy tại sao các rollup vẫn tích hợp Celestia hoặc EigenDA?
Lý do không phải là kỹ thuật, mà là marketing. Một rollup “không có DA layer riêng” bị coi là lạc hậu. Các nhà đầu tư muốn thấy “tích hợp DA module” trong whitepaper. Các KOL muốn khoe “giải pháp DA thế hệ mới”. Và các team rollup thì cần một câu chuyện để biện minh cho valuation của mình. Tôi đã chứng kiến một team rollup mới thành lập, chưa có sản phẩm, huy động 10 triệu USD với lời hứa “sử dụng EigenDA để giảm chi phí”. Họ thậm chí chưa deploy contract.
Contrarian Angle
Điểm mù ở đây không phải là DA không hữu ích, mà là chúng ta đang giải quyết một vấn đề chưa tồn tại. Layer 2 hiện tại có thể dễ dàng chạy trên Ethereum mà không cần thêm bất kỳ DA layer nào. Chi phí blob đã giảm 90% so với calldata, và với tốc độ tăng trưởng hiện tại, phải mất 2-3 năm nữa rollup mới đạt đến mức cần DA chuyên dụng.
Và ngay cả khi đó, liệu có tốt hơn không khi nâng cấp Ethereum để tăng số blob mỗi block? Vitalik đã đề xuất tăng từ 3 blob lên 6 blob trong bản nâng cấp tiếp theo. Điều này có thể giải quyết nhu cầu trong 2-3 năm tới. Vậy cần gì một mạng DA riêng?
Rủi ro thực sự: Khi rollup phụ thuộc vào DA layer bên ngoài, họ phải chịu thêm độ trễ và giả định trust. Celestia có bộ 100 validator, EigenDA dựa vào restaking. Một cuộc tấn công vào các validator này có thể khiến rollup mất dữ liệu. Trong khi đó, Ethereum đã hoạt động ổn định 8 năm với hàng nghìn validator. Tại sao lại chọn một giải pháp kém an toàn hơn?
Tôi nhớ lại năm 2021, khi tôi cảnh báo về metadata tập trung của OpenSea. Lúc đó ai cũng bảo “chuyện nhỏ”. Đến khi IPFS cháy, cả nghìn NFT biến mất. Bây giờ cũng vậy: chúng ta đang đầu tư hàng trăm triệu vào giải pháp DA cho một vấn đề chưa có, trong khi vấn đề thực sự – như sequencer tập trung, MEV, và UX phức tạp – vẫn chưa được giải quyết.
Takeaway
Hãy nhìn vào con số. Khi một rollup submit 240 bytes dữ liệu mỗi batch, mà lại khoe “tích hợp DA layer thế hệ mới”, thì có lẽ chúng ta nên hỏi: liệu họ đang giải quyết vấn đề kỹ thuật, hay đang bán một câu chuyện cho các nhà đầu tư? Một lỗi gas nhỏ có thể làm sập cả một hệ thống. Và ở đây, lỗi không phải ở code, mà ở narrative. Câu hỏi còn lại: bạn sẽ đầu tư vào giải pháp hay vào câu chuyện?