এড়িয়ে গিয়ে মূল কন্টেন্টে যান
Change page

ওরাকেলস

পৃষ্ঠাটি সর্বশেষ আপডেট করা হয়েছে: ২৬ ফেব্রুয়ারী, ২০২৬

ওরাকেলস হল এমন অ্যাপ্লিকেশন যা ডেটা ফিড তৈরি করে যা স্মার্ট কন্ট্র্যাক্টের জন্য ব্লকচেইনে অফচেইন ডেটা উৎস উপলব্ধ করে। এটি প্রয়োজনীয় কারণ Ethereum-ভিত্তিক স্মার্ট কন্ট্র্যাক্টগুলি ডিফল্টরূপে, ব্লকচেইন নেটওয়ার্কের বাইরে সঞ্চিত তথ্য অ্যাক্সেস করতে পারে না।

স্মার্ট কন্ট্র্যাক্টকে অফচেইন ডেটা ব্যবহার করে কার্যকর করার ক্ষমতা দেওয়া ডিসেন্ট্রালাইজড এপ্লিকেশনগুলির উপযোগিতা এবং মান প্রসারিত করে। উদাহরণস্বরূপ, অনচেইন প্রেডিকশন মার্কেটগুলি ওরাকেলের উপর নির্ভর করে ফলাফলের তথ্য সরবরাহ করার জন্য যা তারা ব্যবহারকারীর পূর্বাভাসকে যাচাই করতে ব্যবহার করে। ধরুন অ্যালিস 20 ETH বাজি ধরেছে কে পরবর্তী মার্কিন যুক্তরাষ্ট্রের প্রেসিডেন্ট হবে। সেক্ষেত্রে, অ্যালিস পেআউটের জন্য যোগ্য কিনা তা নির্ধারণ করতে এবং নির্বাচনের ফলাফল নিশ্চিত করতে প্রেডিকশন-মার্কেট ডিএ্যাপটির একটি ওরাকেলের প্রয়োজন।

পূর্বশর্ত

এই পৃষ্ঠাটি ধরে নেয় যে পাঠক নোড, কনসেন্সাস মেকানিজম, এবং EVM সহ Ethereum-এর মৌলিক বিষয়গুলির সাথে পরিচিত। আপনার স্মার্ট কন্ট্র্যাক্ট এবং স্মার্ট কন্ট্র্যাক্ট অ্যানাটমি, বিশেষ করে সম্পর্কেও ভালো ধারণা থাকা উচিত।

একটি ব্লকচেইন ওরাকেল কী?

ওরাকেলস হল এমন অ্যাপ্লিকেশন যা ব্লকচেইনে চলমান স্মার্ট কন্ট্র্যাক্টে বাহ্যিক তথ্য (অর্থাৎ, অফচেইন সঞ্চিত তথ্য) উৎস, যাচাই এবং প্রেরণ করে। অফচেইন ডেটা “পুল” করা এবং এটিকে Ethereum-এ সম্প্রচার করা ছাড়াও, ওরাকেলগুলি ব্লকচেইন থেকে বাহ্যিক সিস্টেমে তথ্য “পুশ” করতে পারে, যেমন, ব্যবহারকারী একটি Ethereum লেনদেনের মাধ্যমে একটি ফি পাঠালে একটি স্মার্ট লক আনলক করা।

একটি ওরাকেল ছাড়া, একটি স্মার্ট কন্ট্র্যাক্ট সম্পূর্ণরূপে অনচেইন ডেটার মধ্যে সীমাবদ্ধ থাকবে।

ওরাকেলস ডেটার উৎস (এক বা একাধিক উৎস), ট্রাস্ট মডেল (কেন্দ্রীয় বা বিকেন্দ্রীভূত), এবং সিস্টেম আর্কিটেকচার (অবিলম্বে-পড়া, প্রকাশ-সাবস্ক্রাইব, এবং অনুরোধ-প্রতিক্রিয়া) এর উপর ভিত্তি করে ভিন্ন হয়। আমরা ওরাকলের মধ্যে পার্থক্য করতে পারি যে তারা অনচেইন কন্ট্র্যাক্ট (ইনপুট ওরাকেল) দ্বারা ব্যবহারের জন্য বাহ্যিক ডেটা পুনরুদ্ধার করে, ব্লকচেইন থেকে অফচেইন অ্যাপ্লিকেশনে (আউটপুট ওরাকেল) তথ্য পাঠায়, বা অফচেইন (কম্পিউটেশনাল ওরাকেল) কম্পিউটেশনাল কাজ করে।

স্মার্ট কন্ট্র্যাক্টের ওরাকেলের প্রয়োজন কেন?

অনেক ডেভেলপার স্মার্ট কন্ট্র্যাক্টকে ব্লকচেইনের নির্দিষ্ট ঠিকানায় চলমান কোড হিসাবে দেখেন। যাইহোক, স্মার্ট কন্ট্র্যাক্টের একটি আরও সাধারণ দৃষ্টিভঙ্গি হল যে সেগুলি স্ব-নির্বাহী সফ্টওয়্যার প্রোগ্রাম যা নির্দিষ্ট শর্ত পূরণ হয়ে গেলে পক্ষগুলির মধ্যে চুক্তি প্রয়োগ করতে সক্ষম - তাই “স্মার্ট কন্ট্র্যাক্ট” শব্দটি।

