মূল কন্টেন্টে যান
Change page

ইথেরিয়াম আর্কাইভ নোড

একটি আর্কাইভ নোড হলো একটি ইথেরিয়াম ক্লায়েন্টের ইনস্ট্যান্স যা সমস্ত ঐতিহাসিক স্টেটের একটি আর্কাইভ তৈরি করার জন্য কনফিগার করা হয়। এটি নির্দিষ্ট কিছু ব্যবহারের ক্ষেত্রে একটি দরকারী টুল, তবে এটি একটি ফুল নোড চালানোর চেয়ে কিছুটা বেশি জটিল হতে পারে।

পূর্বশর্ত

আপনার একটি ইথেরিয়াম নোড-এর ধারণা, এর আর্কিটেকচার, সিঙ্কিং কৌশল, এবং এগুলো চালানোব্যবহার করার পদ্ধতি সম্পর্কে বোঝা উচিত।

আর্কাইভ নোড কী

একটি আর্কাইভ নোডের গুরুত্ব বোঝার জন্য, চলুন "স্টেট"-এর ধারণাটি পরিষ্কার করি। ইথেরিয়ামকে একটি ট্রানজ্যাকশন-ভিত্তিক স্টেট মেশিন বলা যেতে পারে। এটি অ্যাকাউন্ট এবং অ্যাপ্লিকেশন নিয়ে গঠিত যা ট্রানজ্যাকশন এক্সিকিউট করে এবং তাদের স্টেট পরিবর্তন করে। প্রতিটি অ্যাকাউন্ট এবং কন্ট্রাক্ট সম্পর্কে তথ্য সহ গ্লোবাল ডেটা স্টেট নামক একটি ট্রাই (trie) ডেটাবেসে সংরক্ষিত থাকে। এটি এক্সিকিউশন লেয়ার (EL) ক্লায়েন্ট দ্বারা পরিচালিত হয় এবং এর মধ্যে অন্তর্ভুক্ত থাকে:

  • অ্যাকাউন্ট ব্যালেন্স এবং নন্স (nonces)
  • কন্ট্রাক্ট কোড এবং স্টোরেজ
  • ঐক্যমত-সম্পর্কিত ডেটা, যেমন, স্টেকিং ডিপোজিট কন্ট্রাক্ট

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

আপনি স্টেটকে একটি নির্দিষ্ট ব্লকে নেটওয়ার্কের একটি ক্ষণস্থায়ী স্ন্যাপশট (snapshot) হিসেবে এবং আর্কাইভকে ইতিহাসের রিপ্লে হিসেবে কল্পনা করতে পারেন।

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

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

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

ব্যবহারের ক্ষেত্র

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

স্টেট আর্কাইভের প্রধান সুবিধা হলো ঐতিহাসিক স্টেটগুলো সম্পর্কে ক্যোয়ারিতে দ্রুত অ্যাক্সেস। উদাহরণস্বরূপ, আর্কাইভ নোড দ্রুত নিচের মতো ফলাফল প্রদান করবে:

  • ব্লক 15537393-এ 0x1337... অ্যাকাউন্টের ETH ব্যালেন্স কত ছিল?
  • ব্লক 1920000-এ 0x কন্ট্রাক্টে 0x টোকেনের ব্যালেন্স কত?

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

  • ব্লক এক্সপ্লোরারের মতো পরিষেবা প্রদানকারী
  • গবেষক
  • নিরাপত্তা বিশ্লেষক
  • বিকেন্দ্রীকৃত অ্যাপ্লিকেশন (dapp) ডেভেলপার
  • অডিটিং এবং কমপ্লায়েন্স

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

বাস্তবায়ন এবং ব্যবহার

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

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

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

হার্ডওয়্যার

সর্বদা একটি ক্লায়েন্টের ডকুমেন্টেশনে একটি নির্দিষ্ট মোডের জন্য হার্ডওয়্যারের প্রয়োজনীয়তা যাচাই করতে ভুলবেন না। আর্কাইভ নোডগুলোর জন্য সবচেয়ে বড় প্রয়োজনীয়তা হলো ডিস্ক স্পেস। ক্লায়েন্টের উপর নির্ভর করে, এটি 3TB থেকে 12TB পর্যন্ত পরিবর্তিত হয়। যদিও প্রচুর পরিমাণে ডেটার জন্য HDD-কে একটি ভালো সমাধান হিসেবে বিবেচনা করা যেতে পারে, তবে এটি সিঙ্কিং করা এবং চেইনের হেড ক্রমাগত আপডেট করার জন্য SSD ড্রাইভের প্রয়োজন হবে। SATA (opens in a new tab) ড্রাইভগুলো যথেষ্ট ভালো তবে এটি একটি নির্ভরযোগ্য মানের হওয়া উচিত, অন্তত TLC (opens in a new tab)। ডিস্কগুলো একটি ডেস্কটপ কম্পিউটার বা পর্যাপ্ত স্লট সহ একটি সার্ভারে লাগানো যেতে পারে। এই ধরনের ডেডিকেটেড ডিভাইসগুলো উচ্চ আপটাইম নোড চালানোর জন্য আদর্শ। এটি একটি ল্যাপটপে চালানো সম্পূর্ণ সম্ভব তবে পোর্টেবিলিটির জন্য অতিরিক্ত খরচ হবে।

সমস্ত ডেটা একটি ভলিউমে ফিট করা প্রয়োজন, তাই ডিস্কগুলোকে যুক্ত করতে হবে, যেমন, RAID0 (opens in a new tab) বা LVM দিয়ে। ZFS (opens in a new tab) ব্যবহার করার কথাও বিবেচনা করা যেতে পারে কারণ এটি "Copy-on-write" সমর্থন করে যা নিশ্চিত করে যে কোনো লো লেভেল ত্রুটি ছাড়াই ডেটা সঠিকভাবে ডিস্কে লেখা হয়েছে।

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

প্রাথমিক সিঙ্কিং চলাকালীন, আর্কাইভ মোডে থাকা ক্লায়েন্টগুলো জেনেসিস থেকে প্রতিটি ট্রানজ্যাকশন এক্সিকিউট করবে। এক্সিকিউশনের গতি বেশিরভাগই CPU দ্বারা সীমাবদ্ধ থাকে, তাই একটি দ্রুততর CPU প্রাথমিক সিঙ্কিং সময়ে সাহায্য করতে পারে। একটি গড় কনজিউমার কম্পিউটারে, প্রাথমিক সিঙ্কিংয়ে এক মাস পর্যন্ত সময় লাগতে পারে।

আরও পড়ুন