Để tránh lỗi điểm đơn và cải thiện độ tin cậy, một số hệ thống Máy Oracle đã áp dụng thiết kế phân tán. Lấy một Máy Oracle nổi tiếng làm ví dụ, dịch vụ giá BTC/USD của nó đã tổng hợp 31 nguồn giá độc lập.
Thiết kế hợp đồng của bộ tổng hợp này cho phép nhiều máy Oracle ngoại tuyến cung cấp dữ liệu giá. Mỗi máy Oracle là một tài khoản bên ngoài độc lập, có thể gửi dữ liệu đến bộ tổng hợp thông qua các phương thức cụ thể. Những máy Oracle này không chỉ cung cấp dữ liệu cho BTC/USD mà còn có thể phục vụ cho các cặp giá khác cùng một lúc.
Hợp đồng tổng hợp sẽ thực hiện một loạt các xác minh khi xử lý dữ liệu đã gửi:
Đầu tiên kiểm tra trạng thái hiện tại của hợp đồng và các tham số có đáp ứng yêu cầu hay không.
Sau đó xác minh từng chữ ký, đảm bảo dữ liệu đến từ người ký được ủy quyền và kiểm tra xem có chữ ký nào bị trùng lặp không.
Sắp xếp các giá trị quan sát, chọn giá trị trung vị làm kết quả cuối cùng, đồng thời đảm bảo rằng kết quả đó không vượt quá ngưỡng đã thiết lập.
Cuối cùng ghi lại kết quả vào trạng thái hợp đồng, và có thể thực hiện xác minh chéo bổ sung.
Để đơn giản hóa hơn nữa quy trình kết nối, một số hệ thống còn cung cấp tính năng "Feed Registry". Điều này tương đương với một trình tổng hợp nguồn giá, người dùng không cần phải thiết lập riêng từng nguồn giá cho mỗi mã thông báo, mà có thể trực tiếp đọc dữ liệu giá của nhiều mã thông báo thông qua Registry.
Trong cơ chế báo giá, thường sẽ có nhiều lớp dữ liệu tổng hợp:
Mặt dữ liệu nguồn: Tích hợp dữ liệu gốc từ các nền tảng giao dịch lớn.
Cấp độ nhà điều hành nút: Mỗi nút lấy dữ liệu từ nhiều dịch vụ tổng hợp dữ liệu và lấy giá trị trung bình.
Mặt mạng: Dữ liệu từ nhiều nút được tổng hợp lại, thường sử dụng giá trị trung bình.
Cập nhật giá cuối cùng thường phải đáp ứng ngưỡng sai lệch hoặc ngưỡng nhịp tim mới được kích hoạt. Cơ chế này đảm bảo độ tin cậy của dữ liệu, nhưng cũng dẫn đến việc cập nhật giá tương đối chậm, phù hợp hơn với các tình huống ứng dụng không yêu cầu tính thời gian thực.
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.
20 thích
Phần thưởng
20
4
Chia sẻ
Bình luận
0/400
EthMaximalist
· 07-18 16:17
Giá trị trung vị có ổn không? Có vẻ như hơi gian lận.
Máy Oracle phân tán làm thế nào để tổng hợp dữ liệu từ nhiều nguồn để cung cấp giá đáng tin cậy
Thiết kế và triển khai Máy Oracle giá phân tán
Để tránh lỗi điểm đơn và cải thiện độ tin cậy, một số hệ thống Máy Oracle đã áp dụng thiết kế phân tán. Lấy một Máy Oracle nổi tiếng làm ví dụ, dịch vụ giá BTC/USD của nó đã tổng hợp 31 nguồn giá độc lập.
Thiết kế hợp đồng của bộ tổng hợp này cho phép nhiều máy Oracle ngoại tuyến cung cấp dữ liệu giá. Mỗi máy Oracle là một tài khoản bên ngoài độc lập, có thể gửi dữ liệu đến bộ tổng hợp thông qua các phương thức cụ thể. Những máy Oracle này không chỉ cung cấp dữ liệu cho BTC/USD mà còn có thể phục vụ cho các cặp giá khác cùng một lúc.
Hợp đồng tổng hợp sẽ thực hiện một loạt các xác minh khi xử lý dữ liệu đã gửi:
Đầu tiên kiểm tra trạng thái hiện tại của hợp đồng và các tham số có đáp ứng yêu cầu hay không.
Sau đó xác minh từng chữ ký, đảm bảo dữ liệu đến từ người ký được ủy quyền và kiểm tra xem có chữ ký nào bị trùng lặp không.
Sắp xếp các giá trị quan sát, chọn giá trị trung vị làm kết quả cuối cùng, đồng thời đảm bảo rằng kết quả đó không vượt quá ngưỡng đã thiết lập.
Cuối cùng ghi lại kết quả vào trạng thái hợp đồng, và có thể thực hiện xác minh chéo bổ sung.
Để đơn giản hóa hơn nữa quy trình kết nối, một số hệ thống còn cung cấp tính năng "Feed Registry". Điều này tương đương với một trình tổng hợp nguồn giá, người dùng không cần phải thiết lập riêng từng nguồn giá cho mỗi mã thông báo, mà có thể trực tiếp đọc dữ liệu giá của nhiều mã thông báo thông qua Registry.
Trong cơ chế báo giá, thường sẽ có nhiều lớp dữ liệu tổng hợp:
Cập nhật giá cuối cùng thường phải đáp ứng ngưỡng sai lệch hoặc ngưỡng nhịp tim mới được kích hoạt. Cơ chế này đảm bảo độ tin cậy của dữ liệu, nhưng cũng dẫn đến việc cập nhật giá tương đối chậm, phù hợp hơn với các tình huống ứng dụng không yêu cầu tính thời gian thực.