কিন্তু মানুষের মধ্যে চুক্তি কার্যকর করার জন্য স্মার্ট কন্ট্র্যাক্ট ব্যবহার করা সহজ নয়, কারণ Ethereum নির্ধারক। একটি নির্ধারক সিস্টেম (opens in a new tab) হল এমন একটি যা একটি প্রাথমিক অবস্থা এবং একটি নির্দিষ্ট ইনপুট দেওয়া হলে সর্বদা একই ফলাফল তৈরি করে, যার অর্থ ইনপুট থেকে আউটপুট গণনা করার প্রক্রিয়াতে কোনও এলোমেলোতা বা ভিন্নতা নেই।

নির্ধারক এক্সিকিউশন অর্জনের জন্য, ব্লকচেইনগুলি শুধুমাত্র ব্লকচেইনেই সঞ্চিত ডেটা ব্যবহার করে সাধারণ বাইনারি (সত্য/মিথ্যা) প্রশ্নগুলির উপর কনসেন্সাস পৌঁছানোর জন্য নোডগুলিকে সীমাবদ্ধ করে। এই ধরনের প্রশ্নের উদাহরণগুলির মধ্যে রয়েছে:

  • “অ্যাকাউন্টের মালিক (একটি পাবলিক কী দ্বারা চিহ্নিত) কি এই লেনদেনটি জোড়া প্রাইভেট কী দিয়ে স্বাক্ষর করেছেন?”
  • “এই অ্যাকাউন্টে লেনদেন কভার করার জন্য যথেষ্ট তহবিল আছে কি?”
  • “এই স্মার্ট কন্ট্র্যাক্টের প্রেক্ষাপটে এই লেনদেনটি বৈধ?”, ইত্যাদি।

যদি ব্লকচেইনগুলি বাহ্যিক উত্স থেকে (অর্থাৎ, বাস্তব বিশ্ব থেকে) তথ্য পায়, তবে নির্ধারকতা অর্জন করা অসম্ভব হবে, যা নোডগুলিকে ব্লকচেইনের অবস্থার পরিবর্তনে একমত হতে বাধা দেবে। উদাহরণস্বরূপ একটি স্মার্ট কন্ট্র্যাক্ট নিন যা একটি প্রচলিত মূল্য API থেকে প্রাপ্ত বর্তমান ETH-USD বিনিময় হারের উপর ভিত্তি করে একটি লেনদেন সম্পাদন করে। এই সংখ্যাটি ঘন ঘন পরিবর্তন হওয়ার সম্ভাবনা রয়েছে (উল্লেখ করার মতো নয় যে APIটি বাতিল বা হ্যাক হতে পারে), যার অর্থ একই কন্ট্র্যাক্ট কোড নির্বাহকারী নোডগুলি বিভিন্ন ফলাফলে পৌঁছাবে।

Ethereum-এর মতো একটি পাবলিক ব্লকচেইনের জন্য, বিশ্বজুড়ে হাজার হাজার নোড লেনদেন প্রক্রিয়াকরণ করে, নির্ধারকতা অত্যন্ত গুরুত্বপূর্ণ। সত্যের উৎস হিসাবে কাজ করার জন্য কোনও কেন্দ্রীয় কর্তৃপক্ষ না থাকায়, একই লেনদেন প্রয়োগ করার পরে একই অবস্থায় পৌঁছানোর জন্য নোডগুলির পদ্ধতির প্রয়োজন। এমন একটি ক্ষেত্রে যেখানে নোড A একটি স্মার্ট কন্ট্র্যাক্টের কোড চালায় এবং ফলস্বরূপ "3" পায়, যখন নোড B একই লেনদেন চালানোর পরে "7" পায়, যা কনসেন্সাস ভেঙে দেবে এবং একটি ডিসেন্ট্রালাইজড কম্পিউটিং প্ল্যাটফর্ম হিসাবে Ethereum-এর মানকে নির্মূল করবে।

এই দৃশ্যকল্পটি বাহ্যিক উৎস থেকে তথ্য টানতে ব্লকচেইন ডিজাইন করার সমস্যাটিকেও তুলে ধরে। যাইহোক, ওরাকেলস অফচেইন উৎস থেকে তথ্য নিয়ে এবং স্মার্ট কন্ট্র্যাক্টের ব্যবহারের জন্য ব্লকচেইনে সংরক্ষণ করে এই সমস্যার সমাধান করে। যেহেতু অনচেইনে সঞ্চিত তথ্য অপরিবর্তনীয় এবং সর্বজনীনভাবে উপলব্ধ, তাই Ethereum নোডগুলি কনসেন্সাস না ভেঙে অবস্থার পরিবর্তনগুলি গণনা করতে ওরাকেল আমদানি করা অফচেইন ডেটা নিরাপদে ব্যবহার করতে পারে।

এটি করার জন্য, একটি ওরাকেল সাধারণত একটি স্মার্ট কন্ট্র্যাক্ট অনচেইনে চলমান এবং কিছু অফচেইন উপাদান দিয়ে তৈরি। অনচেইন কন্ট্র্যাক্ট অন্যান্য স্মার্ট কন্ট্র্যাক্ট থেকে ডেটার জন্য অনুরোধ গ্রহণ করে, যা এটি অফচেইন উপাদানে (একটি ওরাকেল নোড বলা হয়) প্রেরণ করে। এই ওরাকেল নোড ডেটা উৎস জিজ্ঞাসা করতে পারে—উদাহরণস্বরূপ, অ্যাপ্লিকেশন প্রোগ্রামিং ইন্টারফেস (API) ব্যবহার করে—এবং স্মার্ট কন্ট্র্যাক্টের সংগ্রহস্থলে অনুরোধ করা ডেটা সঞ্চয় করতে লেনদেন পাঠাতে পারে।

