
Oracle: cách blockchain biết điều gì đang xảy ra bên ngoài
Một hợp đồng thông minh có thể kiểm tra số dư, chữ ký và trạng thái của chính nó một cách hoàn hảo. Điều nó không làm được là tự tra cứu bất cứ thứ gì. Nó không biết ETH giá bao nhiêu đô la, ai thắng một trận đấu, hay hôm qua ở Madrid có mưa không. Blockchain được cố ý khép kín: mọi nút phải đi đến cùng một kết quả từ cùng một dữ liệu, và thế giới bên ngoài không đảm bảo được điều đó.
Thế nhưng các giao thức cho vay cần giá, stablecoin cần tỷ giá, còn hợp đồng bảo hiểm cần các sự kiện ngoài đời thực. Cây cầu nối giữa chuỗi khép kín và thế giới bên ngoài được gọi là oracle, và đây là một trong những phần bị tấn công nhiều nhất của tài chính phi tập trung.
Oracle làm gì
Oracle là bất kỳ cơ chế nào đưa dữ liệu bên ngoài lên chuỗi, nơi các hợp đồng có thể đọc được. Thông thường:
- Một hoặc nhiều nhà cung cấp dữ liệu thu thập thông tin, chẳng hạn giá ETH/USD từ nhiều sàn giao dịch.
- Họ ký dữ liệu đó và gửi đến một hợp đồng oracle trên chuỗi, theo định kỳ hoặc khi giá trị thay đổi đủ nhiều.
- Các hợp đồng khác đọc giá trị mới nhất từ hợp đồng oracle đó và hành động theo.
Hợp đồng tin tưởng oracle hoàn toàn. Nếu oracle nói ETH đáng giá 10 $, một giao thức cho vay đọc giá trị đó sẽ coi ETH đáng giá 10 $, rồi thanh lý hoặc cho vay tương ứng.
Vấn đề oracle
Đó là khó khăn cốt lõi: một giao thức có thể được viết mã hoàn hảo nhưng vẫn chỉ đáng tin cậy bằng dữ liệu của nó. Phi tập trung hóa hợp đồng chẳng giúp được bao nhiêu nếu chỉ một nguồn duy nhất cung cấp giá cho nó.
Các thiết kế oracle cố gắng giảm sự phụ thuộc đó theo nhiều cách khác nhau:
- Nhiều bên báo cáo độc lập có câu trả lời được tổng hợp lại, để một nguồn sai hoặc bị xâm phạm không thể làm lệch kết quả.
- Nhiều nguồn dữ liệu gốc, để một sàn bị thao túng không làm sai lệch giá.
- Giá trung bình on-chain được tính theo thời gian từ các sàn phi tập trung, khó bị đẩy lệch trong thời gian dài hơn.
- Hình phạt kinh tế cho những bên báo cáo gửi dữ liệu sai.
Oracle bị khai thác như thế nào
Nhiều khoản thua lỗ lớn nhất trong DeFi không phải là lỗi hợp đồng theo nghĩa thông thường mà là lỗi oracle:
- Thao túng giá giao ngay. Một giao thức đọc giá hiện tại từ một pool giao dịch nhỏ duy nhất. Kẻ tấn công vay một khoản lớn trong một giao dịch, đẩy giá của pool đó, vay hoặc thanh lý dựa trên giá giả, rồi đảo ngược giao dịch, tất cả trước khi giao dịch kết thúc. Khoản vay chớp nhoáng khiến điều này khả thi mà không cần chút vốn nào của riêng họ.
- Thị trường mỏng. Một token chủ yếu được giao dịch trong một pool nhỏ rất rẻ để đẩy giá, và bất kỳ giao thức nào chấp nhận nó làm tài sản thế chấp đều thừa hưởng điểm yếu đó.
- Dữ liệu cũ. Một oracle ngừng cập nhật khi thị trường biến động nhanh có thể cho phép người ta vay dựa trên những mức giá không còn tồn tại.
- Bên báo cáo hoặc khóa quản trị bị xâm phạm có thể thay đổi nơi oracle lấy dữ liệu.
Lập luận tương tự cũng áp dụng cho cầu nối: một hệ thống chỉ an toàn bằng thành phần cho nó biết điều gì đã xảy ra ở nơi khác.
Vì sao điều này quan trọng với bạn
Bạn không tương tác trực tiếp với oracle, nhưng chúng quyết định điều gì xảy ra với tiền của bạn trong nhiều giao thức:
- Cho vay: giá trị tài sản thế chấp của bạn, và việc bạn có bị thanh lý hay không, đến từ một oracle.
- Stablecoin: một số thiết kế phụ thuộc vào nguồn cấp giá để giữ đúng mục tiêu.
- Phái sinh và tài sản tổng hợp: giá thanh toán đến từ oracle.
Trước khi dùng một giao thức với tiền thật, bạn nên biết: nó lấy giá từ đâu? Đó là một nguồn cấp lâu năm, nhiều nguồn, hay chỉ một pool duy nhất? Chuyện gì xảy ra nếu nguồn cấp ngừng cập nhật? Một giao thức không trả lời rõ được những câu hỏi đó đang yêu cầu bạn chấp nhận một rủi ro mà bạn không nhìn thấy.
Oracle và SSP
Bản thân SSP không phụ thuộc vào oracle để bảo vệ tiền của bạn. Coin của bạn nằm trong một kho multisig 2-trên-2, và việc di chuyển chúng chỉ phụ thuộc vào chữ ký từ hai thiết bị của bạn, không phụ thuộc vào bất kỳ mức giá bên ngoài nào.
Giá bạn thấy trong SSP, tức giá trị danh mục của bạn theo đơn vị tiền tệ đã chọn, chỉ để hiển thị. Chúng không ảnh hưởng đến việc một giao dịch làm gì hay có hợp lệ hay không.
Oracle trở thành mối quan tâm của bạn khi bạn đưa tiền vào các giao thức DeFi qua WalletConnect. Ở đó, SSP cho bạn thấy bạn đang ký gì và cần cả hai thiết bị phê duyệt, nhưng không thể đánh giá liệu nguồn cấp giá của giao thức có đáng tin hay không. Việc thẩm định đó là của bạn, và xác minh các hợp đồng cũng như ai kiểm soát chúng là một phần trong đó.
Tóm tắt thẳng thắn
Blockchain không thể nhìn ra bên ngoài chính nó, nên oracle mang dữ liệu vào, và mọi hợp đồng dựa vào dữ liệu đó đều thừa hưởng điểm yếu của oracle. Nhiều vụ khai thác DeFi lớn đã thao túng một nguồn cấp giá thay vì phá vỡ mã.
Khi bạn dùng một giao thức phụ thuộc vào giá, hãy hỏi những mức giá đó đến từ đâu. Các oracle được tổng hợp tốt, nhiều nguồn khó đánh lừa hơn nhiều so với một pool duy nhất, và mã "phi tập trung" với một điểm dữ liệu duy nhất không phi tập trung như vẻ ngoài của nó.


