Phân tích công nghệ Máy Oracle: Lấy Chainlink làm ví dụ
Trong hệ sinh thái blockchain, Máy Oracle đóng vai trò cầu nối giữa hợp đồng thông minh và thế giới bên ngoài, giữ vai trò cơ sở hạ tầng cực kỳ quan trọng. Chức năng cốt lõi của nó là cung cấp dữ liệu bên ngoài cho các hợp đồng thông minh trên blockchain.
Ví dụ, nếu chúng ta triển khai một hợp đồng thông minh trên mạng Ethereum cần lấy dữ liệu khối lượng giao dịch dầu mỏ vào một ngày nhất định, do hợp đồng không thể truy cập trực tiếp thông tin thực tế ngoài chuỗi, lúc này cần có sự can thiệp của Máy Oracle. Trong trường hợp này, hợp đồng thông minh sẽ ghi thông tin ngày cần thiết vào nhật ký sự kiện. Sau đó, một tiến trình giám sát sẽ được khởi động để đăng ký sự kiện này. Khi phát hiện yêu cầu liên quan, tiến trình này sẽ thông qua việc gửi giao dịch trên chuỗi, gọi phương thức cụ thể của hợp đồng, để truyền dữ liệu khối lượng giao dịch dầu mỏ vào ngày chỉ định đến hợp đồng thông minh.
Trong số nhiều giải pháp Máy Oracle, Chainlink nổi bật với tính chất phi tập trung và thị phần của nó. Nó xây dựng một hệ sinh thái được thúc đẩy bởi các động lực kinh tế thông qua token LINK, đảm bảo cung cấp dữ liệu từ thế giới thực cho blockchain một cách an toàn và đáng tin cậy nhất. Cơ chế kích hoạt của Máy Oracle Chainlink được thực hiện thông qua việc chuyển nhượng token LINK, trong khi LINK là hợp đồng tiêu chuẩn ERC677 dựa trên mạng Ethereum.
Tiêu chuẩn ERC677 bổ sung phương thức transferAndCall trên nền tảng ERC20, đổi mới này đáp ứng nhu cầu đặc thù của các tình huống kinh doanh Máy Oracle, thực hiện sự tích hợp giữa thanh toán và yêu cầu dịch vụ. Khi người dùng gọi transferAndCall để chuyển tiền, ngoài các thao tác chuyển tiền thông thường của ERC20, hệ thống còn kiểm tra xem địa chỉ nhận có phải là địa chỉ hợp đồng hay không, nếu đúng, nó sẽ gọi phương thức onTokenTransfer của địa chỉ đó.
Trong thiết kế của Chainlink, phương thức onTokenTransfer của hợp đồng oracle thực hiện một loạt các kiểm tra an toàn, bao gồm xác minh xem giao dịch có phải là token LINK hay không, kiểm tra độ dài dữ liệu có hợp lệ hay không, xác minh selector hàm, v.v. Sau khi thực hiện các xác minh này, hợp đồng sẽ tạo ra một requestId duy nhất, thiết lập thời gian hết hạn cho yêu cầu và phát ra sự kiện OracleRequest. Sự kiện này chứa dữ liệu chi tiết về yêu cầu, sử dụng định dạng mã hóa CBOR (Concise Binary Object Representation).
Các nút ngoài chuỗi, sau khi nhận được sự kiện OracleRequest, sẽ phân tích thông tin yêu cầu, thông qua việc gọi API để lấy dữ liệu cần thiết, sau đó sẽ nộp dữ liệu lên chuỗi bằng cách gọi phương thức fulfillOracleRequest của hợp đồng oracle. Quá trình này bao gồm một loạt các bước xác minh, đảm bảo tính hợp lệ và an toàn của dữ liệu. Cuối cùng, hợp đồng oracle sẽ gọi hàm callback của hợp đồng yêu cầu, hoàn thành toàn bộ quy trình yêu cầu và phản hồi dữ liệu.
Đối với các nhà phát triển, Chainlink còn cung cấp dịch vụ Máy Oracle giá cả thuận tiện hơn. Mỗi cặp giao dịch có một Price Feed độc lập (còn được gọi là Aggregator), thực ra là một phiên bản của hợp đồng AggregatorProxy. Những hợp đồng này cung cấp các phương thức như decimals(), description(), version(), getRoundData() và latestRoundData(), giúp các nhà phát triển dễ dàng truy cập dữ liệu giá cần thiết.
Trong hầu hết các trường hợp ứng dụng, hợp đồng chủ yếu cần đọc giá mới nhất, điều này có thể được thực hiện bằng cách gọi phương thức latestRoundData(). Đáng chú ý là các cặp giao dịch được định giá bằng USD thường có độ chính xác giá thống nhất là 8 chữ số, điều này đơn giản hóa sự phức tạp trong việc xử lý độ chính xác giữa các loại token khác nhau.
Thông qua thiết kế này, Chainlink không chỉ cung cấp dịch vụ Máy Oracle linh hoạt mà còn mang đến cho các nhà phát triển một cách tiếp cận thuận tiện để truy cập dữ liệu giá, làm đơn giản hóa đáng kể quy trình tương tác dữ liệu giữa ứng dụng blockchain và thế giới bên ngoài.
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 tích công nghệ Máy Oracle Chainlink: cầu nối giữa hợp đồng thông minh và thế giới thực
Phân tích công nghệ Máy Oracle: Lấy Chainlink làm ví dụ
Trong hệ sinh thái blockchain, Máy Oracle đóng vai trò cầu nối giữa hợp đồng thông minh và thế giới bên ngoài, giữ vai trò cơ sở hạ tầng cực kỳ quan trọng. Chức năng cốt lõi của nó là cung cấp dữ liệu bên ngoài cho các hợp đồng thông minh trên blockchain.
Ví dụ, nếu chúng ta triển khai một hợp đồng thông minh trên mạng Ethereum cần lấy dữ liệu khối lượng giao dịch dầu mỏ vào một ngày nhất định, do hợp đồng không thể truy cập trực tiếp thông tin thực tế ngoài chuỗi, lúc này cần có sự can thiệp của Máy Oracle. Trong trường hợp này, hợp đồng thông minh sẽ ghi thông tin ngày cần thiết vào nhật ký sự kiện. Sau đó, một tiến trình giám sát sẽ được khởi động để đăng ký sự kiện này. Khi phát hiện yêu cầu liên quan, tiến trình này sẽ thông qua việc gửi giao dịch trên chuỗi, gọi phương thức cụ thể của hợp đồng, để truyền dữ liệu khối lượng giao dịch dầu mỏ vào ngày chỉ định đến hợp đồng thông minh.
Trong số nhiều giải pháp Máy Oracle, Chainlink nổi bật với tính chất phi tập trung và thị phần của nó. Nó xây dựng một hệ sinh thái được thúc đẩy bởi các động lực kinh tế thông qua token LINK, đảm bảo cung cấp dữ liệu từ thế giới thực cho blockchain một cách an toàn và đáng tin cậy nhất. Cơ chế kích hoạt của Máy Oracle Chainlink được thực hiện thông qua việc chuyển nhượng token LINK, trong khi LINK là hợp đồng tiêu chuẩn ERC677 dựa trên mạng Ethereum.
Tiêu chuẩn ERC677 bổ sung phương thức transferAndCall trên nền tảng ERC20, đổi mới này đáp ứng nhu cầu đặc thù của các tình huống kinh doanh Máy Oracle, thực hiện sự tích hợp giữa thanh toán và yêu cầu dịch vụ. Khi người dùng gọi transferAndCall để chuyển tiền, ngoài các thao tác chuyển tiền thông thường của ERC20, hệ thống còn kiểm tra xem địa chỉ nhận có phải là địa chỉ hợp đồng hay không, nếu đúng, nó sẽ gọi phương thức onTokenTransfer của địa chỉ đó.
Trong thiết kế của Chainlink, phương thức onTokenTransfer của hợp đồng oracle thực hiện một loạt các kiểm tra an toàn, bao gồm xác minh xem giao dịch có phải là token LINK hay không, kiểm tra độ dài dữ liệu có hợp lệ hay không, xác minh selector hàm, v.v. Sau khi thực hiện các xác minh này, hợp đồng sẽ tạo ra một requestId duy nhất, thiết lập thời gian hết hạn cho yêu cầu và phát ra sự kiện OracleRequest. Sự kiện này chứa dữ liệu chi tiết về yêu cầu, sử dụng định dạng mã hóa CBOR (Concise Binary Object Representation).
Các nút ngoài chuỗi, sau khi nhận được sự kiện OracleRequest, sẽ phân tích thông tin yêu cầu, thông qua việc gọi API để lấy dữ liệu cần thiết, sau đó sẽ nộp dữ liệu lên chuỗi bằng cách gọi phương thức fulfillOracleRequest của hợp đồng oracle. Quá trình này bao gồm một loạt các bước xác minh, đảm bảo tính hợp lệ và an toàn của dữ liệu. Cuối cùng, hợp đồng oracle sẽ gọi hàm callback của hợp đồng yêu cầu, hoàn thành toàn bộ quy trình yêu cầu và phản hồi dữ liệu.
Đối với các nhà phát triển, Chainlink còn cung cấp dịch vụ Máy Oracle giá cả thuận tiện hơn. Mỗi cặp giao dịch có một Price Feed độc lập (còn được gọi là Aggregator), thực ra là một phiên bản của hợp đồng AggregatorProxy. Những hợp đồng này cung cấp các phương thức như decimals(), description(), version(), getRoundData() và latestRoundData(), giúp các nhà phát triển dễ dàng truy cập dữ liệu giá cần thiết.
Trong hầu hết các trường hợp ứng dụng, hợp đồng chủ yếu cần đọc giá mới nhất, điều này có thể được thực hiện bằng cách gọi phương thức latestRoundData(). Đáng chú ý là các cặp giao dịch được định giá bằng USD thường có độ chính xác giá thống nhất là 8 chữ số, điều này đơn giản hóa sự phức tạp trong việc xử lý độ chính xác giữa các loại token khác nhau.
Thông qua thiết kế này, Chainlink không chỉ cung cấp dịch vụ Máy Oracle linh hoạt mà còn mang đến cho các nhà phát triển một cách tiếp cận thuận tiện để truy cập dữ liệu giá, làm đơn giản hóa đáng kể quy trình tương tác dữ liệu giữa ứng dụng blockchain và thế giới bên ngoài.