মূলত, একটি ব্লকচেইন ওরাকেল ব্লকচেইন এবং বাহ্যিক পরিবেশের মধ্যে তথ্যের ব্যবধানকে ব্রিজ করে, “হাইব্রিড স্মার্ট কন্ট্র্যাক্ট” তৈরি করে। একটি হাইব্রিড স্মার্ট কন্ট্র্যাক্ট হল এমন একটি যা অনচেইন কন্ট্র্যাক্ট কোড এবং অফচেইন পরিকাঠামোর সংমিশ্রণের উপর ভিত্তি করে কাজ করে। ডিসেন্ট্রালাইজড প্রেডিকশন মার্কেটগুলি হাইব্রিড স্মার্ট কন্ট্র্যাক্টের একটি চমৎকার উদাহরণ। অন্যান্য উদাহরণের মধ্যে শস্য বীমা স্মার্ট কন্ট্র্যাক্ট অন্তর্ভুক্ত থাকতে পারে যা অর্থ প্রদান করে যখন ওরাকেলের একটি সেট নির্ধারণ করে যে নির্দিষ্ট আবহাওয়ার ঘটনা ঘটেছে।

ওরাকেল সমস্যাটি কী?

ওরাকেলস একটি গুরুত্বপূর্ণ সমস্যার সমাধান করে, তবে কিছু জটিলতাও নিয়ে আসে, যেমন:

  • আমরা কীভাবে যাচাই করব যে ইনজেক্ট করা তথ্য সঠিক উৎস থেকে নেওয়া হয়েছে বা এতে কোনও কারচুপি করা হয়নি?

  • আমরা কীভাবে নিশ্চিত করব যে এই ডেটা সর্বদা উপলব্ধ এবং নিয়মিত আপডেট করা হয়?

তথাকথিত “ওরাকেল সমস্যা” ব্লকচেইন ওরাকেল ব্যবহার করে স্মার্ট কন্ট্র্যাক্টে ইনপুট পাঠানোর সাথে আসা সমস্যাগুলিকে প্রদর্শন করে। একটি স্মার্ট কন্ট্র্যাক্ট সঠিকভাবে কার্যকর করার জন্য একটি ওরাকেল থেকে ডেটা সঠিক হতে হবে। অধিকন্তু, সঠিক তথ্য প্রদানের জন্য ওরাকেল অপারেটরদের ‘বিশ্বাস’ করা স্মার্ট কন্ট্র্যাক্টের ‘বিশ্বাসহীন’ দিকটিকে দুর্বল করে।

বিভিন্ন ওরাকেল ওরাকেল সমস্যার বিভিন্ন সমাধান অফার করে, যা আমরা পরে অন্বেষণ করব। ওরাকেলস সাধারণত নিম্নলিখিত চ্যালেঞ্জগুলি কতটা ভালোভাবে পরিচালনা করতে পারে তার উপর ভিত্তি করে মূল্যায়ন করা হয়:

  1. সঠিকতা: একটি ওরাকেল অবৈধ অফচেইন ডেটার উপর ভিত্তি করে স্মার্ট কন্ট্র্যাক্টকে অবস্থার পরিবর্তন ঘটাতে দেবে না। একটি ওরাকেলকে অবশ্যই ডেটার সত্যতা এবং অখণ্ডতা নিশ্চিত করতে হবে। সত্যতা মানে ডেটা সঠিক উৎস থেকে পাওয়া গেছে, যখন অখণ্ডতা মানে ডেটা অক্ষত ছিল (অর্থাৎ, পরিবর্তিত হয়নি) অনচেইনে পাঠানোর আগে।

  2. উপলব্ধতা: একটি ওরাকেল স্মার্ট কন্ট্র্যাক্টগুলিকে কাজ চালানো এবং অবস্থার পরিবর্তন ঘটাতে দেরি বা বাধা দেবে না। এর মানে হল যে একটি ওরাকেল থেকে ডেটা অবশ্যই কোনো বাধা ছাড়াই অনুরোধে উপলব্ধ থাকতে হবে।

  3. ইনসেনটিভ সামঞ্জস্য: একটি ওরাকেলকে অফচেইন ডেটা প্রদানকারীদের স্মার্ট কন্ট্র্যাক্টে সঠিক তথ্য জমা দেওয়ার জন্য উৎসাহিত করা উচিত। ইনসেনটিভ সামঞ্জস্যের মধ্যে অ্যাট্রিবিউটেবিলিটি এবং অ্যাকাউন্টেবিলিটি জড়িত। অ্যাট্রিবিউটেবিলিটি একটি বাহ্যিক তথ্যের একটি অংশকে তার প্রদানকারীর সাথে লিঙ্ক করার অনুমতি দেয়, যখন অ্যাকাউন্টেবিলিটি ডেটা প্রদানকারীদের তারা যে তথ্য দেয় তার সাথে বন্ড করে, যাতে তাদের প্রদত্ত তথ্যের মানের উপর ভিত্তি করে পুরস্কৃত বা দণ্ডিত করা যায়।

একটি ব্লকচেইন ওরাকেল পরিষেবা কীভাবে কাজ করে?

ব্যবহারকারী

