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

নেটওয়ার্কিং লেয়ার

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

ইথেরিয়াম হল একটি পিয়ার-টু-পিয়ার নেটওয়ার্ক যেখানে হাজার হাজার নোড রয়েছে যেগুলিকে অবশ্যই প্রমিত প্রোটোকল ব্যবহার করে একে অপরের সাথে যোগাযোগ করতে সক্ষম হতে হবে। "নেটওয়ার্কিং লেয়ার" হল প্রোটোকলের স্ট্যাক যা সেই নোডগুলিকে একে অপরকে খুঁজে পেতে এবং তথ্য বিনিময় করতে দেয়। এর মধ্যে নেটওয়ার্কের মাধ্যমে তথ্যের "গসিপিং" (এক-থেকে-অনেক যোগাযোগ) এবং নির্দিষ্ট নোডগুলির মধ্যে অনুরোধ এবং প্রতিক্রিয়ার সোয়াপিং (এক-থেকে-এক যোগাযোগ) অন্তর্ভুক্ত রয়েছে। প্রতিটি নোডকে অবশ্যই নির্দিষ্ট নেটওয়ার্কিং নিয়ম মেনে চলতে হবে যাতে তারা সঠিক তথ্য প্রেরণ এবং গ্রহণ করছে তা নিশ্চিত করা যায়।

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

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

পূর্বশর্ত

ইথেরিয়াম নোড এবং ক্লায়েন্ট সম্পর্কে কিছু জ্ঞান এই পৃষ্ঠাটি বোঝার জন্য সহায়ক হবে।

এক্সিকিউশন লেয়ার

এক্সিকিউশন লেয়ারের নেটওয়ার্কিং প্রোটোকল দুটি স্ট্যাকে বিভক্ত:

  • ডিসকভারি স্ট্যাক: UDP-এর উপর নির্মিত এবং একটি নতুন নোডকে সংযোগ করার জন্য পিয়ার খুঁজে পেতে সাহায্য করে।

  • DevP2P স্ট্যাক: TCP-এর উপরে বসে এবং নোডগুলিকে তথ্য বিনিময় করতে সক্ষম করে।

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

ডিসকভারি

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

নোড-বুটনোড মিথস্ক্রিয়ার জন্য ব্যবহৃত প্রোটোকল হল Kademlia (opens in a new tab)-এর একটি পরিবর্তিত রূপ যা নোডের তালিকা শেয়ার করার জন্য একটি ডিস্ট্রিবিউটেড হ্যাস টেবিল (opens in a new tab) ব্যবহার করে। প্রতিটি নোডের কাছে এই টেবিলের একটি সংস্করণ রয়েছে যেখানে তার নিকটতম পিয়ারদের সাথে সংযোগ করার জন্য প্রয়োজনীয় তথ্য থাকে। এই 'নৈকট্য' ভৌগোলিক নয় - দূরত্ব নোডের আইডির সাদৃশ্য দ্বারা সংজ্ঞায়িত করা হয়। প্রতিটি নোডের টেবিল একটি নিরাপত্তা বৈশিষ্ট্য হিসাবে নিয়মিত রিফ্রেশ করা হয়। উদাহরণস্বরূপ, Discv5 (opens in a new tab) ডিসকভারি প্রোটোকলে, নোডগুলি 'বিজ্ঞাপন' পাঠাতে সক্ষম যা ক্লায়েন্ট সমর্থন করে এমন সাবপ্রোটোকলগুলি প্রদর্শন করে, যা পিয়ারদেরকে এমন প্রোটোকল সম্পর্কে আলোচনা করতে দেয় যা তারা উভয়ই যোগাযোগের জন্য ব্যবহার করতে পারে।

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

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

নতুন নোডটি বুটনোড থেকে প্রতিবেশীদের একটি তালিকা পাওয়ার পরে, এটি তাদের প্রত্যেকের সাথে একটি PING-PONG এক্সচেঞ্জ শুরু করে। সফল PING-PONG নতুন নোডকে তার প্রতিবেশীদের সাথে বন্ড করে, বার্তা বিনিময় সক্ষম করে।

