Máy Oracle: Cầu nối giữa Blockchain và thế giới thực
Trong công nghệ Blockchain, Máy Oracle đóng vai trò cơ sở hạ tầng quan trọng. Nó là một hệ thống có khả năng cung cấp thông tin bên ngoài cho các hợp đồng thông minh trên chuỗi, đóng vai trò là phần mềm trung gian giữa Blockchain và thế giới bên ngoài. Chức năng chính của Máy Oracle là cung cấp dữ liệu bên ngoài cần thiết cho các hợp đồng thông minh trên Blockchain.
Lấy một ví dụ, giả sử chúng ta tạo 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ô trong một ngày nhất định. Do hợp đồng thông minh không thể trực tiếp lấy dữ liệu thực tế ngoài chuỗi này, vì vậy cần thông qua Máy Oracle để thực hiện. Trong trường hợp này, hợp đồng thông minh sẽ ghi dữ liệu khối lượng giao dịch dầu thô cần thiết 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 và theo dõi nhật ký sự kiện này. Khi phát hiện yêu cầu trong giao dịch, quy trình đó sẽ thông qua việc gửi giao dịch trên chuỗi, gọi các phương thức liên quan của hợp đồng, để tải thông tin khối lượng giao dịch dầu thô của ngày chỉ định lên hợp đồng thông minh.
Chainlink: Lãnh đạo Máy Oracle Blockchain
Trong lĩnh vực Máy Oracle, Chainlink chắc chắn là dự án có thị phần lớn nhất. Là một giải pháp Máy Oracle phi tập trung, mục tiêu của Chainlink là cung cấp dữ liệu phát sinh từ thế giới thực cho Blockchain một cách an toàn nhất. Trên cơ sở nguyên lý Máy Oracle cơ bản, Chainlink đã xây dựng một hệ sinh thái xung quanh token LINK, tạo thành một vòng lặp tích cực thông qua các động lực kinh tế.
Việc kích hoạt Máy Oracle Chainlink cần thông qua việc chuyển nhượng token LINK. LINK là token hợp đồng ERC677 dựa 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.
transferAndCall trong token ERC677
Chuẩn ERC677 là tiêu chuẩn được Chainlink đề xuất để thích ứng với các tình huống dịch vụ Máy Oracle. Nó bổ sung phương thức transferAndCall trên nền tảng ERC20 tiêu chuẩn, kết hợp thanh toán và yêu cầu dịch vụ thành một, đáp ứng nhu cầu trong các tình huống kinh doanh của Máy Oracle.
Khi người dùng sử dụng transferAndCall để chuyển tiền, ngoài việc chuyển tiền ERC20 thông thường, còn sẽ kiểm tra xem địa chỉ nhận có phải là địa chỉ hợp đồng hay không. Nếu có, thì sẽ gọi phương thức onTokenTransfer của địa chỉ đó. Cần lưu ý rằng, trước khi yêu cầu dịch vụ máy Oracle, người dùng nên xác nhận độ tin cậy của máy Oracle đó, vì dịch vụ máy Oracle cần phải thanh toán trước.
Quy trình yêu cầu oracle trên blockchain
Khi người tiêu dùng Máy Oracle sử dụng phương pháp transferAndCall để thanh toán phí và yêu cầu dịch vụ, phương pháp onTokenTransfer trong hợp đồng Máy Oracle sẽ thực hiện một loạt kiểm tra an toàn trước tiên. Điều này bao gồm việc xác minh việc chuyển tiền có phải là mã thông báo 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 xem dữ liệu có chứa bộ chọn chức năng đúng hay không, v.v.
Sau khi kiểm tra an ninh, hợp đồng sẽ tạo ra một requestId duy nhất và đặt thời gian hết hạn cho yêu cầu. Cuối cùng, hợp đồng sẽ phát ra một sự kiện OracleRequest, sự kiện này chứa dữ liệu chi tiết của yêu cầu.
Cơ chế phản hồi nút ngoài chuỗi
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 cụ thể của yêu cầu, thông qua API mạng để gọi và lấy dữ liệu cần thiết. Sau đó, nút sẽ gọi phương thức fulfillOracleRequest để gửi dữ liệu lên chuỗi.
Phương pháp này sẽ thực hiện một loạt các xác minh, bao gồm kiểm tra xem người gọi có được ủy quyền hay không, 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, hợp đồng sẽ ghi lại số lượng token có thể rút và xóa requestId khỏi bản đồ commitments. Cuối cùng, hợp đồng sẽ gọi hàm callback của hợp đồng của người yêu cầu, trả dữ liệu về cho người tiêu dùng.
Ứng dụng thực tế của Máy Oracle giá
Đố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 đã có, có thể trực tiếp sử dụng giao diện Price Feed do Chainlink cung cấp. Mỗi cặp giao dịch đều có một Price Feed riêng ( còn được gọi là Aggregator ), thực chất là một hợp đồng AggregatorProxy.
Các giao diện này thường cung cấp một số phương thức truy vấn sau:
decimals(): Trả về số chữ số chính xác của dữ liệu giá
description(): Trả về tên cặp giao dịch
version():Đánh dấu loại Aggregator mà Proxy trỏ tới
getRoundData(_roundId): Lấy dữ liệu giá của vòng cụ thể
latestRoundData(): Lấy dữ liệu giá mới nhất
Trong hầu hết các tình huống ứng dụng, hợp đồng có thể chỉ cần đọc giá mới nhất, tức là gọi phương thức latestRoundData(). Tham số answer trả về chính là giá mới nhất.
Cần lưu ý rằng, hầu hết các ứng dụng đọc giá token đều được tính bằng USD. Trong trường hợp này, độ chính xác thường được thống nhất là 8 chữ số, điều này đơn giản hóa vấn đề xử lý độ chính xác giữa các token khác nhau.
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.
5 thích
Phần thưởng
5
7
Chia sẻ
Bình luận
0/400
nft_widow
· 17giờ trước
Máy Oracle tuyệt vời Đây không phải là có thể đi ngang rồi sao!
Xem bản gốcTrả lời0
CountdownToBroke
· 17giờ trước
chỉ là người qua đường trên chuỗi mà thôi
Xem bản gốcTrả lời0
BlockchainBouncer
· 17giờ trước
Gà gà lại đến giải thích cơ chế Máy Oracle rồi!
Xem bản gốcTrả lời0
StakeTillRetire
· 17giờ trước
Máy Oracle này thật sự tuyệt vời, hợp đồng thông minh của tôi không thể thiếu nó.
Xem bản gốcTrả lời0
FUD_Whisperer
· 17giờ trước
Hợp đồng không đủ tiền ăn cơm rồi.
Xem bản gốcTrả lời0
HalfPositionRunner
· 18giờ trước
Dữ liệu về việc chiên dầu này dựa vào Máy Oracle để cứu.
Máy Oracle如何成为Blockchain与现实世界的数据桥梁
Máy Oracle: Cầu nối giữa Blockchain và thế giới thực
Trong công nghệ Blockchain, Máy Oracle đóng vai trò cơ sở hạ tầng quan trọng. Nó là một hệ thống có khả năng cung cấp thông tin bên ngoài cho các hợp đồng thông minh trên chuỗi, đóng vai trò là phần mềm trung gian giữa Blockchain và thế giới bên ngoài. Chức năng chính của Máy Oracle là cung cấp dữ liệu bên ngoài cần thiết cho các hợp đồng thông minh trên Blockchain.
Lấy một ví dụ, giả sử chúng ta tạo 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ô trong một ngày nhất định. Do hợp đồng thông minh không thể trực tiếp lấy dữ liệu thực tế ngoài chuỗi này, vì vậy cần thông qua Máy Oracle để thực hiện. Trong trường hợp này, hợp đồng thông minh sẽ ghi dữ liệu khối lượng giao dịch dầu thô cần thiết 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 và theo dõi nhật ký sự kiện này. Khi phát hiện yêu cầu trong giao dịch, quy trình đó sẽ thông qua việc gửi giao dịch trên chuỗi, gọi các phương thức liên quan của hợp đồng, để tải thông tin khối lượng giao dịch dầu thô của ngày chỉ định lên hợp đồng thông minh.
Chainlink: Lãnh đạo Máy Oracle Blockchain
Trong lĩnh vực Máy Oracle, Chainlink chắc chắn là dự án có thị phần lớn nhất. Là một giải pháp Máy Oracle phi tập trung, mục tiêu của Chainlink là cung cấp dữ liệu phát sinh từ thế giới thực cho Blockchain một cách an toàn nhất. Trên cơ sở nguyên lý Máy Oracle cơ bản, Chainlink đã xây dựng một hệ sinh thái xung quanh token LINK, tạo thành một vòng lặp tích cực thông qua các động lực kinh tế.
Việc kích hoạt Máy Oracle Chainlink cần thông qua việc chuyển nhượng token LINK. LINK là token hợp đồng ERC677 dựa 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.
transferAndCall trong token ERC677
Chuẩn ERC677 là tiêu chuẩn được Chainlink đề xuất để thích ứng với các tình huống dịch vụ Máy Oracle. Nó bổ sung phương thức transferAndCall trên nền tảng ERC20 tiêu chuẩn, kết hợp thanh toán và yêu cầu dịch vụ thành một, đáp ứng nhu cầu trong các tình huống kinh doanh của Máy Oracle.
Khi người dùng sử dụng transferAndCall để chuyển tiền, ngoài việc chuyển tiền ERC20 thông thường, còn sẽ kiểm tra xem địa chỉ nhận có phải là địa chỉ hợp đồng hay không. Nếu có, thì sẽ gọi phương thức onTokenTransfer của địa chỉ đó. Cần lưu ý rằng, trước khi yêu cầu dịch vụ máy Oracle, người dùng nên xác nhận độ tin cậy của máy Oracle đó, vì dịch vụ máy Oracle cần phải thanh toán trước.
Quy trình yêu cầu oracle trên blockchain
Khi người tiêu dùng Máy Oracle sử dụng phương pháp transferAndCall để thanh toán phí và yêu cầu dịch vụ, phương pháp onTokenTransfer trong hợp đồng Máy Oracle sẽ thực hiện một loạt kiểm tra an toàn trước tiên. Điều này bao gồm việc xác minh việc chuyển tiền có phải là mã thông báo 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 xem dữ liệu có chứa bộ chọn chức năng đúng hay không, v.v.
Sau khi kiểm tra an ninh, hợp đồng sẽ tạo ra một requestId duy nhất và đặt thời gian hết hạn cho yêu cầu. Cuối cùng, hợp đồng sẽ phát ra một sự kiện OracleRequest, sự kiện này chứa dữ liệu chi tiết của yêu cầu.
Cơ chế phản hồi nút ngoài chuỗi
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 cụ thể của yêu cầu, thông qua API mạng để gọi và lấy dữ liệu cần thiết. Sau đó, nút sẽ gọi phương thức fulfillOracleRequest để gửi dữ liệu lên chuỗi.
Phương pháp này sẽ thực hiện một loạt các xác minh, bao gồm kiểm tra xem người gọi có được ủy quyền hay không, 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, hợp đồng sẽ ghi lại số lượng token có thể rút và xóa requestId khỏi bản đồ commitments. Cuối cùng, hợp đồng sẽ gọi hàm callback của hợp đồng của người yêu cầu, trả dữ liệu về cho người tiêu dùng.
Ứng dụng thực tế của Máy Oracle giá
Đố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 đã có, có thể trực tiếp sử dụng giao diện Price Feed do Chainlink cung cấp. Mỗi cặp giao dịch đều có một Price Feed riêng ( còn được gọi là Aggregator ), thực chất là một hợp đồng AggregatorProxy.
Các giao diện này thường cung cấp một số phương thức truy vấn sau:
Trong hầu hết các tình huống ứng dụng, hợp đồng có thể chỉ cần đọc giá mới nhất, tức là gọi phương thức latestRoundData(). Tham số answer trả về chính là giá mới nhất.
Cần lưu ý rằng, hầu hết các ứng dụng đọc giá token đều được tính bằng USD. Trong trường hợp này, độ chính xác thường được thống nhất là 8 chữ số, điều này đơn giản hóa vấn đề xử lý độ chính xác giữa các token khác nhau.