ব্যবহারকারীরা হল সত্তা (যেমন, স্মার্ট কন্ট্র্যাক্ট) যাদের নির্দিষ্ট কাজগুলি সম্পূর্ণ করার জন্য ব্লকচেইনের বাইরে তথ্যের প্রয়োজন হয়। একটি ওরাকেল পরিষেবার প্রাথমিক কর্মপ্রবাহ ব্যবহারকারীর ওরাকেল কন্ট্র্যাক্টে একটি ডেটা অনুরোধ পাঠানোর মাধ্যমে শুরু হয়। ডেটা অনুরোধগুলি সাধারণত নিম্নলিখিত কিছু বা সমস্ত প্রশ্নের উত্তর দেবে:

  1. অফচেইন নোড অনুরোধ করা তথ্যের জন্য কোন উৎসগুলির সাথে পরামর্শ করতে পারে?

  2. রিপোর্টাররা কীভাবে ডেটা উৎস থেকে তথ্য প্রক্রিয়া করে এবং দরকারী ডেটা পয়েন্ট বের করে?

  3. ডেটা পুনরুদ্ধারে কতগুলি ওরাকেল নোড অংশগ্রহণ করতে পারে?

  4. ওরাকেল রিপোর্টে অসঙ্গতিগুলি কীভাবে পরিচালনা করা উচিত?

  5. জমাগুলি ফিল্টার করতে এবং রিপোর্টগুলিকে একটি একক মানে একত্রিত করতে কোন পদ্ধতি প্রয়োগ করা উচিত?

ওরাকেল কন্ট্র্যাক্ট

ওরাকেল কন্ট্র্যাক্ট হল ওরাকেল পরিষেবার জন্য অনচেইন উপাদান। এটি অন্যান্য কন্ট্র্যাক্ট থেকে ডেটা অনুরোধের জন্য শোনে, ওরাকেল নোডগুলিতে ডেটা কোয়েরি রিলে করে এবং ক্লায়েন্ট কন্ট্র্যাক্টগুলিতে ফেরত ডেটা সম্প্রচার করে। এই কন্ট্র্যাক্টটি অনুরোধকারী কন্ট্র্যাক্টে পাঠানোর জন্য একটি সামগ্রিক মান তৈরি করতে ফেরত ডেটা পয়েন্টগুলিতে কিছু গণনাও করতে পারে।

ওরাকেল কন্ট্র্যাক্ট কিছু ফাংশন প্রকাশ করে যা ক্লায়েন্ট কন্ট্র্যাক্টগুলি ডেটা অনুরোধ করার সময় কল করে। একটি নতুন কোয়েরি পাওয়ার পরে, স্মার্ট কন্ট্র্যাক্ট ডেটা অনুরোধের বিবরণ সহ একটি লগ ইভেন্ট নির্গত করবে। এটি লগে সাবস্ক্রাইব করা অফচেইন নোডগুলিকে অবহিত করে (সাধারণত JSON-RPC eth_subscribe কমান্ডের মতো কিছু ব্যবহার করে), যারা লগ ইভেন্টে সংজ্ঞায়িত ডেটা পুনরুদ্ধার করতে এগিয়ে যায়।

Pedro Costa-এর দ্বারা নিচে একটি উদাহরণ ওরাকেল কন্ট্র্যাক্ট (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; //API ইউআরএল
13 string attributeToFetch; //প্রতিক্রিয়ায় পুনরুদ্ধার করার জন্য json অ্যাট্রিবিউট (কী)
14 string agreedValue; //কী থেকে মান
15 mapping(uint => string) answers; //ওরাকেল দ্বারা প্রদত্ত উত্তর
16 mapping(address => uint) quorum; //ওরাকেল যা উত্তরটি জিজ্ঞাসা করবে (1=ওরাকেল ভোট দেয়নি, 2=ওরাকেল ভোট দিয়েছে)
17 }
18
19 //ইভেন্ট যা ব্লকচেইনের বাইরে ওরাকেলকে ট্রিগার করে
20 event NewRequest (
21 uint id,
22 string urlToQuery,
23 string attributeToFetch
24 );
25
26 //যখন চূড়ান্ত ফলাফলের উপর একটি কনসেন্সাস থাকে তখন ট্রিগার হয়
27 event UpdatedRequest (
28 uint id,
29 string urlToQuery,
30 string attributeToFetch,
31 string agreedValue
32 );
33
34 function createRequest (
35 string memory _urlToQuery,
36 string memory _attributeToFetch
37 )
38 public
39 {
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 _attributeToFetch
53 );
54
55 // অনুরোধ আইডি বাড়ান
56 currentId++;
57 }
58
59 //ওরাকেল দ্বারা তার উত্তর রেকর্ড করার জন্য কল করা হয়
60 function updateRequest (
61 uint _id,
62 string memory _valueRetrieved
63 ) 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.agreedValue
103 );
104 }
105 }
106 }
107 }
108 }
109}
সবকটি দেখুন

ওরাকেল নোড

ওরাকেল নোড হল ওরাকেল পরিষেবার অফচেইন উপাদান। এটি বাহ্যিক উৎস থেকে তথ্য বের করে, যেমন তৃতীয় পক্ষের সার্ভারে হোস্ট করা API, এবং স্মার্ট কন্ট্র্যাক্ট দ্বারা ব্যবহারের জন্য এটি অনচেইন রাখে। ওরাকেল নোড অনচেইন ওরাকেল কন্ট্র্যাক্ট থেকে ইভেন্ট শোনে এবং লগে বর্ণিত কাজটি সম্পূর্ণ করতে এগিয়ে যায়।

