BTC
$96,000
5.73%
ETH
$3,521.91
3.97%
HTX
$0.{5}2273
5.23%
SOL
$198.17
3.05%
BNB
$710
3.05%
lang
简体中文
繁體中文
English
Tiếng Việt
한국어
日本語
ภาษาไทย
Türkçe
Trang chủ
AI AI
Tin nhanh
Bài viết
Sự kiện
BlockBeats Pro
Thêm
Thông tin tài chính
Chuyên đề
Hệ sinh thái chuỗi khối
Mục nhập
Podcast
Data
OPRR
Partnered With:

Sau khi đọc sách trắng kỹ thuật Uniswap V3, chúng ta tìm thấy gì?

Đọc bài viết này mất 34 phút
Làm thế nào để hiểu khái niệm cốt lõi của Uniswap V3 từ góc độ mã - tính thanh khoản tập trung.
Tiêu đề gốc: "Uniswap - Giới thiệu Sách trắng về Công nghệ V3"
Nguồn gốc: Star Idea

Uniswap V3 đã thu hút sự chú ý rộng rãi ngay khi được công bố. So với V2, logic và mã phức tạp hơn. Cốt lõi của V3 là cung cấp thanh khoản (thanh khoản tập trung) thông qua phạm vi giao dịch nhằm giải quyết vấn đề sử dụng vốn khi LP cung cấp thanh khoản. Sử dụng vốn là gì? V3 rút ra công thức tính thanh khoản theo khoảng thời gian như thế nào? Làm thế nào để hiểu thanh khoản? Phí hoán đổi được tính như thế nào? Bài viết này bắt đầu bằng việc phân tích chi tiết về sách trắng kỹ thuật V3.


Trước tiên hãy cung cấp một số thông tin chính thức của Uniswap về V3:

p>

Giới thiệu chính thức về V3

https://uniswap.org/blog/uniswap- v3/


Sách trắng kỹ thuật

https://uniswap . org/whitepaper-v3.pdf


Thông minh Mã hợp đồng

https:/ /github.com/Uniswap/uniswap-v3-core

https://github.com/Uniswap/uniswap-v3-periphery


Bạn nên đọc kỹ sách trắng kỹ thuật trước, sau đó đọc mã hợp đồng thông minh và cuối cùng là kiểm tra phần giới thiệu chính thức. Sau khi hiểu sách trắng kỹ thuật, mã rất dễ hiểu. Chương đầu tiên của sách trắng kỹ thuật tóm tắt các tính năng kỹ thuật của Uniswap V3. Khái niệm cốt lõi là "Thanh khoản tập trung".

 

1 Tỷ lệ sử dụng quỹ


Chúng ta hãy xem tỷ lệ sử dụng vốn của Uniswap V2:


 

Hình trên hiển thị x/ trong nguồn vốn Đường cong thay đổi số lượng của y. Giá hiện tại trong nhóm là tại điểm c và được giả định dao động giữa điểm giá a và điểm giá b. Trượt từ điểm c đến điểm a tiêu tốn tối đa y_real; trượt từ điểm c đến điểm b tiêu tốn tối đa x_real. Nói cách khác, nếu điểm giá hiện tại c dao động giữa điểm a và điểm b thì nó chỉ cần tiêu thụ tối đa x_real và y_real. Về lý thuyết chỉ cần cung cấp x_real và y_real là đủ. Trên thực tế, như trong hình trên, tại các điểm giá c, x và y được cung cấp lần lượt lớn hơn x_real và y_real. Rõ ràng là số tiền trong x-x_real và y-y_real sẽ không bao giờ được sử dụng trong trường hợp này, còn được gọi là tiền nhàn rỗi.


Trong trường hợp này, tỷ lệ sử dụng quỹ là x_real/x hoặc y_real/y . Nếu biến động giá rất nhỏ thì hiệu suất sử dụng vốn rất thấp. Uniswap V3 đang cố gắng giải quyết vấn đề sử dụng vốn thấp. Ý tưởng tương đối đơn giản. Tất cả số tiền chỉ có thể được thêm vào một phạm vi nhất định và chỉ vào phạm vi mà giá có thể dao động. Cách thêm tính thanh khoản và cung cấp chức năng hoán đổi trong một phạm vi nhất định là trọng tâm của Uniswap V3. Hãy bắt đầu với Dự trữ ảo.

 

2 Quỹ quỹ ảo (Dự trữ ảo)


Các giao dịch của Uniswap áp dụng mô hình sản phẩm cố định (x*y=k). Cái gọi là nhóm vốn ảo (Dự trữ ảo) dùng để chỉ nhóm vốn vẫn nằm trên đường cong sản phẩm cố định và chỉ cung cấp thanh khoản trong một phạm vi nhất định:


 

