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

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

ভার্কেল ট্রি

ভার্কেল ট্রি ("Vector commitment" এবং "Merkle Trees"-এর একটি পোর্টম্যান্টো) হলো একটি ডেটা স্ট্রাকচার যা Ethereum নোড আপগ্রেড করতে ব্যবহার করা যেতে পারে যাতে তারা ব্লকস ভ্যালিডেট করার ক্ষমতা না হারিয়ে বিপুল পরিমাণ স্টেট ডেটা সংরক্ষণ করা বন্ধ করতে পারে।

স্টেটলেসনেস

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

ইথিরিয়াম ক্লায়েন্ট বর্তমানে এর স্টেট ডেটা সংরক্ষণ করতে প্যাট্রিসিয়া মার্কেল ট্রাই (Patricia Merkle Trie) নামে পরিচিত একটি ডেটা স্ট্রাকচার ব্যবহার করে। পৃথক একাউন্ট সম্পর্কে তথ্য ট্রাইয়ের লিফ (leaves) হিসেবে সংরক্ষণ করা হয় এবং লিফের জোড়াগুলো বারবার হ্যাস করা হয় যতক্ষণ না শুধুমাত্র একটি হ্যাস অবশিষ্ট থাকে। এই চূড়ান্ত হ্যাসটি "রুট" (root) হিসেবে পরিচিত। ব্লকস ভেরিফাই করার জন্য, ইথিরিয়াম ক্লায়েন্ট একটি ব্লকের সমস্ত লেনদেন এক্সিকিউট করে এবং তাদের লোকাল স্টেট ট্রাই আপডেট করে। ব্লকটি ভ্যালিড বলে বিবেচিত হয় যদি লোকাল ট্রির রুটটি ব্লক প্রপোজার দ্বারা প্রদত্ত রুটের সাথে হুবহু মিলে যায়, কারণ ব্লক প্রপোজার এবং ভ্যালিডেটিং নোড দ্বারা করা গণনার যেকোনো পার্থক্য রুট হ্যাসটিকে সম্পূর্ণ আলাদা করে তুলবে। এর সমস্যা হলো ব্লকচেইন ভেরিফাই করার জন্য প্রতিটি ক্লায়েন্টকে হেড ব্লক এবং বেশ কয়েকটি ঐতিহাসিক ব্লকস-এর জন্য সম্পূর্ণ স্টেট ট্রাই সংরক্ষণ করতে হয় (Geth-এ ডিফল্ট হলো হেডের পিছনে 128টি ব্লকস-এর জন্য স্টেট ডেটা রাখা)। এর জন্য ক্লায়েন্টদের প্রচুর পরিমাণে ডিস্ক স্পেসের অ্যাক্সেস থাকতে হয়, যা সস্তা, কম শক্তির হার্ডওয়্যারে ফুল নোড চালানোর ক্ষেত্রে একটি বাধা। এর একটি সমাধান হলো স্টেট ট্রাইকে আরও দক্ষ স্ট্রাকচারে (ভার্কেল ট্রি) আপডেট করা যা ডেটার একটি ছোট "উইটনেস" ব্যবহার করে সংক্ষিপ্ত করা যেতে পারে, যা সম্পূর্ণ স্টেট ডেটার পরিবর্তে শেয়ার করা যেতে পারে। স্টেট ডেটাকে ভার্কেল ট্রিতে রিফরম্যাট করা স্টেটলেস ক্লায়েন্টদের দিকে যাওয়ার একটি প্রাথমিক পদক্ষেপ।

উইটনেস কী এবং আমাদের কেন এগুলো প্রয়োজন?

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

ভার্কেল ট্রি কেন ছোট উইটনেস সক্ষম করে?

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

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

উইটনেসের আকার এতে অন্তর্ভুক্ত লিফের সংখ্যার ওপর নির্ভর করে পরিবর্তিত হয়। ধরে নিই উইটনেসটি 1000টি লিফ কভার করে, একটি মার্কেল ট্রাইয়ের জন্য একটি উইটনেস হবে প্রায় 3.5MB (ট্রাইয়ের 7টি লেভেল ধরে)। একটি ভার্কেল ট্রিতে একই ডেটার জন্য একটি উইটনেস (ট্রির 4টি লেভেল ধরে) হবে প্রায় 150 kB - প্রায় 23 গুণ ছোট। উইটনেসের আকারের এই হ্রাস স্টেটলেস ক্লায়েন্ট উইটনেসগুলোকে গ্রহণযোগ্যভাবে ছোট হতে সাহায্য করবে। কোন নির্দিষ্ট পলিনোমিয়াল কমিটমেন্ট ব্যবহার করা হয়েছে তার ওপর নির্ভর করে পলিনোমিয়াল উইটনেসগুলো 0.128 - 1 kB হয়।

ভার্কেল ট্রির স্ট্রাকচার কী?

ভার্কেল ট্রি হলো (key,value) জোড়া যেখানে কীগুলো (keys) হলো 32-বাইট এলিমেন্ট যা একটি 31-বাইট স্টেম (stem) এবং একটি সিঙ্গেল বাইট সাফিক্স (suffix) নিয়ে গঠিত। এই কীগুলো এক্সটেনশন (extension) নোড এবং ইনার (inner) নোড-এ সংগঠিত থাকে। এক্সটেনশন নোডগুলো বিভিন্ন সাফিক্সসহ 256টি চিলড্রেনের জন্য একটি সিঙ্গেল স্টেম উপস্থাপন করে। ইনার নোডগুলোরও 256টি চিলড্রেন থাকে, তবে সেগুলো অন্যান্য এক্সটেনশন নোড হতে পারে। ভার্কেল ট্রি এবং মার্কেল ট্রি স্ট্রাকচারের মধ্যে প্রধান পার্থক্য হলো ভার্কেল ট্রি অনেক বেশি ফ্ল্যাট, যার অর্থ হলো একটি লিফকে রুটের সাথে যুক্ত করার জন্য কম মধ্যবর্তী নোড থাকে এবং তাই একটি প্রুফ তৈরি করতে কম ডেটার প্রয়োজন হয়।

ভার্কেল ট্রি ডেটা স্ট্রাকচারের ডায়াগ্রাম

ভার্কেল ট্রির স্ট্রাকচার সম্পর্কে আরও পড়ুন (opens in a new tab)

বর্তমান অগ্রগতি

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

গিয়ম ব্যালে (Guillaume Ballet)-এর কনড্রিউ (Condrieu) ভার্কেল টেস্টনেট ব্যাখ্যা করা দেখুন (opens in a new tab) (মনে রাখবেন যে কনড্রিউ টেস্টনেটটি প্রুফ-অফ-ওয়ার্ক ছিল এবং এখন এটি ভার্কেল জেন ডেভনেট 6 (Verkle Gen Devnet 6) টেস্টনেট দ্বারা প্রতিস্থাপিত হয়েছে)।

আরও পড়ুন

পেজ সর্বশেষ আপডেট করা হয়েছে: 26 ফেব্রুয়ারী, 2026

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