Các nền tảng Oracle luôn cần đảm bảo độ tin cậy cao vì phải cung cấp dữ liệu chính xác về giá cả, nếu không sẽ gây thiệt hại tài chính cho người dùng ở hạ nguồn. Việc này càng cấp bách khi nền tảng đã lớn mạnh, cần phải đảm bảo tính đúng đắn cho lượng dữ liệu khổng lồ, ngay cả những xác suất thất bại nhỏ cũng có thể trở nên không thể chấp nhận được.
Thị trường thường quan niệm rằng tất cả các oracle đều bình đẳng: mọi nguồn cấp dữ liệu giá đều hoàn hảo và sẽ luôn công bố giá một cách chính xác nhất. Bản thân khái niệm “oracle” đã mang nội hàm có vẻ như một nhà cầm quyền luôn nói ra sự thật và không thể mắc sai lầm. Tuy nhiên, nhận thức này không hẳn luôn đúng. Thật khó để xây dựng một hệ thống có độ tin cậy cao. Ngay cả các công ty phần mềm lớn cũng bị đình chỉ buộc ngừng cung cấp dịch vụ và những người tham gia thị trường tài chính truyền thống phải tốn nhiều công sức để dọn dẹp các nguồn cấp dữ liệu không chính xác. Do đó, độ tin cậy là điều cần thiết và vô cùng quan trọng trong một hệ thống oracle nói riêng.
Tại Pyth Network, Pyth chú trọng vào độ tin cậy gấp 3 lần. Pyth có dự phòng sẵn một kế hoạch nếu oracle thất bại. Trong whitepaper, Pyth đã đề xuất một cơ chế cho mục đích này. Tuyến phòng thủ đầu tiên của Pyth là xây dựng cơ chế và tập hợp các nguồn dữ liệu thật sự chất lượng.
Trong phạm vi bài viết này, Pyth muốn mang đến hình dung rõ ràng hơn về cách mà họ cam kết độ tin cậy của nguồn cấp dữ liệu giá. Pyth đã quyết định mô hình hóa theo xác suất, định lượng và tối ưu hóa để đạt được độ tin cậy cao nhất.
Độ tin cậy là gì?
Độ tin cậy là cách viết tắt của tính khả dụng (tính sẵn có) và độ chính xác:
- Tính khả dụng là phần trăm thời gian mà nhà oracle công bố giá.
- Độ chính xác là phần trăm thời gian mà giá oracle phù hợp với giá thị trường rộng hơn.
Dữ liệu cần phải được cung cấp nhanh và chính xác. Độ chính xác là điều hết sức quan trọng: việc công bố chỉ một mức giá không chính xác cũng có thể gây ra tình trạng thanh lý và thua lỗ. Do đó, cần đảm bảo xác suất xuất bản một giá không chính xác phải rất nhỏ. Tuy nhiên, khả năng cung cấp hạn chế cũng rất nguy hiểm, vì nếu chậm trễ thì có thể gây ra tổn thất cho người dùng.
Muốn định lượng độ tin cậy, Pyth cần định lượng tính khả dụng và độ chính xác. Để làm được điều này, hãy cùng đi vào tìm hiểu phần tiếp theo.
Mô hình cơ sở cho độ tin cậy của nguồn cấp dữ liệu giá
Pyth tổng hợp các báo cáo của nhiều nhà xuất bản khác nhau để tạo ra một giá trị tổng hợp duy nhất, kể cả khi một số nhà xuất bản đang offline hoặc cung cấp giá sai lệch thì vẫn sẽ không ảnh hưởng đến giá trị sau cùng. Nguồn cấp dữ liệu giá sẽ luôn có sẵn, miễn là có ít nhất 3 nhà xuất bản đang online.
Nếu giả định rằng các nhà xuất bản dữ liệu là độc lập, Pyth có thể dễ dàng tính toán được xác suất giá trị tổng hợp không chính xác. Để minh họa, hãy xem xét nguồn cấp dữ liệu giá từ 3 nhà xuất bản, trong đó mỗi nhà xuất bản có tỷ lệ khả dụng 99% và tỷ lệ chính xác 99,9%. Tất cả 3 nhà xuất bản phải đang online để tổng hợp, xác suất của sự kiện này là:
Theo đó, tỷ lệ offline là 2,97%. Nếu nguồn cấp dữ liệu đang online, thì ít nhất 2 trong số 3 nhà xuất bản chắc chắn sẽ cung cấp giá chính xác. Chúng ta có thể tính xác suất của sự kiện này như sau:
Theo đó thì tỷ lệ dữ liệu lỗi là 0,0039%.
Nguy cơ của các lỗi liên quan
Một vấn đề song hành với phân tích này là các nhà xuất bản có thể mắc lỗi. Phân tích đơn giản như trên lại bỏ qua vấn đề này, khiến chúng ta đánh giá quá cao độ tin cậy của một nguồn cấp dữ liệu. Để minh họa, giả sử chúng ta đưa một số phụ thuộc phức tạp hơn vào mô hình đơn giản trên. Hãy liên kết hai nhà xuất bản đầu tiên với nhau sao cho tính sẵn có và độ chính xác của họ là ngang nhau (ví dụ: họ đang chạy trên cùng một cơ sở hạ tầng và sử dụng cùng một thuật toán để xuất bản giá). Sau đó, chúng ta có thể tính toán xác suất của giá trị tổng thể online như sau:
Nghĩa là tỷ lệ offline là 1,99%. Xác suất giá trị tổng hợp online và chính xác trở thành:
Điều này ngụ ý tỷ lệ lỗi 0,098%. Phân tích đơn giản ở trên đánh giá thấp đáng kể xác suất thất bại của nguồn cấp dữ liệu giá tổng thể.
Mối quan hệ giữa các nhà xuất bản dữ liệu
Pyth muốn lập mô hình độ tin cậy của nguồn cấp dữ liệu giá theo cách tính toán chính xác mối tương quan giữa các nhà xuất bản. Hơn nữa, Pyth muốn cung cấp ước tính tổng hợp thông qua cả giá tổng hợp và khoảng tin cậy.
Một cách để xây dựng mô hình này là thể hiện trực tiếp quá trình giá xuất hiện on-chain. Nhà xuất bản đọc nguồn cấp dữ liệu giá từ một số sàn giao dịch, tổng hợp chúng thành một ước tính giá, sau đó gửi cho on-chain. Toàn bộ quá trình này được thực hiện trong một chương trình phần mềm liên tục đọc dữ liệu và đẩy các bản cập nhật. Có một số giai đoạn trong quy trình này có thể phát sinh các vấn đề:
- Nguồn cấp dữ liệu giá cơ bản có thể không chính xác. Lỗi này có thể ảnh hưởng đồng thời đến tất cả các nhà xuất bản đọc từ nguồn cấp dữ liệu giá không chính xác.
- Phần mềm để xử lý nguồn cấp dữ liệu có thể mắc lỗi, khiến họ báo giá không chính xác.
- Cơ sở hạ tầng của nhà xuất bản bị lỗi, khiến họ không thể gửi giao dịch của mình. Trong trường hợp đơn giản nhất, chương trình phần mềm của nhà xuất bản có thể gặp sự cố hoặc cơ sở hạ tầng lưu trữ của họ ngừng hoạt động.
- Các lỗi xác nhận giao dịch như vậy cũng có thể xảy ra do tắc nghẽn mạng Solana, ngừng hoạt động node RPC hoặc sự cố với máy chủ lưu trữ của chính nhà xuất bản. Lưu ý rằng nhiều chế độ lỗi này sẽ đồng thời ảnh hưởng đến nhiều nhà xuất bản.
Mục tiêu của Pyth là ước tính xác suất mà những lỗi này ảnh hưởng đến giá tổng hợp và khoảng tin cậy. Mỗi lỗi này đều có một số xác suất xảy ra mà Pyth có thể ước tính từ dữ liệu lịch sử. Giá tổng hợp và khoảng tin cậy là sự kết hợp giá của nhiều nhà xuất bản, vì vậy Pyth cần một cách để kết hợp xác suất của các thất bại riêng lẻ. Để làm được điều đó, Pyth sử dụng mạng Bayes, một công cụ biểu diễn các phân phối xác suất dưới dạng một số phân phối thành phần nhỏ hơn:
Bayes thể hiện phân phối xác suất trên một tập hợp các biến. Mỗi vòng tròn trong sơ đồ trên đại diện cho một biến và các cạnh biểu thị sự phụ thuộc giữa các biến. Mỗi biến có thể nhận một trong một số giá trị, ví dụ: giá trị tổng hợp có thể là CHÍNH XÁC, KHÔNG CHÍNH XÁC hoặc OFFLINE. Bayes xác định xác suất của mỗi giá trị như vậy. Hãy xem những ghi chú này để biết sơ qua về Bayes.
Bayes giả định rằng có một tập hợp N nhà xuất bản dữ liệu và M sàn giao dịch. Mạng chứa nhiều biến cho mỗi nhà xuất bản và sàn giao dịch. Gọi các biến của nhà xuất bản là i và các biến của sàn giao dịch là j. Mạng ở trên mã hóa phân phối xác suất trên các biến sau:
- mⱼ đại diện cho một nguồn cấp dữ liệu từ sàn giao dịch j. Biến này có 2 giá trị: CHÍNH XÁC hoặc KHÔNG CHÍNH XÁC, thể hiện giá trên sàn giao dịch hiện tại có chính xác hay không.
- Bᵢ cho biết liệu nhà xuất bản i có đang gặp lỗi phần mềm nào không. Biến này có 2 giá trị: BUG hoặc NO_BUG. Khi giá trị của biến này là BUG, nhà xuất bản sẽ báo giá không chính xác cho on-chain.
- Z_Gᵢ cho biết cơ sở hạ tầng của nhà xuất bản i có online hay không. Biến này có 2 giá trị: ONLINE hoặc OFFLINE. Pyth đã nhóm các nhà xuất bản lại với nhau để thể hiện thực tế là nhiều nhà xuất bản đang cùng chia sẻ cơ sở hạ tầng; biến Gᵢ đại diện cho nhóm mà nhà xuất bản thứ i tham gia. Do đó, tất cả các nhà xuất bản trong cùng một nhóm đều offline cùng nhau.
- μᵢ đại diện cho giá trị mà nhà xuất bản i gửi lên on-chain. Biến này có thể nhận 3 giá trị: CHÍNH XÁC, KHÔNG CHÍNH XÁC hoặc OFFLINE. Biến này phụ thuộc vào các sàn giao dịch mà nhà xuất bản lấy nguồn dữ liệu (từ biến mⱼ), trạng thái lỗi phần mềm của nhà xuất bản (cạnh từ biến Bᵢ) và trạng thái trực tuyến của nhà xuất bản (từ biến Z_Gᵢ). Ví dụ: nếu cơ sở hạ tầng của nhà xuất bản ngoại tuyến Z_Gᵢ = OFFLINE), thì giá của nhà xuất bản sẽ = OFFLINE.
- Tổng hợp đại diện cho giá tổng hợp. Biến này có thể nhận 3 giá trị: CHÍNH XÁC, KHÔNG CHÍNH XÁC hoặc OFFLINE. Biến này phụ thuộc vào giá của nhà xuất bản (từ biến μᵢ). Giá trị này được xác định bằng cách mã hóa logic tổng hợp của chương trình on-chain dưới dạng phân phối xác suất. Cụ thể, nếu biến này là OFFLINE trừ khi có 3 nhà xuất bản trở lên báo giá. Sẽ là KHÔNG CHÍNH XÁC nếu có hơn 50% nhà xuất bản trực tuyến là KHÔNG CHÍNH XÁC. Nếu không, nó là CHÍNH XÁC. Các ngưỡng phần trăm được sử dụng trong phân phối này là thuộc tính của logic tổng hợp của Pyth.
Mô hình này cho phép Pyth thiết lập xác suất của các chế độ thất bại được liệt kê ở trên, sau đó kết hợp các xác suất đó để xác định liệu rằng giá trị tổng hợp có chính xác hay không. Quá trình này sử dụng một thuật toán được gọi là lan truyền niềm tin. Truyền bá niềm tin là một cách tiếp cận đã được nghiên cứu kỹ lưỡng để tính toán hiệu quả các xác suất trên Bayes. Để biết thêm chi tiết về việc truyền bá niềm tin, hãy xem các ghi chú này và video hữu ích này.
Sử dụng Bayes để xác định độ tin cậy của nguồn cấp dữ liệu
Một trường hợp sử dụng cho Bayesian là ước tính độ tin cậy của nguồn cấp dữ liệu giá của Pyth. Chúng ta có thể xác định xác suất này bằng cách ước tính xác suất của từng chế độ sai lầm ở trên dựa trên dữ liệu lịch sử, sau đó kết hợp chúng với Bayes.
Pyth đã sử dụng kho lưu trữ dữ liệu lịch sử để ước tính xác suất của từng lỗi. Bản lưu trữ này ghi lại tất cả dữ liệu được lưu trữ trong chương trình trực tuyến ở mọi vùng trên Solana, bao gồm trạng thái của mọi nhà xuất bản (tức là họ có trực tuyến không), giá cả và độ tin cậy của họ cũng như giá tổng hợp và khoảng tin cậy. Pyth đã tính toán các số lượng sau từ kho lưu trữ:
- Xác suất mà các sàn giao dịch khác nhau (mⱼs) là không chính xác. Pyth đã loại bỏ các sàn giao dịch riêng lẻ, giả sử rằng mỗi nhà xuất bản đại diện cho một nguồn dữ liệu duy nhất và sau đó sử dụng xác suất thực nghiệm để giá của nhà xuất bản chênh lệch hơn 10% so với giá tổng hợp.
- Xác suất xảy ra lỗi phần mềm ở mỗi nhà xuất bản Bᵢ. Pyth tính toán xác suất này bằng cách tìm kiếm các điểm bất thường cực đoan trong chuỗi giá lịch sử, chẳng hạn như giá bằng 0 hoặc giá là một bậc có độ lớn khác với tổng thể. Những điểm bất thường như vậy thường là kết quả của một lỗi phần mềm của nhà xuất bản.
- Nhà xuất bản nào trong mỗi nhóm cơ sở hạ tầng dùng chung Gᵢ. Pyth hình thành các nhóm bằng cách tính toán mối tương quan theo cặp giữa tính sẵn có của mỗi nhà xuất bản và bao gồm bất kỳ hai nhà xuất bản nào trong cùng một nhóm nếu mối tương quan theo cặp của họ lớn hơn một số ngưỡng, chẳng hạn như 0,2.
- Xác suất để mỗi nhóm cơ sở hạ tầng ngoại tuyến Z_Gᵢ. Pyth đặt xác suất này một cách thận trọng thành tỷ lệ ngoại tuyến cao nhất trong số tất cả các nhà xuất bản trong nhóm cơ sở hạ tầng đó.
Khi chúng ta có những xác suất này, chúng ta có thể chỉ cần chạy truyền niềm tin để có được các ước tính xác suất cho các giá trị có thể có khác nhau của Aggregate.
Kết quả mẫu
Là một ứng dụng ví dụ của mô hình này, Pyth đã sử dụng nó để phân tích độ tin cậy của nguồn cấp dữ liệu giá ONE/USD. Vào giữa tháng 2, ONE/USD đã có 3 nhà xuất bản trên testnet. Tính có sẵn của các nhà xuất bản này như sau:
- Nhà xuất bản 1: 22,1%
- Nhà xuất bản 2: 99,9%
- Nhà xuất bản 3: 21,84%
Mô hình cơ sở dự đoán xác suất tổng hợp sau đây trực tuyến:
Tuy nhiên, tỷ lệ trực tuyến thực tế được quan sát theo kinh nghiệm tại thời điểm đó là 21,81%, do khả năng có sẵn của nhà xuất bản thứ nhất và thứ ba gần như tỷ lệ thuận hoàn toàn. Khi Pyth chạy kết quả cho Bayes trên dữ liệu thực nghiệm này, Pyth nhận được các dự đoán sau:
- P (tổng hợp = KHÔNG CHÍNH XÁC) = 0,007%
- P (tổng hợp = OFFLINE) = 78,20%
- P (tổng hợp = CHÍNH XÁC) = 21,80%
Những dự đoán này gần với tỷ lệ quan sát thực nghiệm hơn. Các dự đoán của Bayes tốt hơn so với các dự đoán của mô hình cơ sở đơn giản vì nó lập mô hình các chế độ thất bại tương quan giữa các nhà xuất bản. Lưu ý rằng mô hình này có giá trị mặc dù chúng ta có thể tính trực tiếp xác suất ngoại tuyến từ tập dữ liệu lịch sử. Xác suất giá không chính xác thấp đến mức chúng ta cần một lượng dữ liệu mẫu lớn để tin tưởng vào xác suất được ước tính theo kinh nghiệm. Mô hình cho phép Pyth ngoại suy tỷ lệ lỗi này từ một mẫu dữ liệu nhỏ hơn.
Chúng ta phải làm gì với những kết quả này?
Hiện Pyth đang sử dụng Bayesian để đánh giá một cách có hệ thống độ tin cậy của các sản phẩm được niêm yết trên Pyth. Mô hình này cho phép Pyth trả lời hai câu hỏi quan trọng:
Sản phẩm nên đưa vào Mainnet?
Pyth thường thêm các sản phẩm mới vào testnet và sau đó chuyển chúng vào mainnet sau khi có đủ nhà xuất bản báo giá chúng. Giờ đây, Pyth kết hợp tính sẵn có và độ chính xác vào quy trình này: mọi sản phẩm mới phải ngoại tuyến <1% thời gian và xác suất xuất bản tổng hợp không chính xác phải <0,001%. (Trong thực tế, việc đạt được <1% khi ngoại tuyến là một thách thức chính. Xác suất giá hoặc độ tin cậy không chính xác thường là các lệnh có độ lớn dưới 0,001%.)
Ví dụ: trong trường hợp ONE, kết quả giữa tháng 2 rõ ràng không đáp ứng các ngưỡng này. Do đó, Pyth đã tìm kiếm các nhà xuất bản bổ sung. Đến giữa tháng 3, Pyth đã có 6 nhà xuất bản báo giá ONE/USD. Chạy lại mô hình cho kết quả sau:
- P (tổng hợp = KHÔNG CHÍNH XÁC) = 0,000013%
- P (tổng hợp = OFFLINE) = 0,78%
- P (tổng hợp = CHÍNH XÁC) = 99,22%
Tại thời điểm này, nguồn cấp dữ liệu đáp ứng các tiêu chí về độ chính xác và tính khả dụng của Pyth, vì vậy Pyth đã thêm nó vào mainnet.
Sản phẩm nào cần cải tiến?
Một trong những nỗ lực chính của Pyth vào lúc này là nâng cao độ tin cậy của tất cả các sản phẩm hiện có trên mainnet. Quá trình này yêu cầu Pyth tuyển dụng các nhà xuất bản giá cho các sản phẩm này. Mô hình trên cho phép Pyth sắp xếp thứ tự các sản phẩm hiện có và có thể tập trung nỗ lực tuyển dụng vào những giai đoạn có tác động mạnh nhất.
Các nhà phát triển đóng góp vào toàn mạng lưới Pyth cam kết xây dựng nguồn cấp dữ liệu có độ tin cậy cao. Các ứng dụng DeFi phụ thuộc vào các oracle đáng tin cậy và các lỗi của oracle có thể gây ra tổn thất tài chính nghiêm trọng. Tổng kết lại, sau bài viết này người dùng sẽ dễ dàng hình dung được cách thức mà Pyth đang thực hiện để đo lường và cải thiện độ tin cậy của nguồn cấp dữ liệu giá. Pyth hy vọng rằng mô hình này sẽ truyền tải cam kết của mình với cộng đồng là trở thành nhà oracle đáng tin cậy nhất DeFi.
Tìm hiểu thêm về Pyth Network: Website | Twitter | Telegram | Discord
Có thể bạn quan tâm:
- Pyth Network x Optiver thông báo quan hệ hợp tác
- xbullion x Pyth Network cung cấp dữ liệu giá kim loại quý đáng tin cậy
Lưu ý: Đây là nội dung được tài trợ, Coin68 không trực tiếp ủng hộ bất cứ thông tin gì từ bài viết trên và không đảm bảo tính trung thực của bài viết. Bạn đọc nên tự tiến hành nghiên cứu trước khi đưa ra các quyết định có ảnh hưởng đến bản thân hay doanh nghiệp của mình và sẵn sàng chịu trách nhiệm cho những lựa chọn của bản thân. Bài viết trên không nên được xem như là một lời khuyên đầu tư.