BTC $63,099.9 +0.62%
ETH $1,871.2 +0.92%
SOL $73.03 +0.07%
BNB $580.2 -1.07%
XRP $1.06 +0.17%
DOGE $0.0702 +1.95%
ADA $0.1751 +4.60%
AVAX $6.37 -0.02%
DOT $0.7710 +2.70%
LINK $8.11 +0.75%
⛽ ETH Gas 28 Gwei
Sợ&Tham
27
Quan điểm

Lỗ Hổng Trong Hợp Đồng Thông Minh: Cuộc Giải Phẫu Một Dự Án DeFi Mới Ra Mắt

Dương Dũng

Chỉ mới tuần trước, một dự án DeFi mới tên 'Nexus Yield' gọi vốn thành công 15 triệu USD từ các quỹ VC. Hôm nay, hợp đồng của họ bị khai thác mất 5 triệu USD. Nhưng thực tế, lỗi đã hiện hữu ngay từ dòng code đầu tiên.

Từ góc nhìn của một partner bảo mật crypto tại Thành Đô, tôi đã audit vài trăm hợp đồng. Mỗi lần thị trường tăng điểm, tôi lại thấy những dự án non nớt tràn vào, mang theo mã nguồn đầy lỗ hổng. Nexus Yield là một ví dụ điển hình.

## Bối Cảnh: Cuộc Chơi 'Yield Aggregator' Nexus Yield tự nhận là giao thức tổng hợp lợi nhuận trên nhiều chain, tối ưu hóa vị thế LP. Họ dùng chiến lược 'convex-style' để tăng APY. Trang web sạch sẽ, đội ngũ ẩn danh nhưng có 'LinkedIn' giả. Điều này kích hoạt 'thói quen hoài nghi thể chế hóa' của tôi: tôi kiểm tra chéo danh tiếng dự án trước khi audit.

## Mổ Xẻ Lạnh Lùng: Hàm 'withdraw' Và Lỗi 'Reentrancy' Cổ Điển Tôi đọc mã nguồn NexusYield.sol. Dòng 112: function withdraw(uint256 amount) external { uint256 shares = amount * totalSupply / poolBalance; _burn(msg.sender, shares); (bool success, ) = msg.sender.call{value: amount}(''); require(success, 'Transfer failed'); }.

Đây là lỗi 'reentrancy' kinh điển. Hàm gọi _burn trước, nhưng _burn không cập nhật totalSupply ngay lập tức? Sai. Thực tế, _burn cập nhật totalSupplybalanceOf sau khi emit event. Nhưng vấn đề là sau khi _burn hoàn tất, totalSupply đã giảm, nhưng poolBalance vẫn chưa thay đổi. Kẻ tấn công gọi withdraw nhiều lần trước khi poolBalance được đồng bộ, mỗi lần rút số lượng amount bằng với shares cũ. Chi tiết: poolBalance chỉ thay đổi khi token thực sự chuyển đi, nhưng totalSupply đã giảm. Tỷ lệ shares = amount * totalSupply / poolBalance trở nên méo mó.

Cụ thể: poolBalance = 1000 ETH, totalSupply = 1000 shares. Kẻ tấn công có 100 shares. Lần 1: withdraw 100 ETH. shares tính = 100 (1000-100)/ (1000) = 100900/1000 = 90 shares? Không, totalSupply đã update sau _burn. Công thức thực tế: shares = amount totalSupply / poolBalance. Sau _burn: totalSupply = 900, poolBalance vẫn 1000. shares = 100 900 / 1000 = 90 shares? Vô lý. Thực ra lỗi là poolBalance không giảm trước khi gọi _burn, nhưng totalSupply giảm. Kẻ tấn công có thể gọi với lượng ETH lớn hơn shares của nó để rút nhiều hơn. Nhưng tôi không đi sâu.

Bản chất: Hợp đồng không tuân theo mẫu 'checks-effects-interactions'. poolBalance chỉ giảm sau khi chuyển token, nhưng totalSupply giảm trước. Điều này tạo ra cơ hội cho reentrancy: kẻ tấn công gọi lại withdraw ngay sau khi nhận ETH, khi poolBalance chưa kịp giảm, dẫn đến shares tính sai.

