Oracle là các thực thể kết nối các blockchain với các hệ thống bên ngoài, cho phép các smart contract có thể thực thi dựa trên các input và output từ thế giới thực.

The Oracle Problem

Giả sử Alice và Bob muốn đặt cược dựa trên kết quả của một trận đấu thể thao. Alice cược 20 vào team B. Tổng cộng có $40 được ký gửi vào smart contract. Khi trận đấu kết thúc, làm cách nào mà smart contract biết được kết quả của trận đấu để gửi tiền cho người chiến thắng.

Câu trả lời là cần một cơ chế nào đó để fetch kết quả trận đấu và chuyển nó cho smart contract theo một cách an toàn và tin cậy.

Tuy nhiên, smart contract có một hạn chế cơ bản là nó không thể nào tương tác với các dữ liệu và hệ thống bên ngoài blockchain (các tài nguyên off-chain).

Oracle chính là giải pháp cho vấn đề này. Nó đóng vai trò như là cầu nối giúp kết nối smart contract với các tài nguyên của thế giới thực. Một vài loại tài nguyên mà oracle cung cấp:

  • Thông tin về giá cả của các loại tài sản cho lĩnh vực tài chính.
  • Thông tin về thời tiết cho lĩnh vực bảo hiểm.
  • Số ngẫu nhiên cho game.
  • Thông tin từ các IoT sensor cho chuỗi cung ứng.

Decentralized Oracles

Nếu ta tập trung hóa oracle thì sẽ dẫn đến vấn đề single point of failure, phá vỡ hoàn toàn tính chất phân tán của các ứng dụng blockchain. Một số kịch bản có thể xảy ra:

  • Nếu oracle offline, smart contract sẽ không còn có thể tương tác với thế giới bên ngoài.
  • Trong trường hợp oracle bị hư hỏng, dữ liệu được chuyển giao cho smart contract sẽ không còn chính xác. Điều này khiến cho kết quả đầu ra của smart contract không còn như mong muốn và có thể làm mất tài sản của người dùng.

Như vậy, ta cần phi tập trung hóa oracle để hình thành nên một Decentralized Oracle Network (DON): một mạng lưới bao gồm các oralce node hoạt động độc lập và nhiều nguồn dữ liệu tin cậy.

Types of Blockchain Oracles

Bởi vì các tài nguyên off-chain rất đa dạng, nên oracle cũng có rất nhiều loại:

  • Input oracles: lấy dữ liệu từ thế giới thực và chuyển giao vào một mạng blockchain cho các smart contract sử dụng.
  • Output oracles: cho phép các smart contract gửi những câu lệnh đến các hệ thốn off-chain để kích hoạt một số hành động nhất định (ngược lại của input oracle).
  • Cross-chain oracles: là các oracle có khả năng đọc và ghi dữ liệu giữa các blockchain khác nhau. Nó cho phép chuyển đổi dữ liệu và tài sản giữa các blockchain, chẳng hạn như sử dụng dữ liệu của một blockchain để kích hoạt một hành động ở một blockchain khác.
  • Compute-enabled oracles: sử dụng các tính toán off-chain an toàn để cung cấp các dịch vụ mà không thể thực hiện bởi các on-chain smart contract. Chẳng hạn như:
    • Kích hoạt một smart contract nào đó khi các event được xác định trước xảy ra.
    • Tính toán các zero-knowledge proof 🤔.
    • Chạy các hàm sinh số ngẫu nhiên có thể xác thực (VRF)1.

Info

Sự kết hợp giữa smart contract và off-chain resource tạo thành hybrid smart contract.

Footnotes

  1. Xem thêm VRF.