Thảo luận chuyên sâu về cơ chế cho vay và thanh lý DeFi cũng như các nguyên tắc triển khai, rủi ro và trường hợp sử dụng của nó
Tiêu đề gốc: "Khái niệm cho vay DeFi Phần 2: Thanh lý"
Phần tổng hợp gốc: Kxp, BlockBeats
Phần tổng hợp gốc: Kxp, BlockBeats
tiêu đề cấp đầu tiên
Thế chấp quá mức và nợ khó đòi
Bạn có thể nhớ lại bài đăng trên blog trước đây của chúng tôi rằng người dùng giao thức chỉ có thể cho vay hoặc mượn tài sản dựa trên tỷ lệ phần trăm tài sản thế chấp mà họ cung cấp cho giao thức. Điều này có ý nghĩa, vì giao thức cần đảm bảo rằng nó có thể thu hồi tài sản của nó (hoặc bất kỳ tài sản nào khác có giá trị tương đương) từ bạn nếu bạn không trả được nợ. Quá trình thế chấp tài sản này bắt đầu trong tài chính truyền thống, chẳng hạn như ngày nay, nơi một người có thể đặt ngôi nhà hoặc chiếc Lamborghini của họ làm tài sản thế chấp để trả nợ.
Thế chấp dựa trên điều kiện tiên quyết là giá của tài sản thế chấp duy trì giá trị của nó - mặc dù giá của một ngôi nhà hoặc một chiếc Lamborghini không được đảm bảo, giá trị tương ứng của chúng tương đối ít biến động và ổn định hơn so với các tài sản như ERC 20 hoặc NFT.
Trong hầu hết các giao thức cho vay DeFi, tài sản cho vay được thế chấp của bạn phải có giá trị cao hơn giá trị khoản vay của bạn, được gọi là tài sản thế chấp quá mức.
Chỉ cho phép các khoản vay được thế chấp quá mức là có lợi nếu giao thức cho vay muốn duy trì sự ổn định tài chính. Hãy tưởng tượng bạn đặt một số tài sản làm tài sản thế chấp và giá trị của những tài sản đó đột nhiên thấp hơn giá trị của tài sản bạn đã vay từ giao thức. Bây giờ, tài sản thế chấp của bạn có giá trị thấp hơn những gì bạn nợ giao thức và bạn không có động lực để trả lại. Rốt cuộc, trong quá trình hoàn trả khoản vay, tài sản thế chấp mà bạn sẽ bảo lãnh hiện có giá trị thấp hơn số tiền thực sự cần thiết để trả khoản vay. Khoản vay này hiện đã mất khả năng thanh toán.
Mọi khoản vay không trả được đều gây bất lợi cho thỏa thuận mà nó có trong đó. Khoản nợ phát sinh từ các khoản vay mất khả năng thanh toán tạo ra một yếu tố không an toàn trong giao thức, xét cho cùng, số nợ là số tài sản mà người cho vay không thể thu hồi từ giao thức. Để nhấn mạnh mức độ tồi tệ của những khoản nợ xấu này: nếu có thứ gì đó giống như "ngân hàng chạy" tài chính truyền thống trên giao thức, thì những người dùng cuối cùng rút tài sản của họ khỏi giao thức sẽ không thể làm như vậy.
tiêu đề cấp đầu tiên
Thanh lý và Ngưỡng thanh lý
Chúng tôi đã xác định rằng khi tài sản thế chấp khoản vay có giá trị thấp hơn khoản nợ chịu lãi suất của người đi vay (còn được gọi là tài sản thế chấp dưới mức), khoản nợ của người vay đặt ra mối đe dọa đối với sức khỏe của hợp đồng cho vay mà nó được đặt vào. Để ngăn việc nắm giữ tài sản thế chấp dưới mức tăng lên, giao thức này cho phép các bên thứ ba (không nhất thiết là người dùng của giao thức) trả lại khoản nợ được thế chấp dưới mức (hoặc gần với tài sản thế chấp dưới mức). Bằng cách thanh toán khoản nợ dưới mức tài sản thế chấp, các bên thứ ba này, được gọi là người thanh lý, có quyền yêu cầu trả lại tài sản thế chấp của con nợ được bảo hiểm của họ với mức chiết khấu. Quá trình này được gọi là thanh lý.
Bạn có thể thắc mắc: tại sao giao thức lại dựa vào các bên thứ ba để thanh lý các vị thế không lành mạnh? Xét cho cùng, các giao thức có thể mã hóa các cơ chế thanh lý tự động thành mã của chúng.
Chi phí gửi một giao dịch thanh toán bù trừ là rất cao. Nếu giao thức tự động gửi các giao dịch đắt tiền này, chi phí gas phát sinh sẽ làm tăng chi phí hoạt động của nó, do đó làm suy yếu lợi nhuận của nó.
Ngoài ra, việc thiết kế hệ thống thanh lý tự động là rất khó khăn. Các giao thức phải xem xét không chỉ liệu một vị thế có nên được thanh lý tự động hay không mà còn phải xem xét thời điểm thực hiện và với tốc độ phản ánh sự biến động của thị trường. Bằng cách khuyến khích các bên thứ ba tận tâm thanh lý các vị trí này, quá trình này đơn giản hơn nhiều.
Việc thanh lý vốn dĩ không mang lại lợi nhuận - đối với quy trình này, tài sản thế chấp của con nợ phải có giá trị cao hơn số tiền họ nợ. Nếu người thanh lý không đảm bảo rằng quy trình sẽ có lãi, họ sẽ không thanh lý một vị trí.
Vì vậy, khi nào một vị trí có thể được thanh lý? Điều kiện này được xác định bởi giao thức và là một chức năng của ngưỡng thanh lý được chỉ định cho từng tài sản.
Thời điểm là rất quan trọng khi nói đến ngưỡng thanh lý. Như chúng ta đã biết, nếu giá trị khoản nợ của một vị thế vượt quá giá trị tài sản thế chấp của nó, thì việc thanh lý những vị thế này sẽ không mang lại lợi nhuận cho người thanh lý và giao thức cũng sẽ phải đối mặt với nợ xấu. Do đó, ngưỡng thanh lý an toàn cung cấp đủ thời gian cho người thanh lý thanh lý các vị trí trước khi họ đạt đến trạng thái mất khả năng thanh toán.
tiêu đề cấp đầu tiên
Hợp chất: Thanh khoản tài khoản
Compound liên quan đến một tham số gọi là AccountLiquidity, tính toán Ngưỡng thanh lý trong Comptroller, hợp đồng chính của Compound.
Người kiểm soát có chức năng gọi là getAccountLiquidity() trả về thông tin về tính thanh khoản của tài khoản. Trong nội bộ, chức năng này gọi getHypotheticalAccountLiquidityInternal():