## Phần Trái Ngược: Nhà Đầu Cơ Bảo Vệ Gì? Phần 'bò' cho rằng lỗi này chỉ do đội ngũ non. Nhưng theo tôi, đây là dấu hiệu của sự vô trách nhiệm có hệ thống. Họ không viết test cho reentrancy, không dùng OpenZeppelin ReentrancyGuard. Một dự án huy động 15 triệu USD mà không có audit độc lập? Họ chỉ có 'social audit' từ Discord. Trong thị trường tăng, nhiều người tin vào 'câu chuyện' hơn là code.

## Takeaway: Trách Nhiệm Của Người Audit Một dòng code, một tỷ đô la bay hơi. Lần này chỉ 5 triệu, nhưng bài học vẫn vậy. Khi bạn FOMO, hãy dừng lại và hỏi: mã nguồn đã được audit bởi ai? Nếu không có câu trả lời, hãy coi đó là một 'hố đen'.

Giá thị trường

Tiền điện tử Giá 24h
BTC Bitcoin
$63,099.9 +0.62%
ETH Ethereum
$1,871.2 +0.92%
SOL Solana
$73.03 +0.07%
BNB BNB Chain
$580.2 -1.07%
XRP XRP Ledger
$1.06 +0.17%
DOGE Dogecoin
$0.0702 +1.95%
ADA Cardano
$0.1751 +4.60%
AVAX Avalanche
$6.37 -0.02%
DOT Polkadot
$0.7710 +2.70%
LINK Chainlink
$8.11 +0.75%

Sợ & Tham

27

Sợ hãi

Tâm lý thị trường

Lịch sự kiện blockchain

{{年份}}
08
04
upgrade Solana Firedancer

Trình xác thực độc lập ra mắt trên mainnet

28
03
unlock Mở khóa token Arbitrum

Giải phóng 92 triệu ARB

22
03
unlock Mở khóa Optimism

Lượng cung lưu hành tăng khoảng 2%

12
05
halving BCH Halving

Sự kiện giảm một nửa phần thưởng khối

15
04
halving Bitcoin Halving

Phần thưởng khối giảm xuống 3,125 BTC

10
05
upgrade Nâng cấp Ethereum Pectra

Tăng giới hạn validator và trừu tượng hóa tài khoản

30
04
upgrade Nâng cấp Celestia Mainnet

Cải thiện hiệu quả lấy mẫu tính khả dụng dữ liệu

18
03
unlock Mở khóa token Sui

Phần đội ngũ và nhà đầu tư sớm được giải phóng

Chỉ số mùa altcoin

44

Mùa Bitcoin

Sự thống trị BTC Mùa altcoin

Theo dõi phí Gas

Ethereum 28 Gwei
BNB Chain 3 Gwei
Polygon 42 Gwei
Arbitrum 0.5 Gwei
Optimism 0.3 Gwei

Vốn hóa thị trường

Tất cả →
# Tiền điện tử Giá
1
Bitcoin BTC
$63,099.9
1
Ethereum ETH
$1,871.2
1
Solana SOL
$73.03
1
BNB Chain BNB
$580.2
1
XRP Ledger XRP
$1.06
1
Dogecoin DOGE
$0.0702
1
Cardano ADA
$0.1751
1
Avalanche AVAX
$6.37
1
Polkadot DOT
$0.7710
1
Chainlink LINK
$8.11

🐋 Theo dõi cá voi

🔵
0x9a9b...375e
3 giờ trước
Stake
1,258,477 USDC
🔵
0xa4d6...7a8f
3 giờ trước
Stake
1,192 ETH
🟢
0x0d30...1e11
2 phút trước
Chuyển vào
1,358,884 USDC

💡 Smart Money

0xaf7d...9ea5
Nhà giao dịch on-chain dày dặn
+$3.0M
81%
0x506d...da2a
Ví lưu ký tổ chức
+$2.8M
79%
0xa6e7...fe7e
Nhà giao dịch on-chain dày dặn
+$1.4M
78%

Công cụ

Tất cả →