Giải thích cơ chế Hook của Uniswap v4: Tiềm năng và rủi ro an toàn đồng tồn tại

robot
Đang tạo bản tóm tắt

Cơ chế Hook của Uniswap v4: Tiềm năng và Thách thức đồng hành

Uniswap v4 sắp ra mắt, lần nâng cấp này giới thiệu nhiều tính năng đổi mới, trong đó cơ chế Hook được chú ý đặc biệt.

Cơ chế Hook cho phép thực thi mã tùy chỉnh tại các nút cụ thể trong vòng đời của pool thanh khoản, làm tăng đáng kể khả năng mở rộng và tính linh hoạt của pool. Tuy nhiên, độ phức tạp của Hook cũng mang lại những rủi ro an ninh tiềm ẩn mới. Bài viết này sẽ giới thiệu hệ thống các vấn đề an ninh và rủi ro tiềm ẩn liên quan đến cơ chế Hook, nhằm thúc đẩy sự phát triển an toàn của cộng đồng.

Cơ chế cốt lõi của Uniswap v4

Ba tính năng quan trọng của Uniswap v4 là Hook, kiến trúc đơn thể và kế toán chớp nhoáng.

Móc

Hook là hợp đồng hoạt động ở các giai đoạn khác nhau của vòng đời của quỹ thanh khoản, thông qua việc giới thiệu Hook có thể đạt được hỗ trợ động phí nguyên bản, thêm lệnh giới hạn trên chuỗi, thực hiện thị trường phân tán các đơn hàng lớn thông qua trung bình trọng số theo thời gian, v.v. Hiện tại có 8 callback Hook, được chia thành 4 nhóm:

  • trướcKhởiTạo/sauKhởiTạo
  • trướcSửaĐổiVịTrí/sauSửaĐổiVịTrí
  • trướcHoán đổi/sauHoán đổi
  • trướcDonate/sauDonate

Tại sao nói Hook là một "con dao hai lưỡi" của Uniswap V4?

Mẫu đơn, ghi sổ chớp nhoáng và cơ chế khóa

Kiến trúc đơn thể và ghi sổ chớp nhoáng nhằm nâng cao hiệu suất bằng cách giảm chi phí và đảm bảo hiệu quả. Nó giới thiệu một hợp đồng PoolManager để lưu trữ và quản lý trạng thái của tất cả các bể.

Phiên bản v4 đã giới thiệu tính năng ghi sổ nhanh và cơ chế khóa. Cách hoạt động của cơ chế khóa như sau:

  1. hợp đồng locker yêu cầu lock trên PoolManager
  2. PoolManager thêm địa chỉ hợp đồng locker vào hàng đợi lockData và gọi lại lockAcquired
  3. Hợp đồng locker thực hiện logic của nó trong callback
  4. PoolManager kiểm tra trạng thái hàng đợi lockData và sự gia tăng tiền tệ, xác thực sau đó xóa hợp đồng locker đó.

Cơ chế khóa ngăn chặn việc truy cập đồng thời và đảm bảo rằng tất cả giao dịch đều có thể được thanh toán. Mọi thay đổi sẽ được ghi lại trong số dư nội bộ của pool, việc chuyển khoản thực tế sẽ được thực hiện khi kết thúc thao tác.

Do vì sự tồn tại của cơ chế khóa, tài khoản bên ngoài không thể tương tác trực tiếp với PoolManager, mà phải thông qua hợp đồng. Chủ yếu có hai tình huống tương tác hợp đồng:

  • hợp đồng locker đến từ kho mã chính thức hoặc được triển khai bởi người dùng, có thể coi là tương tác thông qua bộ định tuyến
  • Hợp đồng locker và Hook được tích hợp vào cùng một hợp đồng, có thể coi là tương tác thông qua Hook.

Mô hình đe dọa

Chúng tôi chủ yếu xem xét hai loại mô hình đe dọa:

  • Mô hình đe dọa I: Hook bản thân là vô hại, nhưng có lỗ hổng.
  • Mô hình đe dọa II: Hook bản thân đã là độc hại

Vấn đề an ninh trong mô hình đe dọa I

Chúng tôi chủ yếu tập trung vào các lỗ hổng tiềm ẩn đặc trưng của phiên bản v4, thảo luận trọng tâm về hai loại Hook sau đây:

  1. Hook bảo quản quỹ của người dùng
  2. Hook lưu trữ dữ liệu trạng thái chính