1ক্লায়েন্ট শুরু করুন --> বুটনোডে সংযোগ করুন --> বুটনোডে বন্ড করুন --> প্রতিবেশী খুঁজুন --> প্রতিবেশীদের সাথে বন্ড করুন

এক্সিকিউশন ক্লায়েন্টরা বর্তমানে Discv4 (opens in a new tab) ডিসকভারি প্রোটোকল ব্যবহার করছে এবং Discv5 (opens in a new tab) প্রোটোকলে স্থানান্তরিত করার জন্য একটি সক্রিয় প্রচেষ্টা চলছে।

ENR: ইথেরিয়াম নোড রেকর্ডস

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

কেন ডিসকভারি UDP-এর উপর নির্মিত?

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

DevP2P

DevP2P নিজেই প্রোটোকলের একটি সম্পূর্ণ স্ট্যাক যা ইথেরিয়াম পিয়ার-টু-পিয়ার নেটওয়ার্ক প্রতিষ্ঠা এবং বজায় রাখার জন্য প্রয়োগ করে। নতুন নোড নেটওয়ার্কে প্রবেশ করার পরে, তাদের মিথস্ক্রিয়া DevP2P (opens in a new tab) স্ট্যাকের প্রোটোকল দ্বারা পরিচালিত হয়। এগুলি সবই TCP-এর উপরে বসে এবং RLPx ট্রান্সপোর্ট প্রোটোকল, ওয়্যার প্রোটোকল এবং বেশ কয়েকটি সাব-প্রোটোকল অন্তর্ভুক্ত করে। RLPx (opens in a new tab) হল নোডগুলির মধ্যে সেশন শুরু করা, প্রমাণীকরণ করা এবং বজায় রাখার জন্য পরিচালিত প্রোটোকল। RLPx RLP (Recursive Length Prefix) ব্যবহার করে বার্তা এনকোড করে যা নোডগুলির মধ্যে পাঠানোর জন্য ডেটাকে একটি ন্যূনতম কাঠামোতে এনকোড করার একটি খুব স্থান-দক্ষ পদ্ধতি।

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

হ্যালো বার্তাগুলিতে রয়েছে:

  • প্রোটোকল সংস্করণ
  • ক্লায়েন্ট আইডি
  • পোর্ট
  • নোড আইডি
  • সমর্থিত সাব-প্রোটোকলের তালিকা

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

হ্যালো বার্তাগুলির পাশাপাশি, ওয়্যার প্রোটোকল একটি "ডিসকানেক্ট" বার্তাও পাঠাতে পারে যা একটি পিয়ারকে সতর্ক করে যে সংযোগটি বন্ধ করা হবে। ওয়্যার প্রোটোকলে PING এবং PONG বার্তাও অন্তর্ভুক্ত রয়েছে যা একটি সেশন খোলা রাখার জন্য পর্যায়ক্রমে পাঠানো হয়। RLPx এবং ওয়্যার প্রোটোকল এক্সচেঞ্জগুলি তাই নোডগুলির মধ্যে যোগাযোগের ভিত্তি স্থাপন করে, একটি নির্দিষ্ট সাব-প্রোটোকল অনুসারে দরকারী তথ্য বিনিময়ের জন্য ভারা প্রদান করে।

সাব-প্রোটোকল

ওয়্যার প্রোটোকল

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

les (লাইট ইথেরিয়াম সাবপ্রোটোকল)

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

স্ন্যাপ

স্ন্যাপ প্রোটোকল (opens in a new tab) হল একটি ঐচ্ছিক এক্সটেনশন যা পিয়ারদের সাম্প্রতিক স্টেটগুলির স্ন্যাপশট বিনিময় করতে দেয়, যা পিয়ারদের মধ্যবর্তী Merkle ট্রাই নোড ডাউনলোড না করেই অ্যাকাউন্ট এবং স্টোরেজ ডেটা যাচাই করতে দেয়।

উইট (উইটনেস প্রোটোকল)

উইটনেস প্রোটোকল (opens in a new tab) হল একটি ঐচ্ছিক এক্সটেনশন যা পিয়ারদের মধ্যে স্টেট উইটনেস বিনিময়কে সক্ষম করে, যা ক্লায়েন্টদের চেইনের শীর্ষে সিঙ্ক করতে সাহায্য করে।