Đường cong màu xanh đậm trong hình là đường cong sản phẩm cố định mà nhóm vốn ảo thỏa mãn. Đường cong số tiền thực tế cần thiết có màu cam trong hình. Công thức đường cong màu cam như sau:


 

Bạn có thể tưởng tượng rằng đường cong vốn ảo được dịch trên trục x/y, do đó a/ Điểm b trùng với trục x/y. Điều đó có nghĩa là, sử dụng một số tiền nhất định có thể đạt được hiệu quả của đường cong giao dịch "ảo".

Cách tính toán việc cung cấp nhóm vốn ảo trong một phạm vi nhất định, trước tiên chúng ta phải bắt đầu với sự hiểu biết sâu sắc về tính thanh khoản.

 

3 Thanh khoản (Thanh khoản - L)


Mô hình giao dịch sản phẩm cố định đáp ứng hai điều kiện trong nguồn vốn Số lượng token thỏa mãn: x*y = K. Nếu K=L^2 được đặt, x*y = L^2. L là cái mà chúng tôi gọi là tính thanh khoản. Công thức sau đây bắt nguồn từ mô hình giao dịch sản phẩm cố định:


 

Khi biết L và sqrt(P) thì Yêu cầu về vốn cũng vậy x và y có thể được suy ra.


 

Với công thức 6.6, khi thanh khoản không thay đổi (thanh khoản không được thêm hoặc bớt), thanh khoản có thể được xem là Sự thay đổi trong số tiền y trên mỗi đơn vị "biến động giá". "Biến động giá" được đặt trong dấu ngoặc kép vì thực chất đây là sự thay đổi về sqrt(P).


 

Đây là công thức cốt lõi của Uniswap V3 (6.7), sử dụng các giá trị tương đối (giá trị tương đối của tiền và giá) để tính toán tính thanh khoản. Cái gọi là thanh khoản là số tiền trên mỗi đơn vị "thay đổi giá". Trong điều kiện khối lượng giao dịch nhất định, nếu thanh khoản tốt, sự thay đổi giá sẽ nhỏ; nếu thanh khoản không đủ, biến động giá sẽ lớn.


 

Đặc biệt chú ý là tính thanh khoản trong một phạm vi khác với tính thanh khoản phổ biến của V2. Đối với tính thanh khoản trong một phạm vi, trọng tâm là "phạm vi". Thanh khoản ở các phạm vi khác nhau là không thể so sánh được. Sự khác biệt giữa tính thanh khoản của V2 và tính thanh khoản theo phạm vi như sau:


 

Tính thanh khoản của V2 là "phổ quát", có tính thanh khoản như nhau ở mọi mức giá. Tính thanh khoản của V3 bao gồm một loạt thanh khoản ở các phạm vi khác nhau. Nói một cách tương đối, tính thanh khoản quanh mức giá hiện tại là tương đối cao. Nhà cung cấp thanh khoản LP chỉ có thể thu phí giao dịch bằng cách cung cấp thanh khoản cho giao dịch. Để thu được nhiều phí giao dịch hơn và cải thiện việc sử dụng vốn, các nhà cung cấp thanh khoản sẽ cung cấp vốn trong phạm vi biến động giá hợp lý. Nói cách khác, đối với phí xử lý được tạo ra bởi các giao dịch hoán đổi trong một phạm vi nhất định, chỉ các nhà cung cấp thanh khoản trong phạm vi đó mới có thể nhận được phí xử lý. Để tính phí xử lý thu được trong mỗi khoảng thời gian, khái niệm và phương pháp tính Tick được giới thiệu.

 

4Tick


Cung cấp tính thanh khoản trong các phạm vi mang lại nhiều tình huống phức tạp: phạm vi và phạm vi bao phủ chồng chéo của các phạm vi. Vì tính thanh khoản trong các phạm vi khác nhau không thể so sánh được nên một khoản phí giao dịch nhất định không thể được trộn vào thanh khoản và rút cùng nhau khi thanh khoản bị xóa. Để giải quyết vấn đề này, Uniswap V3 đã đưa ra khái niệm Tick. Phí giao dịch được thanh toán theo thời gian thực và được ghi nhận riêng và không bị trộn vào thanh khoản. Mặc dù tính thanh khoản của toàn bộ phạm vi không thể so sánh được, nhưng ở một mức giá cụ thể (trên chip giá), tính thanh khoản có thể so sánh được. Uniswap V3 chia toàn bộ phạm vi giá (vô cực âm đến vô cực dương) thành các dấu tích (điểm giá):


 

