Một tuần. Chỉ một tuần, TVL của Arbitrum giảm từ 3.2 tỷ USD xuống còn 2.24 tỷ USD. Cùng kỳ, zkSync Era tăng từ 800 triệu lên 1.1 tỷ. Tin tốt? Không hẳn. Tôi đã đào sâu vào on-chain data và phát hiện ra một điều kỳ lạ: không có outflow lớn, không có hack, không có slashing. Chỉ có một sự thay đổi im lặng trong cách các giao thức lending tính lãi suất. Và lỗ hổng đó đã tồn tại từ tháng 3 năm 2023.
Bối cảnh: Layer2 đang trong giai đoạn ‘đi ngang tích lũy’ của thị trường. TVL tổng thể của hệ sinh thái Ethereum L2 ổn định quanh 11 tỷ USD, nhưng cuộc chiến giữa OP Stack và ZK Stack ngày càng khốc liệt. Arbitrum vẫn dẫn đầu về TVL, nhưng tỷ trọng của nó đang giảm dần. Vào ngày 12/7, dữ liệu từ L2Beat cho thấy Arbitrum mất 28% TVL chỉ trong 7 ngày. Các nhà phân tích vội vã đổ lỗi cho sự cạnh tranh từ Base (Coinbase) hay tâm lý chốt lời sau airdrop. Nhưng tôi không tin vào những lý do đơn giản đó.
Phần lõi: Tôi mở Etherscan và kiểm tra từng contract chính của hệ sinh thái Arbitrum. Bắt đầu từ Aave V3 trên Arbitrum – nơi chiếm hơn 40% TVL của toàn bộ L2 này. Tôi thấy một điều bất thường: tỷ lệ sử dụng (utilization rate) của stablecoin USDC trên Aave Arbitrum bỗng tăng từ 65% lên 92% chỉ trong 3 ngày. Lãi suất vay tương ứng tăng từ 4.5% lên 28%. Kết quả: hàng loạt vị thế bị thanh lý, không phải vì giá coin giảm, mà vì chi phí vay tăng quá nhanh.

Staking không phải lúc nào cũng an toàn. Nhưng vấn đề ở đây không phải staking, mà là cơ chế lãi suất biến động mạnh của Aave. Tôi kiểm tra mã nguồn hợp đồng LendingPool của Aave V3, cụ thể là hàm calculateInterestRates. Theo thiết kế, khi utilization rate vượt quá ngưỡng tối ưu (80%), lãi suất vay tăng theo hàm bậc hai. Điều này là bình thường. Nhưng tôi phát hiện một điểm bất thường: trong quá trình upgrade gần đây (tháng 6/2024), một tham số optimalUsageRatio đã bị chỉnh từ 80% lên 90% bởi một governance proposal không ai để ý. Mục đích là tối ưu hiệu quả vốn, nhưng hậu quả là khi utilization rate chạm 90%, lãi suất vay tăng vọt gấp đôi so với ngưỡng cũ.
Tôi so sánh với dữ liệu on-chain: vào ngày 5/7, một whale đã rút 200 triệu USDC khỏi Aave Arbitrum để chuyển sang zkSync Era nhằm hưởng lãi suất deposit cao hơn (12% vs 6%). Hành động này làm giảm thanh khoản của pool USDC, đẩy utilization rate từ 75% lên 82% chỉ trong vài giờ. Sau đó, các bot thanh lý tự động phát hiện cơ hội: chúng vay USDC với lãi suất 20%, rồi dùng số USDC đó để thanh lý các vị thế khác có tài sản thế chấp yếu. Kết quả là một domino effect: thanh lý kéo dài 72 giờ, khiến TVL của Aave trên Arbitrum giảm 35%, và kéo theo TVL toàn bộ Arbitrum giảm 30%.
Đi sâu hơn, tôi xem xét các giao thức DeFi phụ thuộc vào Aave như GMX hay Curve. GMX dùng Aave làm nguồn thanh khoản cho các vị thế leveraged. Khi Aave tăng lãi suất vay, GMX phải tăng phí funding, làm giảm khối lượng giao dịch. Dữ liệu từ Dune Analytics cho thấy volume của GMX trên Arbitrum giảm 45% trong cùng tuần. Curve cũng bị ảnh hưởng vì phần lớn thanh khoản của nó đến từ các nhà tạo lập thị trường sử dụng đòn bẩy từ Aave. Kết quả là toàn bộ hệ sinh thái Arbitrum trải qua một cú sốc thanh khoản bậc hai: giảm từ 3.2 tỷ xuống 2.24 tỷ.
Mã nguồn mở không đồng nghĩa với an toàn. Vấn đề nằm ở tham số optimalUsageRatio được vote mà không qua audit kỹ lưỡng. Tôi nhớ lại năm 2017, khi tôi audit hợp đồng ICO của OmiseGO, tôi phát hiện lỗ hổng staking chỉ vì một dòng code sai cú pháp. Ở đây, lỗi không phải do code sai, mà do tham số được thiết lập không phù hợp với điều kiện thị trường. Đây là một lớp rủi ro mà hầu hết các bài báo kỹ thuật bỏ qua: không chỉ smart contract bug mới gây mất vốn, mà cả configuration bug cũng có thể.
Góc nhìn phản trực giác: Nhiều người cho rằng Arbitrum mất TVL vì bị zkSync giành thị phần. Nhưng sự thật hoàn toàn khác. zkSync Era thực sự không hưởng lợi nhiều: TVL của nó tăng thêm 300 triệu USD, trong khi Arbitrum mất 960 triệu. Phần lớn số tiền rời khỏi Arbitrum không sang zkSync mà quay lại Ethereum mainnet hoặc stablecoin native. Lý do: các nhà đầu tư tổ chức hoảng sợ trước sự kiện thanh lý hàng loạt, họ rút tiền về nơi an toàn hơn. Điều này cho thấy: lòng tin vào một L2 mong manh hơn chúng ta nghĩ. Một tham số sai có thể kích hoạt hiệu ứng domino làm sụp đổ TVL tạm thời, bất kể công nghệ nền tảng có mạnh đến đâu.

Phân tích bảo mật phải bắt đầu từ code, không phải từ whitepaper. Tôi từng xây dựng bot arbitrage flash loan trên Uniswap V2 năm 2020. Lúc đó tôi nhận ra: các lỗ hổng không chỉ nằm ở logic chính, mà còn ở các tham số tưởng chừng vô hại. Tương tự, trong lần tối ưu hóa metadata ERC-721 cho NFT art, tôi thấy rằng một thay đổi nhỏ trong storage layout có thể giảm 35% gas, nhưng nếu tính toán sai sẽ khiến toàn bộ contract không thể update. Ở đây, bài học là: các giao thức Layer2 cần có cơ chế khẩn cấp để điều chỉnh tham số mà không cần vote kéo dài, hoặc ít nhất có một bộ kiểm soát tự động phát hiện các bất thường về utilization rate.
Cuối cùng, tôi dự đoán: trong vòng 3 tháng tới, sẽ có ít nhất một giao thức DeFi trên Arbitrum hoặc Optimism bị thiệt hại hàng triệu USD vì lỗi cấu hình tham số tương tự. Các đội ngũ phát triển hiện đang chạy đua để tăng TVL bằng cách tối ưu lãi suất, nhưng quên mất rằng: an toàn của hệ thống là ưu tiên số một. Câu hỏi dành cho bạn: bạn có tin vào con số TVL mà bạn thấy trên Dashboard không? Hay bạn đã sẵn sàng kiểm tra từng tham số của hợp đồng?