Trong hệ sinh thái blockchain, Máy Oracle đóng vai trò quan trọng trong việc kết nối hợp đồng thông minh với thế giới bên ngoài. Như một cơ sở hạ tầng, hệ thống Máy Oracle có khả năng cung cấp thông tin và dữ liệu từ bên ngoài cho hợp đồng thông minh trên chuỗi.
Ví dụ, giả sử 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 thô vào một ngày nhất định. Do hợp đồng thông minh không thể truy cập trực tiếp dữ liệu thế giới thực ngoài chuỗi, lúc này cần nhờ đến Máy Oracle để thực hiện chức năng này. Quy trình cụ thể là: hợp đồng thông minh sẽ ghi khối lượng giao dịch dầu thô của ngày yêu cầu vào nhật ký sự kiện, sau đó ngoài chuỗi sẽ khởi động một quy trình giám sát để đăng ký sự kiện đó. Ngay khi phát hiện yêu cầu liên quan, quy trình này sẽ thông qua việc gửi giao dịch trên chuỗi, gọi đến phương thức tương ứng của hợp đồng, và truyền đạt thông tin khối lượng giao dịch dầu thô của ngày chỉ định cho hợp đồng thông minh.
Trong số nhiều dự án Máy Oracle, Chainlink chiếm ưu thế trên thị trường. Là một giải pháp Máy Oracle phi tập trung, Chainlink cam kết cung cấp dữ liệu từ thế giới thực cho blockchain theo cách an toàn nhất. Nó xây dựng một hệ sinh thái tạo ra vòng luẩn quẩn tích cực thông qua động lực kinh tế dựa trên nguyên lý Máy Oracle cơ bản. Việc kích hoạt Máy Oracle của Chainlink cần phải thông qua việc chuyển nhượng LINK token, trong khi LINK là hợp đồng ERC677 trên mạng Ethereum. Chức năng Máy Oracle hoàn thành dựa trên token LINK ERC677 thuộc mô hình yêu cầu/phản hồi.
Tiêu chuẩn ERC677 bổ sung phương thức transferAndCall trên cơ sở ERC20, thiết kế này kết hợp thanh toán và yêu cầu dịch vụ thành một, đáp ứng tốt hơn nhu cầu của các trường hợp kinh doanh Máy Oracle. Khi người dùng sử dụng transferAndCall để chuyển tiền, ngoài các thao tác chuyển tiền ERC20 thông 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, sẽ gọi phương thức onTokenTransfer của địa chỉ đó.
Trong quá trình yêu cầu dịch vụ Máy Oracle, người tiêu dùng trước tiên cần xác nhận độ tin cậy của Máy Oracle, vì phí cần phải được thanh toán trước khi dịch vụ được cung cấp. Phương thức onTokenTransfer của hợp đồng Máy Oracle sẽ thực hiện một loạt các kiểm tra an ninh, bao gồm xác minh xem giao dịch có phải là token LINK hay không, kiểm tra xem độ dài dữ liệu có vượt quá giới hạn hay không, xác minh selector hàm, v.v. Sau khi kiểm tra, hợp đồng sẽ tạo ra một requestId duy nhất, thiết lập thời gian hết hạn và phát ra sự kiện OracleRequest chứa dữ liệu yêu cầu.
Nút ngoài chuỗi sẽ phản hồi khi nhận được yêu cầu, bằng cách gọi phương thức fulfillOracleRequest. Phương thức này sẽ thực hiện một loạt các xác minh, bao gồm kiểm tra quyền của người gọi, xác minh tính hợp lệ của yêu cầu, v.v. Sau khi xác minh thành công, nút sẽ gọi hàm callback của hợp đồng của người yêu cầu, trả dữ liệu lại cho bên yêu cầu.
Đối với các nhà phát triển, nếu chỉ cần sử dụng dữ liệu giá của các cặp tiền tệ đã có, có thể gọi trực tiếp vào giao diện Price Feed do chính thức cung cấp. Mỗi cặp giao dịch đều có Price Feed độc lập ( tức là AggregatorProxy ), cung cấp các phương thức truy vấn bao gồm decimals (), description (), version (), getRoundData () và latestRoundData (). Trong đó, tham số answer được trả về bởi phương thức latestRoundData () chính là giá mới nhất. Cần lưu ý rằng, đối với các cặp giao dịch được định giá bằng đô la Mỹ, độ chính xác thường được thống nhất là 8 số thập phân.
Bằng cách này, các nhà phát triển có thể dễ dàng lấy và sử dụng dữ liệu giá thời gian thực do máy Oracle cung cấp trên chuỗi mà không cần tự xử lý các cuộc gọi API phức tạp và quy trình xác minh dữ liệu.
This page may contain third-party content, which is provided for information purposes only (not representations/warranties) and should not be considered as an endorsement of its views by Gate, nor as financial or professional advice. See Disclaimer for details.
9 thích
Phần thưởng
9
5
Chia sẻ
Bình luận
0/400
AlwaysAnon
· 4giờ trước
Chỉ có uống rượu mới nghĩ ra được chuyện này, Linh Khoa hiểu cái gì?
Độ sâu phân tích: Máy Oracle如何连接 hợp đồng thông minh与外部世界
Phân tích độ sâu công nghệ máy Oracle
Trong hệ sinh thái blockchain, Máy Oracle đóng vai trò quan trọng trong việc kết nối hợp đồng thông minh với thế giới bên ngoài. Như một cơ sở hạ tầng, hệ thống Máy Oracle có khả năng cung cấp thông tin và dữ liệu từ bên ngoài cho hợp đồng thông minh trên chuỗi.
Ví dụ, giả sử 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 thô vào một ngày nhất định. Do hợp đồng thông minh không thể truy cập trực tiếp dữ liệu thế giới thực ngoài chuỗi, lúc này cần nhờ đến Máy Oracle để thực hiện chức năng này. Quy trình cụ thể là: hợp đồng thông minh sẽ ghi khối lượng giao dịch dầu thô của ngày yêu cầu vào nhật ký sự kiện, sau đó ngoài chuỗi sẽ khởi động một quy trình giám sát để đăng ký sự kiện đó. Ngay khi phát hiện yêu cầu liên quan, quy trình này sẽ thông qua việc gửi giao dịch trên chuỗi, gọi đến phương thức tương ứng của hợp đồng, và truyền đạt thông tin khối lượng giao dịch dầu thô của ngày chỉ định cho hợp đồng thông minh.
Trong số nhiều dự án Máy Oracle, Chainlink chiếm ưu thế trên thị trường. Là một giải pháp Máy Oracle phi tập trung, Chainlink cam kết cung cấp dữ liệu từ thế giới thực cho blockchain theo cách an toàn nhất. Nó xây dựng một hệ sinh thái tạo ra vòng luẩn quẩn tích cực thông qua động lực kinh tế dựa trên nguyên lý Máy Oracle cơ bản. Việc kích hoạt Máy Oracle của Chainlink cần phải thông qua việc chuyển nhượng LINK token, trong khi LINK là hợp đồng ERC677 trên mạng Ethereum. Chức năng Máy Oracle hoàn thành dựa trên token LINK ERC677 thuộc mô hình yêu cầu/phản hồi.
Tiêu chuẩn ERC677 bổ sung phương thức transferAndCall trên cơ sở ERC20, thiết kế này kết hợp thanh toán và yêu cầu dịch vụ thành một, đáp ứng tốt hơn nhu cầu của các trường hợp kinh doanh Máy Oracle. Khi người dùng sử dụng transferAndCall để chuyển tiền, ngoài các thao tác chuyển tiền ERC20 thông 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, sẽ gọi phương thức onTokenTransfer của địa chỉ đó.
Trong quá trình yêu cầu dịch vụ Máy Oracle, người tiêu dùng trước tiên cần xác nhận độ tin cậy của Máy Oracle, vì phí cần phải được thanh toán trước khi dịch vụ được cung cấp. Phương thức onTokenTransfer của hợp đồng Máy Oracle sẽ thực hiện một loạt các kiểm tra an ninh, bao gồm xác minh xem giao dịch có phải là token LINK hay không, kiểm tra xem độ dài dữ liệu có vượt quá giới hạn hay không, xác minh selector hàm, v.v. Sau khi kiểm tra, hợp đồng sẽ tạo ra một requestId duy nhất, thiết lập thời gian hết hạn và phát ra sự kiện OracleRequest chứa dữ liệu yêu cầu.
Nút ngoài chuỗi sẽ phản hồi khi nhận được yêu cầu, bằng cách gọi phương thức fulfillOracleRequest. Phương thức này sẽ thực hiện một loạt các xác minh, bao gồm kiểm tra quyền của người gọi, xác minh tính hợp lệ của yêu cầu, v.v. Sau khi xác minh thành công, nút sẽ gọi hàm callback của hợp đồng của người yêu cầu, trả dữ liệu lại cho bên yêu cầu.
Đối với các nhà phát triển, nếu chỉ cần sử dụng dữ liệu giá của các cặp tiền tệ đã có, có thể gọi trực tiếp vào giao diện Price Feed do chính thức cung cấp. Mỗi cặp giao dịch đều có Price Feed độc lập ( tức là AggregatorProxy ), cung cấp các phương thức truy vấn bao gồm decimals (), description (), version (), getRoundData () và latestRoundData (). Trong đó, tham số answer được trả về bởi phương thức latestRoundData () chính là giá mới nhất. Cần lưu ý rằng, đối với các cặp giao dịch được định giá bằng đô la Mỹ, độ chính xác thường được thống nhất là 8 số thập phân.
Bằng cách này, các nhà phát triển có thể dễ dàng lấy và sử dụng dữ liệu giá thời gian thực do máy Oracle cung cấp trên chuỗi mà không cần tự xử lý các cuộc gọi API phức tạp và quy trình xác minh dữ liệu.