Ở đây chúng ta thấy logic chính của hàm nằm trong phạm vi vòng lặp for. Điều này cho thấy tính thanh khoản của tài khoản được thực hiện bằng cách lặp lại trên tất cả các thị trường mà tài khoản tham gia. Nói cách khác, khi tính toán tính thanh khoản của tài khoản, tất cả các tài sản mà người dùng đã vay hoặc sử dụng làm tài sản thế chấp đều được tính đến.
Nhớ lại từ bài đăng trên blog trước đây của chúng tôi rằng cTokenBalance là số lượng tài sản cơ bản mà người dùng cung cấp để làm tài sản thế chấp. Trong ví dụ này, chúng ta cũng có thể thấy loanBalance và một số ExchangeRateMantissa bí ẩn, cả hai đều được trả về từ getAccountSnapshot().
Trong biến ExchangeRate tổng quát được thảo luận trong bài đăng trên blog trước đây của chúng tôi, chúng tôi đã viết:
"Một lãi suất tùy ý có thể tăng số lượng Token được đúc. Nếu ExchangeRate < 1, nó có thể làm giảm số lượng Token. Nếu ExchangeRate > 1, nó có thể tăng số lượng Token."
Điều này cũng áp dụng cho exchangeRateMantissa, đại diện cho tỷ giá hối đoái giữa cToken và tài sản cơ bản.
Như chúng ta có thể thấy trong ví dụ này, sau khi nhận được ba tham số được đề cập ở trên, trước tiên Người kiểm soát sẽ nhận được Hệ số tài sản thế chấp của thị trường cụ thể hiện đang lặp lại. Thông tin về tài sản thế chấp này là một chỉ báo về số tiền người dùng có thể vay đối với tài sản thế chấp của họ. Từ định nghĩa này, chúng ta có thể giả định rằng mỗi khoản ký quỹ thế chấp có thể được thế chấp bằng các khoản vay khác nhau.
Lý do số tiền này khác nhau giữa các tài sản chủ yếu là do mỗi tài sản mang "rủi ro" riêng trong mắt giao thức, thường đề cập đến mức độ mà giá trị của tài sản dao động theo thời gian.
Quản trị của Compound thay đổi hệ số thế chấp dựa trên điều kiện thị trường, nhưng tại bất kỳ thời điểm nào, hệ số thế chấp của chúng không được vượt quá 0,9 — tối đa 90% tài sản thế chấp mà bạn gửi có thể được cho vay:
Sau đó, chúng ta thấy lệnh gọi tới oracle.getUnderlyingPrice(nội dung), gọi một hợp đồng bên ngoài có tên là Oracle.
Oracles là một cơ chế thú vị xứng đáng được đăng trên blog chuyên dụng (hãy theo dõi). Để cho ngắn gọn, những gì chúng tôi đang giải thích bây giờ là oracle là một hợp đồng được sử dụng để xác định giá của một tài sản trong một giao thức cho vay, thường là bằng một số loại tiền công khai được sử dụng bởi giao thức (thường là USD, ETH hoặc stablecoin được sử dụng bởi giao thức) làm cơ sở.
Bây giờ chúng ta đã đề cập đến tất cả các yếu tố ảnh hưởng đến sức khỏe của một thị trường riêng lẻ, chúng ta sẽ viết ra phương trình để tính Thanh khoản tài khoản cho một thị trường riêng lẻ:
Lưu ý: Trong Hợp chất, giá tài sản được tính bằng đô la Mỹ (USD).
Đó là một danh sách khá dài các biến, nhưng nếu bạn cố nhớ phần Hợp chất từ bài viết "Mã thông báo chia sẻ" của chúng tôi, bạn sẽ tìm thấy các biểu thức sau:
Nó chỉ đại diện cho giá trị tài sản cơ bản của cToken của người dùng.
Ngoài ra, biến loanBalance_{user}, như bạn có thể thấy ở đây, là tổng số dư của tài sản mà người dùng vay, bao gồm cả tiền lãi tích lũy trên tài sản đó.
tiêu đề cấp đầu tiên
Maker
Một giao thức khác đặt ngưỡng cho việc thanh lý các vị thế chưa được thế chấp là Maker.
Hãy xem xét hai hợp đồng mà giao thức triển khai để xử lý thanh lý:
Chó: Được triển khai sau khi chuyển sang thanh lý 2.0 (quản trị Maker gọi nó là gì). Chức năng thanh lý ở đây là sủa().
· Cat:liquidations 1.2 ,bite()。
grab(): Hợp đồng VAT, được sử dụng làm phương thức thanh lý trước khi hợp đồng mèo được triển khai.
Hãy xem đoạn trích trong bit():
và một đoạn tương tự từ vỏ cây():
Bạn có thể nhận thấy rằng cả hai đều có cùng một thông báo không an toàn. Do đó, các yêu cầu bảo mật của Vault là giống nhau đối với từng chức năng thanh lý và có thể được biểu thị bằng phương trình sau:
Chúng ta có thể sử dụng phương trình này để xác định bất đẳng thức sao cho Vault (tên Maker sử dụng cho các vị trí) vẫn an toàn:
Tối ưu hóa nó:
Chúng tôi khuyên độc giả nên xem Bảng thuật ngữ MakerDAO để mở rộng thông tin chúng tôi cung cấp về các tên biến và thuật ngữ khác nhau trong hệ sinh thái Maker.
Ngoài ra, bạn có thể tin tưởng những gì chúng tôi đã vạch ra ở đây:
• spot_{ilk} được sử dụng trong bất đẳng thức này làm giá của tài sản thế chấp, tính bằng DAI, chia cho tỷ lệ thanh lý của tài sản thế chấp (được xác định bởi cơ quan quản lý)
• ink_{urn} là số dư ký quỹ của vị thế
• tỷ lệ_{ilk} là trách nhiệm pháp lý tích lũy đối với một loại tài sản thế chấp cụ thể. Khi nhân với art_{urn}, là số nợ được chuẩn hóa cho một vị thế vay, chúng tôi nhận được tổng nợ có mệnh giá bằng DAI
Để đơn giản hóa những gì chúng tôi vừa đề cập, mà không sử dụng thuật ngữ Maker, chúng tôi sẽ trình bày nó như sau:
tiêu đề cấp đầu tiên
AAVE V2 - Yếu Tố Sức Khỏe
AAVE V2 cũng xác định HealthFactor ngưỡng riêng của nó. Người dùng có giá trị hệ số sức khỏe là H_{f} < 1 có thể được thanh lý.
Nó được định nghĩa như sau:
Rõ ràng, khi người dùng không có nợ, vị trí của họ không thể được thanh lý, do đó, hệ số sức khỏe mặc định là type(uint 256).max.
Mặt khác, yếu tố sức khỏe được định nghĩa là:
tiêu đề cấp đầu tiên
Phân tích vị trí phá sản
Bây giờ chúng ta đã thảo luận về khái niệm nợ xấu, chúng ta sẽ cung cấp một ví dụ thực tế để nhấn mạnh tầm quan trọng của nó.
Vị trí chúng ta sẽ thảo luận là tài khoản sau trên AAVE V2: 0x 227 cAa 7 eF 6 D 955 A 92 F 483 d B2B D 01172997 A 1 a 623 .
Hãy tìm hiểu trạng thái hiện tại của giao thức cho vay AAVE V2 bằng cách gọi hàm getUserAccountData trên đó:
Bây giờ hãy chia nhỏ những điều trên và xem mọi thứ tồi tệ như thế nào với vị trí này:
· Tổng số ETH nợ: 17.83508595148699 ETH
· Tổng số ETH đã cam kết: 0,013596360502551568 ETH
Đó là tất cả những gì chúng ta cần biết, vị trí này đang gặp rắc rối - tài sản thế chấp có giá trị bằng một phần nhỏ so với số tiền nợ.
Vậy làm thế nào mà vị trí này gặp rắc rối?
Để trả lời câu hỏi này, chúng ta có thể xem các hành động gần đây nhất được thực hiện bởi người dùng này trên AAVE:
Tất cả đều có vẻ ổn cho đến khối 13514857, khi một người dùng cho AAVE mượn một số tài sản. Hãy xem những gì họ làm:
Con nợ đã vay 700.000 MANA, xem nhanh giá USD của MANA cho thấy giá là:
0,00032838 ETH trên mỗi đơn vị MANA.
Bằng cách nhân đơn giản, chúng tôi biết rằng người dùng này đã tăng khoản nợ của giao thức lên: 0,00032838 * 700000 = 229,866 ETH
Điều đáng nói là giá USD tại khối đó là $4417,40.
Lưu ý hoạt động gửi tiền xảy ra trong hình trên, tại khối 13517657, một vài giờ sau khi vay. Hãy xem liệu có điều gì trên thị trường đã làm lung lay niềm tin của người dùng hay không:
Trên đây là cuộc gọi RPC được gửi tới nhà tiên tri giá AAVE V2 để lấy giá trị wei cho 1 đơn vị MANA trong khối được chỉ định.
Nếu chúng tôi biến đổi các mức giá trên bằng cách sử dụng dữ liệu này, chúng tôi có thể thấy điều gì sẽ xảy ra:
0.00033625 * 700000 = 235.375 ETH
Chỉ trong vài giờ, khoản nợ đã tăng thêm 5,5 ETH, trị giá 24.000 USD.
Vì chúng tôi biết phần cuối của câu chuyện cho vị trí này, chúng tôi biết rằng nó sẽ được thanh lý vào một thời điểm nào đó, vì vậy hãy kiểm tra xem có cuộc gọi thanh lý nào liên quan đến địa chỉ người dùng này không:
Khi chúng tôi tìm thấy sự kiện thanh lý đầu tiên, chúng tôi có thể hiểu lý do tại sao người dùng gửi tài sản ngay sau khi vay:
Ở đây chúng ta có thể thấy rằng lần thanh lý đầu tiên xảy ra ở khối 13520838. Việc thanh lý này xảy ra trước khi người dùng gửi tiền (~7 phút trước khi giao dịch gửi tiền).
Sau đó, giữa các khối 13520838-13522070, có một loạt các giao dịch thanh lý nhỏ cuối cùng có giá trị khá cao:
Hãy xem xét tất cả các loại tài sản thế chấp bị người thanh lý thu giữ từ người dùng giữa các khối này:
Chúng ta có thể thấy rằng chỉ có 2 tài sản là DAI (stablecoin) và ETH.
và số lượng của họ:
~ 50 ETH
~ 387663 DAI
Người ta có thể hỏi, tại sao việc thanh lý lại được chia thành nhiều phần nhỏ như vậy?
Khi các vị trí lớn như thế này được thanh lý trong một lần, thị trường sẽ hiểu việc mua tài sản thế chấp lớn như vậy là tín hiệu bán đối với các loại tài sản này. Hãy nhớ rằng: Tài sản có được khi thanh lý được mua với giá chiết khấu theo chính sách phần thưởng thanh lý của giao thức.
Một đợt thanh lý lớn sẽ kích hoạt một loạt các đợt thanh lý và khi áp lực bán tăng lên, những người tham gia thị trường khác cũng có thể bán tài sản của họ, gây ra sự "sụp đổ" hơn nữa về giá của tài sản, từ đó dẫn đến nhiều khoản thanh lý hơn đối với các vị trí khác trong giao thức.
Do đó, các giao thức thường giới hạn số lượng tài sản có thể bị tịch thu trong một lần thanh lý. Hạn chế này của phiên bản AAVE, như một biến, như sau:
Như chúng ta có thể thấy, tỷ lệ phần trăm giới hạn là 50%, có nghĩa là chỉ một nửa khoản nợ của vị thế được phép hoàn trả trong một lần thanh lý.
Những người thanh lý có động cơ để chia các khoản thanh lý của họ thành các phần nhỏ hơn. Nếu không có đủ thanh khoản trên thị trường để cung cấp tài sản thế chấp tại thời điểm thanh lý, thì bằng cách chia thanh lý thành các phần nhỏ hơn, người thanh lý có nhiều khả năng thu được tài sản thanh lý và thu lợi từ việc thanh lý.
Ngoài ra, nếu không có đủ thanh khoản trên thị trường để mua tài sản nợ, thì người thanh lý có thể phải trả rất nhiều chi phí để mua các khoản nợ phải trả cho người dùng chưa được thế chấp ngay từ đầu.
Cuối cùng, hãy tưởng tượng bạn đang cố gắng thanh lý một số lượng lớn một số loại mã thông báo mà không sở hữu nhiều như vậy. Nếu bạn truy cập DEX và cố gắng trao đổi một số WETH hoặc tài sản khác để lấy mã thông báo này, bạn có thể phải trả phí gas rất cao, điều này sẽ khiến việc thanh lý của bạn không có lãi.
Quay trở lại ví dụ của chúng tôi, để kiểm tra các tham số vị trí sau một loạt thanh lý trong chuỗi, chúng tôi cần phân tích cú pháp dữ liệu được trả về cho chúng tôi từ getUserAccountData:
Sau đó, chúng tôi truy vấn chuỗi bằng cách sử dụng cast:
Đầu ra phân tích cú pháp cuối cùng:
Ở đây chúng ta thấy ảnh hưởng của việc thanh lý đối với vị thế: hầu như không còn tài sản thế chấp, chính xác là 0,6 ETH. Nhưng nợ thì sao? Lên tới 45,26716296709878 ETH.
Giá MANA cho khối này là bao nhiêu?
0.000862110734985458 ETH。
Nếu bạn còn nhớ, người dùng của chúng tôi đã vay MANA chỉ vài giờ trước với giá 0,00032838 ETH. Điều này tương đương với việc mở một vị thế bán đối với một cổ phiếu có giá đã tăng 2,65 lần.
Những người thanh lý này đã không thể thanh lý toàn bộ vị thế kịp thời trước khi giá giảm xuống mức không thể sinh lời và chúng tôi bị phá sản.
tóm tắt
tóm tắt
Mặc dù chúng tôi không thể chắc chắn liệu có một phương trình xác định ngưỡng thanh khoản cho một vị trí hay không, nhưng chúng tôi chắc chắn có thể thấy sự tương đồng giữa các giao thức:
Tất cả các giao thức xác định ngưỡng của chúng là một chức năng của một số loại tài sản thế chấp so với nợ (cho dù đó là tỷ lệ hay sự khác biệt).
Tất cả các giao thức đều để lại một số khoảng trống để quản trị quyết định giá trị của từng thông số rủi ro tài sản thế chấp dựa trên sự thay đổi của các điều kiện thị trường, vì một số tài sản dễ biến động hơn những tài sản khác.
Tất cả các giao thức đều sử dụng lời tiên tri để định giá tài sản thế chấp và khoản nợ của họ bằng loại tiền được chấp nhận rộng rãi (ví dụ: ETH, USD, DAI).
liên kết gốc


