Để tránh điểm lỗi đơn, một số dịch vụ Máy Oracle đã áp dụng thiết kế phân tán. Lấy dịch vụ cung cấp giá BTC đô la Mỹ làm ví dụ, một nền tảng Máy Oracle nổi tiếng đã tập hợp 31 nguồn giá để cung cấp dịch vụ cho người dùng.
Mã nguồn hợp đồng của bộ tổng hợp này có thể được xem trên trình duyệt khối Ethereum. Bằng cách gọi phương thức transmitters trong hợp đồng, có thể xem tất cả các Máy Oracle ngoại tuyến mà bộ tổng hợp này bao gồm.
Mỗi máy Oracle ngoài chuỗi có thể cung cấp dữ liệu giá bằng cách gọi phương thức transmit để phản hồi yêu cầu của người dùng trong bộ tổng hợp. Những máy Oracle ngoài chuỗi này là một số tài khoản bên ngoài sở hữu (EOA), chúng không chỉ cung cấp dữ liệu giá cho bộ tổng hợp BTC/USD mà còn có thể cung cấp dữ liệu giá cho các bộ tổng hợp khác ( như ETH/USD).
Quy trình xử lý hợp đồng trên chuỗi đại khái như sau:
Đầu tiên đọc trạng thái hợp đồng hiện tại và thực hiện một loạt kiểm tra.
Sau khi kiểm tra xong, tiến hành một số công việc chuẩn bị.
Tiếp theo sử dụng ecrecover() để xác thực dữ liệu chữ ký, kiểm tra xem giá trị hash có khớp với hash của _report hay không. Đồng thời kiểm tra xem vai trò của người ký có phải là Signer hay không, và cần kiểm tra tính trùng lặp của chữ ký.
Cuối cùng, kiểm tra xem các giá trị quan sát có được sắp xếp theo thứ tự hay không. Từ các giá trị quan sát đã được sắp xếp, chọn trung vị median, và đảm bảo rằng median không vượt quá hai ngưỡng trên và dưới. Nếu không có vấn đề gì, ghi lại câu trả lời của máy Oracle trong s_transmissions. Ngoài ra, cũng cần kiểm tra câu trả lời.
Ở đây, sau một loạt các gọi hàm, cuối cùng sẽ gọi phương thức validate của hợp đồng Máy Oracle với giá cả, điểm quan trọng là so sánh độ lệch giá mà hai bên Máy Oracle đưa ra có nằm trong phạm vi chấp nhận được hay không.
Đăng ký nguồn cấp dữ liệu
Để tăng cường tính linh hoạt và giảm chi phí quản trị, một số nền tảng đã ra mắt Feed Registry. Nó có thể được hiểu là một trình hợp nhất PriceFeeds, đã hợp nhất nhiều priceFeed. Với nó, người sử dụng không cần tự thiết lập priceFeed, có thể trực tiếp đọc dữ liệu giá thông qua Feed Registry.
cơ chế báo giá
Giá của Máy Oracle thường được thu thập qua nhiều cấp độ dữ liệu, chủ yếu bao gồm ba cấp độ: tập hợp nguồn dữ liệu, tập hợp nhà điều hành nút và tập hợp mạng Máy Oracle.
Dữ liệu giá gốc chủ yếu đến từ các nền tảng giao dịch tập trung và phi tập trung lớn. Một số nhà cung cấp dịch vụ tổng hợp dữ liệu chuyên biệt sẽ thu thập dữ liệu giá gốc từ những nền tảng này và tiến hành chế biến, tổng hợp, chẳng hạn như tính toán trọng số dựa trên khối lượng giao dịch, tính thanh khoản và sự chênh lệch thời gian. Đây là sự tổng hợp nguồn dữ liệu ở cấp độ đầu tiên.
Lớp thứ hai là sự tập hợp của các nhà điều hành nút. Mỗi nhà điều hành nút chịu trách nhiệm vận hành phần mềm cốt lõi, lấy dữ liệu giá từ nhiều nhà cung cấp dịch vụ tập hợp dữ liệu độc lập và tính toán giá trị trung bình, loại bỏ các giá trị bất thường và thời gian ngừng hoạt động của API.
Lớp cuối cùng là sự tổng hợp của toàn bộ mạng Máy Oracle, cách phổ biến là lấy giá trị trung bình của dữ liệu khi số lượng nút phản hồi đạt đến giá trị đã định.
Cập nhật giá thường cần phải đáp ứng một trong hai tham số kích hoạt: ngưỡng sai lệch hoặc ngưỡng nhịp tim. Giá trị của hai tham số này có thể khác nhau giữa các nguồn giá khác nhau.
Nói chung, một số nền tảng Máy Oracle nổi tiếng có khả năng kết nối giá cả dễ dàng và độ an toàn cao, nhưng do cơ chế cập nhật giá có ngưỡng sai lệch, dẫn đến việc cập nhật chậm, phù hợp với các ứng dụng không quá nhạy cảm với việc cập nhật giá. Đây cũng là hạn chế của nó, không thể áp dụng cho mọi bối cảnh.
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.
21 thích
Phần thưởng
21
8
Chia sẻ
Bình luận
0/400
CryptoFortuneTeller
· 16giờ trước
31 nguồn có đủ không? Tôi hơi lo lắng.
Xem bản gốcTrả lời0
CountdownToBroke
· 16giờ trước
Cái này thật sự có thể tránh bị Phiếu giảm giá không?
Xem bản gốcTrả lời0
WealthCoffee
· 08-02 23:24
Phân phối thật thú vị, cuối cùng không cần phải xem sắc mặt của người khác nữa.
Xem bản gốcTrả lời0
HashBrownies
· 08-02 07:13
31 nguồn dữ liệu, tổng cảm giác không đủ nhiều điểm ~
Xem bản gốcTrả lời0
RektDetective
· 08-02 07:08
Cả ngày nhìn các tổ chức tụt quần, cuối cùng thì đã nhìn đủ chưa?
Xem bản gốcTrả lời0
GasFeeCrier
· 08-02 07:00
Hảo gia hảo, nhìn chóng mặt gas tiểu vương tử
Xem bản gốcTrả lời0
NFTArchaeologis
· 08-02 06:57
Mã on-chain đọc như những chữ viết phong kín đầy thanh lịch.
Xem bản gốcTrả lời0
MEV_Whisperer
· 08-02 06:56
Tập hợp nhiều như vậy có tác dụng gì, vẫn không chính xác.
Hệ thống Máy Oracle giá phân tán: Tối ưu hóa tổng hợp đa tầng và Đăng ký Feed
Hệ thống Máy Oracle giá phân phối
Để tránh điểm lỗi đơn, một số dịch vụ Máy Oracle đã áp dụng thiết kế phân tán. Lấy dịch vụ cung cấp giá BTC đô la Mỹ làm ví dụ, một nền tảng Máy Oracle nổi tiếng đã tập hợp 31 nguồn giá để cung cấp dịch vụ cho người dùng.
Mã nguồn hợp đồng của bộ tổng hợp này có thể được xem trên trình duyệt khối Ethereum. Bằng cách gọi phương thức transmitters trong hợp đồng, có thể xem tất cả các Máy Oracle ngoại tuyến mà bộ tổng hợp này bao gồm.
Mỗi máy Oracle ngoài chuỗi có thể cung cấp dữ liệu giá bằng cách gọi phương thức transmit để phản hồi yêu cầu của người dùng trong bộ tổng hợp. Những máy Oracle ngoài chuỗi này là một số tài khoản bên ngoài sở hữu (EOA), chúng không chỉ cung cấp dữ liệu giá cho bộ tổng hợp BTC/USD mà còn có thể cung cấp dữ liệu giá cho các bộ tổng hợp khác ( như ETH/USD).
Quy trình xử lý hợp đồng trên chuỗi đại khái như sau:
Đầu tiên đọc trạng thái hợp đồng hiện tại và thực hiện một loạt kiểm tra.
Sau khi kiểm tra xong, tiến hành một số công việc chuẩn bị.
Tiếp theo sử dụng ecrecover() để xác thực dữ liệu chữ ký, kiểm tra xem giá trị hash có khớp với hash của _report hay không. Đồng thời kiểm tra xem vai trò của người ký có phải là Signer hay không, và cần kiểm tra tính trùng lặp của chữ ký.
Cuối cùng, kiểm tra xem các giá trị quan sát có được sắp xếp theo thứ tự hay không. Từ các giá trị quan sát đã được sắp xếp, chọn trung vị median, và đảm bảo rằng median không vượt quá hai ngưỡng trên và dưới. Nếu không có vấn đề gì, ghi lại câu trả lời của máy Oracle trong s_transmissions. Ngoài ra, cũng cần kiểm tra câu trả lời.
Ở đây, sau một loạt các gọi hàm, cuối cùng sẽ gọi phương thức validate của hợp đồng Máy Oracle với giá cả, điểm quan trọng là so sánh độ lệch giá mà hai bên Máy Oracle đưa ra có nằm trong phạm vi chấp nhận được hay không.
Đăng ký nguồn cấp dữ liệu
Để tăng cường tính linh hoạt và giảm chi phí quản trị, một số nền tảng đã ra mắt Feed Registry. Nó có thể được hiểu là một trình hợp nhất PriceFeeds, đã hợp nhất nhiều priceFeed. Với nó, người sử dụng không cần tự thiết lập priceFeed, có thể trực tiếp đọc dữ liệu giá thông qua Feed Registry.
cơ chế báo giá
Giá của Máy Oracle thường được thu thập qua nhiều cấp độ dữ liệu, chủ yếu bao gồm ba cấp độ: tập hợp nguồn dữ liệu, tập hợp nhà điều hành nút và tập hợp mạng Máy Oracle.
Dữ liệu giá gốc chủ yếu đến từ các nền tảng giao dịch tập trung và phi tập trung lớn. Một số nhà cung cấp dịch vụ tổng hợp dữ liệu chuyên biệt sẽ thu thập dữ liệu giá gốc từ những nền tảng này và tiến hành chế biến, tổng hợp, chẳng hạn như tính toán trọng số dựa trên khối lượng giao dịch, tính thanh khoản và sự chênh lệch thời gian. Đây là sự tổng hợp nguồn dữ liệu ở cấp độ đầu tiên.
Lớp thứ hai là sự tập hợp của các nhà điều hành nút. Mỗi nhà điều hành nút chịu trách nhiệm vận hành phần mềm cốt lõi, lấy dữ liệu giá từ nhiều nhà cung cấp dịch vụ tập hợp dữ liệu độc lập và tính toán giá trị trung bình, loại bỏ các giá trị bất thường và thời gian ngừng hoạt động của API.
Lớp cuối cùng là sự tổng hợp của toàn bộ mạng Máy Oracle, cách phổ biến là lấy giá trị trung bình của dữ liệu khi số lượng nút phản hồi đạt đến giá trị đã định.
Cập nhật giá thường cần phải đáp ứng một trong hai tham số kích hoạt: ngưỡng sai lệch hoặc ngưỡng nhịp tim. Giá trị của hai tham số này có thể khác nhau giữa các nguồn giá khác nhau.
Nói chung, một số nền tảng Máy Oracle nổi tiếng có khả năng kết nối giá cả dễ dàng và độ an toàn cao, nhưng do cơ chế cập nhật giá có ngưỡng sai lệch, dẫn đến việc cập nhật chậm, phù hợp với các ứng dụng không quá nhạy cảm với việc cập nhật giá. Đây cũng là hạn chế của nó, không thể áp dụng cho mọi bối cảnh.