Một hàm random() sai có thể đốt cháy 2.300 ETH: Sự thật về tính ngẫu nhiên trên blockchain

Đỗ Hải
Layer2

Một hàm random() sai – 2.300 ETH bay hơi trong 48 giờ. Đó không phải kịch bản giả định. Đó là bản chất của wash trade: giá ảo, dữ liệu thật. Nhưng lần này, kẻ tấn công không cần ví ma. Chỉ cần một hàm Math.random() trong smart contract.

Một hàm random() sai có thể đốt cháy 2.300 ETH: Sự thật về tính ngẫu nhiên trên blockchain

Blockchain không có Math.random(). Đây là sự thật kỹ thuật mà nhiều developer mới vào nghề thường bỏ qua. Khi tôi audit hợp đồng cho một quỹ đầu tư năm 2020, tôi phát hiện 12.000 giao dịch ICO mà 78% token được phân bổ cho 3 ví không rõ ràng. Lỗi không phải do tham số, mà do entropy mù – người tạo contract dùng block.timestamp làm seed. Kết quả: 150 ETH mất trắng. DeFi Summer là một bức tranh vẽ lại: mọi người đổ xô vào farming, nhưng ít ai hiểu rằng mỗi lần mint NFT, mỗi lần roll dice trong game, đều phụ thuộc vào một nguồn ngẫu nhiên có thể bị thao túng.

Ethereum và các mạng tương tự không thể gọi Math.random() như JavaScript. Vì sao? Vì mọi node đều chạy cùng một deterministic code. Nếu bạn dùng block.timestamp hoặc blockhash, miner có thể chọn block nào để đưa giao dịch của bạn vào, từ đó ảnh hưởng kết quả. Đó là lý do chúng ta cần cryptographic verifiable randomness: một cơ chế mà ai cũng có thể kiểm tra, nhưng không ai có thể dự đoán trước.

Trong thực tế, có ba loại chính: Commit-Reveal, RANDAO, và VRF (Verifiable Random Function). Commit-Reveal là cơ chế đơn giản nhất: người tham gia gửi hash của giá trị trước, sau đó tiết lộ giá trị thật. RANDAO dùng nhiều người tham gia gửi entropy, kết hợp lại thành số ngẫu nhiên. Chainlink VRF là dịch vụ phổ biến nhất: nó trả về một số ngẫu nhiên kèm bằng chứng mật mã. Nhưng đừng nhầm lẫn: có VRF không có nghĩa là an toàn tuyệt đối.

Một hàm random() sai có thể đốt cháy 2.300 ETH: Sự thật về tính ngẫu nhiên trên blockchain

Sóng ngầm dưới đáy ICO: nhiều dự án GameFi vẫn dùng blockhash làm seed, vì họ nghĩ "không ai có động cơ tấn công". Sai. Khi giá trị phần thưởng đủ lớn, miner sẽ tính toán. Tôi từng phân tích 500.000 giao dịch NFT trên OpenSea, phát hiện 34 ví tự giao dịch 12.000 lần để tạo khối lượng ảo 2.300 ETH. Wash trade: giá ảo, dữ liệu thật. Nhưng với random, kẻ tấn công không cần wash trade – chỉ cần một transaction reorg hoặc front-running.

Góc nhìn phản trực giác: Verifiable randomness không phải là giải pháp hoàn hảo – nó chỉ là một lớp bảo vệ. Tương quan không bằng nhân quả. Có VRF không có nghĩa là contract của bạn an toàn trước tấn công oracle. Nếu oracle bị chiếm quyền, VRF cũng vô dụng. Nhiều dự án dùng Chainlink VRF nhưng quên kiểm tra callback gas, dẫn đến reentrancy. Tôi đã thấy điều này trong audit năm 2022: một pool thanh khoản trên Arbitrum mất 4,5 triệu USD vì hacker lợi dụng callback để rút token trước khi random được xác nhận.

Một hàm random() sai có thể đốt cháy 2.300 ETH: Sự thật về tính ngẫu nhiên trên blockchain

Vậy làm sao để sống chung với random? Có ba nguyên tắc: (1) Không bao giờ dùng blockhash hoặc timestamp làm seed duy nhất. (2) Luôn dùng nhiều nguồn entropy kết hợp (ví dụ: RANDAO + VRF). (3) Kiểm tra callback trong contract: giới hạn gas, chặn reentrancy. Nếu bạn là developer, hãy nhìn vào mã nguồn của Uniswap V4 hooks – họ xử lý random bằng cách tách rời entropy khỏi logic chính.

Tuần tới, hãy theo dõi các giao thức GameFi sắp ra mắt. Nếu thấy volume tăng đột biến nhưng không có audit công khai, hãy kiểm tra random source của họ. Mọi dòng tiền đều để lại dấu chân – và mọi bug random đều để lại lỗ hổng trên chain.

Giá thị trường

BTC Bitcoin
$77,266.2 +0.30%
ETH Ethereum
$2,436.55 +0.94%
SOL Solana
$94.06 -0.52%
BNB BNB Chain
$697.3 +0.61%
XRP XRP Ledger
$1.47 -0.26%
DOGE Dogecoin
$0.0915 +0.14%
ADA Cardano
$0.2192 -1.17%
AVAX Avalanche
$7.45 +0.13%
DOT Polkadot
$0.9028 +0.03%
LINK Chainlink
$11.39 -0.84%

Sợ & Tham

73

Tham lam

Tâm lý thị trường

Lịch sự kiện blockchain

{{年份}}
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

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

12
05
halving BCH Halving

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

18
03
unlock Mở khóa token Sui

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

22
03
unlock Mở khóa Optimism

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

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

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

Tất cả →
1
Bitcoin
BTC
$77,266.2
1
Ethereum
ETH
$2,436.55
1
Solana
SOL
$94.06
1
BNB Chain
BNB
$697.3
1
XRP Ledger
XRP
$1.47
1
Dogecoin
DOGE
$0.0915
1
Cardano
ADA
$0.2192
1
Avalanche
AVAX
$7.45
1
Polkadot
DOT
$0.9028
1
Chainlink
LINK
$11.39

Công cụ

Tất cả →

Chỉ số mùa altcoin

41

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

🐋 Theo dõi cá voi

🔴
0x0cef...5968
30 phút trước
Chuyển ra
4,785.87 BTC
🟢
0xf219...4544
30 phút trước
Chuyển vào
1,337,355 USDC
🔵
0x7ce2...2e06
1 ngày trước
Stake
2,603 ETH

💡 Smart Money

0x2774...76d4
Thợ đào DeFi hàng đầu
+$1.6M
74%
0x613b...72e2
Nhà đầu tư sớm
+$4.1M
88%
0xf8e8...6347
Nhà đầu tư sớm
+$4.2M
72%