ওরাকেল নোডগুলির জন্য একটি সাধারণ কাজ হল একটি API পরিষেবাতে একটি HTTP GET (opens in a new tab) অনুরোধ পাঠানো, প্রাসঙ্গিক ডেটা বের করার জন্য প্রতিক্রিয়া পার্স করা, একটি ব্লকচেইন-পঠনযোগ্য আউটপুটে ফর্ম্যাট করা, এবং এটিকে ওরাকেল কন্ট্র্যাক্টে একটি লেনদেনে অন্তর্ভুক্ত করে অনচেইন পাঠানো। ওরাকেল নোডকে “সত্যতা প্রমাণ” ব্যবহার করে জমা দেওয়া তথ্যের বৈধতা এবং অখণ্ডতা প্রত্যয়ন করতেও হতে পারে, যা আমরা পরে অন্বেষণ করব।

গ্যাসের খরচ এবং ব্লকের আকারের সীমাবদ্ধতার কারণে কম্পিউটেশনাল ওরাকেলগুলি অফচেইন নোডের উপর নির্ভর করে এমন কম্পিউটেশনাল কাজগুলি সম্পাদন করতে যা অনচেইনে চালানো অব্যবহারিক হবে। উদাহরণস্বরূপ, ওরাকেল নোডকে একটি যাচাইযোগ্য র্যান্ডম ফিগার তৈরি করার দায়িত্ব দেওয়া হতে পারে (যেমন, ব্লকচেইন-ভিত্তিক গেমগুলির জন্য)।

ওরাকেল ডিজাইন প্যাটার্ন

ওরাকেলস বিভিন্ন ধরনের হয়, যার মধ্যে রয়েছে immediate-read, publish-subscribe, এবং request-response, যার মধ্যে পরবর্তী দুটি Ethereum স্মার্ট কন্ট্র্যাক্টগুলির মধ্যে সবচেয়ে জনপ্রিয়। এখানে আমরা সংক্ষেপে প্রকাশ-সাবস্ক্রাইব এবং অনুরোধ-প্রতিক্রিয়া মডেলগুলি বর্ণনা করি।

প্রকাশ-সাবস্ক্রাইব ওরাকেল

এই ধরনের ওরাকেল একটি “ডেটা ফিড” প্রকাশ করে যা অন্যান্য কন্ট্র্যাক্ট তথ্যের জন্য নিয়মিত পড়তে পারে। এই ক্ষেত্রে ডেটা ঘন ঘন পরিবর্তিত হবে বলে আশা করা হয়, তাই ক্লায়েন্ট কন্ট্র্যাক্টগুলিকে ওরাকেলের সংগ্রহস্থলে ডেটার আপডেটের জন্য শুনতে হবে। একটি উদাহরণ হল একটি ওরাকেল যা ব্যবহারকারীদের সর্বশেষ 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) এর মধ্যে মান প্রদান করে তাদের পুরস্কৃত করা হয়, যখন যাদের মান মধ্যম মান থেকে ব্যাপকভাবে বিচ্যুত হয় তাদের দণ্ডিত করা হয়।

যদিও শেলিংকয়েন আজ বিদ্যমান নেই, তবে বেশ কয়েকটি ডিসেন্ট্রালাইজড ওরাকেল—বিশেষত মেকার প্রোটোকলের ওরাকেলস (opens in a new tab)—ওরাকেল ডেটার সঠিকতা উন্নত করতে শেলিং-পয়েন্ট পদ্ধতি ব্যবহার করে। প্রতিটি মেকার ওরাকেল নোড ("রিলের" এবং "ফিড") এর একটি অফচেইন P2P নেটওয়ার্ক নিয়ে গঠিত যা জামানত সম্পদের জন্য বাজারের মূল্য জমা দেয় এবং একটি অনচেইন “মিডিয়ানাইজার” কন্ট্র্যাক্ট যা সমস্ত প্রদত্ত মানের মধ্যম গণনা করে। নির্দিষ্ট বিলম্বের সময়কাল শেষ হয়ে গেলে, এই মধ্যম মানটি সংশ্লিষ্ট সম্পদের জন্য নতুন রেফারেন্স মূল্য হয়ে যায়।

শেলিং পয়েন্ট পদ্ধতি ব্যবহার করে এমন ওরাকেলগুলির অন্যান্য উদাহরণগুলির মধ্যে রয়েছে চেইনলিঙ্ক অফচেইন রিপোর্টিং (opens in a new tab) এবং উইটনেট (opens in a new tab)। উভয় সিস্টেমে, পিয়ার-টু-পিয়ার নেটওয়ার্কের ওরাকেল নোডগুলির প্রতিক্রিয়াগুলিকে একটি একক সামগ্রিক মানে একত্রিত করা হয়, যেমন একটি গড় বা মধ্যম। নোডগুলিকে তাদের প্রতিক্রিয়াগুলি সামগ্রিক মানের সাথে কতটা সারিবদ্ধ বা বিচ্যুত হয় তার উপর ভিত্তি করে পুরস্কৃত বা দণ্ডিত করা হয়।

শেলিং পয়েন্ট পদ্ধতিগুলি আকর্ষণীয় কারণ তারা অনচেইন ফুটপ্রিন্ট হ্রাস করে (শুধুমাত্র একটি লেনদেন পাঠাতে হবে) এবং বিকেন্দ্রীকরণের নিশ্চয়তা দেয়। পরেরটি সম্ভব কারণ নোডগুলিকে গড়/মধ্যম মান তৈরি করে এমন অ্যালগরিদমে খাওয়ানোর আগে জমা দেওয়া প্রতিক্রিয়ার তালিকায় স্বাক্ষর করতে হবে।

