ওরাকল
পেজ সর্বশেষ আপডেট: 26 ফেব্রুয়ারী, 2026
ওরাকল হলো এমন অ্যাপ্লিকেশন যা ডেটা ফিড তৈরি করে, যা স্মার্ট কন্ট্রাক্টের জন্য ব্লকচেইনে অফচেইন ডেটা সোর্সগুলোকে সহজলভ্য করে। এটি প্রয়োজনীয় কারণ ইথিরিয়াম-ভিত্তিক স্মার্ট কন্ট্রাক্টগুলো ডিফল্টভাবে ব্লকচেইন নেটওয়ার্কের বাইরে সংরক্ষিত তথ্যে অ্যাক্সেস করতে পারে না।
অফচেইন ডেটা ব্যবহার করে স্মার্ট কন্ট্রাক্টগুলোকে কার্যকর করার ক্ষমতা প্রদান করা ডিসেন্ট্রালাইজড এপ্লিকেশন-এর উপযোগিতা এবং মান বৃদ্ধি করে। উদাহরণস্বরূপ, অনচেইন প্রেডিকশন মার্কেটগুলো ফলাফলের তথ্য প্রদানের জন্য ওরাকলের ওপর নির্ভর করে, যা তারা ব্যবহারকারীদের প্রেডিকশন যাচাই করতে ব্যবহার করে। ধরুন অ্যালিস 20 ETH বাজি ধরেছে যে কে পরবর্তী মার্কিন প্রেসিডেন্ট হবে। সেক্ষেত্রে, প্রেডিকশন-মার্কেট ডিএ্যাপ-এর নির্বাচনের ফলাফল নিশ্চিত করতে এবং অ্যালিস পেআউটের জন্য যোগ্য কিনা তা নির্ধারণ করতে একটি ওরাকল প্রয়োজন।
পূর্বশর্ত
এই পৃষ্ঠাটি ধরে নেয় যে পাঠক Ethereum এর মৌলিক বিষয়গুলোর সাথে পরিচিত, যার মধ্যে রয়েছে নোড, কনসেন্সাস মেকানিজম, এবং EVM। আপনার স্মার্ট কন্ট্রাক্ট এবং স্মার্ট কন্ট্রাক্ট অ্যানাটমি-এর ওপরও ভালো ধারণা থাকা উচিত, বিশেষ করে সম্পর্কে।
ব্লকচেইন ওরাকল কী?
ওরাকল হলো এমন অ্যাপ্লিকেশন যা ব্লকচেইনে চলমান স্মার্ট কন্ট্রাক্টগুলোতে বাহ্যিক তথ্য (অর্থাৎ, অফচেইন সংরক্ষিত তথ্য) সংগ্রহ, যাচাই এবং প্রেরণ করে। অফচেইন ডেটা "টেনে আনা" এবং ইথিরিয়ামে সম্প্রচার করার পাশাপাশি, ওরাকল ব্লকচেইন থেকে বাহ্যিক সিস্টেমে তথ্য "পুশ" করতে পারে, যেমন, ব্যবহারকারী ইথিরিয়াম লেনদেন-এর মাধ্যমে ফি পাঠালে একটি স্মার্ট লক আনলক করা।
একটি ওরাকল ছাড়া, একটি স্মার্ট কন্ট্রাক্ট সম্পূর্ণভাবে অনচেইন ডেটার মধ্যে সীমাবদ্ধ থাকবে।
ডেটার উৎস (এক বা একাধিক উৎস), ট্রাস্ট মডেল (কেন্দ্রীভূত বা ডিসেন্ট্রালাইজড), এবং সিস্টেম আর্কিটেকচার (ইমিডিয়েট-রিড, পাবলিশ-সাবস্ক্রাইব, এবং রিকোয়েস্ট-রেসপন্স)-এর ওপর ভিত্তি করে ওরাকলগুলো ভিন্ন হয়। আমরা ওরাকলগুলোর মধ্যে পার্থক্য করতে পারি এই ভিত্তিতে যে তারা অনচেইন কন্ট্রাক্টগুলোর ব্যবহারের জন্য বাহ্যিক ডেটা পুনরুদ্ধার করে (ইনপুট ওরাকল), ব্লকচেইন থেকে অফচেইন অ্যাপ্লিকেশনগুলোতে তথ্য পাঠায় (আউটপুট ওরাকল), নাকি অফচেইন গণনামূলক কাজ সম্পাদন করে (কম্পিউটেশনাল ওরাকল)।
স্মার্ট কন্ট্রাক্টগুলোর কেন ওরাকল প্রয়োজন?
অনেক ডেভেলপার স্মার্ট কন্ট্রাক্টগুলোকে ব্লকচেইনের নির্দিষ্ট এডড্রেস-এ চলমান কোড হিসেবে দেখেন। তবে, স্মার্ট কন্ট্রাক্টগুলোর একটি সাধারণ দৃষ্টিভঙ্গি হলো এগুলো স্বয়ংক্রিয়ভাবে নির্বাহযোগ্য সফটওয়্যার প্রোগ্রাম যা নির্দিষ্ট শর্ত পূরণ হলে পক্ষগুলোর মধ্যে চুক্তি কার্যকর করতে সক্ষম - তাই এদের "স্মার্ট কন্ট্রাক্ট" বলা হয়।
কিন্তু মানুষের মধ্যে চুক্তি কার্যকর করার জন্য স্মার্ট কন্ট্রাক্ট ব্যবহার করা সহজ নয়, কারণ ইথিরিয়াম হলো ডিটারমিনিস্টিক (নির্ধারণমূলক)। একটি ডিটারমিনিস্টিক সিস্টেম (opens in a new tab) হলো এমন একটি সিস্টেম যা একটি প্রাথমিক স্টেট এবং একটি নির্দিষ্ট ইনপুট দেওয়া হলে সর্বদা একই ফলাফল তৈরি করে, যার অর্থ ইনপুট থেকে আউটপুট গণনা করার প্রক্রিয়ায় কোনো এলোমেলোতা বা ভিন্নতা নেই।
ডিটারমিনিস্টিক এক্সিকিউশন অর্জন করতে, ব্লকচেইনগুলো নোড-গুলোকে শুধুমাত্র ব্লকচেইনে সংরক্ষিত ডেটা ব্যবহার করে সাধারণ বাইনারি (সত্য/মিথ্যা) প্রশ্নগুলোতে কনসেন্সাস-এ পৌঁছানোর মধ্যে সীমাবদ্ধ করে। এই ধরনের প্রশ্নের উদাহরণগুলোর মধ্যে রয়েছে:
- "একাউন্ট মালিক (একটি পাবলিক কি দ্বারা চিহ্নিত) কি জোড়া প্রাইভেট কি দিয়ে এই লেনদেন স্বাক্ষর করেছেন?"
- "এই একাউন্ট-এ কি লেনদেন কভার করার জন্য পর্যাপ্ত ফান্ড আছে?"
- "এই লেনদেন কি এই স্মার্ট কন্ট্রাক্ট-এর প্রেক্ষাপটে বৈধ?", ইত্যাদি।
যদি ব্লকচেইনগুলো বাহ্যিক উৎস (অর্থাৎ, বাস্তব জগত) থেকে তথ্য গ্রহণ করে, তবে ডিটারমিনিজম অর্জন করা অসম্ভব হবে, যা নোড-গুলোকে ব্লকচেইনের স্টেট-এর পরিবর্তনের বৈধতার বিষয়ে একমত হতে বাধা দেবে। উদাহরণস্বরূপ একটি স্মার্ট কন্ট্রাক্ট নিন যা একটি ঐতিহ্যবাহী প্রাইস API থেকে প্রাপ্ত বর্তমান ETH-USD বিনিময় হারের ওপর ভিত্তি করে একটি লেনদেন সম্পাদন করে। এই সংখ্যাটি ঘন ঘন পরিবর্তিত হওয়ার সম্ভাবনা রয়েছে (API-টি বাতিল বা হ্যাক হতে পারে তা উল্লেখ না করলেও চলে), যার অর্থ একই কন্ট্রাক্ট কোড এক্সিকিউট করা নোড-গুলো ভিন্ন ভিন্ন ফলাফলে পৌঁছাবে।
ইথিরিয়ামের মতো একটি পাবলিক ব্লকচেইনের জন্য, যেখানে বিশ্বজুড়ে হাজার হাজার নোড লেনদেন প্রসেস করছে, ডিটারমিনিজম অত্যন্ত গুরুত্বপূর্ণ। সত্যের উৎস হিসেবে কাজ করার জন্য কোনো কেন্দ্রীয় কর্তৃপক্ষ না থাকায়, একই লেনদেন প্রয়োগ করার পর একই স্টেট-এ পৌঁছানোর জন্য নোড-গুলোর মেকানিজম প্রয়োজন। এমন একটি ক্ষেত্র যেখানে নোড A একটি স্মার্ট কন্ট্রাক্ট-এর কোড এক্সিকিউট করে এবং ফলাফল হিসেবে "3" পায়, যেখানে নোড B একই লেনদেন চালানোর পর "7" পায়, তা কনসেন্সাস ভেঙে দেবে এবং একটি ডিসেন্ট্রালাইজড কম্পিউটিং প্ল্যাটফর্ম হিসেবে ইথিরিয়ামের মান নষ্ট করবে।
এই দৃশ্যপটটি বাহ্যিক উৎস থেকে তথ্য টেনে আনার জন্য ব্লকচেইন ডিজাইন করার সমস্যাটিও তুলে ধরে। তবে, ওরাকলগুলো অফচেইন উৎস থেকে তথ্য নিয়ে এবং স্মার্ট কন্ট্রাক্টগুলোর ব্যবহারের জন্য ব্লকচেইনে সংরক্ষণ করে এই সমস্যার সমাধান করে। যেহেতু অনচেইন সংরক্ষিত তথ্য অপরিবর্তনীয় এবং সর্বজনীনভাবে উপলব্ধ, তাই ইথিরিয়াম নোড-গুলো কনসেন্সাস না ভেঙে স্টেট পরিবর্তন গণনা করতে ওরাকল দ্বারা আমদানিকৃত অফচেইন ডেটা নিরাপদে ব্যবহার করতে পারে।
এটি করার জন্য, একটি ওরাকল সাধারণত অনচেইন চলমান একটি স্মার্ট কন্ট্রাক্ট এবং কিছু অফচেইন উপাদান নিয়ে গঠিত হয়। অনচেইন কন্ট্রাক্ট অন্যান্য স্মার্ট কন্ট্রাক্ট থেকে ডেটার জন্য অনুরোধ গ্রহণ করে, যা এটি অফচেইন উপাদানে (যাকে ওরাকল নোড বলা হয়) পাঠায়। এই ওরাকল নোড ডেটা উৎসগুলোতে কোয়েরি করতে পারে—উদাহরণস্বরূপ, অ্যাপ্লিকেশন প্রোগ্রামিং ইন্টারফেস (APIs) ব্যবহার করে—এবং স্মার্ট কন্ট্রাক্ট-এর স্টোরেজে অনুরোধকৃত ডেটা সংরক্ষণ করতে লেনদেন পাঠাতে পারে।
মূলত, একটি ব্লকচেইন ওরাকল ব্লকচেইন এবং বাহ্যিক পরিবেশের মধ্যে তথ্যের ব্যবধান দূর করে, "হাইব্রিড স্মার্ট কন্ট্রাক্ট" তৈরি করে। একটি হাইব্রিড স্মার্ট কন্ট্রাক্ট হলো এমন একটি কন্ট্রাক্ট যা অনচেইন কন্ট্রাক্ট কোড এবং অফচেইন পরিকাঠামোর সমন্বয়ের ওপর ভিত্তি করে কাজ করে। ডিসেন্ট্রালাইজড প্রেডিকশন মার্কেটগুলো হাইব্রিড স্মার্ট কন্ট্রাক্ট-এর একটি চমৎকার উদাহরণ। অন্যান্য উদাহরণের মধ্যে শস্য বীমা স্মার্ট কন্ট্রাক্ট অন্তর্ভুক্ত থাকতে পারে যা তখন পেআউট দেয় যখন একগুচ্ছ ওরাকল নির্ধারণ করে যে নির্দিষ্ট আবহাওয়া পরিস্থিতি ঘটেছে।
ওরাকল প্রবলেম কী?
ওরাকলগুলো একটি গুরুত্বপূর্ণ সমস্যার সমাধান করে, তবে কিছু জটিলতাও তৈরি করে, যেমন:
-
আমরা কীভাবে যাচাই করব যে ইনজেক্ট করা তথ্য সঠিক উৎস থেকে বের করা হয়েছে বা এর সাথে কোনো কারচুপি করা হয়নি?
-
আমরা কীভাবে নিশ্চিত করব যে এই ডেটা সর্বদা উপলব্ধ এবং নিয়মিত আপডেট করা হয়?
তথাকথিত "ওরাকল প্রবলেম" স্মার্ট কন্ট্রাক্টগুলোতে ইনপুট পাঠাতে ব্লকচেইন ওরাকল ব্যবহারের সাথে আসা সমস্যাগুলো প্রদর্শন করে। একটি স্মার্ট কন্ট্রাক্ট সঠিকভাবে এক্সিকিউট করার জন্য একটি ওরাকল থেকে আসা ডেটা অবশ্যই সঠিক হতে হবে। এছাড়া, সঠিক তথ্য প্রদানের জন্য ওরাকল অপারেটরদের ওপর 'বিশ্বাস' করতে হওয়া স্মার্ট কন্ট্রাক্টগুলোর 'ট্রাস্টলেস' দিকটিকে ক্ষুণ্ন করে।
বিভিন্ন ওরাকল ওরাকল সমস্যার বিভিন্ন সমাধান অফার করে, যা আমরা পরে অন্বেষণ করব। ওরাকলগুলো সাধারণত নিচের চ্যালেঞ্জগুলো কতটা ভালোভাবে সামলাতে পারে তার ওপর মূল্যায়ন করা হয়:
-
সঠিকতা (Correctness): একটি ওরাকলের কারণে স্মার্ট কন্ট্রাক্টগুলোর অবৈধ অফচেইন ডেটার ওপর ভিত্তি করে স্টেট পরিবর্তন ট্রিগার করা উচিত নয়। একটি ওরাকলকে অবশ্যই ডেটার সত্যতা (authenticity) এবং অখণ্ডতা (integrity) গ্যারান্টি দিতে হবে। সত্যতা মানে ডেটা সঠিক উৎস থেকে পাওয়া গেছে, আর অখণ্ডতা মানে অনচেইন পাঠানোর আগে ডেটা অক্ষত ছিল (অর্থাৎ, পরিবর্তন করা হয়নি)।
-
প্রাপ্যতা (Availability): একটি ওরাকলের স্মার্ট কন্ট্রাক্টগুলোকে কাজ সম্পাদন করতে এবং স্টেট পরিবর্তন ট্রিগার করতে বিলম্ব বা বাধা দেওয়া উচিত নয়। এর মানে হলো একটি ওরাকল থেকে ডেটা কোনো বাধা ছাড়াই অনুরোধে উপলব্ধ হতে হবে।
-
ইনসেনটিভ সামঞ্জস্যতা (Incentive compatibility): একটি ওরাকলের অফচেইন ডেটা প্রদানকারীদের স্মার্ট কন্ট্রাক্টগুলোতে সঠিক তথ্য জমা দিতে উৎসাহিত করা উচিত। ইনসেনটিভ সামঞ্জস্যতার মধ্যে অ্যাট্রিবিউটেবিলিটি (attributability) এবং জবাবদিহিতা (accountability) জড়িত। অ্যাট্রিবিউটেবিলিটি বাহ্যিক তথ্যের একটি অংশকে এর প্রদানকারীর সাথে যুক্ত করার অনুমতি দেয়, অন্যদিকে জবাবদিহিতা ডেটা প্রদানকারীদের তাদের দেওয়া তথ্যের সাথে আবদ্ধ করে, যাতে প্রদত্ত তথ্যের মানের ওপর ভিত্তি করে তাদের পুরস্কৃত বা শাস্তি দেওয়া যায়।
একটি ব্লকচেইন ওরাকল পরিষেবা কীভাবে কাজ করে?
ব্যবহারকারী
ব্যবহারকারী হলো এমন সত্তা (অর্থাৎ, স্মার্ট কন্ট্রাক্ট) যাদের নির্দিষ্ট কাজ সম্পন্ন করতে ব্লকচেইনের বাইরের তথ্যের প্রয়োজন হয়। একটি ওরাকল পরিষেবার প্রাথমিক ওয়ার্কফ্লো শুরু হয় ব্যবহারকারীর ওরাকল কন্ট্রাক্ট-এ ডেটা অনুরোধ পাঠানোর মাধ্যমে। ডেটা অনুরোধগুলো সাধারণত নিচের কিছু বা সমস্ত প্রশ্নের উত্তর দেবে:
-
অনুরোধকৃত তথ্যের জন্য অফচেইন নোড-গুলো কোন উৎসগুলোর সাথে পরামর্শ করতে পারে?
-
রিপোর্টাররা কীভাবে ডেটা উৎস থেকে তথ্য প্রসেস করে এবং দরকারী ডেটা পয়েন্টগুলো বের করে?
-
ডেটা পুনরুদ্ধারে কতগুলো ওরাকল নোড অংশগ্রহণ করতে পারে?
-
ওরাকল রিপোর্টগুলোতে অসঙ্গতি কীভাবে পরিচালনা করা উচিত?
-
সাবমিশন ফিল্টার করতে এবং রিপোর্টগুলোকে একটি একক ভ্যালুতে একত্রিত করতে কোন পদ্ধতি প্রয়োগ করা উচিত?
ওরাকল কন্ট্রাক্ট
ওরাকল কন্ট্রাক্ট হলো ওরাকল পরিষেবার জন্য অনচেইন উপাদান। এটি অন্যান্য কন্ট্রাক্ট থেকে ডেটা অনুরোধ শোনে, ওরাকল নোড-গুলোতে ডেটা কোয়েরি রিলে করে এবং ক্লায়েন্ট কন্ট্রাক্টগুলোতে ফিরে আসা ডেটা সম্প্রচার করে। এই কন্ট্রাক্ট অনুরোধকারী কন্ট্রাক্ট-এ পাঠানোর জন্য একটি সামগ্রিক ভ্যালু তৈরি করতে ফিরে আসা ডেটা পয়েন্টগুলোতে কিছু গণনাও করতে পারে।
ওরাকল কন্ট্রাক্ট কিছু ফাংশন প্রকাশ করে যা ক্লায়েন্ট কন্ট্রাক্টগুলো ডেটা অনুরোধ করার সময় কল করে। একটি নতুন কোয়েরি পাওয়ার পর, স্মার্ট কন্ট্রাক্ট ডেটা অনুরোধের বিবরণসহ একটি লগ ইভেন্ট নির্গত করবে। এটি লগে সাবস্ক্রাইব করা অফচেইন নোড-গুলোকে (সাধারণত JSON-RPC eth_subscribe কমান্ডের মতো কিছু ব্যবহার করে) অবহিত করে, যারা লগ ইভেন্টে সংজ্ঞায়িত ডেটা পুনরুদ্ধার করতে এগিয়ে যায়।
নিচে পেড্রো কস্তার একটি উদাহরণ ওরাকল কন্ট্রাক্ট (opens in a new tab) দেওয়া হলো। এটি একটি সাধারণ ওরাকল পরিষেবা যা অন্যান্য স্মার্ট কন্ট্রাক্ট-এর অনুরোধে অফচেইন API-গুলোতে কোয়েরি করতে পারে এবং ব্লকচেইনে অনুরোধকৃত তথ্য সংরক্ষণ করতে পারে:
1pragma solidity >=0.4.21 <0.6.0;2
3contract Oracle {4 Request[] requests; // কন্ট্রাক্টে করা অনুরোধের তালিকা5 uint currentId = 0; // বর্ধমান রিকোয়েস্ট আইডি6 uint minQuorum = 2; // চূড়ান্ত ফলাফল ঘোষণার আগে গ্রহণ করার জন্য ন্যূনতম রেসপন্সের সংখ্যা7 uint totalOracleCount = 3; // হার্ডকোড করা ওরাকলের সংখ্যা8
9 // একটি সাধারণ এপিআই রিকোয়েস্ট নির্ধারণ করে10 struct Request {11 uint id; // রিকোয়েস্ট আইডি12 string urlToQuery; // এপিআই ইউআরএল13 string attributeToFetch; // রেসপন্সে পুনরুদ্ধার করার জন্য জেসন অ্যাট্রিবিউট (কী)14 string agreedValue; // কী থেকে প্রাপ্ত মান15 mapping(uint => string) answers; // ওরাকলগুলোর দেওয়া উত্তর16 mapping(address => uint) quorum; // যে ওরাকলগুলো উত্তরের জন্য কোয়েরি করবে (১=ওরাকল ভোট দেয়নি, ২=ওরাকল ভোট দিয়েছে)17 }18
19 // যে ইভেন্ট ব্লকচেইনের বাইরের ওরাকলকে ট্রিগার করে20 event NewRequest (21 uint id,22 string urlToQuery,23 string attributeToFetch24 );25
26 // চূড়ান্ত ফলাফলের উপর কনসেন্সাস হলে ট্রিগার হয়27 event UpdatedRequest (28 uint id,29 string urlToQuery,30 string attributeToFetch,31 string agreedValue32 );33
34 function createRequest (35 string memory _urlToQuery,36 string memory _attributeToFetch37 )38 public39 {40 uint length = requests.push(Request(currentId, _urlToQuery, _attributeToFetch, ""));41 Request storage r = requests[length-1];42
43 // হার্ডকোড করা ওরাকলগুলোর ঠিকানা44 r.quorum[address(0x6c2339b46F41a06f09CA0051ddAD54D1e582bA77)] = 1;45 r.quorum[address(0xb5346CF224c02186606e5f89EACC21eC25398077)] = 1;46 r.quorum[address(0xa2997F1CA363D11a0a35bB1Ac0Ff7849bc13e914)] = 1;47
48 // ব্লকচেইনের বাইরের ওরাকল দ্বারা শনাক্ত করার জন্য একটি ইভেন্ট চালু করুন49 emit NewRequest (50 currentId,51 _urlToQuery,52 _attributeToFetch53 );54
55 // রিকোয়েস্ট আইডি বৃদ্ধি করুন56 currentId++;57 }58
59 // উত্তর রেকর্ড করার জন্য ওরাকল দ্বারা কল করা হয়60 function updateRequest (61 uint _id,62 string memory _valueRetrieved63 ) public {64
65 Request storage currRequest = requests[_id];66
67 // ওরাকলটি বিশ্বস্ত ওরাকলের তালিকায় আছে কিনা তা চেক করুন68 // এবং ওরাকলটি এখনও ভোট না দিয়ে থাকলে69 if(currRequest.quorum[address(msg.sender)] == 1){70
71 // এই ঠিকানাটি ভোট দিয়েছে তা চিহ্নিত করা হচ্ছে72 currRequest.quorum[msg.sender] = 2;73
74 // কোনো স্থান ফাঁকা না পাওয়া পর্যন্ত উত্তরের "অ্যারে" এর মধ্য দিয়ে ইটারেট করুন এবং প্রাপ্ত মানটি সেভ করুন75 uint tmpI = 0;76 bool found = false;77 while(!found) {78 // প্রথম ফাঁকা স্লটটি খুঁজুন79 if(bytes(currRequest.answers[tmpI]).length == 0){80 found = true;81 currRequest.answers[tmpI] = _valueRetrieved;82 }83 tmpI++;84 }85
86 uint currentQuorum = 0;87
88 // ওরাকল তালিকার মধ্য দিয়ে ইটারেট করুন এবং পর্যাপ্ত ওরাকল (ন্যূনতম কোরাম) আছে কিনা তা চেক করুন89 // বর্তমান উত্তরের মতো একই উত্তরে ভোট দিয়েছে কিনা90 for(uint i = 0; i < totalOracleCount; i++){91 bytes memory a = bytes(currRequest.answers[i]);92 bytes memory b = bytes(_valueRetrieved);93
94 if(keccak256(a) == keccak256(b)){95 currentQuorum++;96 if(currentQuorum >= minQuorum){97 currRequest.agreedValue = _valueRetrieved;98 emit UpdatedRequest (99 currRequest.id,100 currRequest.urlToQuery,101 currRequest.attributeToFetch,102 currRequest.agreedValue103 );104 }105 }106 }107 }108 }109}ওরাকল নোড
ওরাকল নোড হলো ওরাকল পরিষেবার অফচেইন উপাদান। এটি থার্ড-পার্টি সার্ভারে হোস্ট করা API-এর মতো বাহ্যিক উৎস থেকে তথ্য বের করে এবং স্মার্ট কন্ট্রাক্টগুলোর ব্যবহারের জন্য এটি অনচেইন রাখে। ওরাকল নোড-গুলো অনচেইন ওরাকল কন্ট্রাক্ট থেকে ইভেন্টগুলো শোনে এবং লগে বর্ণিত কাজ সম্পন্ন করতে এগিয়ে যায়।
ওরাকল নোড-গুলোর জন্য একটি সাধারণ কাজ হলো একটি API পরিষেবাতে একটি HTTP GET (opens in a new tab) অনুরোধ পাঠানো, প্রাসঙ্গিক ডেটা বের করার জন্য রেসপন্স পার্স করা, ব্লকচেইন-পঠনযোগ্য আউটপুটে ফর্ম্যাট করা এবং ওরাকল কন্ট্রাক্ট-এ একটি লেনদেন-এ অন্তর্ভুক্ত করে এটি অনচেইন পাঠানো। ওরাকল নোড-কে "অথেন্টিসিটি প্রুফ" ব্যবহার করে জমা দেওয়া তথ্যের বৈধতা এবং অখণ্ডতা প্রমাণ করারও প্রয়োজন হতে পারে, যা আমরা পরে অন্বেষণ করব।
গ্যাস খরচ এবং ব্লক সাইজ সীমার কারণে অনচেইন এক্সিকিউট করা অবাস্তব হবে এমন গণনামূলক কাজগুলো সম্পাদন করতে কম্পিউটেশনাল ওরাকলগুলোও অফচেইন নোড-গুলোর ওপর নির্ভর করে। উদাহরণস্বরূপ, ওরাকল নোড-কে একটি যাচাইযোগ্য র্যান্ডম সংখ্যা তৈরি করার দায়িত্ব দেওয়া হতে পারে (যেমন, ব্লকচেইন-ভিত্তিক গেমগুলোর জন্য)।
ওরাকল ডিজাইন প্যাটার্ন
ওরাকলগুলো বিভিন্ন ধরনের হয়, যার মধ্যে রয়েছে ইমিডিয়েট-রিড, পাবলিশ-সাবস্ক্রাইব, এবং রিকোয়েস্ট-রেসপন্স, যার মধ্যে শেষের দুটি ইথিরিয়াম স্মার্ট কন্ট্রাক্টগুলোর মধ্যে সবচেয়ে জনপ্রিয়। এখানে আমরা সংক্ষেপে পাবলিশ-সাবস্ক্রাইব এবং রিকোয়েস্ট-রেসপন্স মডেলগুলো বর্ণনা করছি।
পাবলিশ-সাবস্ক্রাইব ওরাকল
এই ধরনের ওরাকল একটি "ডেটা ফিড" প্রকাশ করে যা অন্যান্য কন্ট্রাক্ট তথ্যের জন্য নিয়মিত পড়তে পারে। এই ক্ষেত্রে ডেটা ঘন ঘন পরিবর্তিত হবে বলে আশা করা হয়, তাই ক্লায়েন্ট কন্ট্রাক্টগুলোকে ওরাকলের স্টোরেজে ডেটার আপডেটের জন্য শুনতে হবে। একটি উদাহরণ হলো একটি ওরাকল যা ব্যবহারকারীদের সর্বশেষ ETH-USD মূল্যের তথ্য প্রদান করে।
রিকোয়েস্ট-রেসপন্স ওরাকল
একটি রিকোয়েস্ট-রেসপন্স সেটআপ ক্লায়েন্ট কন্ট্রাক্ট-কে পাবলিশ-সাবস্ক্রাইব ওরাকল দ্বারা প্রদত্ত ডেটা ছাড়া অন্য যেকোনো ডেটার অনুরোধ করার অনুমতি দেয়। রিকোয়েস্ট-রেসপন্স ওরাকলগুলো তখন আদর্শ হয় যখন ডেটাসেটটি একটি স্মার্ট কন্ট্রাক্ট-এর স্টোরেজে সংরক্ষণ করার জন্য খুব বড় হয়, এবং/অথবা ব্যবহারকারীদের যেকোনো সময়ে ডেটার শুধুমাত্র একটি ছোট অংশের প্রয়োজন হবে।
পাবলিশ-সাবস্ক্রাইব মডেলের চেয়ে বেশি জটিল হলেও, রিকোয়েস্ট-রেসপন্স ওরাকলগুলো মূলত আমরা আগের বিভাগে যা বর্ণনা করেছি তাই। ওরাকলের একটি অনচেইন উপাদান থাকবে যা একটি ডেটা অনুরোধ গ্রহণ করে এবং প্রসেসিংয়ের জন্য এটি একটি অফচেইন নোড-এ পাঠায়।
ডেটা কোয়েরি শুরু করা ব্যবহারকারীদের অফচেইন উৎস থেকে তথ্য পুনরুদ্ধারের খরচ বহন করতে হবে। ক্লায়েন্ট কন্ট্রাক্ট-কে অনুরোধে নির্দিষ্ট করা কলব্যাক ফাংশনের মাধ্যমে রেসপন্স ফেরত দেওয়ার সময় ওরাকল কন্ট্রাক্ট দ্বারা হওয়া গ্যাস খরচ কভার করার জন্য ফান্ডও প্রদান করতে হবে।
কেন্দ্রীভূত বনাম ডিসেন্ট্রালাইজড ওরাকল
কেন্দ্রীভূত ওরাকল
একটি কেন্দ্রীভূত ওরাকল একটি একক সত্তা দ্বারা নিয়ন্ত্রিত হয় যা অফচেইন তথ্য একত্রিত করার এবং অনুরোধ অনুযায়ী ওরাকল কন্ট্রাক্ট-এর ডেটা আপডেট করার জন্য দায়ী। কেন্দ্রীভূত ওরাকলগুলো দক্ষ কারণ তারা সত্যের একটি একক উৎসের ওপর নির্ভর করে। তারা এমন ক্ষেত্রে আরও ভালোভাবে কাজ করতে পারে যেখানে মালিক দ্বারা সরাসরি একটি ব্যাপকভাবে গৃহীত স্বাক্ষরের সাথে মালিকানাধীন ডেটাসেটগুলো প্রকাশিত হয়। তবে, এগুলো কিছু অসুবিধাও নিয়ে আসে:
কম সঠিকতার গ্যারান্টি
কেন্দ্রীভূত ওরাকলগুলোর সাথে, প্রদত্ত তথ্য সঠিক কিনা তা নিশ্চিত করার কোনো উপায় নেই। এমনকি "স্বনামধন্য" প্রদানকারীরাও দুর্বৃত্ত হয়ে যেতে পারে বা হ্যাক হতে পারে। যদি ওরাকলটি দূষিত হয়ে যায়, তবে স্মার্ট কন্ট্রাক্টগুলো খারাপ ডেটার ওপর ভিত্তি করে এক্সিকিউট হবে।
দুর্বল প্রাপ্যতা
কেন্দ্রীভূত ওরাকলগুলো সর্বদা অন্যান্য স্মার্ট কন্ট্রাক্ট-এর কাছে অফচেইন ডেটা উপলব্ধ করার গ্যারান্টি দেয় না। যদি প্রদানকারী পরিষেবাটি বন্ধ করার সিদ্ধান্ত নেয় বা কোনো হ্যাকার ওরাকলের অফচেইন উপাদান হাইজ্যাক করে, তবে আপনার স্মার্ট কন্ট্রাক্ট ডিনায়াল অফ সার্ভিস (DoS) আক্রমণের ঝুঁকিতে থাকে।
দুর্বল ইনসেনটিভ সামঞ্জস্যতা
কেন্দ্রীভূত ওরাকলগুলোতে প্রায়শই ডেটা প্রদানকারীর সঠিক/অপরিবর্তিত তথ্য পাঠানোর জন্য দুর্বলভাবে ডিজাইন করা বা অস্তিত্বহীন ইনসেনটিভ থাকে। সঠিকতার জন্য একটি ওরাকলকে অর্থ প্রদান করা সততার গ্যারান্টি দেয় না। স্মার্ট কন্ট্রাক্ট দ্বারা নিয়ন্ত্রিত ভ্যালুর পরিমাণ বাড়ার সাথে সাথে এই সমস্যাটি আরও বড় হয়।
ডিসেন্ট্রালাইজড ওরাকল
ডিসেন্ট্রালাইজড ওরাকলগুলো সিঙ্গেল পয়েন্ট অফ ফেইলিওর দূর করে কেন্দ্রীভূত ওরাকলগুলোর সীমাবদ্ধতা কাটিয়ে ওঠার জন্য ডিজাইন করা হয়েছে। একটি ডিসেন্ট্রালাইজড ওরাকল পরিষেবা একটি পিয়ার-টু-পিয়ার নেটওয়ার্কে একাধিক অংশগ্রহণকারী নিয়ে গঠিত যারা একটি স্মার্ট কন্ট্রাক্ট-এ পাঠানোর আগে অফচেইন ডেটার ওপর কনসেন্সাস গঠন করে।
একটি ডিসেন্ট্রালাইজড ওরাকল (আদর্শভাবে) পারমিশনলেস, ট্রাস্টলেস এবং একটি কেন্দ্রীয় পক্ষের প্রশাসন থেকে মুক্ত হওয়া উচিত; বাস্তবে, ওরাকলগুলোর মধ্যে বিকেন্দ্রীকরণ একটি বর্ণালীতে থাকে। আধা-ডিসেন্ট্রালাইজড ওরাকল নেটওয়ার্ক রয়েছে যেখানে যে কেউ অংশগ্রহণ করতে পারে, তবে একজন "মালিক" থাকে যে ঐতিহাসিক পারফরম্যান্সের ওপর ভিত্তি করে নোড-গুলোকে অনুমোদন করে এবং সরিয়ে দেয়। সম্পূর্ণ ডিসেন্ট্রালাইজড ওরাকল নেটওয়ার্কও বিদ্যমান: এগুলো সাধারণত স্বতন্ত্র ব্লকচেইন হিসেবে চলে এবং নোড-গুলোর সমন্বয় এবং অসদাচরণের শাস্তির জন্য সংজ্ঞায়িত কনসেন্সাস মেকানিজম থাকে।
ডিসেন্ট্রালাইজড ওরাকল ব্যবহার করার নিম্নলিখিত সুবিধাগুলো রয়েছে:
উচ্চ সঠিকতার গ্যারান্টি
ডিসেন্ট্রালাইজড ওরাকলগুলো বিভিন্ন পদ্ধতি ব্যবহার করে ডেটার সঠিকতা অর্জনের চেষ্টা করে। এর মধ্যে রয়েছে ফিরে আসা তথ্যের সত্যতা এবং অখণ্ডতা প্রমাণকারী প্রুফ ব্যবহার করা এবং অফচেইন ডেটার বৈধতার বিষয়ে সম্মিলিতভাবে একমত হওয়ার জন্য একাধিক সত্তার প্রয়োজন হওয়া।
অথেন্টিসিটি প্রুফ
অথেন্টিসিটি প্রুফ হলো ক্রিপ্টোগ্রাফিক মেকানিজম যা বাহ্যিক উৎস থেকে পুনরুদ্ধার করা তথ্যের স্বাধীন যাচাইকরণ সক্ষম করে। এই প্রুফগুলো তথ্যের উৎস যাচাই করতে পারে এবং পুনরুদ্ধারের পরে ডেটাতে সম্ভাব্য পরিবর্তনগুলো সনাক্ত করতে পারে।
অথেন্টিসিটি প্রুফ-এর উদাহরণগুলোর মধ্যে রয়েছে:
ট্রান্সপোর্ট লেয়ার সিকিউরিটি (TLS) প্রুফ: ওরাকল নোড-গুলো প্রায়শই ট্রান্সপোর্ট লেয়ার সিকিউরিটি (TLS) প্রটোকল-এর ওপর ভিত্তি করে একটি সুরক্ষিত HTTP সংযোগ ব্যবহার করে বাহ্যিক উৎস থেকে ডেটা পুনরুদ্ধার করে। কিছু ডিসেন্ট্রালাইজড ওরাকল TLS সেশন যাচাই করতে (অর্থাৎ, একটি নোড এবং একটি নির্দিষ্ট সার্ভারের মধ্যে তথ্যের আদান-প্রদান নিশ্চিত করতে) এবং সেশনের বিষয়বস্তু পরিবর্তন করা হয়নি তা নিশ্চিত করতে অথেন্টিসিটি প্রুফ ব্যবহার করে।
ট্রাস্টেড এক্সিকিউশন এনভায়রনমেন্ট (TEE) এটেস্টেশন: একটি ট্রাস্টেড এক্সিকিউশন এনভায়রনমেন্ট (opens in a new tab) (TEE) হলো একটি স্যান্ডবক্সযুক্ত গণনামূলক পরিবেশ যা এর হোস্ট সিস্টেমের অপারেশনাল প্রক্রিয়াগুলো থেকে বিচ্ছিন্ন। TEE-গুলো নিশ্চিত করে যে কম্পিউটেশন পরিবেশে সংরক্ষিত/ব্যবহৃত যেকোনো অ্যাপ্লিকেশন কোড বা ডেটা অখণ্ডতা, গোপনীয়তা এবং ইমমিউটেবল বৈশিষ্ট্য বজায় রাখে। ব্যবহারকারীরা একটি অ্যাপ্লিকেশন ইনস্ট্যান্স ট্রাস্টেড এক্সিকিউশন এনভায়রনমেন্টের মধ্যে চলছে তা প্রমাণ করার জন্য একটি এটেস্টেশন-ও তৈরি করতে পারে।
নির্দিষ্ট শ্রেণীর ডিসেন্ট্রালাইজড ওরাকলগুলোর জন্য ওরাকল নোড অপারেটরদের TEE এটেস্টেশন প্রদান করতে হয়। এটি একজন ব্যবহারকারীকে নিশ্চিত করে যে নোড অপারেটর একটি ট্রাস্টেড এক্সিকিউশন এনভায়রনমেন্টে ওরাকল ক্লায়েন্ট-এর একটি ইনস্ট্যান্স চালাচ্ছে। TEE-গুলো বাহ্যিক প্রক্রিয়াগুলোকে একটি অ্যাপ্লিকেশনের কোড এবং ডেটা পরিবর্তন বা পড়া থেকে বাধা দেয়, তাই, এই এটেস্টেশন-গুলো প্রমাণ করে যে ওরাকল নোড তথ্য অক্ষত এবং গোপন রেখেছে।
তথ্যের কনসেন্সাস-ভিত্তিক বৈধতা
স্মার্ট কন্ট্রাক্টগুলোতে ডেটা প্রদান করার সময় কেন্দ্রীভূত ওরাকলগুলো সত্যের একটি একক উৎসের ওপর নির্ভর করে, যা ভুল তথ্য প্রকাশের সম্ভাবনা তৈরি করে। ডিসেন্ট্রালাইজড ওরাকলগুলো অফচেইন তথ্যের কোয়েরি করার জন্য একাধিক ওরাকল নোড-এর ওপর নির্ভর করে এই সমস্যার সমাধান করে। একাধিক উৎস থেকে ডেটা তুলনা করে, ডিসেন্ট্রালাইজড ওরাকলগুলো অনচেইন কন্ট্রাক্টগুলোতে অবৈধ তথ্য পাঠানোর ঝুঁকি কমায়।
তবে, ডিসেন্ট্রালাইজড ওরাকলগুলোকে একাধিক অফচেইন উৎস থেকে পুনরুদ্ধার করা তথ্যের অসঙ্গতিগুলো মোকাবেলা করতে হবে। তথ্যের পার্থক্য কমানোর জন্য এবং ওরাকল কন্ট্রাক্ট-এ পাঠানো ডেটা ওরাকল নোড-গুলোর সম্মিলিত মতামত প্রতিফলিত করে তা নিশ্চিত করতে, ডিসেন্ট্রালাইজড ওরাকলগুলো নিম্নলিখিত মেকানিজমগুলো ব্যবহার করে:
ডেটার সঠিকতার ওপর ভোটিং/স্টেকিং
কিছু ডিসেন্ট্রালাইজড ওরাকল নেটওয়ার্কের অংশগ্রহণকারীদের নেটওয়ার্কের নেটিভ টোকেন ব্যবহার করে ডেটা কোয়েরির উত্তরের সঠিকতার ওপর ভোট দিতে বা স্টেক করতে হয় (যেমন, "2020 সালের মার্কিন নির্বাচনে কে জিতেছে?")। একটি অ্যাগ্রিগেশন প্রটোকল তারপর ভোট এবং স্টেক-গুলোকে একত্রিত করে এবং সংখ্যাগরিষ্ঠ দ্বারা সমর্থিত উত্তরটিকে বৈধ হিসেবে গ্রহণ করে।
যে নোড-গুলোর উত্তর সংখ্যাগরিষ্ঠ উত্তর থেকে বিচ্যুত হয় তাদের টোকেনগুলো অন্যদের মধ্যে বিতরণ করে শাস্তি দেওয়া হয় যারা আরও সঠিক ভ্যালু প্রদান করে। ডেটা প্রদান করার আগে নোড-গুলোকে একটি বন্ড প্রদান করতে বাধ্য করা সৎ প্রতিক্রিয়াগুলোকে উৎসাহিত করে কারণ তাদের যুক্তিসঙ্গত অর্থনৈতিক অভিনেতা হিসেবে ধরে নেওয়া হয় যারা রিটার্ন সর্বাধিক করতে ইচ্ছুক।
স্টেকিং/ভোটিং ডিসেন্ট্রালাইজড ওরাকলগুলোকে থেকেও রক্ষা করে যেখানে ক্ষতিকারক অভিনেতারা কনসেন্সাস সিস্টেমকে ম্যানিপুলেট করার জন্য একাধিক পরিচয় তৈরি করে। তবে, স্টেকিং "ফ্রিলোডিং" (ওরাকল নোড-গুলো অন্যদের থেকে তথ্য কপি করে) এবং "অলস বৈধতা" (ওরাকল নোড-গুলো তথ্য নিজে যাচাই না করে সংখ্যাগরিষ্ঠকে অনুসরণ করে) প্রতিরোধ করতে পারে না।
শেলিং পয়েন্ট মেকানিজম
শেলিং পয়েন্ট (opens in a new tab) হলো একটি গেম-থিওরি ধারণা যা ধরে নেয় যে কোনো যোগাযোগের অনুপস্থিতিতে একাধিক সত্তা সর্বদা একটি সমস্যার সাধারণ সমাধানে ডিফল্ট হবে। শেলিং-পয়েন্ট মেকানিজমগুলো প্রায়শই ডিসেন্ট্রালাইজড ওরাকল নেটওয়ার্কগুলোতে ব্যবহৃত হয় যাতে নোড-গুলো ডেটা অনুরোধের উত্তরগুলোতে কনসেন্সাস-এ পৌঁছাতে পারে।
এর জন্য একটি প্রাথমিক ধারণা ছিল SchellingCoin (opens in a new tab), একটি প্রস্তাবিত ডেটা ফিড যেখানে অংশগ্রহণকারীরা একটি ডিপোজিটের সাথে "স্কেলার" প্রশ্নগুলোর (যে প্রশ্নগুলোর উত্তর মাত্রা দ্বারা বর্ণনা করা হয়, যেমন, "ETH এর দাম কত?") প্রতিক্রিয়া জমা দেয়। যে ব্যবহারকারীরা 25 তম এবং 75 তম পার্সেন্টাইল (opens in a new tab)-এর মধ্যে ভ্যালু প্রদান করে তাদের পুরস্কৃত করা হয়, অন্যদিকে যাদের ভ্যালু মিডিয়ান ভ্যালু থেকে ব্যাপকভাবে বিচ্যুত হয় তাদের শাস্তি দেওয়া হয়।
যদিও SchellingCoin আজ বিদ্যমান নেই, বেশ কয়েকটি ডিসেন্ট্রালাইজড ওরাকল—বিশেষ করে Maker Protocol’s Oracles (opens in a new tab)—ওরাকল ডেটার সঠিকতা উন্নত করতে শেলিং-পয়েন্ট মেকানিজম ব্যবহার করে। প্রতিটি মেকার ওরাকল নোড-গুলোর ("রিলেয়ার" এবং "ফিড") একটি অফচেইন P2P নেটওয়ার্ক নিয়ে গঠিত যারা কোল্যাটারাল অ্যাসেটগুলোর জন্য বাজার মূল্য জমা দেয় এবং একটি অনচেইন "মিডিয়ানাইজার" কন্ট্রাক্ট যা সমস্ত প্রদত্ত ভ্যালুর মিডিয়ান গণনা করে। নির্দিষ্ট বিলম্বের সময় শেষ হয়ে গেলে, এই মিডিয়ান ভ্যালুটি সংশ্লিষ্ট অ্যাসেটের জন্য নতুন রেফারেন্স প্রাইস হয়ে যায়।
শেলিং পয়েন্ট মেকানিজম ব্যবহার করে এমন ওরাকলগুলোর অন্যান্য উদাহরণের মধ্যে রয়েছে Chainlink Offchain Reporting (opens in a new tab) এবং Witnet (opens in a new tab)। উভয় সিস্টেমে, পিয়ার-টু-পিয়ার নেটওয়ার্কে ওরাকল নোড-গুলোর প্রতিক্রিয়াগুলো একটি একক সামগ্রিক ভ্যালুতে একত্রিত করা হয়, যেমন একটি গড় বা মিডিয়ান। নোড-গুলোকে তাদের প্রতিক্রিয়াগুলো সামগ্রিক ভ্যালুর সাথে কতটা সামঞ্জস্যপূর্ণ বা বিচ্যুত হয় তার ওপর ভিত্তি করে পুরস্কৃত বা শাস্তি দেওয়া হয়।
শেলিং পয়েন্ট মেকানিজমগুলো আকর্ষণীয় কারণ এগুলো বিকেন্দ্রীকরণের গ্যারান্টি দেওয়ার সাথে সাথে অনচেইন ফুটপ্রিন্ট কম করে (শুধুমাত্র একটি লেনদেন পাঠাতে হয়)। শেষেরটি সম্ভব কারণ গড়/মিডিয়ান ভ্যালু তৈরি করে এমন এ্যালগরিদম-এ ফিড করার আগে নোড-গুলোকে অবশ্যই জমা দেওয়া প্রতিক্রিয়াগুলোর তালিকায় সাইন অফ করতে হবে।
প্রাপ্যতা
ডিসেন্ট্রালাইজড ওরাকল পরিষেবাগুলো স্মার্ট কন্ট্রাক্টগুলোতে অফচেইন ডেটার উচ্চ প্রাপ্যতা নিশ্চিত করে। এটি অফচেইন তথ্যের উৎস এবং অনচেইন তথ্য স্থানান্তরের জন্য দায়ী নোড উভয়কেই বিকেন্দ্রীকরণ করে অর্জন করা হয়।
এটি ফল্ট-টলারেন্স নিশ্চিত করে কারণ ওরাকল কন্ট্রাক্ট অন্যান্য কন্ট্রাক্ট থেকে কোয়েরি এক্সিকিউট করার জন্য একাধিক নোড-এর (যারা একাধিক ডেটা উৎসের ওপরও নির্ভর করে) ওপর নির্ভর করতে পারে। উৎস এবং নোড-অপারেটর স্তরে বিকেন্দ্রীকরণ অত্যন্ত গুরুত্বপূর্ণ—একই উৎস থেকে পুনরুদ্ধার করা তথ্য পরিবেশনকারী ওরাকল নোড-গুলোর একটি নেটওয়ার্ক একটি কেন্দ্রীভূত ওরাকলের মতো একই সমস্যার সম্মুখীন হবে।
স্টেক-ভিত্তিক ওরাকলগুলোর পক্ষে ডেটা অনুরোধগুলোতে দ্রুত সাড়া দিতে ব্যর্থ হওয়া নোড অপারেটরদের স্ল্যাশিং করাও সম্ভব। এটি ওরাকল নোড-গুলোকে ফল্ট-টলারেন্ট পরিকাঠামোতে বিনিয়োগ করতে এবং সময়মতো ডেটা প্রদান করতে উল্লেখযোগ্যভাবে উৎসাহিত করে।
ভালো ইনসেনটিভ সামঞ্জস্যতা
ডিসেন্ট্রালাইজড ওরাকলগুলো ওরাকল নোড-গুলোর মধ্যে বাইজেন্টাইন (opens in a new tab) আচরণ প্রতিরোধ করার জন্য বিভিন্ন ইনসেনটিভ ডিজাইন প্রয়োগ করে। বিশেষ করে, তারা অ্যাট্রিবিউটেবিলিটি এবং জবাবদিহিতা অর্জন করে:
-
ডিসেন্ট্রালাইজড ওরাকল নোড-গুলোকে প্রায়শই ডেটা অনুরোধের প্রতিক্রিয়ায় তাদের দেওয়া ডেটাতে স্বাক্ষর করতে হয়। এই তথ্যটি ওরাকল নোড-গুলোর ঐতিহাসিক পারফরম্যান্স মূল্যায়নে সাহায্য করে, যাতে ব্যবহারকারীরা ডেটা অনুরোধ করার সময় অবিশ্বস্ত ওরাকল নোড-গুলোকে ফিল্টার করতে পারে। একটি উদাহরণ হলো Witnet-এর Algorithmic Reputation System (opens in a new tab)।
-
ডিসেন্ট্রালাইজড ওরাকলগুলো—যেমনটি আগে ব্যাখ্যা করা হয়েছে—নোড-গুলোকে তাদের জমা দেওয়া ডেটার সত্যতার ওপর তাদের আস্থার ওপর একটি স্টেক রাখতে বলতে পারে। যদি দাবিটি সঠিক প্রমাণিত হয়, তবে এই স্টেকটি সৎ পরিষেবার জন্য পুরস্কারের সাথে ফেরত দেওয়া যেতে পারে। তবে তথ্যটি ভুল হলে এটি স্ল্যাশিং-ও করা যেতে পারে, যা জবাবদিহিতার কিছু পরিমাপ প্রদান করে।
স্মার্ট কন্ট্রাক্টগুলোতে ওরাকলের অ্যাপ্লিকেশন
ইথিরিয়ামে ওরাকলের সাধারণ ব্যবহার-ক্ষেত্রগুলো নিচে দেওয়া হলো:
আর্থিক ডেটা পুনরুদ্ধার করা
ডিসেন্ট্রালাইজড ফাইন্যান্স (DeFi) অ্যাপ্লিকেশনগুলো পিয়ার-টু-পিয়ার ঋণ দেওয়া, ধার নেওয়া এবং অ্যাসেট ট্রেডিংয়ের অনুমতি দেয়। এর জন্য প্রায়শই বিভিন্ন আর্থিক তথ্য পাওয়ার প্রয়োজন হয়, যার মধ্যে রয়েছে বিনিময় হারের ডেটা (ক্রিপটোকারেন্সি-গুলোর ফিয়াট ভ্যালু গণনা করার জন্য বা টোকেন-এর দাম তুলনা করার জন্য) এবং ক্যাপিটাল মার্কেট ডেটা (টোকেনাইজড অ্যাসেটগুলোর ভ্যালু গণনা করার জন্য, যেমন সোনা বা মার্কিন ডলার)।
উদাহরণস্বরূপ, একটি DeFi লেন্ডিং প্রটোকল-এর কোল্যাটারাল হিসেবে জমা দেওয়া অ্যাসেটগুলোর (যেমন, ETH) বর্তমান বাজার মূল্যের কোয়েরি করতে হবে। এটি কন্ট্রাক্ট-কে কোল্যাটারাল অ্যাসেটগুলোর ভ্যালু নির্ধারণ করতে এবং সিস্টেম থেকে এটি কতটা ধার নিতে পারে তা নির্ধারণ করতে দেয়।
DeFi-তে জনপ্রিয় "প্রাইস ওরাকল" (যেমনটি তাদের প্রায়শই বলা হয়) এর মধ্যে রয়েছে Chainlink Price Feeds, Compound Protocol-এর Open Price Feed (opens in a new tab), Uniswap-এর Time-Weighted Average Prices (TWAPs) (opens in a new tab), এবং Maker Oracles (opens in a new tab)।
নির্মাতাদের তাদের প্রজেক্টে এগুলোকে একীভূত করার আগে এই প্রাইস ওরাকলগুলোর সাথে আসা সতর্কতাগুলো বোঝা উচিত। এই নিবন্ধটি (opens in a new tab) উল্লিখিত প্রাইস ওরাকলগুলোর যেকোনো একটি ব্যবহার করার পরিকল্পনা করার সময় কী বিবেচনা করতে হবে তার একটি বিশদ বিশ্লেষণ প্রদান করে।
নিচে একটি উদাহরণ দেওয়া হলো যে কীভাবে আপনি একটি Chainlink প্রাইস ফিড ব্যবহার করে আপনার স্মার্ট কন্ট্রাক্ট-এ সর্বশেষ ETH মূল্য পুনরুদ্ধার করতে পারেন:
1pragma solidity ^0.6.7;2
3import "@chainlink/contracts/src/v0.6/interfaces/AggregatorV3Interface.sol";4
5contract PriceConsumerV3 {6
7 AggregatorV3Interface internal priceFeed;8
9 /* *10 * নেটওয়ার্ক: Kovan11 * অ্যাগ্রিগেটর: ETH/USD12 * ঠিকানা: 0x9326BFA02ADD2366b30bacB125260Af641031331 */13 constructor() public {14 priceFeed = AggregatorV3Interface(0x9326BFA02ADD2366b30bacB125260Af641031331);15 }16
17 /* *18 * সর্বশেষ মূল্য রিটার্ন করে */19 function getLatestPrice() public view returns (int) {20 (21 uint80 roundID,22 int price,23 uint startedAt,24 uint timeStamp,25 uint80 answeredInRound26 ) = priceFeed.latestRoundData();27 return price;28 }29}যাচাইযোগ্য র্যান্ডমনেস তৈরি করা
নির্দিষ্ট ব্লকচেইন অ্যাপ্লিকেশন, যেমন ব্লকচেইন-ভিত্তিক গেম বা লটারি স্কিমগুলোর কার্যকরভাবে কাজ করার জন্য উচ্চ স্তরের অনির্দেশ্যতা এবং র্যান্ডমনেস প্রয়োজন। তবে, ব্লকচেইনগুলোর ডিটারমিনিস্টিক এক্সিকিউশন র্যান্ডমনেস দূর করে।
মূল পদ্ধতিটি ছিল সিউডোর্যান্ডম ক্রিপ্টোগ্রাফিক ফাংশন ব্যবহার করা, যেমন blockhash, কিন্তু এগুলো প্রুফ-অফ-ওয়ার্ক এ্যালগরিদম সমাধানকারী মাইনারদের দ্বারা ম্যানিপুলেট করা যেতে পারে (opens in a new tab)। এছাড়া, ইথিরিয়ামের প্রুফ-অফ-স্টেক-এ রূপান্তর-এর অর্থ হলো ডেভেলপাররা অনচেইন র্যান্ডমনেস-এর জন্য আর blockhash-এর ওপর নির্ভর করতে পারবে না। বিকন চেইন-এর RANDAO মেকানিজম (opens in a new tab) এর পরিবর্তে র্যান্ডমনেস-এর একটি বিকল্প উৎস প্রদান করে।
অফচেইন র্যান্ডম ভ্যালু তৈরি করা এবং এটি অনচেইন পাঠানো সম্ভব, তবে এটি করা ব্যবহারকারীদের ওপর উচ্চ আস্থার প্রয়োজনীয়তা আরোপ করে। তাদের অবশ্যই বিশ্বাস করতে হবে যে ভ্যালুটি সত্যিই অনির্দেশ্য মেকানিজমের মাধ্যমে তৈরি করা হয়েছিল এবং ট্রানজিটে পরিবর্তন করা হয়নি।
অফচেইন কম্পিউটেশনের জন্য ডিজাইন করা ওরাকলগুলো অফচেইন নিরাপদে র্যান্ডম ফলাফল তৈরি করে এই সমস্যার সমাধান করে যা তারা প্রক্রিয়ার অনির্দেশ্যতা প্রমাণকারী ক্রিপ্টোগ্রাফিক প্রুফ-এর সাথে অনচেইন সম্প্রচার করে। একটি উদাহরণ হলো Chainlink VRF (opens in a new tab) (Verifiable Random Function), যা একটি প্রমাণযোগ্যভাবে ন্যায্য এবং টেম্পার-প্রুফ র্যান্ডম নম্বর জেনারেটর (RNG) যা অনির্দেশ্য ফলাফলের ওপর নির্ভর করে এমন অ্যাপ্লিকেশনগুলোর জন্য নির্ভরযোগ্য স্মার্ট কন্ট্রাক্ট তৈরির জন্য দরকারী।
ইভেন্টগুলোর জন্য ফলাফল পাওয়া
ওরাকলের সাহায্যে, বাস্তব-জগতের ইভেন্টগুলোতে সাড়া দেয় এমন স্মার্ট কন্ট্রাক্ট তৈরি করা সহজ। ওরাকল পরিষেবাগুলো কন্ট্রাক্টগুলোকে অফচেইন উপাদানগুলোর মাধ্যমে বাহ্যিক API-গুলোর সাথে সংযোগ করতে এবং সেই ডেটা উৎসগুলো থেকে তথ্য গ্রহণ করার অনুমতি দিয়ে এটি সম্ভব করে তোলে। উদাহরণস্বরূপ, আগে উল্লিখিত প্রেডিকশন ডিএ্যাপ একটি বিশ্বস্ত অফচেইন উৎস (যেমন, অ্যাসোসিয়েটেড প্রেস) থেকে নির্বাচনের ফলাফল ফেরত দেওয়ার জন্য একটি ওরাকলকে অনুরোধ করতে পারে।
বাস্তব-জগতের ফলাফলের ওপর ভিত্তি করে ডেটা পুনরুদ্ধার করতে ওরাকল ব্যবহার করা অন্যান্য অভিনব ব্যবহার-ক্ষেত্রগুলোকে সক্ষম করে; উদাহরণস্বরূপ, একটি ডিসেন্ট্রালাইজড বীমা পণ্যের কার্যকরভাবে কাজ করার জন্য আবহাওয়া, দুর্যোগ ইত্যাদি সম্পর্কে সঠিক তথ্যের প্রয়োজন।
স্মার্ট কন্ট্রাক্ট স্বয়ংক্রিয় করা
স্মার্ট কন্ট্রাক্টগুলো স্বয়ংক্রিয়ভাবে চলে না; বরং, একটি এক্সটার্নালি ওনড একাউন্ট (EOA), বা অন্য একটি কন্ট্রাক্ট একাউন্ট-কে কন্ট্রাক্ট-এর কোড এক্সিকিউট করার জন্য সঠিক ফাংশনগুলো ট্রিগার করতে হবে। বেশিরভাগ ক্ষেত্রে, কন্ট্রাক্ট-এর ফাংশনগুলোর বড় অংশ সর্বজনীন এবং EOA এবং অন্যান্য কন্ট্রাক্ট দ্বারা আহ্বান করা যেতে পারে।
তবে একটি কন্ট্রাক্ট-এর মধ্যে প্রাইভেট ফাংশনও রয়েছে যা অন্যদের কাছে অ্যাক্সেসযোগ্য নয়; কিন্তু যা একটি ডিএ্যাপ-এর সামগ্রিক কার্যকারিতার জন্য অত্যন্ত গুরুত্বপূর্ণ। উদাহরণগুলোর মধ্যে রয়েছে একটি mintERC721Token() ফাংশন যা পর্যায়ক্রমে ব্যবহারকারীদের জন্য নতুন NFT মিন্ট করে, একটি প্রেডিকশন মার্কেটে পেআউট দেওয়ার জন্য একটি ফাংশন, বা একটি DEX-এ স্টেক করা টোকেন আনলক করার জন্য একটি ফাংশন।
অ্যাপ্লিকেশনটি সুচারুভাবে চালানোর জন্য ডেভেলপারদের বিরতিতে এই ধরনের ফাংশনগুলো ট্রিগার করতে হবে। তবে, এটি ডেভেলপারদের জন্য জাগতিক কাজগুলোতে আরও বেশি সময় নষ্ট করতে পারে, যে কারণে স্মার্ট কন্ট্রাক্ট-এর এক্সিকিউশন স্বয়ংক্রিয় করা আকর্ষণীয়।
কিছু ডিসেন্ট্রালাইজড ওরাকল নেটওয়ার্ক অটোমেশন পরিষেবা অফার করে, যা অফচেইন ওরাকল নোড-গুলোকে ব্যবহারকারী দ্বারা সংজ্ঞায়িত প্যারামিটার অনুযায়ী স্মার্ট কন্ট্রাক্ট ফাংশনগুলো ট্রিগার করার অনুমতি দেয়। সাধারণত, এর জন্য ওরাকল পরিষেবার সাথে টার্গেট কন্ট্রাক্ট "নিবন্ধন" করা, ওরাকল অপারেটরকে অর্থ প্রদানের জন্য ফান্ড প্রদান করা এবং কন্ট্রাক্ট ট্রিগার করার শর্ত বা সময় নির্দিষ্ট করা প্রয়োজন।
Chainlink-এর Keeper Network (opens in a new tab) স্মার্ট কন্ট্রাক্টগুলোর জন্য একটি ট্রাস্ট মিনিমাইজড এবং ডিসেন্ট্রালাইজড পদ্ধতিতে নিয়মিত রক্ষণাবেক্ষণের কাজগুলো আউটসোর্স করার বিকল্প প্রদান করে। আপনার কন্ট্রাক্ট-কে Keeper-সামঞ্জস্যপূর্ণ করা এবং Upkeep পরিষেবা ব্যবহার করার তথ্যের জন্য অফিসিয়াল Keeper's documentation (opens in a new tab) পড়ুন।
কীভাবে ব্লকচেইন ওরাকল ব্যবহার করবেন
আপনার ইথিরিয়াম ডিএ্যাপ-এ আপনি একাধিক ওরাকল অ্যাপ্লিকেশন একীভূত করতে পারেন:
Chainlink (opens in a new tab) - Chainlink ডিসেন্ট্রালাইজড ওরাকল নেটওয়ার্কগুলো যেকোনো ব্লকচেইনে উন্নত স্মার্ট কন্ট্রাক্টগুলোকে সমর্থন করার জন্য টেম্পার-প্রুফ ইনপুট, আউটপুট এবং কম্পিউটেশন প্রদান করে।
RedStone Oracles (opens in a new tab) - RedStone হলো একটি ডিসেন্ট্রালাইজড মডুলার ওরাকল যা গ্যাস-অপ্টিমাইজড ডেটা ফিড প্রদান করে। এটি উদীয়মান অ্যাসেটগুলোর জন্য প্রাইস ফিড অফার করতে পারদর্শী, যেমন লিকুইড স্টেকিং টোকেন (LSTs), লিকুইড রিস্টেকিং টোকেন (LRTs), এবং বিটকয়েন স্টেকিং ডেরিভেটিভস।
Chronicle (opens in a new tab) - Chronicle সত্যিকারের স্কেলেবল, সাশ্রয়ী, ডিসেন্ট্রালাইজড এবং যাচাইযোগ্য ওরাকল তৈরি করে অনচেইন ডেটা স্থানান্তরের বর্তমান সীমাবদ্ধতাগুলো অতিক্রম করে।
Witnet (opens in a new tab) - Witnet হলো একটি পারমিশনলেস, ডিসেন্ট্রালাইজড এবং সেন্সরশিপ-প্রতিরোধী ওরাকল যা স্মার্ট কন্ট্রাক্টগুলোকে শক্তিশালী ক্রিপ্টো-অর্থনৈতিক গ্যারান্টিসহ বাস্তব জগতের ইভেন্টগুলোতে প্রতিক্রিয়া জানাতে সাহায্য করে।
UMA Oracle (opens in a new tab) - UMA-এর অপ্টিমেস্টিক ওরাকল স্মার্ট কন্ট্রাক্টগুলোকে বীমা, আর্থিক ডেরিভেটিভস এবং প্রেডিকশন মার্কেটসহ বিভিন্ন অ্যাপ্লিকেশনের জন্য দ্রুত এবং যেকোনো ধরনের ডেটা গ্রহণ করার অনুমতি দেয়।
Tellor (opens in a new tab) - Tellor হলো আপনার স্মার্ট কন্ট্রাক্ট-এর জন্য একটি স্বচ্ছ এবং পারমিশনলেস ওরাকল প্রটোকল যাতে যখনই প্রয়োজন হয় সহজেই যেকোনো ডেটা পাওয়া যায়।
Band Protocol (opens in a new tab) - Band Protocol হলো একটি ক্রস-চেইন ডেটা ওরাকল প্ল্যাটফর্ম যা বাস্তব-জগতের ডেটা এবং API-গুলোকে স্মার্ট কন্ট্রাক্ট-এর সাথে একত্রিত করে এবং সংযুক্ত করে।
Pyth Network (opens in a new tab) - Pyth নেটওয়ার্ক হলো একটি ফার্স্ট-পার্টি আর্থিক ওরাকল নেটওয়ার্ক যা একটি টেম্পার-প্রতিরোধী, ডিসেন্ট্রালাইজড এবং স্ব-টেকসই পরিবেশে অনচেইন অবিচ্ছিন্ন বাস্তব-জগতের ডেটা প্রকাশ করার জন্য ডিজাইন করা হয়েছে।
API3 DAO (opens in a new tab) - API3 DAO ফার্স্ট-পার্টি ওরাকল সলিউশন সরবরাহ করছে যা স্মার্ট কন্ট্রাক্টগুলোর জন্য একটি ডিসেন্ট্রালাইজড সলিউশনে বৃহত্তর উৎস স্বচ্ছতা, নিরাপত্তা এবং স্কেলিং প্রদান করে।
Supra (opens in a new tab) - ক্রস-চেইন সলিউশনগুলোর একটি উল্লম্বভাবে সমন্বিত টুলকিট যা সমস্ত ব্লকচেইন, পাবলিক (L1s এবং L2s) বা প্রাইভেট (এন্টারপ্রাইজ)-কে আন্তঃসংযোগ করে, ডিসেন্ট্রালাইজড ওরাকল প্রাইস ফিড প্রদান করে যা অনচেইন এবং অফচেইন ব্যবহার-ক্ষেত্রগুলোর জন্য ব্যবহার করা যেতে পারে।
Gas Network (opens in a new tab) - একটি ডিস্ট্রিবিউটেড ওরাকল প্ল্যাটফর্ম যা ব্লকচেইন জুড়ে রিয়েল-টাইম গ্যাস প্রাইস ডেটা প্রদান করে। শীর্ষস্থানীয় গ্যাস প্রাইস ডেটা প্রদানকারীদের থেকে ডেটা অনচেইন এনে, Gas Network ইন্টারঅপারেবিলিটি চালাতে সাহায্য করছে। Gas Network ইথিরিয়াম মেইননেট এবং অনেক শীর্ষস্থানীয় L2s সহ 35 টিরও বেশি চেইনের জন্য ডেটা সমর্থন করে।
DIA (opens in a new tab) - একটি ক্রস-চেইন ওরাকল নেটওয়ার্ক যা সমস্ত প্রধান অ্যাসেট ক্লাস জুড়ে 20,000+ অ্যাসেটের জন্য যাচাইযোগ্য ডেটা ফিড সরবরাহ করে। DIA সরাসরি 100+ প্রাথমিক বাজার থেকে কাঁচা ট্রেড ডেটা সংগ্রহ করে এবং এটি অনচেইন গণনা করে, যেকোনো ব্যবহার ক্ষেত্রের জন্য কাস্টম কনফিগারেশনের সাথে সম্পূর্ণ ডেটা স্বচ্ছতা এবং যাচাইযোগ্যতা নিশ্চিত করে।
Stork (opens in a new tab) - Stork অতি-নিম্ন লেটেন্সিতে প্রাইস ডেটা সরবরাহ করে, পারপেচুয়াল মার্কেট, লেন্ডিং প্রটোকল এবং DeFi ইকোসিস্টেমসহ বিস্তৃত ব্যবহার-ক্ষেত্রগুলোকে সমর্থন করে, তালিকাভুক্তির সাথে সাথে নতুন অ্যাসেটগুলো দ্রুত সমর্থিত হয়।
আরও পড়ুন
নিবন্ধ
- What Is a Blockchain Oracle? (opens in a new tab) — Chainlink
- What is a Blockchain Oracle? (opens in a new tab) — Patrick Collins
- Decentralised Oracles: a comprehensive overview (opens in a new tab) — Julien Thevenard
- Implementing a Blockchain Oracle on Ethereum (opens in a new tab) – Pedro Costa
- Why can't smart contracts make API calls? (opens in a new tab) — StackExchange
- So you want to use a price oracle (opens in a new tab) — samczsun
ভিডিও
- Oracles and the Expansion of Blockchain Utility (opens in a new tab) — Real Vision Finance
টিউটোরিয়াল
- How to Fetch the Current Price of Ethereum in Solidity (opens in a new tab) — Chainlink
- Consuming Oracle Data (opens in a new tab) — Chronicle
উদাহরণ প্রজেক্ট