Oracle: Đôi mắt của DeFi, cũng là điểm yếu của nó

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

Viết bài: Trương Khiết Văn

Vào tháng 11 năm 2020, một người dùng một khoản tiền đi vay, chỉ trong 15 giây đã rút khỏi một giao thức DeFi gần 1 triệu USD.

Anh ta đầu tiên vay một lượng lớn ETH thông qua flash loan, rồi tập trung mua sETH trong một pool thanh khoản cực kỳ thấp, trong vài giây ngắn ngủi đã đẩy giá lên vọt một cách chóng mặt.

Tiếp theo, anh ta dùng các sETH này làm tài sản thế chấp gửi vào giao thức bZx. Thứ mà giao thức «nhìn thấy» là mức giá vừa được con người đẩy lên trong khoảnh khắc đó; vì vậy, nó cho rằng các sETH này có giá trị cực cao, rồi theo quy tắc phát hành một khoản vay WBTC lớn hơn rất nhiều so với giá trị thực.

Sau khi lấy được WBTC, kẻ tấn công nhanh chóng trả lại flash loan, mang theo chênh lệch khổng lồ rồi ung dung rời đi.

Toàn bộ quá trình không có việc xâm nhập của hacker, không có lỗ hổng mã lệnh, và cũng không có lạm dụng quyền hạn. Hợp đồng đã nghiêm ngặt tuân thủ quy tắc để thực hiện từng bước. Vấn đề duy nhất nằm ở:

Thế giới mà nó «nhìn thấy» là sai.

Đây cũng là một trong những giới hạn tầng đáy nhất của DeFi—các hợp đồng on-chain, về bản chất, là một hệ thống không nhìn thấy thực tại ngoài chuỗi.

01 Hợp đồng on-chain là một «người mù»

Hợp đồng thông minh sống trong một thế giới khép kín.

Nó có thể nhìn thấy mọi thứ xảy ra trên chuỗi—ai chuyển bao nhiêu tiền cho ai, địa chỉ nào nắm giữ bao nhiêu token, giao dịch nào được đóng gói vào block vào lúc nào—những thông tin đó nó đều đọc được, và tuyệt đối chính xác.

Nhưng thế giới bên ngoài chuỗi, nó hoàn toàn không nhìn thấy: hôm nay giá ETH là bao nhiêu? Bitcoin có phá đỉnh mới không? một stablecoin nào đó có bị mất neo không? Hôm nay thị trường chứng khoán New York tăng hay giảm? Hợp đồng hoàn toàn không biết gì.

Trong cho vay mượn DeFi, đây là một mâu thuẫn chí mạng.

Việc thanh lý phụ thuộc vào giá hiện tại của tài sản thế chấp; nhưng hợp đồng tự nó không xem được giá, và phải có ai đó nói cho nó.

Đó là lý do tồn tại của oracles: nó là “mắt” của hợp đồng on-chain, chịu trách nhiệm đưa những thông tin thật ngoài chuỗi lên chuỗi để hợp đồng đọc và sử dụng. Nhưng vấn đề nảy sinh là:

Ai sẽ đảm bảo rằng thông tin đó là thật?

02 Oracle: sứ giả của thế giới on-chain

Về bản chất, oracle là một hạ tầng truyền tải thông tin, ghi dữ liệu của thế giới thực (giá, lãi suất, kết quả sự kiện, v.v.) lên blockchain dưới dạng mà hợp đồng có thể đọc được.

Khái niệm này nghe có vẻ đơn giản, nhưng thách thức trong kỹ thuật nằm ở chỗ: nguyên tắc thiết kế cốt lõi của blockchain là «không tin bất kỳ đầu vào bên ngoài nào», mọi thứ lấy dữ liệu có thể được xác minh trên chuỗi làm chuẩn. Và oracle mang đến đúng là dữ liệu từ ngoài chuỗi—nó vốn nằm ngoài ranh giới của hệ thống niềm tin này.

Để giải quyết vấn đề đó, thị trường hình thành hai hướng giải quyết chủ đạo.

Thứ nhất là giá on-chain, đọc trực tiếp giá giao dịch trên sàn giao dịch phi tập trung (DEX). Điển hình nhất là giá trung bình theo thời gian của Uniswap (TWAP)—không lấy giá tức thời tại một thời điểm cụ thể, mà lấy giá bình quân của một khoảng thời gian trong quá khứ, dùng thời gian để làm loãng sự biến động của giá ngắn hạn.

Thứ hai là mạng lưới oracle phi tập trung, tiêu biểu là Chainlink. Nhiều nút dữ liệu độc lập lần lượt lấy giá từ các kênh khác nhau, sau đó tổng hợp và lấy trung vị để đưa lên chuỗi; không có bất kỳ một nút nào có thể tự mình quyết định kết quả cuối cùng.

Hai phương án có những sự đánh đổi khác nhau, nhưng đều đang cố gắng trả lời cùng một câu hỏi: làm thế nào để hợp đồng on-chain tin một con số đến từ ngoài chuỗi?

03 Vì sao không dùng trực tiếp giá thời thực?

Đa số người khi tiếp xúc lần đầu với oracle sẽ nảy ra một trực giác: nếu giá đến từ thị trường, thì tại sao không đọc trực tiếp giá thời thực từ sàn?

Vấn đề nằm ở chỗ: giá thời thực không đồng nghĩa với giá thật.

Trong thị trường có thanh khoản dồi dào và giao dịch sôi động, hai thứ này thường khá gần nhau; nhưng trong các pool có thanh khoản thấp, độ sâu không đủ, chỉ cần có đủ vốn, giá có thể bị con người đẩy lên cao hơn xa so với mức thị trường thực chỉ trong thời gian rất ngắn.

