Oracle là gì?
Oracle (nguồn cấp dữ liệu) là bên trung gian giúp thu hẹp khoảng cách giữa các dịch vụ trong thế giới thực (off-chain) và các giao thức blockchain (on-chain). Các oracle truy xuất dữ liệu bên ngoài và đăng dữ liệu này lên blockchain cho nhu cầu sử dụng của hợp đồng thông minh. Các oracle cũng chuyển tiếp các thông điệp và các hướng dẫn từ một hợp đồng thông minh đến các hệ thống bên ngoài ngoài chuỗi. Ngoài ra, các oracle cũng phải đảm bảo rằng dữ liệu mà họ cung cấp là chính xác và không thể bị thao túng.
Price oracle (nguồn cung cấp giá) lý tưởng cần có các yếu tố sau:
- Độ chính xác cao – các giá trị của price oracle phải phản ánh dữ liệu hiện tại.
- Non-gameable – oracle phải kháng lại sự thao túng.
- Tính kịp thời – dữ liệu từ price oracle phải là dữ liệu chính xác kịp thời, tốt nhất là theo từng block.
- Tính phi tập trung – price oracle được xác minh trong một hệ thống phi tập trung và mở (decentralized and permissionless system).
Oracle trên chuỗi (on-chain) và ngoài chuỗi (off-chain)
Các oracle trong DeFi có thể được phân loại thành nguồn cung cấp dữ liệu on-chain – nơi mà giá đến từ một nguồn trên chuỗi (ví dụ: Uniswap); hoặc off-chain – nơi mà giá đến từ một nguồn ngoài chuỗi. Ngoài ra, các oracle cũng có thể được phân thành loại tập trung (centralized) – trong đó dữ liệu được xác thực bởi một nhà điều hành duy nhất (ví dụ: Compound); hoặc phi tập trung (decentralized) – trong đó dữ liệu được xác thực bởi một nhà điều hành độc lập (ví dụ: MakerDAO).
Có một số ưu điểm và nhược điểm khi sử dụng các oracle off-chain hoặc on-chain. Vấn đề chính đối với các oracle on-chain là tính dễ bị thao túng. DeFi có một vài ví dụ về các trường hợp khai thác lỗ hổng, trong đó các oracle trên chuỗi được kết hợp với các khoản vay nhanh để khai thác các giao thức – Harvest Finance (tháng 10 năm 2020), yVault (tháng 7 năm 2020), bZx (tháng 2 năm 2020). Những đợt tấn công này đã khiến nhiều giao thức tích hợp các price oracle ngoài chuỗi hoặc hybrid vào các hợp đồng thông minh của mình để giảm thiểu các sự cố.
Phân tích các nguồn cung cấp dữ liệu Ethereum DeFi hàng đầu
Phân tích này bao gồm các giao thức và các oracle trong DeFi được sử dụng rộng rãi nhất. Linda Xie có phân tích sâu hơn về các DeFi Oracle trên Github của cô ấy.
Chainlink Oracles (Hybrid decentralized)
Chainlink sử dụng một mạng lưới oracle phi tập trung gồm ít nhất 7 nhà điều hành node (node operator) độc lập. Các nhà điều hành node chịu trách nhiệm truy xuất dữ liệu ngoài chuỗi và cung cấp nó cho một hợp đồng thông minh đang yêu cầu. Các nhà điều hành node cung cấp dữ liệu theo hai cách:
Cách thứ nhất là thông qua Mô hình API tiêu chuẩn của Chainlink, trong đó các nhà điều hành node là một thực thể riêng biệt với nguồn dữ liệu. Giá do các nhà điều hành node cung cấp được FluxAggregator tổng hợp trên chuỗi thành một phản hồi duy nhất được sử dụng để cập nhật Price Reference Feed (Nguồn cấp dữ liệu tham khảo giá) trên chuỗi. Các cập nhật này xảy ra khi giá lệch ra khỏi chuỗi nhiều hơn mức ngưỡng lệch hợp đồng (contract deviation threshold) hoặc với cập nhật theo thời gian tối thiểu như ngưỡng nhịp tim.
Mô hình thứ hai là Origin Signed Data Model (Mô hình dữ liệu đã ký gốc), xảy ra khi một nhà cung cấp dữ liệu (ví dụ: Kaiko) vận hành node của chính họ. Dữ liệu cung cấp được ký bằng một khóa cá nhân duy nhất và được phân phối trực tiếp đến các hợp đồng thông minh, điều này giúp nguồn cấp dữ liệu Sybil không thể bị ảnh hưởng. Hơn nữa, mỗi nhà điều hành node gửi dữ liệu từ một địa chỉ công khai, cho phép các node được đánh giá dựa trên danh tiếng của chúng, đôi khi được gọi là “bảo mật thông qua tính minh bạch”.
MakerDAO v2 Oracles (Off-chain decentralized)
Maker Protocol sử dụng các price oracle gọi là Medianizer để xác định thời điểm thanh lý Vault và tính toán lượng Dai mà một Vault cụ thể có thể tạo ra. Mỗi oracle tạo ra một giá tham chiếu cho một tài sản. Các oracle nhận dữ liệu từ các nguồn cấp dữ liệu độc lập do các cá nhân và tổ chức cung cấp.
Phiên bản v2 của MakerDAO sử dụng một số địa chỉ trong danh sách cho phép (whitelisted addresses) làm Feed (Nguồn dữ liệu). Mỗi Feed lấy giá trung bình (median price) từ một tập hợp các giao dịch bằng cách sử dụng công cụ tên là Setzer. Giá trung bình được đẩy đến Secure Scuttlebutt Network để tổng hợp dữ liệu, sau đó gửi giá trung bình được báo cáo đến Medianizer. Medianizer lấy giá trị trung bình của các báo cáo và xuất bản nó dưới dạng giá tham chiếu nếu 1) giá tham chiếu mới lớn hơn 1% giá nguồn, hoặc 2) lần cập nhật giá cuối cùng cách đây hơn 6 giờ. Giá tham chiếu bị hoãn lại bởi Oracle Security Module (Mô-đun bảo mật Oracle) trước khi được sử dụng bởi các hợp đồng thông minh Maker khác.
Medianizer cũng kiểm soát việc bổ sung hoặc loại bỏ các Feed trong whitelist do các holder MKR bỏ phiếu. Mỗi Feed có thể thiết lập cấu hình Setzer để lấy thông tin từ bất kỳ giao dịch nào mà họ chọn. Hợp đồng Medianizer cũng đặt ra số lượng nguồn cấp dữ liệu hợp lệ tối thiểu cần thiết để xác thực giá tham chiếu. Do quyền kiểm soát phiếu bầu của MKR đối với Medianizer, về mặt lý thuyết có thể sẽ có một cuộc tấn công kiểu 51% để thao túng các oracle.
Các price oracle của MakerDAO đã thất bại vào Black Thursday ngày 12 tháng 3 năm 2020, do giá gas tăng cao khiến Medianizer không thể cập nhật giá kịp thời. ETH đã giảm 43% vào ngày hôm đó, và khi các price oracle của MakerDAO cuối cùng cũng có thể cập nhật giá thì sự thay đổi lớn về giá đã dẫn đến việc thanh lý khổng lồ, khi đó toàn bộ vault đã bị dọn sạch. GlassNode có một bài viết thực sự tuyệt vời mô tả chi tiết các điểm thất bại khác nhau của MakerDAO vào Black Thursday.
Uniswap v3 Oracles (On-chain decentralized)
Uniswap v2 đã cố gắng loại bỏ sự thao túng price oracle của v2 bằng cách sử dụng giá trung bình theo thời gian (time-weighted average price – TWAP). Giá của giao dịch cuối cùng của khối trước đó được ghi lại ở đầu khối trước khi tiến hành bất kỳ giao dịch. Giá tích lũy cuối khối, tổng giá Uniswap cho mỗi giây, được thêm vào cuối khối, điều này cho phép người dùng tính toán con số TWAP chính xác.
TWAP khiến việc thao túng tốn nhiều chi phí hơn bởi vì chi phí tăng tuyến tính với tính thanh khoản trên Uniswap cũng như thời lượng của TWAP.
Uniswap v3 dự kiến sẽ ra mắt vào ngày 5 tháng 5 cho Ethereum và ngày 12 tháng 5 cho Optimism. Nhóm tuyên bố sẽ sử dụng các oracle có cùng mức giá trung bình theo thời gian (TWAP) như phiên bản v2 với các nâng cấp sau:
- Các thời điểm kiểm tra bộ tích lũy nội bộ cho phép các hợp đồng bên ngoài tính toán các on-chain TWAP trong các khoảng thời gian gần mà không cần lưu trữ các giá trị của bộ tích lũy trước đó.
- V3 theo dõi tổng các quy mô giá (log price) mà người dùng tính trung bình nhân TWAP, so với tổng giá trị tích lũy giá mà người dùng tính trung bình cộng TWAP ở V2.
- Bộ tích lũy thanh khoản cũng được theo dõi để người dùng có thể quyết định các pool nào có TWAP đáng tin cậy nhất.
Những người dùng muốn giá Uniswap v3 sẽ gọi bộ tích lũy và lấy các giá trị tại t1 và t2 và tính giá trung bình nhân có trọng số thông qua công thức sau:
Những cải tiến mới đối với TWAP tạo điều kiện cho các phép tính rẻ hơn cho các đường trung bình động (moving average) và việc phân tích ngoại lai. Bộ tích lũy thanh khoản cũng cho phép các hợp đồng thông minh xác định những oracle nào đáng tin cậy dựa trên tính thanh khoản của chúng. Điều này sẽ làm giảm sự biến động trong các price oracle của Uniswap và giảm định giá sai (mispricing) trong các hợp đồng thông minh sử dụng chúng.
Compound Oracles (Hybrid centralized)
Compound sử dụng kết hợp các nguồn giá ngoài chuỗi và trên chuỗi cho oracle của mình. Các reporter (các nguồn giá được ủy quyền) có thể là sàn giao dịch tập trung, giao thức DeFi, ứng dụng và bàn giao dịch OTC. Hợp đồng aggregator tiếp nhận giá từ các reporter và xác minh trước khi tính giá trị trung bình. Giá trị trung bình sau đó được công bố trên thị trường Compound.
Logic xác minh của aggregator sẽ kiểm tra xem giá mới có nằm trong giới hạn trên và dưới giá neo do hợp đồng cố định cung cấp hay không. Nếu giá mới nằm ngoài các giới hạn đó, thì nó sẽ bị loại bỏ và giá tham chiếu không được cập nhật.
Các holder của Compound kiểm soát các quản trị viên, là những người đặt và thay đổi các thông số của aggregator – số lượng reporter tối thiểu cần thiết để cập nhật giá, địa chỉ của hợp đồng neo và tỷ lệ dung sai để xác định các giới hạn trên và dưới. Các holder của Compound cũng quyết định yếu tố tài sản thế chấp, nguồn gốc của oracle và bất kỳ điều chỉnh nào về mô hình lãi suất.
Synthetix Oracles (On-chain centralized)
Kể từ tháng 9 năm 2020, Synthetix đã chuyển tất cả các price oracle sang Chainlink oracle. Các công cụ Synthetix bao gồm thị trường ngoại hối (FX), hàng hóa, chỉ số và tiền điện tử.
Giá cho các hợp đồng Synth đảo chiều được tính bằng cách sử dụng các hợp đồng đối tác “lâu dài” của chúng. Giá cho các chỉ số được Chainlink tính toán ngoài chuỗi sau đó được công bố trên chuỗi. Vì các bản cập nhật của Chainlink chỉ xảy ra khi giá tăng 1% hoặc cứ sau mỗi 6 giờ nên các hợp đồng Synthetix phải chấp nhận khả năng sẽ có cuộc tấn công front-running trên các cập nhật oracle.
Synthetix đã tạo ra một cơ chế xếp hàng, nơi các giao dịch Synth chỉ diễn ra sau khi oracle cập nhật giá. Các giao dịch Syth được xếp vào hàng đợi cùng với blockHeight hiện hành và có thể được xử lý bởi bất kỳ ai vào bất kỳ lúc nào. Tuy nhiên, các giao dịch trong hàng đợi chỉ được thực hiện khi nguồn và đích của chúng đã được cập nhật bởi một oracle, do đó loại bỏ mọi khả năng front-running.
Coinbase Oracles (Off-chain decentralized)
Price oracle của Coinbase sử dụng giao diện lập trình ứng dụng Coinbase Pro (Coinbase Pro API) làm nguồn dữ liệu giá.
Bất kỳ ai cũng có thể công bố giá trên chuỗi vì dữ liệu được ký bằng khóa cá nhân (private key) của Coinbase. Điều này cho phép user xác minh tính xác thực của dữ liệu bằng khóa công cộng (public key) của Coinbase.
Coinbase cũng triển khai bộ lọc offchain để loại bỏ các điểm dữ liệu cực đoan lệch khỏi phạm vi biến động dự kiến của giá. Sàn giao dịch này cũng sử dụng hợp đồng ‘neo’ của oracle mở trong Compound như một cách kiểm tra trên chuỗi. Nếu giá của oracle cách quá xa so với giá neo, nó sẽ bị từ chối và không được đẩy lên blockchain.
Compound sử dụng price oracle trên Coinbase với tư cách là một Reporter trong View Contract. Giá Coinbase được Uniswap cố định để tạo ra một nguồn dữ liệu mạnh mẽ.
Oracle được sử dụng như thế nào trong DeFi?
Trong khi công dụng chính của các oracle trong DeFi có liên quan đến các thanh lý trong giao thức cho vay, vẫn có một vài cách sử dụng khác để định giá các oracle.
- Thanh lý các khoản vay không thế chấp – Các giao thức cho vay (đó là Maker, Compound, Cream và Aave) dựa vào các oracle về giá để xác định khi nào nên thanh lý các khoản vay của người dùng. Nếu tài sản thế chấp của người dùng giảm xuống dưới một ngưỡng nhất định, thì tài khoản sẵn sàng để thanh lý.
- Định giá phái sinh – Các nền tảng phái sinh (đó là Synthetix, Perpetual, Hegic) sử dụng oracle để tính toán giá trị của tài sản tiền mã hóa – các quyền chọn, hợp đồng tương lai, tài sản tổng hợp.
- Định giá chỉ mục – Các nền tảng chỉ mục (ví dụ: Set) sử dụng các oracle để truy xuất giá của các thành phần chỉ mục.
- Các giao thức bảo hiểm – Các giao thức bảo hiểm (ví dụ: Nexus Mutual) sử dụng các oracle để xác minh các yêu cầu bồi thường trước khi chúng được báo cáo lên blockchain và yêu cầu bồi thường được xét duyệt.
- Các thị trường dự đoán – Thị trường dự đoán phi tập trung (tức August và Gnosis) dựa vào các oracle để giải quyết thỏa thuận sự kiện ngoài chuỗi
Vượt ra ngoài các oracle trên Ethereum
Các giải pháp oracle tồn tại ngoài các giải pháp Ethereum nêu trên. Julien Thevenard và Nikolaos Kostopoulos đều đánh giá một vài oracle trong blockchain khác trong các bài báo tương ứng. Dưới đây là tổng quan nhanh về các oracle trong blockchain khác nằm ngoài phạm vi của báo cáo này.
Tổng kết
Mỗi oracle, dù là on-chain hay off-chain, đều có những lợi ích và điểm yếu riêng. Liệu các price oracle trên Ethereum có hứng chịu thêm một cuộc khủng hoảng Black Thursday như MakerDAO nữa hay không vẫn là điều chưa xác định được. Khi đánh giá các oracle, cần lưu ý các vectơ tấn công (attack vector) sau:
- Tấn công 51% (51% attack): Một thực thể đơn lẻ sở hữu hay một nhóm thông đồng để kiểm soát phần lớn các node? Phần lớn các node này sau đó có thể dùng để kiểm soát những nguồn cấp dữ liệu giá nào được sử dụng và dữ liệu nào được coi là xác thực tuyệt đối.
- Tấn công nhân bản (mirroring attack): Liệu một oracle node có thể chia sẻ dữ liệu của nó cho các node khác mà nó kiểm soát không? Thông tin sai lệch có thể lan truyền dễ dàng như một trò chơi truyền tin (game of telephone).
- Thao túng dữ liệu (data manipulation): Liệu các oracle có đang nhận dữ liệu từ các nguồn đáng tin cậy không? Các nhà cung cấp dữ liệu bên ngoài có thể đang gửi dữ liệu bị thao túng hoặc dữ liệu xấu.
- Liveliness issue: Các oracle hoặc các node có đang đẩy dữ liệu trên chuỗi một cách kịp thời không? Cập nhật oracle hay node có thể bị tạm dừng một cách cố ý hoặc vô tình, gây ra tác động tiêu cực đến các hợp đồng thông minh phụ thuộc vào chúng.
Khi các giao thức tiền mã hóa tiếp tục phát triển, tầm quan trọng của dữ liệu chính xác on/off-chain sẽ tăng lên. Hơn nữa, khi các giao thức mở này được tích hợp thêm với các hệ thống bên ngoài, các thiết bị IoT (Internet of Things) và phần mềm khác, khiến nhu cầu truyền một cách chính xác dữ liệu bên ngoài đến các mạng lưới blockchain sẽ thu hút sự chú ý đáng kể.
Các use case khác nhau có thể yêu cầu các thiết kế oracle riêng biệt và dẫn đến tình huống các giao thức hoặc công ty lựa chọn các giải pháp cụ thể dựa trên sự đánh đổi đã nói ở trên.
Bài viết được Hiền Lê thuộc FXCE crypto biên tập từ “An Overview of DeFi Price Oracles” của Tesa Ho, với mục đích cung cấp thông tin và phi lợi nhuận. Chúng tôi không khuyến nghị đầu tư và không chịu trách nhiệm cho các quyết định đầu tư liên quan đến nội dung bài dịch.
—————————————————
Cập nhập tin tức và thảo luận crypto tại
FXCE Crypto | Các cập nhật khác