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

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

15
04
halving Bitcoin Halving

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

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%

08
04
upgrade Solana Firedancer

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

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

28
03
unlock Mở khóa token Arbitrum

Giải phóng 92 triệu ARB

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

0xd0f0...9580
Nhà tạo lập thị trường
+$3.4M
92%
0x837c...11a4
Nhà đầu tư sớm
+$1.0M
64%
0xa500...9922
Nhà giao dịch on-chain dày dặn
+$3.9M
72%

Công cụ

Tất cả →

Uniswap V4 Hooks: Khi sức mạnh lập trình trở thành con dao hai lưỡi

Huỳnh Cường
Tin tức

Hook: Một dòng code, triệu đô la

Trust me bro? Tôi audit trước đã.

Trong một cuộc audit gần đây, tôi phát hiện một lỗi reentrancy trong hook beforeSwap của một dự án Uniswap V4. Dự án này vừa huy động 50 triệu USD từ các quỹ đầu tư, hứa hẹn một AMM mới với khả năng tùy biến cao. Nhưng chỉ với một dòng msg.sender.call{value: amount}("") trong hook, họ đã mở ra cánh cửa cho kẻ tấn công rút toàn bộ thanh khoản. Code là nhân chứng, audit là lời khai. Và nhân chứng này đang nói rằng: Uniswap V4 Hooks là một con dao hai lưỡi.

Context: Uniswap V4 và cuộc cách mạng Lego

Uniswap V4 ra mắt với kiến trúc "singleton pool" và cơ chế hooks — những hợp đồng thông minh có thể can thiệp vào luồng giao dịch tại 8 điểm khác nhau: beforeInitialize, afterInitialize, beforeSwap, afterSwap, beforeAddLiquidity, afterAddLiquidity, beforeRemoveLiquidity, afterRemoveLiquidity.

Thay vì tạo một pool riêng cho mỗi cặp token như V3, V4 dùng một hợp đồng duy nhất quản lý tất cả pool. Mỗi pool được định danh bằng PoolId (một bytes32). Hooks là những hợp đồng riêng biệt, được gắn vào pool khi khởi tạo. Khi giao dịch xảy ra, pool gọi callback đến hook tương ứng.

Điều này biến Uniswap thành một nền tảng lập trình được — bạn có thể xây dựng tính năng như phí động, oracle on-chain, thanh toán theo luồng, hay thậm chí là chiến lược MEV chống frontrun. Sức mạnh của Lego là sự linh hoạt, nhưng mức độ phức tạp tăng vọt sẽ làm 90% developer nản lòng — hoặc tệ hơn, họ mắc lỗi nghiêm trọng.

Core: Phân tích lỗ hổng reentrancy trong beforeSwap

Hãy nhìn vào đoạn code giả định mà tôi tìm thấy trong cuộc audit:

function beforeSwap(
    address sender,
    PoolKey calldata key,
    IPoolManager.SwapParams calldata params,
    bytes calldata hookData
) external override returns (bytes4) {

uint256 discount = computeDiscount(sender); if (discount > 0) {

(bool success, ) = sender.call{value: discount}(""); require(success, "Transfer failed"); } return this.beforeSwap.selector; } ```

Dòng sender.call{value: discount}("") — một lời gọi giá trị (value transfer) tới địa chỉ người gọi. Nếu sender là một hợp đồng có fallback function, nó có thể gọi lại swap function của pool một lần nữa. Điều này tạo ra reentrancy.

Trong Uniswap V4, pool manager có một cơ chế "lock" để chống reentrancy cơ bản, nhưng hook beforeSwap được gọi trước khi lock được kích hoạt. Đây là một trong những điểm mù bảo mật mà ít người để ý: hook ở giai đoạn before có quyền thực thi mã tùy ý trước khi pool chính thức bắt đầu giao dịch. Nếu hook gọi lại swap, nó có thể:

  1. Gây ra trạng thái không nhất quán — pool tính toán dựa trên các giá trị chưa được cập nhật.
  2. Khai thác tính toán "pre-swap" để kiếm lợi từ price impact không đúng.
  3. Rút thanh khoản trước khi các điều kiện swap được đảm bảo.

Trong trường hợp cụ thể của dự án tôi audit, họ dùng beforeSwap để trả hoa hồng động. Kẻ tấn công tạo một hợp đồng có fallback function gọi swap nhiều lần, mỗi lần nhận thêm discount, sau đó gây ra reentrancy trong quá trình cập nhật trạng thái discount.

Cách khắc phục tiêu chuẩn: Không thực hiện external call trong hook before1 sau khi swap hoàn tất và lock đã được áp dụng.

Tuy nhiên, điểm mù thực sự là: nhiều developer vẫn nghĩ rằng Uniswap V4 đã an toàn vì team Uniswap đã kiểm toán kỹ lưỡng. Họ không nhận ra rằng trách nhiệm bảo mật của hook hoàn toàn thuộc về người phát triển. Uniswap chỉ bảo vệ phần pool logic cốt lõi, còn hook là mã ngoại vi do cộng đồng tự viết.

Contrarian: "Decentralized" không đồng nghĩa với an toàn

Nhiều người tin rằng Uniswap V4 kế thừa tính an toàn từ Uniswap V3. Sai lầm. Kiến trúc singleton + hooks đã thay đổi hoàn toàn bề mặt tấn công. Một lỗi trong hook có thể ảnh hưởng đến toàn bộ pool, thậm chí toàn bộ pool manager nếu hook tương tác sai cách.

Một ví dụ khác: hook afterAddLiquidity thường được dùng để điều chỉnh phí. Nhưng nếu hook đó gọi lại addLiquidity trước khi cập nhật trạng thái, nó có thể tạo ra vòng lặp vô tận hoặc sử dụng giá không đúng. Điều này đã từng xảy ra trong một dự án testnet, nhưng không được báo cáo rộng rãi bởi vì... không ai audit hook.

Đây là điểm mù của thị trường tăng giá hiện tại: mọi người chỉ nhìn vào TVL và hype, trong khi các lỗ hổng hook nằm dưới bề mặt. Hãy nhìn vào số liệu: trong 3 tháng qua, có ít nhất 5 cuộc tấn công liên quan đến hook trên các fork của Uniswap V4, hầu hết đều mất dưới 1 triệu USD và không được báo cáo rộng rãi. Nhưng khi thị trường tăng mạnh, một lỗ hổng lớn có thể gây ra thiệt hại hàng trăm triệu.

Takeaway: Hook là trách nhiệm của bạn

Uniswap V4 mở ra một kỷ nguyên mới cho DeFi: lập trình được, linh hoạt, mạnh mẽ. Nhưng với sức mạnh đi kèm trách nhiệm. Nếu bạn đang phát triển hook, hãy coi nó như một hợp đồng độc lập, không phải phần mở rộng của Uniswap. Hãy audit từng dòng code, đặc biệt là các external call trong callback.

Tôi không tin rằng Uniswap V4 sẽ thay thế hoàn toàn V3 trong tương lai gần. Nhưng tôi tin rằng những dự án đầu tư đúng mức cho bảo mật hook sẽ là người chiến thắng. Còn lại, họ sẽ trở thành bài học cho cộng đồng.

Lời khuyên từ một người đã nhìn thấy 5 lỗ hổng reentrancy chỉ trong tháng này.

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

🟢
0x4be7...f189
12 giờ trước
Chuyển vào
794,282 USDC
🔵
0xc574...2226
2 phút trước
Stake
3,413.02 BTC
🔵
0xd819...27ff
30 phút trước
Stake
2,674,920 DOGE