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

ভার্কেল ট্রি

পৃষ্ঠা সম্পাদনা করুন (opens in a new tab)

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

স্টেটহীনতা

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

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

সাক্ষী কী এবং আমাদের কেন তাদের প্রয়োজন?

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

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

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

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

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

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

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

Diagram of a Verkle tree data structure

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

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

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

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

আরও পড়ুন

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