হুইসপার

হুইসপার একটি প্রোটোকল ছিল যার লক্ষ্য ছিল ব্লকচেইনে কোনো তথ্য না লিখে পিয়ারদের মধ্যে সুরক্ষিত মেসেজিং প্রদান করা। এটি DevP2P ওয়্যার প্রোটোকলের অংশ ছিল কিন্তু এখন এটি বাতিল করা হয়েছে। অনুরূপ লক্ষ্য নিয়ে অন্যান্য সম্পর্কিত প্রকল্প (opens in a new tab) বিদ্যমান।

কনসেন্সাস লেয়ার

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

ডিসকভারি

এক্সিকিউশন ক্লায়েন্টদের মতো, কনসেন্সাস ক্লায়েন্টরা পিয়ার খুঁজে বের করার জন্য UDP-এর উপর discv5 (opens in a new tab) ব্যবহার করে। discv5-এর কনসেন্সাস লেয়ারের বাস্তবায়ন এক্সিকিউশন ক্লায়েন্টদের থেকে শুধুমাত্র এই কারণে ভিন্ন যে এটি একটি অ্যাডাপ্টার অন্তর্ভুক্ত করে যা discv5-কে একটি libP2P (opens in a new tab) স্ট্যাকের সাথে সংযুক্ত করে, DevP2P-কে বাতিল করে দেয়। এক্সিকিউশন লেয়ারের RLPx সেশনগুলি libP2P-এর নয়েজ সুরক্ষিত চ্যানেল হ্যান্ডশেকের পক্ষে বাতিল করা হয়েছে।

ENRs

কনসেন্সাস নোডগুলির জন্য ENR-এ নোডের পাবলিক কি, আইপি ঠিকানা, UDP এবং TCP পোর্ট এবং দুটি কনসেন্সাস-নির্দিষ্ট ফিল্ড অন্তর্ভুক্ত রয়েছে: অ্যাটেস্টেশন সাবনেট বিটফিল্ড এবং eth2 কি। পূর্বেরটি নোডগুলির জন্য নির্দিষ্ট অ্যাটেস্টেশন গসিপ সাব-নেটওয়ার্কে অংশগ্রহণকারী পিয়ারদের খুঁজে পাওয়া সহজ করে তোলে। eth2 কি-তে নোডটি কোন ইথেরিয়াম ফর্ক সংস্করণ ব্যবহার করছে সে সম্পর্কে তথ্য রয়েছে, যা নিশ্চিত করে যে পিয়াররা সঠিক ইথেরিয়ামের সাথে সংযোগ স্থাপন করছে।

libP2P

libP2P স্ট্যাক ডিসকভারির পরে সমস্ত যোগাযোগ সমর্থন করে। ক্লায়েন্টরা তাদের ENR-এ সংজ্ঞায়িত হিসাবে IPv4 এবং/অথবা IPv6-এ ডায়াল এবং শুনতে পারে। libP2P লেয়ারের প্রোটোকলগুলিকে গসিপ এবং req/resp ডোমেনে বিভক্ত করা যেতে পারে।

গসিপ

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

অনুরোধ-প্রতিক্রিয়া

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

কনসেন্সাস ক্লায়েন্ট কেন RLP-এর চেয়ে SSZ পছন্দ করে?

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

এক্সিকিউশন এবং কনসেন্সাস ক্লায়েন্টদের সংযোগ করা