Và hợp đồng thông minh không thể xác định liệu mức giá này được hình thành tự nhiên hay bị cố tình thao túng. Nó chỉ có thể đọc con số đó, rồi thực thi quy tắc dựa trên nó—cho phép người vay mượn thêm nhiều vốn hơn. Khi giá quay đầu giảm, giá trị thật của tài sản thế chấp căn bản không đủ để trang trải khoản vay, và giao thức sẽ phát sinh nợ xấu.

Đây chính là lý do sự kiện tấn công nhắm vào giao thức bZx được nói ở phần mở đầu của bài viết, và cũng chính là cái giá phải trả khi sử dụng giá thời thực: oracle sẽ coi «một con số có thể bị thao túng tạm thời» như chính bản thân thực tại.

04 Cách giải của Chainlink: phi tập trung hóa giá

Nếu một hệ thống chỉ phụ thuộc vào một nguồn dữ liệu duy nhất, thì một khi nguồn dữ liệu đó gặp lỗi hoặc bị thao túng, cả giao thức sẽ bị kéo lệch. Cách trực tiếp nhất để giảm rủi ro này không phải là đi tin một người “giỏi hơn”, mà là để nhiều nút độc lập với nhau báo số độc lập, rồi rút ra từ đó một kết quả tương đối vững chắc.

Cách giải của Chainlink cũng chính là tư duy này: nhiều nút dữ liệu độc lập lần lượt lấy giá từ các nguồn dữ liệu khác nhau, tự báo cáo, và hệ thống lấy trung vị làm kết quả cuối cùng. Nhờ vậy, ngay cả khi một nút đơn lẻ xảy ra sai sót hoặc bị kẻ tấn công ảnh hưởng, thì cũng không thể quyết định giá cuối cùng; còn để kẻ tấn công kiểm soát đồng thời hơn một nửa số nút thì về mặt kinh tế là gần như không thể hoàn thành.

Cơ chế này có hiệu quả trong việc giảm thiểu vấn đề thao túng điểm đơn lẻ.

Nhưng nó cũng đưa vào một cái giá mới: cập nhật có độ trễ.

Giá on-chain không được đồng bộ theo thời gian thực; nút thu thập dữ liệu, đạt được sự đồng thuận rồi ghi vào blockchain, và quá trình này cần thời gian. Khi thị trường biến động bình thường, độ trễ này không đáng kể. Nhưng khi tình hình biến động dữ dội, giá do oracle cung cấp có thể không theo kịp sự thay đổi của giá thật.

Đây chính là lý do trong bài vì sao DeFi vay mượn phải thế chấp vượt mức?, đã nói rằng các giao thức cho vay mượn DeFi cần thiết lập “đệm thế chấp vượt mức”: không chỉ để ứng phó với bản thân biến động giá, mà còn để trong khoảng thời gian oracle chưa kịp cập nhật, hệ thống vẫn có đủ biên an toàn để kích hoạt thanh lý.

1Mấn công oracle: cuộc khủng hoảng niềm tin đắt giá nhất

Vấn đề của oracle không biến mất hoàn toàn chỉ vì sự xuất hiện của Chainlink.

Trong lịch sử DeFi, các lỗ hổng liên quan đến oracle là một trong những nhóm tấn công gây thiệt hại nặng nề nhất. Trong giai đoạn 2021 đến 2023, chỉ riêng các vụ tấn công thao túng oracle đã có ghi nhận, tổng thiệt hại đã vượt quá vài trăm triệu USD.

Những thiệt hại này có một điểm chung: kẻ tấn công không cần phải tìm lỗ hổng trong mã. Họ chỉ cần tìm ra kẽ hở giữa giá oracle và giá thị trường thực, rồi dùng vốn để “kéo căng” kẽ hở đó, khiến hợp đồng thực hiện một giao dịch có lợi cho chúng theo mức giá bị méo. Đây là một rủi ro khó phòng vệ hơn cả lỗ hổng mã lệnh—vì bạn không thể viết trong mã một quy tắc để phán xét “liệu mức giá này có thật hay không”.

Vấn đề của oracle, về bản chất, không phải là lỗ hổng của một thành phần nào đó, mà là một kiểu đánh đổi:

Muốn dùng nhiều nguồn dữ liệu hơn để chống thao túng, thì bạn phải chấp nhận độ trễ cao hơn;

Muốn có giá càng gần thời gian thực, thì bạn phải gánh rủi ro bị thao túng tạm thời.

Sự đánh đổi này không có lời giải hoàn hảo.

Chính vì vậy, sự tồn tại của oracle phơi bày một thực tại sâu hơn của DeFi: các hợp đồng on-chain có thể làm được sự minh bạch tuyệt đối, thực thi tuyệt đối, nhưng điều kiện tiên quyết luôn là thông tin đầu vào mà nó dựa vào phải là thông tin thật. Nếu đầu vào bị bóp méo, thì dù mã có hoàn hảo đến đâu, nó cũng chỉ làm ra những phán đoán và thao tác sai một cách hiệu quả hơn.

ETH6,64%
WBTC3,94%
BTC4,07%
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
  • Bình luận
  • Đăng lại
  • Retweed
Bình luận
Thêm một bình luận
Thêm một bình luận
Không có bình luận
  • Gate Fun hot

    Xem thêm
  • Vốn hóa:$2.28KNgười nắm giữ:1
    0.00%
  • Vốn hóa:$2.28KNgười nắm giữ:2
    0.00%
  • Vốn hóa:$2.29KNgười nắm giữ:2
    0.00%
  • Vốn hóa:$2.28KNgười nắm giữ:1
    0.00%
  • Vốn hóa:$2.28KNgười nắm giữ:1
    0.00%
  • Ghim