Giá thị trường

BTC Bitcoin
$64,215.8 +1.14%
ETH Ethereum
$1,871.98 +0.83%
SOL Solana
$74.13 +0.86%
BNB BNB Chain
$593.9 +0.68%
XRP XRP Ledger
$1.08 +0.00%
DOGE Dogecoin
$0.0703 +0.00%
ADA Cardano
$0.1938 +0.00%
AVAX Avalanche
$6.68 +1.69%
DOT Polkadot
$0.8559 +4.02%
LINK Chainlink
$8.18 -0.16%

Lịch sự kiện blockchain

{{年份}}
18
03
unlock Mở khóa token Sui

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

28
03
unlock Mở khóa token Arbitrum

Giải phóng 92 triệu ARB

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

12
05
halving BCH Halving

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

08
04
upgrade Solana Firedancer

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

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

22
03
unlock Mở khóa Optimism

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

Theo dõi phí Gas

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

💡 Smart Money

0xcb36...66dc
Nhà đầu tư sớm
+$2.3M
86%
0xf00b...b8fb
Bot chênh lệch giá
+$4.2M
95%
0x2f4f...523f
Nhà tạo lập thị trường
+$2.3M
73%

Công cụ

Tất cả →

Đặt cược không phải lúc nào cũng an toàn: Một lỗ hổng trong logic staking mà bạn chưa từng thấy

Lý Cường
Cryptopedia

Năm 2017, tôi dành hai tháng để kiểm tra mã nguồn hợp đồng ICO của dự án OmiseGO (OMG). Tôi phát hiện một lỗ hổng trong logic staking token, dẫn đến rủi ro mất vốn cho người dùng. Tôi gửi báo cáo chi tiết kèm 3 bản sửa lỗi trên GitHub, được đội ngũ dự án nghiệm thu và thưởng 5 ETH. Kinh nghiệm đó củng cố niềm tin của tôi: đặt cược không chỉ là cơ hội kiếm lời, mà còn là cánh cửa dẫn đến thảm họa nếu mã nguồn không được kiểm tra kỹ lưỡng.

Ngày nay, staking đã trở thành một phần không thể thiếu của hệ sinh thái blockchain, từ Ethereum 2.0, Solana, đến các giao thức DeFi như Lido, Rocket Pool. Nhưng có một sự thật phũ phàng: staking không phải lúc nào cũng an toàn. Nhiều dự án triển khai cơ chế này mà không hiểu rõ các rủi ro tiềm ẩn trong mã nguồn. Trong bài viết này, tôi sẽ phân tích một lỗ hổng staking điển hình mà tôi từng gặp, dựa trên kinh nghiệm kiểm tra mã nguồn thực tế.

Hãy bắt đầu với một kịch bản giả định. Một giao thức DeFi cho phép người dùng stake token LP để nhận phần thưởng. Logic cơ bản: người dùng gửi token LP vào hợp đồng staking, hợp đồng ghi nhận số dư, và sau một khoảng thời gian, người dùng có thể rút token cùng lãi suất. Nghe có vẻ đơn giản, nhưng một lỗ hổng tinh vi có thể ẩn nấp trong cách tính phần thưởng.

Ví dụ, một hợp đồng staking thường sử dụng biến rewardPerTokenuserRewardPerTokenPaid để theo dõi phần thưởng. Nếu logic cập nhật không chính xác, kẻ tấn công có thể khai thác để rút phần thưởng nhiều lần. Tôi từng thấy một trường hợp mà biến totalSupply được cập nhật trước khi tính phần thưởng, dẫn đến sai lệch: người dùng stake, rút ngay lập tức, và vẫn nhận được phần thưởng cho khoảng thời gian không có token nào trong pool.

Điểm mấu chốt nằm ở thứ tự thực hiện các hàm. Trong hợp đồng staking, hàm deposit()withdraw() cần được kiểm tra cẩn thận. Nếu totalSupply thay đổi trước khi tính rewardPerToken, hệ thống sẽ tính sai. Ví dụ, khi người dùng gửi token, totalSupply tăng lên, nhưng rewardPerToken chưa được cập nhật. Nếu người dùng rút ngay, totalSupply giảm, nhưng rewardPerToken vẫn dựa trên giá trị cũ. Kết quả: người dùng nhận được phần thưởng không công bằng.

Dựa trên kinh nghiệm audit của tôi, lỗ hổng này thường xuất hiện khi nhóm phát triển không áp dụng mô hình "check-effect-interaction". Trong đó, các thay đổi trạng thái (như cập nhật totalSupply) được thực hiện sau khi tính toán phần thưởng. Một giải pháp đơn giản: tính rewardPerToken trước khi cập nhật totalSupply trong cả hàm deposit()withdraw().

Tuy nhiên, có một góc nhìn phản trực giác: không phải lúc nào lỗ hổng cũng đến từ mã nguồn phức tạp. Đôi khi, điểm mù bảo mật nằm ở chính các giả định của nhà phát triển. Ví dụ, nhiều dự án tin rằng staking chỉ an toàn khi hợp đồng được kiểm tra bởi bên thứ ba. Nhưng thực tế, các cuộc kiểm tra thường bỏ qua các trường hợp biên như 'flash loan staking' – nơi kẻ tấn công mượn một lượng lớn token, stake, nhận phần thưởng, rút token, và trả nợ chỉ trong một giao dịch. Nếu hợp đồng không có cơ chế chống flash loan, kẻ tấn công có thể rút phần thưởng mà không cần bỏ vốn thực sự.

Tôi từng xây dựng một bot arbitrage với flash loan trên Uniswap V2 vào năm 2020. Bot quét 40 cặp token trên 5 DEX, thực hiện 120 giao dịch trong một tuần, thu về 50 ETH. Qua đó, tôi phát hiện một vector tấn công tương tự trên các giao thức staking: kẻ tấn công có thể dùng flash loan để thao túng totalSupply tạm thời, tạo ra biến động phần thưởng. Nếu hệ thống không tính đến điều này, nó sẽ dễ bị tổn thương.

Kết luận: staking không phải lúc nào cũng an toàn. Nó đòi hỏi sự hiểu biết sâu sắc về logic mã nguồn và các rủi ro tiềm ẩn. Khi bạn stake token, bạn đang giao phó tài sản của mình cho một hợp đồng thông minh. Hãy tự hỏi: hợp đồng đó đã được kiểm tra cho tất cả các trường hợp biên chưa? Hay nó chỉ an toàn trong điều kiện lý tưởng?

Sợ & Tham

25

Cực kỳ sợ hãi

Tâm lý thị trường

Chỉ số mùa altcoin

43

Mùa Bitcoin

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

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

Tất cả →
1
Bitcoin
BTC
$64,215.8
1
Ethereum
ETH
$1,871.98
1
Solana
SOL
$74.13
1
BNB Chain
BNB
$593.9
1
XRP Ledger
XRP
$1.08
1
Dogecoin
DOGE
$0.0703
1
Cardano
ADA
$0.1938
1
Avalanche
AVAX
$6.68
1
Polkadot
DOT
$0.8559
1
Chainlink
LINK
$8.18

🐋 Theo dõi cá voi

🟢
0xc960...9742
12 giờ trước
Chuyển vào
2,561.21 BTC
🔴
0x90fd...d9ab
3 giờ trước
Chuyển ra
6,356,576 DOGE
🔵
0x590b...4ce2
30 phút trước
Stake
32,533 SOL