Crypto Cho Người Mới / Mô phỏng / Uniswap V4
Uniswap V4 — PoolManager Singleton & Hooks
V4 thay đổi kiến trúc nền tảng: một contract duy nhất (PoolManager) chứa toàn bộ pool, và hooks cho phép developer chèn logic tùy chỉnh vào 10 điểm trong vòng đời pool. Diagram tương tác dưới đây giải thích cách hooks hoạt động.
PoolManager Singleton
PoolManager.sol
Một contract giữ toàn bộ pool
Khác V2/V3 mỗi pool là contract riêng → V4 gom tất cả vào một singleton. Giảm ~99% gas khi deploy pool mới + cho phép .
10 Hook points — bật/tắt để xem
Hover từng hook để xem giải thích
Quy trình swap với các hooks bạn đã bật
- 1User gọi swap()Bắt đầu — bạn click 'Swap' trên frontend
- 2beforeSwap hookChỗ thay đổi fee động, kiểm tra điều kiện, hoặc dùng curve tùy chỉnh
- 3Core swap math (x·y=k hoặc tick)PoolManager tính output dựa trên reserves và range
- 4afterSwap hookUpdate oracle, log analytics, distribute reward
- 5Settle & return deltaTransfer net amount cuối cùng — tiết kiệm gas nhờ flash accounting
Ví dụ Hook thật — chọn để xem code
Dynamic Fee Hook
Tính phí động dựa trên volatility — pool dao động mạnh tăng phí lên 1%, ổn định giảm còn 0.05%.
function beforeSwap(...) {
uint24 dynamicFee = isVolatile() ? 10000 : 500;
poolManager.updateDynamicLPFee(key, dynamicFee);
return BaseHook.beforeSwap.selector;
}So sánh V2 → V3 → V4
V2 dùng pool-factory với liquidity full-range x·y=k và phí cố định 0.3%. V3 thêm concentrated liquidity theo range và 3 tier phí, nhưng vẫn deploy 1 contract mới mỗi pool. V4 gom hết vào singleton PoolManager (~10× rẻ hơn để tạo pool), hỗ trợ hooks chèn logic tùy chỉnh tại 10 điểm trong vòng đời pool, hỗ trợ dynamic fee, và xử lý native ETH mà không cần wrap.
4 loại hook phổ biến nhất
1) Dynamic fee: đổi phí theo volatility/volume — pool tự thích ứng với thị trường. 2) Oracle: mỗi swap update on-chain oracle để app khác có nguồn giá tin cậy. 3) Limit order: place lệnh limit on-chain mà không cần market maker — hook tự execute khi giá chạm. 4) MEV protection: commit-reveal scheme hoặc batch auction để chống sandwich attack.
Rủi ro khi swap qua pool có hook
Hook có toàn quyền với pool — bug = drain liquidity. Hook có thể chặn swap của bạn vì lý do tùy ý (KYC, blacklist…). Gas cost cao hơn pool không hook. Trước khi swap, kiểm tra hook address có được audit công khai không.
Câu hỏi thường gặp
+Uniswap V4 khác V3 ở đâu?
Hai thay đổi chính: (1) tất cả pool gom vào một contract duy nhất gọi PoolManager (singleton) — tiết kiệm ~99% gas tạo pool; (2) hooks cho phép developer chèn code tùy chỉnh trước/sau các operation (swap, add liquidity, ...) để build dynamic fee, oracle, MEV protection, hoặc bất kỳ logic nào.
+Hook là gì trong V4?
Hook là một smart contract được attach vào pool khi tạo. Mỗi pool có thể có hook để xử lý 10 điểm trong vòng đời: beforeInitialize, afterInitialize, beforeAddLiquidity, afterAddLiquidity, beforeRemoveLiquidity, afterRemoveLiquidity, beforeSwap, afterSwap, beforeDonate, afterDonate.
+Dynamic fee hook hoạt động thế nào?
Hook beforeSwap có thể đọc volatility/volume hiện tại rồi gọi poolManager.updateDynamicLPFee() để đổi phí trước khi swap thực thi. Ví dụ pool ETH/USDC tăng phí lên 1% trong bão thị trường, giảm còn 0.05% khi calm.
+Tại sao gom tất cả pool vào 1 contract?
Gas. V3 tạo pool mới = deploy contract mới (~500k gas). V4 tạo pool = ghi vào storage của PoolManager (~50k gas). Đồng thời swap qua nhiều pool có thể flash accounting trong cùng một giao dịch — không cần transfer trung gian.
+V4 có thay thế V3 không?
Không thay thế ngay. V3 đã có TVL lớn và sẽ hoạt động song song nhiều năm. V4 phù hợp cho pool yêu cầu custom logic (institutional, dynamic fee, oracle-integrated). Pool đơn giản như USDC/USDT vẫn nên chạy V3 cho đến khi V4 chứng minh ổn định.
+Tôi có thể viết hook riêng được không?
Có. V4 cho phép bất kỳ ai deploy hook contract và đính kèm vào pool mới. Tuy nhiên hook có toàn quyền với pool — nếu bug có thể drain liquidity. Audit kỹ trước khi dùng pool có hook lạ.