Hook:

Trong tuần qua, Monetary Authority of Singapore (MAS) tuyên bố thắt chặt tỷ giá để đối phó với lạm phát do năng lượng. Hầu hết các trader crypto nhìn vào tin này và nghĩ: "OK, SGD mạnh lên, có thể dòng vốn chảy vào Singapore." Họ không đọc hợp đồng thông minh. Tôi đọc. Và tôi thấy một lỗ hổng bảo mật tiềm ẩn mà không ai trong DeFi đang nói đến: sự phụ thuộc ngầm vào tỷ giá hối đoái trong các giao thức cho vay và stablecoin.
Context:
Singapore sử dụng tỷ giá làm công cụ chính sách tiền tệ thay vì lãi suất. MAS điều hành biên độ NEER (Nominal Effective Exchange Rate) và khi họ “thắt chặt”, họ cho phép SGD tăng giá nhanh hơn so với rổ tiền tệ. Điều này trực tiếp làm giảm giá nhập khẩu (đặc biệt là năng lượng) và kiềm chế lạm phát đầu vào. Nhưng với crypto, tác động không đơn giản vậy.
Các giao thức DeFi lớn như Aave, Compound, hay các bridge cross-chain thường sử dụng oracle giá từ Chainlink hoặc tự xây dựng để định giá tài sản thế chấp. Khi SGD tăng mạnh so với USD, các tài sản được định giá bằng SGD (ví dụ: token đại diện cho trái phiếu chính phủ Singapore, hoặc stablecoin neo theo SGD) sẽ thay đổi giá trị tương đối. Nhưng oracle hiện tại có tính đến điều này không? Dựa trên kinh nghiệm audit của tôi, hầu hết các oracle chỉ lấy giá spot từ các sàn giao dịch tập trung, nơi SGD/USD có thể bị trễ hoặc không chính xác trong điều kiện biến động chính sách.
Core:
Hãy đi vào mã nguồn. Tôi đã từng audit một giao thức cho vay có trụ sở tại Singapore vào năm 2024. Họ chấp nhận tài sản thế chấp bằng một loại token tổng hợp mô phỏng SGD (gọi là sSGD). Hàm getPrice() trong oracle của họ trông như thế này:
function getPrice(address token) external view returns (uint256) {
(uint80 roundID, int256 price, , uint256 updatedAt, ) = priceFeed.latestRoundData();
require(updatedAt >= block.timestamp - 1 hours, "Stale data");
return uint256(price);
}
Nhìn có vẻ an toàn. Nhưng vấn đề là priceFeed ở đây là SGD/USD từ Chainlink. Trong thời gian MAS thắt chặt, SGD có thể tăng 2-3% trong vài giờ sau thông báo. Chainlink cập nhật mỗi giờ? Không, nó cập nhật khi có thay đổi giá đáng kể, nhưng ngưỡng thay đổi thường là 0.5% trên mỗi lần cập nhật. Vậy nếu SGD tăng 2% trong 10 phút, oracle có thể bị trễ 2-3 bước. Trong lúc đó, người dùng có thể vay quá mức dựa trên giá cũ, tạo ra cơ hội thanh lý hoặc thậm chí tấn công flash loan.
Tôi đã tự viết script mô phỏng kịch bản này. Giả sử một user deposit 1000 sSGD, giá trị thực tế là 1000 USD (1 sSGD = 1 USD). Khi SGD tăng 3%, giá trị sSGD trong mắt oracle vẫn là 1 USD (chưa kịp cập nhật). User có thể vay tới 80% giá trị (800 USD). Nhưng thực tế tài sản thế chấp đã trị giá 1030 USD, cho phép vay 824 USD – một khoảng chênh lệch 24 USD. Với flash loan, lợi nhuận có thể được nhân lên hàng trăm lần.
Đây không phải là lỗi của MAS mà là lỗi của thiết kế giao thức: họ giả định tỷ giá ổn định trong ngắn hạn. Nhưng sự kiện thắt chặt tỷ giá chính là lúc rủi ro xảy ra. Tôi gọi đây là "policy-driven oracle lag".
Contrarian:
Phần lớn các bài phân tích macro cho rằng MAS thắt chặt sẽ thu hút vốn ngoại vào Singapore, tốt cho crypto. Sai. Vốn chảy vào hệ thống ngân hàng truyền thống, không tự động vào DeFi. Thực tế, khi SGD tăng, các tổ chức nước ngoài sẽ bán tài sản rủi ro (bao gồm crypto) để mua SGD, gây áp lực giảm giá lên Bitcoin và altcoin. Hơn nữa, các giao thức DeFi neo theo SGD sẽ phải đối mặt với rủi ro thanh khoản khi tỷ giá thay đổi đột ngột. Lỗ hổng ở đây không phải ở chính sách của MAS, mà ở giả định ngầm của các nhà phát triển rằng tỷ giá luôn trơn tru và oracle luôn đúng.
Takeaway:
Tôi dự đoán trong 6 tháng tới, ít nhất một giao thức cho vay hoặc stablecoin tại Singapore sẽ gặp sự cố thanh lý hàng loạt do lag oracle từ biến động tỷ giá. Hãy đọc contract đi, thay vì tin vào tweet. Nếu bạn đang audit một giao thức có tài sản thế chấp bằng SGD hoặc bất kỳ loại tiền pháp định nào, hãy thêm kiểm tra độ trễ cập nhật và dự phòng tỷ giá. Còn không, hãy chuẩn bị cho một bài học đắt giá.