ভার্কেল ট্রি
ভার্কেল ট্রি ("Vector commitment" এবং "Merkle Trees"-এর একটি পোর্টম্যান্টো) হলো একটি ডেটা স্ট্রাকচার যা Ethereum নোড আপগ্রেড করতে ব্যবহার করা যেতে পারে যাতে তারা ব্লকস ভ্যালিডেট করার ক্ষমতা না হারিয়ে বিপুল পরিমাণ স্টেট ডেটা সংরক্ষণ করা বন্ধ করতে পারে।
স্টেটলেসনেস
স্টেটলেস ইথিরিয়াম ক্লায়েন্ট তৈরির পথে ভার্কেল ট্রি একটি গুরুত্বপূর্ণ পদক্ষেপ। স্টেটলেস ক্লায়েন্ট হলো এমন ক্লায়েন্ট যাদের ইনকামিং ব্লকস ভ্যালিডেট করার জন্য সম্পূর্ণ স্টেট ডেটাবেস সংরক্ষণ করতে হয় না। ব্লকস ভেরিফাই করার জন্য ইথিরিয়ামের স্টেটের নিজস্ব লোকাল কপি ব্যবহার করার পরিবর্তে, স্টেটলেস ক্লায়েন্টরা স্টেট ডেটার একটি "উইটনেস" (witness) ব্যবহার করে যা ব্লকের সাথে আসে। উইটনেস হলো স্টেট ডেটার পৃথক অংশগুলোর একটি সংগ্রহ যা একটি নির্দিষ্ট সেটের লেনদেন এক্সিকিউট করার জন্য প্রয়োজন, এবং একটি ক্রিপ্টোগ্রাফিক প্রমাণ যে উইটনেসটি সত্যিই সম্পূর্ণ ডেটার অংশ। স্টেট ডেটাবেসের পরিবর্তে উইটনেস ব্যবহার করা হয়। এটি কাজ করার জন্য, উইটনেসগুলোকে খুব ছোট হতে হবে, যাতে ভ্যালিডেটরস 12 সেকেন্ডের স্লটের মধ্যে সেগুলো প্রসেস করার জন্য নেটওয়ার্ক জুড়ে নিরাপদে ব্রডকাস্ট করতে পারে। বর্তমান স্টেট ডেটা স্ট্রাকচার উপযুক্ত নয় কারণ উইটনেসগুলো অনেক বড়। ভার্কেল ট্রি ছোট উইটনেস সক্ষম করে এই সমস্যার সমাধান করে, যা স্টেটলেস ক্লায়েন্টদের প্রধান বাধাগুলোর একটি দূর করে।
উইটনেস কী এবং আমাদের কেন এগুলো প্রয়োজন?
একটি ব্লক ভেরিফাই করার অর্থ হলো ব্লকে থাকা লেনদেন পুনরায় এক্সিকিউট করা, ইথিরিয়ামের স্টেট ট্রাইয়ে পরিবর্তনগুলো প্রয়োগ করা এবং নতুন রুট হ্যাস গণনা করা। একটি ভেরিফাইড ব্লক হলো এমন একটি ব্লক যার গণনাকৃত স্টেট রুট হ্যাস ব্লকের সাথে প্রদত্ত হ্যাসের সমান (কারণ এর অর্থ হলো ব্লক প্রপোজার সত্যিই সেই গণনাটি করেছে যা তারা বলেছে)। আজকের ইথিরিয়াম ক্লায়েন্টগুলোতে, স্টেট আপডেট করার জন্য সম্পূর্ণ স্টেট ট্রাইয়ের অ্যাক্সেস প্রয়োজন, যা একটি বড় ডেটা স্ট্রাকচার এবং এটি অবশ্যই লোকালি সংরক্ষণ করতে হবে। একটি উইটনেসে শুধুমাত্র স্টেট ডেটার সেই অংশগুলো থাকে যা ব্লকের লেনদেন এক্সিকিউট করার জন্য প্রয়োজন। একজন ভ্যালিডেটর তখন শুধুমাত্র সেই অংশগুলো ব্যবহার করে ভেরিফাই করতে পারে যে ব্লক প্রপোজার ব্লকের লেনদেন এক্সিকিউট করেছে এবং স্টেট সঠিকভাবে আপডেট করেছে। তবে, এর মানে হলো উইটনেসটিকে ইথিরিয়াম নেটওয়ার্ক-এ পিয়ারদের মধ্যে যথেষ্ট দ্রুত ট্রান্সফার করতে হবে যাতে প্রতিটি নোড 12 সেকেন্ডের স্লটের মধ্যে নিরাপদে এটি গ্রহণ এবং প্রসেস করতে পারে। উইটনেসটি খুব বড় হলে, কিছু নোড-এর এটি ডাউনলোড করতে এবং চেইনের সাথে তাল মিলিয়ে চলতে অনেক বেশি সময় লাগতে পারে। এটি একটি সেন্ট্রালাইজিং ফোর্স কারণ এর অর্থ হলো শুধুমাত্র দ্রুত ইন্টারনেট সংযোগ থাকা নোড ব্লকস ভ্যালিডেট করতে অংশগ্রহণ করতে পারে। ভার্কেল ট্রির সাহায্যে আপনার হার্ড ড্রাইভে স্টেট সংরক্ষণ করার কোনো প্রয়োজন নেই; একটি ব্লক ভেরিফাই করার জন্য আপনার প্রয়োজনীয় সবকিছু ব্লকের মধ্যেই থাকে। দুর্ভাগ্যবশত, মার্কেল ট্রাই থেকে যে উইটনেসগুলো তৈরি করা যায় সেগুলো স্টেটলেস ক্লায়েন্টদের সাপোর্ট করার জন্য অনেক বড়।
ভার্কেল ট্রি কেন ছোট উইটনেস সক্ষম করে?
মার্কেল ট্রাইয়ের স্ট্রাকচার উইটনেসের আকার অনেক বড় করে তোলে - যা 12 সেকেন্ডের স্লটের মধ্যে পিয়ারদের মধ্যে নিরাপদে ব্রডকাস্ট করার জন্য অনেক বড়। এর কারণ হলো উইটনেস হলো এমন একটি পথ যা লিফে থাকা ডেটাকে রুট হ্যাসের সাথে সংযুক্ত করে। ডেটা ভেরিফাই করার জন্য শুধুমাত্র প্রতিটি লিফকে রুটের সাথে সংযুক্তকারী সমস্ত মধ্যবর্তী হ্যাস থাকাই যথেষ্ট নয়, বরং সমস্ত "সিবলিং" (sibling) নোড থাকাও প্রয়োজন। প্রুফের প্রতিটি নোড-এর একটি সিবলিং থাকে যার সাথে এটি হ্যাস করে ট্রাইয়ের পরবর্তী হ্যাস তৈরি করা হয়। এটি প্রচুর ডেটা। ভার্কেল ট্রি ট্রির লিফ এবং এর রুটের মধ্যে দূরত্ব কমিয়ে এবং রুট হ্যাস ভেরিফাই করার জন্য সিবলিং নোড দেওয়ার প্রয়োজনীয়তা দূর করে উইটনেসের আকার হ্রাস করে। হ্যাস-স্টাইলের ভেক্টর কমিটমেন্টের পরিবর্তে একটি শক্তিশালী পলিনোমিয়াল কমিটমেন্ট স্কিম ব্যবহার করে আরও বেশি স্পেস এফিসিয়েন্সি অর্জন করা যাবে। পলিনোমিয়াল কমিটমেন্ট উইটনেসকে একটি নির্দিষ্ট আকার রাখার অনুমতি দেয়, এটি যতগুলো লিফ প্রমাণ করুক না কেন।
পলিনোমিয়াল কমিটমেন্ট স্কিমের অধীনে, উইটনেসগুলোর আকার ম্যানেজ করার মতো হয় যা পিয়ার-টু-পিয়ার নেটওয়ার্ক-এ সহজেই ট্রান্সফার করা যায়। এটি ক্লায়েন্টদের ন্যূনতম পরিমাণ ডেটা দিয়ে প্রতিটি ব্লকে স্টেট পরিবর্তনগুলো ভেরিফাই করার অনুমতি দেয়।
ভার্কেল ট্রির স্ট্রাকচার কী?
ভার্কেল ট্রি হলো (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) টেস্টনেট দ্বারা প্রতিস্থাপিত হয়েছে)।
আরও পড়ুন
- স্টেটলেসনেসের জন্য ভার্কেল ট্রি (opens in a new tab)
- PEEPanEIP-এ ড্যানক্র্যাড ফিস্ট (Dankrad Feist)-এর ভার্কেল ট্রি ব্যাখ্যা (opens in a new tab)
- আমাদের বাকিদের জন্য ভার্কেল ট্রি (opens in a new tab)
- একটি ভার্কেল প্রুফের অ্যানাটমি (opens in a new tab)
- ETHGlobal-এ গিয়ম ব্যালে (Guillaume Ballet)-এর ভার্কেল ট্রি ব্যাখ্যা (opens in a new tab)
- Devcon 6-এ গিয়ম ব্যালে (Guillaume Ballet)-এর "কীভাবে ভার্কেল ট্রি ইথিরিয়ামকে লিন এবং মিন করে তোলে" (opens in a new tab)
- ETHDenver 2020 থেকে স্টেটলেস ক্লায়েন্ট নিয়ে পাইপার মেরিয়াম (Piper Merriam) (opens in a new tab)
- জিরো নলেজ পডকাস্টে ড্যানক্র্যাড ফিস্ট (Dankrad Fiest)-এর ভার্কেল ট্রি এবং স্টেটলেসনেস ব্যাখ্যা (opens in a new tab)
- ভার্কেল ট্রি নিয়ে ভিটালিক বুটেরিন (Vitalik Buterin) (opens in a new tab)
- ভার্কেল ট্রি নিয়ে ড্যানক্র্যাড ফিস্ট (Dankrad Feist) (opens in a new tab)
- ভার্কেল ট্রি EIP ডকুমেন্টেশন (opens in a new tab)
পেজ সর্বশেষ আপডেট: 26 ফেব্রুয়ারী, 2026