Giá cuối cùng Giá của một điểm là một phần mười nghìn giá của điểm giá trước đó.


 

Mỗi Tick cũng có một số sê-ri duy nhất. Một khoảng (Vị trí) có thể được biểu thị bằng hai Ticks. Về mặt logic, phí giao dịch có thể được tính từng tích tắc một và các giao dịch được phân bổ trên mỗi tích tắc dựa trên tỷ lệ thanh khoản. Trước tiên chúng ta hãy xem cách tính hoán đổi phạm vi đánh dấu.

 

Hoán đổi trong vòng 5Tick


Giả sử có một lượng nhỏ y cần được hoán đổi thành x. Sử dụng công thức ở 6.13, có thể tính được sự thay đổi giá do thay đổi của y.


 

Số lượng x trao đổi có thể được tính bằng cách sử dụng công thức 6.15.


 

Uniswap V3 đặt các mức phí giao dịch khác nhau cho cùng một cặp giao dịch: 0,05%, 0,3% và 1% (bạn cũng có thể thêm các mức phí khác giá). Nếu Y được đổi lấy X, phí xử lý sẽ được khấu trừ trước khi việc trao đổi được thực hiện.


Chỉ hỗ trợ một tỷ giá trong cùng một nhóm giao dịch. Nói cách khác, các phạm vi giá khác nhau được hỗ trợ trong nhóm giao dịch nhưng tất cả chúng đều có cùng tỷ lệ. Nếu bạn cần thêm nhóm giao dịch với các mức phí giao dịch khác nhau cho cùng một cặp giao dịch, bạn phải tạo nhóm giao dịch mới.


Tiếp theo, hãy đi sâu vào cách thêm/loại bỏ tính thanh khoản và giao dịch Logic tính toán chi phí.

 

6Thêm/Xóa tính thanh khoản


Việc thêm/bớt thanh khoản của V3 là thêm hoặc bớt thanh khoản trong một phạm vi nhất định theo mức giá hiện tại. Tất cả việc bổ sung/loại bỏ thanh khoản đều sử dụng công thức sau:


 

Lưu ý rằng những thay đổi về giá không liên quan đến quy mô của phạm vi, nhưng Nó nhằm cung cấp tính thanh khoản trong một phạm vi nhất định. So với giá hiện tại, sự thay đổi giá tương ứng với "yêu cầu thay đổi quỹ tương ứng".


Được chia thành ba tình huống, phạm vi thanh khoản bạn muốn thêm mối quan hệ với giá hiện hành.


Giá hiện tại nằm trong phạm vi giá thanh khoản (il < = ic < iu)


 

Vì giá nằm trong phạm vi nên nếu giá trượt xuống il, y cần phải có quỹ cung cấp. Nếu giá trượt xuống iu, số tiền x tương ứng cần được cung cấp. Do đó, đối với delta_Y, giá thay đổi là sqrt(P) - sqrt(p(il)); đối với delta_X, giá thay đổi là 1/sqrt(P) - 1/sqrt(p(iu)).


Giá hiện tại nằm dưới phạm vi giá thanh khoản


 

Bởi vì giá hiện tại thấp hơn nhiều so với il, ngay cả khi nó trượt từ giá hiện tại sang iu, chỉ cần tiền x chứ không cần tiền y. Vì vậy, trong trường hợp này, delta_Y = 0. Vì trượt từ il sang iu cần có tiền cho toàn bộ phạm vi x, nên đối với delta_X, thay đổi giá là 1/sqrt(il) - 1/sqrt(p(iu)).


Giá hiện tại cao hơn phạm vi giá thanh khoản


Tương tự như tình huống đầu tiên, phân tích sẽ không được lặp lại.

 

7Phí giao dịch hoán đổi


Logic phức tạp nhất của Uniswap là tính phí giao dịch và phân phối chúng. Phí giao dịch tương ứng cần phải được rút trước khi thêm và loại bỏ thanh khoản.


Tổng thanh khoản trên Tick


Có thể tồn tại nhiều khoảng thời gian trên một Đánh dấu. Khi tính phí giao dịch, các khoản phí này cần được chia đều cho tổng thanh khoản trong nhiều phạm vi trên dấu tích này. Ghi delta_L (tổng thanh khoản của tất cả các khoảng giới hạn bởi Tick này) tại Tick ở ranh giới của mỗi khoảng.