Qua nghiên cứu, phát hiện ra hai loại vấn đề chính: vấn đề kiểm soát truy cập và vấn đề xác thực đầu vào.

Vấn đề kiểm soát truy cập

Hàm callback trong v4 chỉ nên được gọi bởi PoolManager. Nếu hàm tương ứng có thể được gọi bởi bất kỳ tài khoản nào, có thể dẫn đến việc phần thưởng bị nhận sai. Do đó, việc thiết lập cơ chế kiểm soát truy cập mạnh mẽ là vô cùng quan trọng.

Vấn đề xác thực đầu vào

Do bởi sự tồn tại của cơ chế khóa, người dùng phải nhận được lock thông qua hợp đồng để thực hiện các thao tác trong bể. Nhưng vẫn tồn tại các tình huống tấn công tiềm ẩn:

  • Hook người dùng chưa xác minh dự định tương tác với quỹ tiền
  • Một số hàm Hook quan trọng cho phép gọi từ bên ngoài một cách tùy ý.

Các cuộc gọi bên ngoài không được tin cậy có thể dẫn đến các vấn đề như tấn công tái nhập.

Biện pháp phòng ngừa

Để tránh các vấn đề an ninh như vậy, cần thực hiện kiểm soát truy cập cần thiết cho các hàm nhạy cảm, xác minh các tham số đầu vào và xem xét thực hiện bảo vệ tái nhập.

Tại sao Hook được coi là "con dao hai lưỡi" của Uniswap V4?

Vấn đề an ninh trong mô hình đe dọa II

Chúng tôi chia Hook thành hai loại:

  • Hook dạng ủy thác: không phải là điểm truy cập, người dùng tương tác với nó thông qua bộ định tuyến
  • Hook độc lập: là điểm truy cập, cho phép người dùng tương tác trực tiếp

Hook ủy thác

Tài sản của người dùng được chuyển nhượng hoặc ủy quyền cho router. Do PoolManager thực hiện kiểm tra số dư, việc đánh cắp tài sản trực tiếp bằng cách sử dụng Hook ác ý là khó khăn, nhưng có thể tấn công bằng cách thao túng cơ chế quản lý phí.

Hook độc lập

Hook độc lập đã nhận được nhiều quyền lực hơn, có thể thực hiện bất kỳ thao tác nào. Các rủi ro chính bao gồm:

  • Đại lý có thể nâng cấp
  • Hợp đồng có logic tự hủy

Biện pháp phòng ngừa

Đánh giá xem Hook có độc hại hay không là rất quan trọng. Đối với Hook loại lưu ký, cần chú ý đến hành vi quản lý chi phí; đối với Hook loại độc lập, cần chú ý đến khả năng nâng cấp.

Tại sao nói Hook là một "con dao hai lưỡi" của Uniswap V4?

Kết luận

Bài viết này tóm tắt các cơ chế cốt lõi liên quan đến cơ chế Hook của Uniswap v4 và các rủi ro an ninh tiềm ẩn. Các bài viết tiếp theo sẽ phân tích sâu về các vấn đề an ninh trong từng mô hình mối đe dọa.

UNI-4.39%
HOOK-5.2%
Xem bản gốc
Trang này có thể chứa nội dung của bên thứ ba, được cung cấp chỉ nhằm mục đích thông tin (không phải là tuyên bố/bảo đảm) và không được coi là sự chứng thực cho quan điểm của Gate hoặc là lời khuyên về tài chính hoặc chuyên môn. Xem Tuyên bố từ chối trách nhiệm để biết chi tiết.
  • Phần thưởng
  • 3
  • Chia sẻ
Bình luận
0/400
MonkeySeeMonkeyDovip
· 07-28 11:47
Cần đặc biệt chú trọng đến công tác phòng ngừa an toàn.
Xem bản gốcTrả lời0
PumpStrategistvip
· 07-28 09:37
Rủi ro vượt xa lợi nhuận
Xem bản gốcTrả lời0
NFTArchaeologistvip
· 07-25 13:54
An toàn phải được ưu tiên hàng đầu
Xem bản gốcTrả lời0
  • Ghim
Giao dịch tiền điện tử mọi lúc mọi nơi
qrCode
Quét để tải xuống ứng dụng Gate
Cộng đồng
Tiếng Việt
  • 简体中文
  • English
  • Tiếng Việt
  • 繁體中文
  • Español
  • Русский
  • Français (Afrique)
  • Português (Portugal)
  • Bahasa Indonesia
  • 日本語
  • بالعربية
  • Українська
  • Português (Brasil)