কনসেন্সাস এবং এক্সিকিউশন উভয় ক্লায়েন্টই সমান্তরালভাবে চলে। তাদের সংযুক্ত থাকা প্রয়োজন যাতে কনসেন্সাস ক্লায়েন্ট এক্সিকিউশন ক্লায়েন্টকে নির্দেশনা দিতে পারে, এবং এক্সিকিউশন ক্লায়েন্ট বিকন ব্লকে অন্তর্ভুক্ত করার জন্য কনসেন্সাস ক্লায়েন্টকে লেনদেনের বান্ডিল পাঠাতে পারে। দুটি ক্লায়েন্টের মধ্যে যোগাযোগ একটি স্থানীয় RPC সংযোগ ব্যবহার করে অর্জন করা যেতে পারে। 'ইঞ্জিন-API' (opens in a new tab) নামে পরিচিত একটি API দুটি ক্লায়েন্টের মধ্যে প্রেরিত নির্দেশাবলীকে সংজ্ঞায়িত করে। যেহেতু উভয় ক্লায়েন্টই একটি একক নেটওয়ার্ক পরিচয়ের পিছনে বসে, তারা একটি ENR (ইথেরিয়াম নোড রেকর্ড) ভাগ করে নেয় যাতে প্রতিটি ক্লায়েন্টের জন্য একটি পৃথক কি থাকে (eth1 কি এবং eth2 কি)।

নিয়ন্ত্রণ প্রবাহের একটি সারাংশ নীচে দেখানো হয়েছে, প্রাসঙ্গিক নেটওয়ার্কিং স্ট্যাকটি বন্ধনীতে রয়েছে।

যখন কনসেন্সাস ক্লায়েন্ট ব্লক প্রযোজক নয়:

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

যখন কনসেন্সাস ক্লায়েন্ট ব্লক প্রযোজক:

  • কনসেন্সাস ক্লায়েন্ট নোটিশ পায় যে এটি পরবর্তী ব্লক প্রযোজক (কনসেন্সাস p2p)
  • কনসেন্সাস লেয়ার এক্সিকিউশন ক্লায়েন্টে create block পদ্ধতি কল করে (স্থানীয় RPC)
  • এক্সিকিউশন লেয়ার ট্রানজ্যাকশন মেমপুল অ্যাক্সেস করে যা ট্রানজ্যাকশন গসিপ প্রোটোকল দ্বারা জনবহুল হয়েছে (এক্সিকিউশন p2p)
  • এক্সিকিউশন ক্লায়েন্ট লেনদেনগুলিকে একটি ব্লকে বান্ডিল করে, লেনদেনগুলি সম্পাদন করে এবং একটি ব্লক হ্যাস তৈরি করে
  • কনসেন্সাস ক্লায়েন্ট এক্সিকিউশন ক্লায়েন্ট থেকে লেনদেন এবং ব্লক হ্যাস গ্রহণ করে এবং সেগুলিকে বিকন ব্লকে যোগ করে (স্থানীয় RPC)
  • কনসেন্সাস ক্লায়েন্ট ব্লক গসিপ প্রোটোকলের মাধ্যমে ব্লকটি সম্প্রচার করে (কনসেন্সাস p2p)
  • অন্যান্য ক্লায়েন্টরা ব্লক গসিপ প্রোটোকলের মাধ্যমে প্রস্তাবিত ব্লকটি গ্রহণ করে এবং উপরে বর্ণিত হিসাবে যাচাই করে (কনসেন্সাস p2p)

একবার ব্লকটি পর্যাপ্ত ভ্যালিডেটর দ্বারা অ্যাটেস্টেড হয়ে গেলে এটি চেইনের শীর্ষে যুক্ত হয়, ন্যায্য বলে বিবেচিত হয় এবং অবশেষে চূড়ান্ত হয়।

Ethereum ঐক্যমত ক্লায়েন্ট নেটওয়ার্কিং স্তরের চিত্র ইথেরিয়াম এক্সিকিউশন ক্লায়েন্ট নেটওয়ার্কিং স্তরের চিত্র

ethresear.ch (opens in a new tab) থেকে কনসেন্সাস এবং এক্সিকিউশন ক্লায়েন্টদের জন্য নেটওয়ার্ক লেয়ার স্কিম্যাটিক

আরও পড়ুন

DevP2P (opens in a new tab) LibP2p (opens in a new tab) কনসেন্সাস লেয়ার নেটওয়ার্ক স্পেকস (opens in a new tab) kademlia থেকে discv5 (opens in a new tab) kademlia পেপার (opens in a new tab) ইথেরিয়াম p2p-এর ভূমিকা (opens in a new tab) eth1/eth2 সম্পর্ক (opens in a new tab) মার্জ এবং eth2 ক্লায়েন্ট বিশদ ভিডিও (opens in a new tab)

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