Có một trạng thái toàn cầu: thanh khoản, giúp tiết kiệm giá hiện tại Tổng thanh khoản tương ứng với Tick. Khi giá biến động và vượt qua một Tick nhất định, thanh khoản sẽ tăng hoặc giảm (tùy theo chiều hướng biến động của giá). Ví dụ: khi giá vượt qua phạm vi từ trái sang phải, thanh khoản cần tăng khi vượt qua Tick đầu tiên của phạm vi và giảm khi vượt qua Tick cuối cùng, thanh khoản không tăng ở các Tick ở giữa và giảm dần. (delta_L là 0).  


 

Mức phí giao dịch trên một phạm vi (Vị thế)


Tính toán trên một phạm vi Mức phí giao dịch được tính bằng cách lấy tổng mức phí trừ đi mức phí nằm ngoài phạm vi. Ghi lại phíTăng trưởngBên ngoài ranh giới Đánh dấu vào một khoảng. Cái gọi là phíGrowthOutside là tổng mức phí theo hướng "khác". Hướng còn lại liên quan đến hướng đi qua Tick hiện tại. Khi giá vượt qua một Tick từ trái sang phải, phíGrowthOutside đề cập đến mức phí cho tất cả các phạm vi ở bên trái của Tick. Nói một cách đơn giản, đó là tỷ lệ chi phí cho tất cả các phạm vi theo hướng ngược lại với hướng mà giá đang diễn ra. phíTăng trưởngBên ngoài được đại diện bởi fo. Vì fo là tổng tỷ lệ chi phí theo cả hai hướng của Tick nên tổng tỷ lệ chi phí theo hai hướng phải bằng fg (tỷ lệ chi phí toàn cầu). Vì vậy khi đi qua một Tick, fo trên Tick cần được đảo ngược:


 

Khi một quãng được tạo, trên quãng đó ranh giới của Tick cần được khởi tạo:


 

Nếu giá hiện tại lớn hơn giá Tick, bởi vì ngay cả khi giá hiện tại trong phạm vi đã đặt, Tuy nhiên, các khoản phí trước đó sẽ không được chia sẻ, vì vậy chúng ta có thể giả định một cách đơn giản rằng tất cả các khoản phí đều diễn ra theo giá Tick, nghĩa là fo=fg. Nếu giá của Tick lớn hơn giá hiện tại thì giá vẫn chưa vượt qua Tick, vì giả định rằng tất cả các khoản phí phát sinh trước đó đều thấp hơn giá Tick và không có phí nào cao hơn Tick, vì vậy fo=0. Trên cơ sở hiểu biết các logic này, trong quá trình hoán đổi, khi giá biến động, trong một phạm vi, tỷ lệ chi phí vượt quá Tick cao nhất và tỷ lệ chi phí thấp hơn Tick thấp nhất có thể được tính theo cách sau:


 

Lấy cách tính tỷ lệ chi phí dưới mức Tick tối thiểu làm ví dụ. Nếu ic>=i (giá hiện tại cao hơn Tick tối thiểu ), Tất cả các tỷ lệ chi phí bên dưới Đánh dấu là fo (như được xác định). Nếu ic<i, fo ghi lại tất cả các tỷ lệ chi phí cao hơn Tick, do đó nó cần được đảo ngược, tức là fg - fo. Sau khi có được tất cả chi phí nằm ngoài một phạm vi, hãy tính tỷ lệ chi phí trong phạm vi này:


 

Cơ sở tỷ lệ chi phí thu được ở trên, nhân tỷ lệ chi phí mức phí theo tính thanh khoản của phạm vi để tính phí được tính trong phạm vi đó.

 

Tóm tắt:


Ý tưởng cốt lõi của phiên bản Uniswap V3 là tập trung thanh khoản. Các nhà cung cấp thanh khoản có thể cung cấp thanh khoản trong một phạm vi nhất định và cải thiện việc sử dụng quỹ. Phí giao dịch thu được trong một phạm vi nhất định được chia đều cho tất cả các nhà cung cấp thanh khoản trong phạm vi đó. Uniswap V3 đã thiết kế mức độ chi tiết theo khoảng thời gian-Tick và rút ra quy trình thêm/xóa thanh khoản và tính phí. Trên cơ sở đó, Uniswap V3 cũng cập nhật việc triển khai oracle giá.


Bản gốc văn bản Liên kết


Chào mừng bạn tham gia cộng đồng chính thức của BlockBeats:

Nhóm Telegram đăng ký: https://t.me/theblockbeats

Nhóm Telegram thảo luận: https://t.me/BlockBeats_App

Tài khoản Twitter chính thức: https://twitter.com/BlockBeatsAsia

举报 Báo lỗi/Báo cáo
Chọn thư viện
Thêm mới thư viện
Hủy
Hoàn thành
Thêm mới thư viện
Chỉ mình tôi có thể nhìn thấy
Công khai
Lưu
Báo lỗi/Báo cáo
Gửi