প্রাপ্যতা

ডিসেন্ট্রালাইজড ওরাকেল পরিষেবা স্মার্ট কন্ট্র্যাক্টগুলিতে অফচেইন ডেটার উচ্চ প্রাপ্যতা নিশ্চিত করে। এটি অফচেইন তথ্যের উৎস এবং অনচেইনে তথ্য স্থানান্তরের জন্য দায়ী নোড উভয়কেই বিকেন্দ্রীকরণ করে অর্জন করা হয়।

এটি ফল্ট-টলারেন্স নিশ্চিত করে কারণ ওরাকেল কন্ট্র্যাক্ট অন্যান্য কন্ট্র্যাক্ট থেকে কোয়েরি কার্যকর করার জন্য একাধিক নোডের (যারা একাধিক ডেটা উৎসের উপরও নির্ভর করে) উপর নির্ভর করতে পারে। উৎস এবং নোড-অপারেটর স্তরে ডিসেন্ট্রালাইজেশন অত্যন্ত গুরুত্বপূর্ণ—একই উৎস থেকে পুনরুদ্ধার করা তথ্য পরিবেশনকারী ওরাকেল নোডগুলির একটি নেটওয়ার্ক একটি কেন্দ্রীয় ওরাকেলের মতো একই সমস্যায় পড়বে।

স্টেক-ভিত্তিক ওরাকেলগুলির পক্ষে ডেটা অনুরোধে দ্রুত সাড়া দিতে ব্যর্থ হওয়া নোড অপারেটরদের স্ল্যাশ করাও সম্ভব। এটি ওরাকেল নোডগুলিকে ফল্ট-টলারেন্ট পরিকাঠামোতে বিনিয়োগ করতে এবং সময়মতো ডেটা সরবরাহ করতে উল্লেখযোগ্যভাবে উৎসাহিত করে।

ভালো ইনসেনটিভ সামঞ্জস্যতা

ডিসেন্ট্রালাইজড ওরাকেলগুলি ওরাকেল নোডগুলির মধ্যে বাইজেন্টাইন (opens in a new tab) আচরণ প্রতিরোধ করার জন্য বিভিন্ন ইনসেনটিভ ডিজাইন প্রয়োগ করে। বিশেষত, তারা অ্যাট্রিবিউটেবিলিটি এবং অ্যাকাউন্টেবিলিটি অর্জন করে:

  1. ডিসেন্ট্রালাইজড ওরাকেল নোডগুলিকে প্রায়শই ডেটা অনুরোধের প্রতিক্রিয়ায় তারা যে ডেটা সরবরাহ করে তাতে স্বাক্ষর করতে হয়। এই তথ্যটি ওরাকেল নোডগুলির ঐতিহাসিক কর্মক্ষমতা মূল্যায়নে সাহায্য করে, যাতে ব্যবহারকারীরা ডেটা অনুরোধ করার সময় অবিশ্বস্ত ওরাকেল নোডগুলিকে ফিল্টার করতে পারে। একটি উদাহরণ হল উইটনেটের অ্যালগরিদমিক রেপুটেশন সিস্টেম (opens in a new tab)

  2. ডিসেন্ট্রালাইজড ওরাকেলগুলি—যেমনটি আগে ব্যাখ্যা করা হয়েছে—নোডগুলিকে তারা জমা দেওয়া ডেটার সত্যতার উপর তাদের আস্থার উপর একটি স্টেক রাখতে বলতে পারে। যদি দাবিটি সঠিক হয়, তবে এই স্টেকটি সৎ পরিষেবার জন্য পুরষ্কার সহ ফেরত দেওয়া যেতে পারে। কিন্তু তথ্যটি ভুল হলে এটি স্ল্যাশও করা যেতে পারে, যা অ্যাকাউন্টেবিলিটির কিছু পরিমাপ সরবরাহ করে।

স্মার্ট কন্ট্র্যাক্টে ওরাকেলের অ্যাপ্লিকেশন

Ethereum-এ ওরাকেলের জন্য নিম্নলিখিতগুলি সাধারণ ব্যবহারের ক্ষেত্র:

আর্থিক তথ্য পুনরুদ্ধার করা

ডিসেন্ট্রালাইজড ফাইন্যান্স (DeFi) অ্যাপ্লিকেশনগুলি পিয়ার-টু-পিয়ার ঋণ, ধার এবং সম্পদ ট্রেড করার অনুমতি দেয়। এর জন্য প্রায়শই বিভিন্ন আর্থিক তথ্যের প্রয়োজন হয়, যার মধ্যে বিনিময় হারের ডেটা (ক্রিপ্টোকারেন্সির ফিয়াট মান গণনা করতে বা টোকেনের মূল্য তুলনা করতে) এবং মূলধন বাজারের ডেটা (টোকেনাইজড সম্পদের মূল্য গণনা করতে, যেমন সোনা বা মার্কিন ডলার) অন্তর্ভুক্ত।

উদাহরণস্বরূপ, একটি DeFi ঋণ প্রোটোকলকে জামানত হিসাবে জমা দেওয়া সম্পদের (যেমন, ETH) বর্তমান বাজার মূল্য জিজ্ঞাসা করতে হবে। এটি কন্ট্র্যাক্টকে জামানত সম্পদের মূল্য নির্ধারণ করতে এবং সিস্টেম থেকে কতটা ধার করা যায় তা নির্ধারণ করতে দেয়।

