Phần 4: Tìm Hiểu Về Tick Bit Map Trong Uniswap V3
Trong phần này, chúng ta sẽ khám phá khái niệm Tick Bit Map, một thành phần quan trọng để xác định nhanh chóng ranh giới của các khoảng giá (price-range) trong giao thức Uniswap V3. Điều này cực kỳ cần thiết vì cấu trúc giá linh hoạt của Uniswap không yêu cầu các khoảng giá phải đồng đều, dẫn đến nhiều thách thức trong việc xác định giới hạn giá.
4.1 Hiểu Về Tick Và Liquidity Gross
Như đã đề cập ở bài trước, mỗi khi một người dùng thêm thanh khoản vào các khoảng giá, việc xác định được điểm kết thúc của các giao dịch swap không phải là điều đơn giản. Ví dụ, nếu Alice thêm 60L vào khoảng giá D-E và Bob thêm 60L vào F-G, và sau đó Carol thêm 60L vào E-F, thì liệu có thể hợp nhất ba khoảng D-E, E-F, và F-G thành một khoảng lớn D-G hay không? Câu trả lời là không.
Trong trường hợp một lệnh swap dịch chuyển từ D-E sang E-F, thì Bob sẽ không thể sử dụng thanh khoản của mình từ khoảng F-G. Do đó, cần phải có một phương pháp đáng tin cậy để xác định những giới hạn này. Nếu ta có liquidityGross lớn hơn 0, thì tick đó không chỉ là điểm dừng cho một khoảng giá mà còn có thể là điểm dừng cho hai khoảng giá thấp và cao.
4.2 Tick Bit Map Lại Là Gì?
Trong Uniswap V3, việc duy trì một danh sách các tick với liquidityGross lớn hơn không thể được thực hiện một cách hiệu quả bằng cách duyệt qua tất cả các tick, vì điều này sẽ tiêu tốn rất nhiều gas. Thay vào đó, chúng ta sử dụng một cấu trúc Bit Map để đánh dấu các tick có liquidityGross lớn hơn 0.
Mỗi tick sẽ được biểu diễn như một bit: nếu liquidityGross lớn hơn 0, bit sẽ là 1; nếu không, nó sẽ là 0. Bit Map sẽ được chia thành các words, mỗi word sẽ chứa 256 bits, cho phép nhanh chóng xác định được giá trị của các tick.
4.3 Thực Thi Trong Mã Nguồn
Mã nguồn của hàm update()
chứa logic cho các tick. Nếu một tick có liquidityGross > 0, hàm sẽ đánh dấu tick đó là đã khởi tạo. Điểm đáng lưu ý là hàm này chỉ được gọi khi có sự thay đổi về liquidityGross. Việc này đảm bảo mọi tick được đánh dấu chính xác trong quá trình hoạt động của giao thức.
4.4 Swap Qua Các Khoảng Trống
Một câu hỏi thú vị là liệu một lệnh swap có thể xuyên qua các khoảng giá không có thanh khoản hay không? Câu trả lời là có, miễn là các tick có liên quan không có thanh khoản.
Khi giá đi vào khoảng E-F, lượng thanh khoản có thể trở về 0 trong quá trình swap mà không ghi nhận được bất kỳ lượng token nào cho người dùng.
Tóm lại, Tick Bit Map là một công cụ mạnh mẽ và cần thiết trong việc tối ưu hóa quá trình swap trong Uniswap V3. Nó giúp giảm thiểu chi phí gas và cải thiện hiệu suất trong việc truy vấn các tick trong các khoảng giá.
source: viblo