Giá thị trường

BTC Bitcoin
$63,052.1 +0.54%
ETH Ethereum
$1,871.82 +0.33%
SOL Solana
$72.82 -0.46%
BNB BNB Chain
$577.6 -1.42%
XRP XRP Ledger
$1.06 +0.09%
DOGE Dogecoin
$0.0701 +1.36%
ADA Cardano
$0.1730 +2.37%
AVAX Avalanche
$6.37 -0.62%
DOT Polkadot
$0.7784 +2.75%
LINK Chainlink
$8.1 -0.42%

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

12
05
halving BCH Halving

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

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

28
03
unlock Mở khóa token Arbitrum

Giải phóng 92 triệu ARB

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%

08
04
upgrade Solana Firedancer

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

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

0xb783...ac3d
Nhà giao dịch on-chain dày dặn
+$2.5M
85%
0x1cca...676d
Ví lưu ký tổ chức
+$1.2M
89%
0xc751...6d0c
Nhà đầu tư sớm
+$3.2M
91%

Công cụ

Tất cả →
Khai thác

Lỗi làm tròn trong Uniswap V2: 50.000 USD thù lao và bài học về độ chính xác trong DeFi

Bùi Hải

Không có 'làm tròn an toàn' trong thế giới của những hợp đồng thông minh.

Năm 2020, DeFi Summer nóng đến mức ai cũng muốn launch pool thanh khoản. Tôi nhận một hợp đồng kiểm toán từ Uniswap Labs – không phải V3, mà là V2, cái đã chạy hàng tỷ USD. Thoạt nhìn, code sạch sẽ, test phủ 95%. Nhưng tôi có thói quen đọc từng dòng, kể cả những dòng toán học tưởng chừng đơn giản. Và tôi tìm thấy thứ gì đó: một lỗi logic trong cách tính phí khi swap token với số lượng nhỏ.

Context

Uniswap V2 sử dụng mô hình AMM xy=k. Mỗi swap trích 0.3% phí – 0.25% cho LP, 0.05% cho giao thức (nếu được bật). Công thức tính amountOut khá chuẩn: dựa trên lượng đầu vào, trừ phí, rồi áp dụng công thức xy. Vấn đề nằm ở chỗ làm tròn số nguyên trong EVM. Solidity không có số thập phân dấu phẩy động; mọi phép tính phải dùng số nguyên với precision. Trong Uniswap V2, phí được tính bằng cách nhân amountIn với 997/1000 (tức 0.3% phí, giữ lại 0.997). Tuy nhiên, do làm tròn xuống (floor division) khi chia cho 1000, một phần rất nhỏ giá trị bị mất mỗi giao dịch.

Tưởng như vô hại? Một giao dịch swap 1 USDC chỉ mất 0.000000001 USDC. Nhưng hãy nghĩ: Uniswap V2 xử lý hàng triệu giao dịch mỗi ngày. Tích lũy theo thời gian, số phí thất thoát lên đến 0.05% tổng phí của pool. Trong một pool lớn như USDC/ETH, số này có thể lên tới hàng chục nghìn USD mỗi tháng.

Core

Tôi mở Remix và viết proof-of-concept. Hàm swap trong UniswapV2Pair.sol:

Sợ & Tham

27

Sợ hãi

Tâm lý thị trường

Chỉ số mùa altcoin

44

Mùa Bitcoin

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

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

Tất cả →
1
Bitcoin
BTC
$63,052.1
1
Ethereum
ETH
$1,871.82
1
Solana
SOL
$72.82
1
BNB Chain
BNB
$577.6
1
XRP Ledger
XRP
$1.06
1
Dogecoin
DOGE
$0.0701
1
Cardano
ADA
$0.1730
1
Avalanche
AVAX
$6.37
1
Polkadot
DOT
$0.7784
1
Chainlink
LINK
$8.1

🐋 Theo dõi cá voi

🔴
0x993e...fd85
1 ngày trước
Chuyển ra
23,120 SOL
🔴
0x2c6d...9cfa
1 giờ trước
Chuyển ra
4,392,366 USDC
🟢
0x5161...fdef
1 ngày trước
Chuyển vào
3,001,387 DOGE