DeFi-তে জনপ্রিয় “প্রাইস ওরাকেল” (যেমনটি প্রায়শই বলা হয়) এর মধ্যে রয়েছে চেইনলিঙ্ক প্রাইস ফিড, কম্পাউন্ড প্রোটোকলের ওপেন প্রাইস ফিড (opens in a new tab), ইউনিসওয়াপের টাইম-ওয়েটেড অ্যাভারেজ প্রাইস (TWAP) (opens in a new tab), এবং মেকার ওরাকেলস (opens in a new tab)

নির্মাতাদের তাদের প্রকল্পে এই প্রাইস ওরাকেলগুলিকে একীভূত করার আগে তাদের সাথে আসা সতর্কতাগুলি বোঝা উচিত। এই প্রবন্ধটি (opens in a new tab) উল্লিখিত যেকোনো প্রাইস ওরাকেল ব্যবহার করার পরিকল্পনা করার সময় কী বিবেচনা করতে হবে তার একটি বিশদ বিশ্লেষণ প্রদান করে।

নিচে একটি উদাহরণ দেওয়া হল যে আপনি কীভাবে একটি চেইনলিঙ্ক প্রাইস ফিড ব্যবহার করে আপনার স্মার্ট কন্ট্র্যাক্টে সর্বশেষ 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 * নেটওয়ার্ক: কোভান
11 * অ্যাগ্রিগেটর: ETH/USD
12 * ঠিকানা: 0x9326BFA02ADD2366b30bacB125260Af641031331
13 */
14 constructor() public {
15 priceFeed = AggregatorV3Interface(0x9326BFA02ADD2366b30bacB125260Af641031331);
16 }
17
18 /**
19 * সর্বশেষ মূল্য প্রদান করে
20 */
21 function getLatestPrice() public view returns (int) {
22 (
23 uint80 roundID,
24 int price,
25 uint startedAt,
26 uint timeStamp,
27 uint80 answeredInRound
28 ) = priceFeed.latestRoundData();
29 return price;
30 }
31}
সবকটি দেখুন

যাচাইযোগ্য এলোমেলোতা তৈরি করা

কিছু ব্লকচেইন অ্যাপ্লিকেশন, যেমন ব্লকচেইন-ভিত্তিক গেম বা লটারি স্কিমগুলির জন্য কার্যকরভাবে কাজ করার জন্য একটি উচ্চ স্তরের অনির্দেশ্যতা এবং এলোমেলোতার প্রয়োজন হয়। যাইহোক, ব্লকচেইনের নির্ধারক এক্সিকিউশন এলোমেলোতা দূর করে।

মূল পদ্ধতিটি ছিল blockhash-এর মতো ছদ্ম-এলোমেলো ক্রিপ্টোগ্রাফিক ফাংশন ব্যবহার করা, কিন্তু এগুলি মাইনারদের দ্বারা ম্যানিপুলেট (opens in a new tab) করা যেত প্রুফ-অফ-ওয়ার্ক অ্যালগরিদমের সমাধান করা। এছাড়াও, Ethereum-এর প্রুফ-অফ-স্টেকে স্যুইচ মানে ডেভেলপাররা আর অনচেইন এলোমেলোতার জন্য blockhash-এর উপর নির্ভর করতে পারে না। বিকন চেইনের RANDAO পদ্ধতি (opens in a new tab) এর পরিবর্তে এলোমেলোতার একটি বিকল্প উৎস প্রদান করে।

অফচেইনে র্যান্ডম মান তৈরি করা এবং এটি অনচেইনে পাঠানো সম্ভব, কিন্তু এটি করা ব্যবহারকারীদের উপর উচ্চ বিশ্বাসের প্রয়োজনীয়তা আরোপ করে। তাদের বিশ্বাস করতে হবে যে মানটি সত্যিই অনির্দেশ্য পদ্ধতির মাধ্যমে তৈরি করা হয়েছিল এবং ট্রানজিটে পরিবর্তিত হয়নি।

অফচেইন কম্পিউটেশনের জন্য ডিজাইন করা ওরাকেলস অফচেইনে সুরক্ষিতভাবে এলোমেলো ফলাফল তৈরি করে এই সমস্যার সমাধান করে যা তারা অনচেইনে সম্প্রচার করে ক্রিপ্টোগ্রাফিক প্রমাণের সাথে প্রক্রিয়ার অনির্দেশ্যতা প্রত্যয়ন করে। একটি উদাহরণ হল চেইনলিঙ্ক VRF (opens in a new tab) (যাচাইযোগ্য র্যান্ডম ফাংশন), যা একটি প্রমাণযোগ্য ন্যায্য এবং ট্যাম্পার-প্রুফ র্যান্ডম নম্বর জেনারেটর (RNG) যা অনির্দেশ্য ফলাফলের উপর নির্ভরশীল অ্যাপ্লিকেশনগুলির জন্য নির্ভরযোগ্য স্মার্ট কন্ট্র্যাক্ট তৈরির জন্য দরকারী।

ইভেন্টের জন্য ফলাফল পাওয়া

