Máy Oracle công nghệ chi tiết: Lấy Chainlink làm ví dụ
Máy Oracle là cơ sở hạ tầng quan trọng kết nối hợp đồng thông minh với thế giới bên ngoài trong lĩnh vực blockchain. Nó hoạt động như một hệ thống trung gian, có khả năng cung cấp thông tin dữ liệu bên ngoài cho các hợp đồng thông minh trên chuỗi. Chức năng cốt lõi của Máy Oracle là cung cấp dữ liệu cho hợp đồng thông minh trên blockchain.
Lấy một 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 cụ thể. Do hợp đồng thông minh không thể truy cập trực tiếp vào dữ liệu thế giới thực ngoài chuỗi, lúc này cần phải nhờ đến Máy Oracle để thực hiện. Quy trình cụ thể như sau: hợp đồng thông minh trước tiên ghi nhu cầu dữ liệu khối lượng giao dịch dầu thô vào ngày cần thiết vào nhật ký sự kiện, sau đó bên ngoài chuỗi sẽ khởi động một quá trình để theo dõi và đăng ký nhật ký sự kiện này. Khi nhận được yêu cầu trong giao dịch, quá trình này sẽ thông qua việc gửi giao dịch trên chuỗi để gọi các phương pháp liên quan của hợp đồng, tải thông tin khối lượng giao dịch dầu thô vào ngày chỉ định lên hợp đồng thông minh.
Trong thị trường Máy Oracle, Chainlink chiếm lĩnh thị phần lớn nhất. Là một dự án Máy Oracle phi tập trung, Chainlink nhằm 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. Dựa trên nguyên lý Máy Oracle cơ bản, Chainlink đã xây dựng một hệ sinh thái vòng tròn tốt thông qua việc khuyến khích kinh tế xung quanh token LINK. Các Máy Oracle của Chainlink cần được kích hoạt thông qua việc chuyển token LINK. LINK là hợp đồng ERC677 trên mạng Ethereum, và chức năng Máy Oracle hoàn thành dựa trên token LINK thuộc mô hình yêu cầu/phản hồi.
Tiêu chuẩn token ERC677 bổ sung phương thức transferAndCall dựa trên ERC20. Phương thức này kết hợp việc thanh toán và yêu cầu dịch vụ thành một, đáp ứng nhu cầu của các tình huống kinh doanh Máy Oracle. Khi người dùng thực hiện chuyển khoản transferAndCall, ngoài việc chuyển ERC20, hệ thống 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ỉ đó.
Trước khi yêu cầu dịch vụ Máy Oracle, người dùng cần xác nhận độ tin cậy của Máy Oracle đó, vì Máy Oracle cần thanh toán trước khi cung cấp dịch vụ cho người tiêu dùng. Khi người tiêu dùng của Máy Oracle sử dụng phương thức transferAndCall để thanh toán phí và yêu cầu dịch vụ, 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 toàn, bao gồm xác minh chuyển khoản 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 function, v.v. Chỉ khi các kiểm tra được thông qua, thì mới gọi phương thức oracleRequest của hợp đồng oracle thông qua deleGatecall.
Phương thức oracleRequest 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. Sự kiện này chứa dữ liệu yêu cầu, được mã hóa theo định dạng CBOR. Các nút ngoài chuỗi sẽ lắng nghe sự kiện này, phân tích thông tin yêu cầu, sau đó thông qua việc gọi API để lấy dữ liệu cần thiết, cuối cùng thông qua việc gửi giao dịch để gọi phương thức fulfillOracleRequest và gửi dữ liệu lên chuỗi.
Phương thức fulfillOracleRequest 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 thực tính hợp lệ của yêu cầu, v.v. Sau khi xác minh thành công, số lượng token có thể rút sẽ được ghi lại và gọi hàm phản hồi của hợp đồng của người yêu cầu để trả về dữ liệu.
Đối với các nhà phát triển, nếu chỉ muố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ó một Price Feed riêng ( tức là Aggregator ), thực tế là hợp đồng AggregatorProxy. Các nhà phát triển có thể lấy dữ liệu giá mới nhất bằng cách gọi phương thức latestRoundData (), trong đó tham số answer chính là giá mới nhất. Hầu hết các cặp giao dịch được định giá bằng USD, độ chính xác đồng nhất là 8 chữ số, đơn giản hóa việc 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.
17 thích
Phần thưởng
17
5
Chia sẻ
Bình luận
0/400
PebbleHander
· 16giờ trước
Cũng chỉ có vậy thôi.
Xem bản gốcTrả lời0
BankruptWorker
· 16giờ trước
Quá khó rồi, từ bỏ cuộc đấu tranh.
Xem bản gốcTrả lời0
CryptoGoldmine
· 16giờ trước
Tôi đã kiếm được 200 lần lợi nhuận từ thị trường link năm ngoái, hoàn toàn dựa vào phân tích kỹ thuật.
Xem bản gốcTrả lời0
TestnetScholar
· 16giờ trước
link lại bị sao chép bài tập rồi
Xem bản gốcTrả lời0
Web3Educator
· 16giờ trước
những thứ cơ bản thú vị, để tôi giải thích điều này cho các sinh viên web3 của tôi...
Máy Oracle Chainlink: cây cầu kết nối Blockchain và thế giới thực
Máy Oracle công nghệ chi tiết: Lấy Chainlink làm ví dụ
Máy Oracle là cơ sở hạ tầng quan trọng kết nối hợp đồng thông minh với thế giới bên ngoài trong lĩnh vực blockchain. Nó hoạt động như một hệ thống trung gian, có khả năng cung cấp thông tin dữ liệu bên ngoài cho các hợp đồng thông minh trên chuỗi. Chức năng cốt lõi của Máy Oracle là cung cấp dữ liệu cho hợp đồng thông minh trên blockchain.
Lấy một 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 cụ thể. Do hợp đồng thông minh không thể truy cập trực tiếp vào dữ liệu thế giới thực ngoài chuỗi, lúc này cần phải nhờ đến Máy Oracle để thực hiện. Quy trình cụ thể như sau: hợp đồng thông minh trước tiên ghi nhu cầu dữ liệu khối lượng giao dịch dầu thô vào ngày cần thiết vào nhật ký sự kiện, sau đó bên ngoài chuỗi sẽ khởi động một quá trình để theo dõi và đăng ký nhật ký sự kiện này. Khi nhận được yêu cầu trong giao dịch, quá trình này sẽ thông qua việc gửi giao dịch trên chuỗi để gọi các phương pháp liên quan của hợp đồng, tải thông tin khối lượng giao dịch dầu thô vào ngày chỉ định lên hợp đồng thông minh.
Trong thị trường Máy Oracle, Chainlink chiếm lĩnh thị phần lớn nhất. Là một dự án Máy Oracle phi tập trung, Chainlink nhằm 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. Dựa trên nguyên lý Máy Oracle cơ bản, Chainlink đã xây dựng một hệ sinh thái vòng tròn tốt thông qua việc khuyến khích kinh tế xung quanh token LINK. Các Máy Oracle của Chainlink cần được kích hoạt thông qua việc chuyển token LINK. LINK là hợp đồng ERC677 trên mạng Ethereum, và chức năng Máy Oracle hoàn thành dựa trên token LINK thuộc mô hình yêu cầu/phản hồi.
Tiêu chuẩn token ERC677 bổ sung phương thức transferAndCall dựa trên ERC20. Phương thức này kết hợp việc thanh toán và yêu cầu dịch vụ thành một, đáp ứng nhu cầu của các tình huống kinh doanh Máy Oracle. Khi người dùng thực hiện chuyển khoản transferAndCall, ngoài việc chuyển ERC20, hệ thống 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ỉ đó.
Trước khi yêu cầu dịch vụ Máy Oracle, người dùng cần xác nhận độ tin cậy của Máy Oracle đó, vì Máy Oracle cần thanh toán trước khi cung cấp dịch vụ cho người tiêu dùng. Khi người tiêu dùng của Máy Oracle sử dụng phương thức transferAndCall để thanh toán phí và yêu cầu dịch vụ, 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 toàn, bao gồm xác minh chuyển khoản 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 function, v.v. Chỉ khi các kiểm tra được thông qua, thì mới gọi phương thức oracleRequest của hợp đồng oracle thông qua deleGatecall.
Phương thức oracleRequest 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. Sự kiện này chứa dữ liệu yêu cầu, được mã hóa theo định dạng CBOR. Các nút ngoài chuỗi sẽ lắng nghe sự kiện này, phân tích thông tin yêu cầu, sau đó thông qua việc gọi API để lấy dữ liệu cần thiết, cuối cùng thông qua việc gửi giao dịch để gọi phương thức fulfillOracleRequest và gửi dữ liệu lên chuỗi.
Phương thức fulfillOracleRequest 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 thực tính hợp lệ của yêu cầu, v.v. Sau khi xác minh thành công, số lượng token có thể rút sẽ được ghi lại và gọi hàm phản hồi của hợp đồng của người yêu cầu để trả về dữ liệu.
Đối với các nhà phát triển, nếu chỉ muố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ó một Price Feed riêng ( tức là Aggregator ), thực tế là hợp đồng AggregatorProxy. Các nhà phát triển có thể lấy dữ liệu giá mới nhất bằng cách gọi phương thức latestRoundData (), trong đó tham số answer chính là giá mới nhất. Hầu hết các cặp giao dịch được định giá bằng USD, độ chính xác đồng nhất là 8 chữ số, đơn giản hóa việc xử lý độ chính xác giữa các token khác nhau.