Khi nghe về Oracle, chắc một số bạn sẽ liên tưởng đến oracle database hay công ty oracle trong lĩnh vực IT. Bạn sẽ nghĩ “chắc là blockchain sẽ thực hiện việc truy xuất data từ oracle database” phải không? mình cũng đã từng nghĩ như vậy đấy. Nhưng Oracle trong lĩnh vực blockchain thì hoàn toàn khác và không hề liên quan gì đến Oracle database đâu nhé.
Vậy khái niệm Oracle trong blockchain là gì?
Định nghĩa cơ bản về Oracle trong ngữ cảnh của blockchain
Như bạn đã biết, blockchain là một mạng lưới do hàng ngàn máy tính vận hành trên khắp thế giới. Vào thời điểm bitcoin ra đời thì việc làm được trên blockchain chỉ là thực hiện những giao dịch thay đổi số dư coin giữa các địa chỉ, ngoài ra thì hầu như không thể làm được gì hơn. Khi có sự xuất hiện của SmartContract, người ta có thể thực hiện được nhiều thứ hơn với blockchain. Từ đó trở đi mục đích sử dụng blockchain đã được mở rộng hơn.
Người ta nghĩ đến việc ghi lại những thông tin quan trọng lên trên blockchain như di chúc, hợp đồng bảo hiểm, quyền sở hữu… vì dữ liệu trên blockchain không thể thay đổi và theo lý thuyết là không thể bị mất đi. Nhưng vấn đề được đặt ra là, blockchain không thể kết nối với nơi nào khác để lấy dữ liệu, mà nó chỉ có thể truy xuất thông tin được ghi trên chính mạng blockchain đó.
Giả sử bạn muốn viết hợp đồng là, nếu ngày mai giá thịt heo giảm xuống 50.000VND/kg thì mua giúp tôi 10kg. Nhưng vấn đề là đến ngày mai blockchain không thể kết nối với thị trường, sau đó xem giá thịt là bao nhiêu để phán đoán có mua thịt hay không. Vậy câu hỏi đặt ra là làm thế nào để ứng dụng blockchain vào thế giới thực khi nó không có liên hệ gì với thế giới thực. Oracle sinh ra để giải quyết vấn đề đó.
Chúng ta có thể hiểu khái niệm về Oracle như sau : Oracle trong blockchain là việc đưa các dữ liệu ngoài thế giới thực vào trong blockchain, giúp dữ liệu trong blockchain và thế giới thực tương tác qua lại bằng nhiều cách thức đáng tin cậy, minh bạch.
Decentralized Oracle
Làm sao để Oracle thu thập dữ liệu của thế giới thực?
Có nhiều cách để thu thập dữ liệu từ nguồn bên ngoài, dưới đây làm một vài cách làm.
- Dựa vào con người : Hỏi ai đó, một tiến sĩ, một cộng đồng, một tổ chức cung cấp thông tin và họ nhập thông tin cho bạn.
- Kết nối với các hệ thống phần mền : Database, Api, Website, mobile app…
- Kết nối với các hệ thống phần cứng : Cảm biến, các thiết bị IOT, máy quét mã code…
Đến đây chắc bạn sẽ tự hỏi vậy Oracle có phải là một Dapp (Ứng dụng phi tập trung) thu thập dữ liệu rồi cho vào blockchain hay không? Mình xin trả lời rằng Oracle không phải là một Dapp. Nó không chỉ thu thập dữ liệu mà còn làm nhiều việc hơn thế. Nó sẽ bao gồm nhiều công việc được thực hiện bằng cách kết hợp nhiều công nghệ và nghiệp vụ khác nhau để thực hiện một số quy trình như:
- Tìm nguồn dữ liệu, kết nối, thỏa thuận điều kiện, chi phí với các bên cung cấp dữ liệu.
- Xây dựng các adapter để truyền nhận dữ liệu giữa các mô hình, định dạng dữ liệu để phù hợp cho các blockchain.
- Xếp hạng và đánh giá chất lượng các nguồn dữ liệu định kỳ.
- Xác thực, phân tích, tính toán dữ liệu khi tương tác với blockchain.
Bạn có thể xem hình ảnh bên dưới về Chainlink , một đại diện của Oracle để có thể hình dung rõ hơn về một vài thứ Oracle thực hiện.
Truyền tải thông tin từ Oracle vào mạng lưới blockchain như thế nào?
Việc cung cấp dữ liệu cũng chia ra làm 2 hình thức là tập trung và phi tập trung:
- Centralized Oracle (Oracle tập trung): Một tổ chức hay cá nhân duy nhất sẽ quản lý việc thu thập dữ liệu của Oracle bằng phần mền, phần cứng, con người… Nhưng việc này đi ngược với định hướng của blockchain và sẽ xảy ra nguy cơ dữ liệu không đáng tin cậy, rủi ro mất mát hoặc tắc nghẽn hệ thống.
- Decentralized Oracle (Oracle phi tập trung): Một mô hình mạng lưới các nodes độc lập hoạt động cùng nhau để cung cấp và xác thực dữ liệu một cách phân quyền. Dữ liệu trước khi được cung cấp cho các Oracle smart contract để đưa vào blockchain thì chúng sẽ được xác thực và quản lý bởi nhiều bên, giúp đảm bảo hơn về tính minh bạch và độ tin cậy. Nếu có sự không đồng nhất về mặt dữ liệu giữa các bên thì cũng sẽ dễ phát hiện.
Như bạn cũng thấy thì Decentralized Oracle sẽ phù hợp với tiêu chí của blockchain hơn phải không? Vậy nên trong bài này mình sẽ nói chủ yếu về Decentralized Oracle.
Giả sử nếu bạn cá cược rằng hiện tại ở NewYork đang nắng hay mưa. Bạn hỏi Oracle và sau đó Oracle sẽ thu thập dữ liệu từ nhiều cảm biến, các bản tin thời tiết, các báo cáo khí tượng… Nếu một bên cố tình thao túng dữ liệu làm sai lệch để hưởng lợi, khi so sánh mà khác với các dữ liệu của bên khác thì bên thao túng sẽ bị phạt. Dữ liệu trên blockchain sẽ không thay đổi được và họ sẽ không thể chối cãi. Việc truy xuất tất cả các dữ liệu mà bên vi phạm đã cung cấp trên blockchain và đặt nghi vấn về các dữ liệu đó cũng dễ dàng hơn. Điều này giảm thiểu đi rất nhiều rủi ro cho dữ liệu. Tất cả các việc xác thực có thể làm 1 cách tự động để tránh sự can thiệp của con người. Ví dụ như khi lấy giá BTC/USDT thì máy tính sẽ lấy giá trung bình của tất cả các nguồn.
Ngoài ra, các decentralized oracle cũng áp dụng cặp khóa bí mật và khóa công khai trong việc truyền nhận dữ liệu nên cũng sẽ đảm bảo được 2 vấn đề. Một là xác thực được người gửi (dữ liệu này có đúng là từ nhà cung cấp gửi hay không hay là kẻ xấu gửi đến?). Hai là bảo toàn dữ liệu (trong quá trình gửi dữ liệu có bị kẻ xấu thay đổi hay không?). Và nếu việc xác nhận cần chữ ký của nhiều người chứ không chỉ một người (chữ ký tập thể) thì độ tin cậy càng được đảm bảo hơn.
Decentralized Oracle Network có phải là một blockchain hay không?
Dù cũng cần phải đảm bảo phi tập trung nhưng Decentralized Oracle Network không hẳn là một blockchain. Một blockchain thì tất cả các nodes trong hệ thống đều phải thực hiện một công việc giống nhau. Nếu việc truy xuất dữ liệu mà phải làm ở tất cả các nodes thì sẽ gây ra sự lãng phí và việc đồng bộ cũng làm chậm quá trình truy xuất. Oracle có thể sẽ chỉ thực hiện chia nhiệm vụ cho một vài nodes phụ trách các mảng data riêng biệt.
Decentralized Oracle hoạt động với smart contracts như thế nào?
Các Oracle sẽ là các đầu mối để các smart contract trên blockchain truy xuất dữ liệu. Người dùng sẽ chọn các Oracle cung cấp thông tin mà mình cần trên mạng lưới blockchain của mình. Một Decentralized Oracle có thể cung cấp dữ liệu cho nhiều blockchain khác nhau. Sẽ có 2 chiều là chiều ra và chiều vào.
Với chiều ra, bạn có thể hiểu nôm na là Oracle có thể viết một smart contract lắng nghe thông tin từ blockchain và báo ra bên ngoài. Ví dụ Oracle viết một smart contract theo dõi giá bitcoin được ghi vào blockchain. Trường hợp giá bitcoin xuống 40$, thì sẽ log ra một event thông báo để hệ thống bên ngoài thực hiện đặt lệnh mua bitcoin trên sàn.
Với chiều vào, bạn có thể hình dung là Oracle sẽ viết ra các smart contract, thực hiện nhiệm vụ lấy thông tin từ thế giới thực và đưa vào blockchain. Ví dụ : Oracle viết smart contract tên là getBitcoinPrice lấy giá bitcoin tại thời điểm ngày 20/4/2024 là 65$, khi người dùng viết smart contract trên blockchain và gọi smart contract getBitcoinPrice, thì getBitcoinPrice sẽ log ra một event cho các nodes trong Oracle network đang lắng nghe thông tin từ các event đó. Các nodes sẽ kết nối với các hệ thống có thông tin mà người dùng cần, sau đó thông tin được các bên xác thực và kiểm chứng, rồi chuyển lại lên blockchain qua Oracle smart contract. Oracle smart contract sẽ xem xét và tính toán dữ liệu, sau đó chuyển lại cho smart contract mà người dùng gọi. Trường hợp những người không biết viết smart contract thì sẽ thực hiện thông qua dao diện của các ứng dụng (Dapp) được phát triển. Nghe khá lằng nhằng phải không? Mình xin lấy hình ảnh của chainlink để bạn hình dung được cách hoạt động.
Ứng dụng của Oracle trong thực tế
Vậy Oracle sẽ được ứng dụng trong các lĩnh vực nào và tại sao lại nói Oracle sẽ đưa blockchain vào trong đời sống? Mình sẽ liệt kê một vài ứng dụng bên dưới nhé.
- Oracle được sử dụng hầu hết trong các dự án DeFi (Decentralized Finance – hệ thống tài chính phi tập trung). Các dữ liệu về giá cả thị trường, các giao dịch ngoài đời thực sẽ được cung cấp.
- Việc tạo số random (số ngẫu nhiên) ứng dụng cho sổ xố, quay thưởng… Như bạn đã biết thì blockchain được chạy trên hàng ngàn nodes, nên nếu chạy một mã code để sinh ra số ngẫu nhiên thì mỗi node sẽ sinh ra một số khác nhau và không thể đồng bộ được. Vì vậy hiện tại việc tạo số random thường được làm bởi Oracle.
- Việc số hoá các tài sản ngoài đời thực như quyền sử dụng đất, di chúc, tranh vẽ, tác phẩm nghệ thuật…
- Thông tin về các vụ cá cược, các giải đấu, các cuộc thi…
- Các mảng về bảo hiểm, hợp đồng bảo hiểm, hồ sơ bệnh án…
- Truy xuất nguồn gốc hàng hoá, logistic.
- Định danh tổ chức, cá nhân, lý lịch công việc, bằng cấp…
- Việc đào tạo AI, khi đào tạo AI thì các tổ chức phát triển sẽ lấy dữ liệu không khách quan từ các đơn vị tập trung. Nếu AI được đào tạo bởi dữ liệu lớn và tin cậy thì sẽ phát triển rất gần với thực tế. Ví dụ: Nếu tổ chức đó chỉ có thể lấy được dữ liệu của người Việt Nam để đào tạo AI, thì AI đó sẽ có thiên hướng ứng xử giống người Việt. Vậy bạn nghĩ sao nếu AI đó tiếp cận được toàn bộ dữ liệu thật của thế giới trên một mạng blockchain lớn?
Các vấn đề và thách thức
Mặc dù đã có nhiều Oracle xuất hiện nhưng tất cả đều có những rủi ro và các vấn đề riêng. Mình nghĩ các Oracle còn một chặng đường dài nữa để phát triển và trở nên tối ưu hơn. Một vài vấn đề mà các Oracle đang gặp phải như:
- Rủi ro lộ thông tin cá nhân, một thông tin của bạn bị đánh cắp và đã public trên blockchain bạn sẽ không thể chỉnh sửa và thay đổi.
- Rủi ro bị hack, hiện tại khi bạn muốn đưa dữ liệu lên thì các Oracle bắt buộc phải qua một bên trung gian, các hacker có thể hack tại đó.
- Việc truy xuất giữ liệu bị chậm trễ, nhất là những ngành cần mang tính thời điểm và có nghiệp vụ trading. Ví dụ như để đưa dữ liệu BTC/USD lên mạng lưới Ethereum thì hiện tại chainlink cần khoảng 1 giờ.
- Việc sai khác trong lúc đồng bộ. Đối với những dữ liệu nhạy cảm như tỷ giá, giá coin thì trong quá trình đồng bộ, các dữ liệu sẽ có độ sai lệch. Ví dụ lúc 10:01:01 node1 lấy data BTC/USD giá 60$ nhưng 10:02:00 node2 lấy data thì giá BTC/USD 65$. Nếu quá trình đồng bộ diễn ra chậm thì khi Oracle smart contract so sánh lấy data giữa node1 và node2 sẽ có sự sai khác mặc dù cả 2 dữ liệu đều cung cấp đúng, chỉ trễ về thời điểm. Điều này chỉ được cải thiện khi quá trình đồng bộ giữa các nodes được giảm tối thiểu.
- Việc xung đột giữa Oracle và các quy định về quản lý dữ liệu của các chính phủ. Nhiều chính phủ quy định rất nghiêm ngặt về bảo mật thông tin của công dân nước họ. Việc Oracle cung cấp dữ liệu có thể vượt ra ngoài tầm kiểm soát của chính phủ vì mạng lưới blockchain xuyên biên giới.
Các dự án và công nghệ liên quan
Một số dự án về Oracle thú vị đã xuất hiện, mỗi dự án đều có những cách tiếp cận khác nhau. Nếu bạn có hứng thú hãy tìm hiểu thêm nhé. Ở đây mình sẽ không đi chi tiết vào từng dự án.
Dưới đây là 2 dự án Oracle mà mình thấy phổ biến nhất tại thời điểm hiện tại.
ChainLink : Chainlink là Oracle có thị phần lớn nhất ở thời điểm hiện tại. Bạn có thể hình dung về cách hoạt động của Chainlink và LINK coin với hình bên dưới.
API3 : Api3 cũng là một Oracle nổi tiếng và có cách tiếp cận thú vị, khác với mô hình của Chainlink.
Mình nghĩ dưới đây là 3 yếu tố quan trọng để làm nên thành công của một dự án Oracle:
- Sở hữu nguồn thông tin đáng tin cậy ở ngoài thế giới thực.
- Yếu tố công nghệ mạnh mẽ, kết nối nhanh chóng và tiện lợi, dễ sử dụng.
- Mô hình vận hành công bằng, thu hút được sự tham gia của nhiều thành viên giúp tăng tính minh bạch thông tin và bảo vệ mạng lưới dữ liệu khỏi các rủi ro.
Tương lai của Oracle trên Blockchain
Theo quan điểm cá nhân của mình các dữ liệu cần tính minh bạch, độ tin cậy cao, liên quan đến vấn đề tranh chấp ngoài thế giới thực sau này sẽ được đưa vào trong blockchain thông qua Oracle. Mỗi lĩnh vực khác nhau sẽ được cung cấp bởi các Oracle khác khau như Oracle chuyên về dữ liệu nông nghiệp, Oracle chuyển về thể thao, nghệ thuật, giao thông, tài chính… dưới đây mình cũng có hình dung đến một vài hướng phát triển của các Oracle trong tương lai.
- Các nhà vận hành Nodes trong blockchain các blockchain có thể cũng sẽ đảm nhận việc thực hiện các Oracle Nodes.
- Các Oracle sẽ tích hợp thêm AI để giúp người dùng phân tích, truy xuất cũng như nghiên cứu dễ hơn với lượng dữ liệu khổng lồ trên blockchain.
- Các công việc liên quan đến vận hành, kiểm duyệt dữ liệu trên Oracle cũng sẽ xuất hiện nhiều hơn. Các tổ chức đăng ký cung cấp dữ liệu tin cậy cho Oracle cũng sẽ xuất hiện.
- Những đơn vị về xếp hạng Oracle hoặc đánh giá các Oracle cũng sẽ xuất hiện.
- Các dữ liệu giữa các blockchain và giữa các Oracle sẽ có thể kết nối và giao tiếp với nhau.
Tổng hợp
Vậy là chúng ta đã cũng tìm hiểu về các nội dung
- Oracle trong ngữ cảnh blockchain là gì ?
- Cách hoạt động cơ bản của Oracle.
- Những ứng dụng và rủi ro và tương lai của nó.
Mặc dù Oracle vẫn chưa phải là giải pháp toàn diện nhưng đây hiện tại là phương pháp tiếp cận tốt nhất để giúp việc ứng dụng blockchain vào đời sống. Trên đây là những kiến thức hạn hẹp của mình về Oracle mà mình đã tìm hiểu được. Hy vong sẽ giúp ích được cho bạn. Mình cũng rất mong được lắng nghe những chia sẻ từ góc nhìn của bạn để hoàn thiện kiến thức hơn. Xin cảm ơn rất nhiều.
Nguồn tham khảo:
https://chain.link/education-hub/oracle-problem
https://chain.link/education/blockchain-oracles