ওরাকেল দিয়ে, বাস্তব-বিশ্বের ইভেন্টগুলিতে সাড়া দেয় এমন স্মার্ট কন্ট্র্যাক্ট তৈরি করা সহজ। ওরাকেল পরিষেবাগুলি কন্ট্র্যাক্টগুলিকে অফচেইন উপাদানগুলির মাধ্যমে বাহ্যিক API-তে সংযোগ করতে এবং সেই ডেটা উৎস থেকে তথ্য ব্যবহার করার অনুমতি দিয়ে এটি সম্ভব করে। উদাহরণস্বরূপ, পূর্বে উল্লিখিত প্রেডিকশন ড্যাপটি একটি বিশ্বস্ত অফচেইন উৎস (যেমন, অ্যাসোসিয়েটেড প্রেস) থেকে নির্বাচনের ফলাফল ফেরাতে একটি ওরাকেলকে অনুরোধ করতে পারে।

বাস্তব-বিশ্বের ফলাফলের উপর ভিত্তি করে ডেটা পুনরুদ্ধার করার জন্য ওরাকেল ব্যবহার করা অন্যান্য অভিনব ব্যবহারের ক্ষেত্রগুলিকে সক্ষম করে; উদাহরণস্বরূপ, একটি ডিসেন্ট্রালাইজড বীমা পণ্য কার্যকরভাবে কাজ করার জন্য আবহাওয়া, দুর্যোগ ইত্যাদি সম্পর্কে সঠিক তথ্যের প্রয়োজন।

স্মার্ট কন্ট্র্যাক্ট স্বয়ংক্রিয় করা

স্মার্ট কন্ট্র্যাক্টগুলি স্বয়ংক্রিয়ভাবে চলে না; বরং, একটি বাহ্যিকভাবে মালিকানাধীন অ্যাকাউন্ট (EOA), বা অন্য কোনো কন্ট্র্যাক্ট অ্যাকাউন্টকে, কন্ট্র্যাক্টের কোড কার্যকর করার জন্য সঠিক ফাংশনগুলিকে ট্রিগার করতে হবে। বেশিরভাগ ক্ষেত্রে, কন্ট্র্যাক্টের ফাংশনগুলির বেশিরভাগই পাবলিক এবং EOA এবং অন্যান্য কন্ট্র্যাক্ট দ্বারা আহ্বান করা যেতে পারে।

কিন্তু একটি কন্ট্র্যাক্টের মধ্যে _প্রাইভেট ফাংশন_ও রয়েছে যা অন্যদের কাছে অ্যাক্সেসযোগ্য নয়; কিন্তু যা একটি dApp-এর সামগ্রিক কার্যকারিতার জন্য গুরুত্বপূর্ণ। উদাহরণগুলির মধ্যে রয়েছে একটি mintERC721Token() ফাংশন যা পর্যায়ক্রমে ব্যবহারকারীদের জন্য নতুন NFT তৈরি করে, একটি প্রেডিকশন মার্কেটে পেআউট দেওয়ার জন্য একটি ফাংশন, বা একটি DEX-এ স্টেক করা টোকেনগুলি আনলক করার জন্য একটি ফাংশন।

অ্যাপ্লিকেশনটি মসৃণভাবে চালু রাখার জন্য ডেভেলপারদের নির্দিষ্ট বিরতিতে এই ধরনের ফাংশনগুলিকে ট্রিগার করতে হবে। যাইহোক, এটি ডেভেলপারদের জন্য জাগতিক কাজগুলিতে আরও ঘন্টা নষ্ট করতে পারে, যে কারণে স্মার্ট কন্ট্র্যাক্টগুলির এক্সিকিউশন স্বয়ংক্রিয় করা আকর্ষণীয়।

কিছু ডিসেন্ট্রালাইজড ওরাকেল নেটওয়ার্ক অটোমেশন পরিষেবা অফার করে, যা অফচেইন ওরাকেল নোডগুলিকে ব্যবহারকারীর দ্বারা সংজ্ঞায়িত প্যারামিটার অনুযায়ী স্মার্ট কন্ট্র্যাক্ট ফাংশনগুলিকে ট্রিগার করার অনুমতি দেয়। সাধারণত, এর জন্য ওরাকেল পরিষেবার সাথে টার্গেট কন্ট্র্যাক্ট “নিবন্ধন” করতে হবে, ওরাকেল অপারেটরকে অর্থ প্রদানের জন্য তহবিল সরবরাহ করতে হবে এবং কন্ট্র্যাক্ট ট্রিগার করার শর্ত বা সময় নির্দিষ্ট করতে হবে।

চেইনলিঙ্কের কিপার নেটওয়ার্ক (opens in a new tab) স্মার্ট কন্ট্র্যাক্টগুলির জন্য একটি বিশ্বাসযোগ্য এবং ডিসেন্ট্রালাইজড পদ্ধতিতে নিয়মিত রক্ষণাবেক্ষণের কাজগুলি আউটসোর্স করার বিকল্প সরবরাহ করে। আপনার কন্ট্র্যাক্ট কিপার-সামঞ্জস্যপূর্ণ করার এবং আপকিপ পরিষেবা ব্যবহার করার বিষয়ে তথ্যের জন্য অফিসিয়াল কিপারের নথিপত্র (opens in a new tab) পড়ুন।

কীভাবে ব্লকচেইন ওরাকেল ব্যবহার করবেন

আপনার Ethereum dApp-এ আপনি একাধিক ওরাকেল অ্যাপ্লিকেশন সংহত করতে পারেন:

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 35টিরও বেশি চেইনের জন্য ডেটা সমর্থন করে, যার মধ্যে Ethereum Mainnet এবং অনেক নেতৃস্থানীয় L2s রয়েছে।

আরও পড়ুন

প্রবন্ধ

ভিডিও

টিউটোরিয়াল

দৃষ্টান্তমূলক প্রকল্প

এই প্রবন্ধটা কি সহায়ক ছিল?