Hệ thống Máy Oracle: cầu nối giữa hợp đồng thông minh và thế giới thực
Trong hệ sinh thái blockchain, Máy Oracle đóng vai trò quan trọng. Nó hoạt động như một hệ thống trung gian, 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, từ đó kết nối thế giới blockchain với thế giới thực. Chức năng cốt lõi 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.
Lấy một ví dụ, giả sử chúng ta tạo ra 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ô của một ngày nào đó. Do hợp đồng thông minh không thể trực tiếp lấy được dữ liệu thực tế ngoài chuỗi như vậy, nên cần phải nhờ vào Máy Oracle để thực hiện. Trong trường hợp này, 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 đó, bên ngoài chuỗi sẽ khởi động một quy trình để giám sát và đăng ký 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: Giải pháp Máy Oracle chính thống
Trong thị trường blockchain hiện tại, Chainlink là dự án máy Oracle có thị phần cao nhất. Là một hệ thống 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 theo 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 được thúc đẩy bởi các động lực kinh tế xung quanh token LINK.
Việc kích hoạt Máy Oracle Chainlink cần được thực hiện thông qua việc chuyển nhượng token LINK. LINK là hợp đồng ERC677 trên mạng Ethereum, và chức năng Máy Oracle dựa trên token LINK ERC677 thuộc chế độ yêu cầu/phản hồi.
cơ chế transferAndCall của token ERC677
Chainlink trong thiết kế khung Máy Oracle, trước tiên xem xét cách người dùng thanh toán phí dịch vụ cho Máy Oracle. Do các token ERC20 tiêu chuẩn không thể đáp ứng nhu cầu "cung cấp dịch vụ sau khi thanh toán", Chainlink đã đề xuất tiêu chuẩn ERC677 phù hợp với các tình huống dịch vụ Máy Oracle.
ERC677 đã bổ sung phương thức transferAndCall trên cơ sở tiêu chuẩn ERC20. Phương thức này kết hợp 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 khoản ERC20, 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 cần xác định xem Máy Oracle đó có đáng tin cậy hay không, vì Máy Oracle cần thu phí trước khi cung cấp dịch vụ.
quy trình yêu cầu oracle trên chuỗi
Khi người tiêu dùng 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 trong hợp đồng Máy Oracle sẽ thực hiện một loạt các kiểm tra an toàn. Điều này bao gồm việc xác minh xem việc chuyển nhượng có phải là token LINK, kiểm tra xem độ dài dữ liệu có vượt quá giới hạn hay không, và xác minh xem dữ liệu có chứa bộ chọn hàm đúng hay không.
Sau khi kiểm tra thành công, hợp đồng thông minh Máy Oracle sẽ tạo ra một requestId duy nhất và lưu trữ thông tin liên quan đến yêu cầu trong bản đồ commitments. 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
Sau khi nút ngoài chuỗi phát hiện sự kiện OracleRequest, nó sẽ phân tích thông tin chi tiết của yêu cầu và gọi API để lấy dữ liệu cần thiết. Tiếp theo, nút sẽ gửi giao dịch để gọi phương thức fulfillOracleRequest trong hợp đồng Oracle, 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ó phải là nút được ủy quyền hay không, xác minh tính hợp lệ của ID 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 ID yêu cầu đó khỏi bản đồ commitments.
Cuối cùng, hợp đồng sẽ gọi hàm callback của hợp đồng yêu cầu, trả dữ liệu về hợp đồng tiêu thụ. Đối với Máy Oracle giá, điều này thường liên quan đến việc cập nhật dữ liệu giá hiện tại.
Sử dụng đơn giản của Máy Oracle giá cả
Đố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ệ hiện có, không cần tự chỉ định URL API, có thể trực tiếp sử dụng Price Feed do Chainlink cung cấp. Mỗi cặp giao dịch đều có một Price Feed độc lập ( còn được gọi là Aggregator ), thực chất là một hợp đồng AggregatorProxy.
Những hợp đồng này thường cung cấp một số phương thức truy vấn chính sau đây:
decimals(): Trả về độ chính xác của dữ liệu giá
description(): Trả về tên cặp giao dịch
version(): Xác định loại Aggregator mà Proxy trỏ đến
getRoundData(_roundId): Lấy dữ liệu giá lịch sử theo ID vòng.
latestRoundData(): Lấy dữ liệu giá mới nhất
Trong hầu hết các trường hợp ứ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ề của phương thức này chính là giá mới nhất.
Cần lưu ý rằng hầu hết các ứng dụng khi đọc giá token đều tính bằng đơn vị USD. Trong trường hợp này, độ chính xác của dữ liệu giá thường được đồng nhất là 8 chữ số thập phân, đ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.
13 thích
Phần thưởng
13
8
Chia sẻ
Bình luận
0/400
Anon32942
· 07-15 12:05
Máy Oracle cái này tôi hiểu! Tôi đã tích trữ một chút link
Phân tích sâu về Chainlink: Máy Oracle kết nối Blockchain với thế giới thực
Hệ thống Máy Oracle: cầu nối giữa hợp đồng thông minh và thế giới thực
Trong hệ sinh thái blockchain, Máy Oracle đóng vai trò quan trọng. Nó hoạt động như một hệ thống trung gian, 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, từ đó kết nối thế giới blockchain với thế giới thực. Chức năng cốt lõi 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.
Lấy một ví dụ, giả sử chúng ta tạo ra 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ô của một ngày nào đó. Do hợp đồng thông minh không thể trực tiếp lấy được dữ liệu thực tế ngoài chuỗi như vậy, nên cần phải nhờ vào Máy Oracle để thực hiện. Trong trường hợp này, 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 đó, bên ngoài chuỗi sẽ khởi động một quy trình để giám sát và đăng ký 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: Giải pháp Máy Oracle chính thống
Trong thị trường blockchain hiện tại, Chainlink là dự án máy Oracle có thị phần cao nhất. Là một hệ thống 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 theo 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 được thúc đẩy bởi các động lực kinh tế xung quanh token LINK.
Việc kích hoạt Máy Oracle Chainlink cần được thực hiện thông qua việc chuyển nhượng token LINK. LINK là hợp đồng ERC677 trên mạng Ethereum, và chức năng Máy Oracle dựa trên token LINK ERC677 thuộc chế độ yêu cầu/phản hồi.
cơ chế transferAndCall của token ERC677
Chainlink trong thiết kế khung Máy Oracle, trước tiên xem xét cách người dùng thanh toán phí dịch vụ cho Máy Oracle. Do các token ERC20 tiêu chuẩn không thể đáp ứng nhu cầu "cung cấp dịch vụ sau khi thanh toán", Chainlink đã đề xuất tiêu chuẩn ERC677 phù hợp với các tình huống dịch vụ Máy Oracle.
ERC677 đã bổ sung phương thức transferAndCall trên cơ sở tiêu chuẩn ERC20. Phương thức này kết hợp 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 khoản ERC20, 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 cần xác định xem Máy Oracle đó có đáng tin cậy hay không, vì Máy Oracle cần thu phí trước khi cung cấp dịch vụ.
quy trình yêu cầu oracle trên chuỗi
Khi người tiêu dùng 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 trong hợp đồng Máy Oracle sẽ thực hiện một loạt các kiểm tra an toàn. Điều này bao gồm việc xác minh xem việc chuyển nhượng có phải là token LINK, kiểm tra xem độ dài dữ liệu có vượt quá giới hạn hay không, và xác minh xem dữ liệu có chứa bộ chọn hàm đúng hay không.
Sau khi kiểm tra thành công, hợp đồng thông minh Máy Oracle sẽ tạo ra một requestId duy nhất và lưu trữ thông tin liên quan đến yêu cầu trong bản đồ commitments. 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
Sau khi nút ngoài chuỗi phát hiện sự kiện OracleRequest, nó sẽ phân tích thông tin chi tiết của yêu cầu và gọi API để lấy dữ liệu cần thiết. Tiếp theo, nút sẽ gửi giao dịch để gọi phương thức fulfillOracleRequest trong hợp đồng Oracle, 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ó phải là nút được ủy quyền hay không, xác minh tính hợp lệ của ID 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 ID yêu cầu đó khỏi bản đồ commitments.
Cuối cùng, hợp đồng sẽ gọi hàm callback của hợp đồng yêu cầu, trả dữ liệu về hợp đồng tiêu thụ. Đối với Máy Oracle giá, điều này thường liên quan đến việc cập nhật dữ liệu giá hiện tại.
Sử dụng đơn giản của Máy Oracle giá cả
Đố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ệ hiện có, không cần tự chỉ định URL API, có thể trực tiếp sử dụng Price Feed do Chainlink cung cấp. Mỗi cặp giao dịch đều có một Price Feed độc lập ( còn được gọi là Aggregator ), thực chất là một hợp đồng AggregatorProxy.
Những hợp đồng này thường cung cấp một số phương thức truy vấn chính sau đây:
Trong hầu hết các trường hợp ứ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ề của phương thức này chính là giá mới nhất.
Cần lưu ý rằng hầu hết các ứng dụng khi đọc giá token đều tính bằng đơn vị USD. Trong trường hợp này, độ chính xác của dữ liệu giá thường được đồng nhất là 8 chữ số thập phân, đ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.