ভার্কেল ট্রি ("Vector commitment" এবং "Merkle Trees"-এর একটি মিশ্র শব্দ) হলো এমন একটি ডেটা স্ট্রাকচার যা ইথেরিয়াম নোডগুলোকে আপগ্রেড করতে ব্যবহার করা যেতে পারে, যাতে তারা ব্লক ভ্যালিডেট করার ক্ষমতা না হারিয়েই বিপুল পরিমাণ স্টেট ডেটা সংরক্ষণ করা বন্ধ করতে পারে।
স্টেটহীনতা
স্টেটহীন ইথেরিয়াম ক্লায়েন্টের পথে ভার্কেল ট্রি একটি গুরুত্বপূর্ণ পদক্ষেপ। স্টেটহীন ক্লায়েন্ট হলো এমন ক্লায়েন্ট যাদের আগত ব্লকগুলো ভ্যালিডেট করার জন্য সম্পূর্ণ স্টেট ডেটাবেস সংরক্ষণ করতে হয় না। ব্লক যাচাই করার জন্য ইথেরিয়ামের স্টেটের নিজস্ব লোকাল কপি ব্যবহার করার পরিবর্তে, স্টেটহীন ক্লায়েন্টরা ব্লকের সাথে আসা স্টেট ডেটার একটি "সাক্ষী" ব্যবহার করে। সাক্ষী হলো স্টেট ডেটার পৃথক অংশগুলোর একটি সংগ্রহ যা নির্দিষ্ট কিছু ট্রানজ্যাকশন কার্যকর করার জন্য প্রয়োজন, এবং এটি একটি ক্রিপ্টোগ্রাফিক প্রমাণ যে সাক্ষীটি সত্যিই সম্পূর্ণ ডেটার অংশ। স্টেট ডেটাবেসের পরিবর্তে সাক্ষী ব্যবহার করা হয়। এটি কাজ করার জন্য, সাক্ষীদের খুব ছোট হতে হবে, যাতে ভ্যালিডেটররা 12 সেকেন্ডের স্লটের মধ্যে সেগুলো প্রসেস করার জন্য সময়মতো নেটওয়ার্ক জুড়ে নিরাপদে সম্প্রচার করতে পারে। বর্তমান স্টেট ডেটা স্ট্রাকচার উপযুক্ত নয় কারণ সাক্ষীরা অনেক বড়। ভার্কেল ট্রি ছোট সাক্ষীদের সক্ষম করে এই সমস্যার সমাধান করে, যা স্টেটহীন ক্লায়েন্টদের প্রধান বাধাগুলোর একটি দূর করে।
সাক্ষী কী এবং আমাদের কেন তাদের প্রয়োজন?
একটি ব্লক যাচাই করার অর্থ হলো ব্লকে থাকা ট্রানজ্যাকশনগুলো পুনরায় কার্যকর করা, ইথেরিয়ামের স্টেট ট্রাই-তে পরিবর্তনগুলো প্রয়োগ করা এবং নতুন রুট হ্যাশ গণনা করা। একটি যাচাইকৃত ব্লক হলো সেটি যার গণনাকৃত স্টেট রুট হ্যাশ ব্লকের সাথে দেওয়া হ্যাশের সমান (কারণ এর অর্থ হলো ব্লক প্রস্তাবক সত্যিই সেই গণনাটি করেছেন যা তারা দাবি করেছেন)। আজকের ইথেরিয়াম ক্লায়েন্টগুলোতে, স্টেট আপডেট করার জন্য সম্পূর্ণ স্টেট ট্রাই-এর অ্যাক্সেস প্রয়োজন, যা একটি বড় ডেটা স্ট্রাকচার এবং এটি অবশ্যই লোকালি সংরক্ষণ করতে হবে। একটি সাক্ষীতে শুধুমাত্র স্টেট ডেটার সেই অংশগুলো থাকে যা ব্লকের ট্রানজ্যাকশনগুলো কার্যকর করার জন্য প্রয়োজন। একজন ভ্যালিডেটর তখন শুধুমাত্র সেই অংশগুলো ব্যবহার করে যাচাই করতে পারে যে ব্লক প্রস্তাবক ব্লকের ট্রানজ্যাকশনগুলো কার্যকর করেছেন এবং স্টেটটি সঠিকভাবে আপডেট করেছেন। তবে, এর মানে হলো সাক্ষীকে ইথেরিয়াম নেটওয়ার্কে পিয়ারদের মধ্যে যথেষ্ট দ্রুত স্থানান্তর করতে হবে যাতে প্রতিটি নোড 12 সেকেন্ডের স্লটের মধ্যে নিরাপদে এটি গ্রহণ এবং প্রসেস করতে পারে। সাক্ষী যদি খুব বড় হয়, তবে কিছু নোডের এটি ডাউনলোড করতে এবং চেইনের সাথে তাল মিলিয়ে চলতে খুব বেশি সময় লাগতে পারে। এটি একটি কেন্দ্রীভূত করার শক্তি কারণ এর অর্থ হলো শুধুমাত্র দ্রুত ইন্টারনেট সংযোগ থাকা নোডগুলোই ব্লক ভ্যালিডেট করতে অংশগ্রহণ করতে পারে। ভার্কেল ট্রির সাহায্যে আপনার হার্ড ড্রাইভে স্টেট সংরক্ষণ করার কোনো প্রয়োজন নেই; একটি ব্লক যাচাই করার জন্য আপনার প্রয়োজনীয় সবকিছু ব্লকের মধ্যেই থাকে। দুর্ভাগ্যবশত, মার্কেল ট্রাই থেকে যে সাক্ষীদের তৈরি করা যায় তা স্টেটহীন ক্লায়েন্টদের সমর্থন করার জন্য অনেক বড়।
ভার্কেল ট্রি কেন ছোট সাক্ষীদের সক্ষম করে?
একটি মার্কেল ট্রাই-এর স্ট্রাকচার সাক্ষীর আকারকে অনেক বড় করে তোলে - এত বড় যে 12 সেকেন্ডের স্লটের মধ্যে পিয়ারদের মধ্যে নিরাপদে সম্প্রচার করা যায় না। এর কারণ হলো সাক্ষী হলো একটি পথ যা লিফে থাকা ডেটাকে রুট হ্যাশের সাথে সংযুক্ত করে। ডেটা যাচাই করার জন্য শুধুমাত্র প্রতিটি লিফকে রুটের সাথে সংযুক্তকারী সমস্ত মধ্যবর্তী হ্যাশ থাকাই যথেষ্ট নয়, বরং সমস্ত "সিবলিং" (ভাইবোন) নোড থাকাও প্রয়োজন। প্রমাণের প্রতিটি নোডের একটি সিবলিং থাকে যার সাথে এটি হ্যাশ করে ট্রাই-এর উপরের পরবর্তী হ্যাশ তৈরি করা হয়। এটি প্রচুর ডেটা। ভার্কেল ট্রি ট্রির লিফ এবং এর রুটের মধ্যে দূরত্ব কমিয়ে এবং রুট হ্যাশ যাচাই করার জন্য সিবলিং নোড প্রদান করার প্রয়োজনীয়তা দূর করে সাক্ষীর আকার হ্রাস করে। হ্যাশ-স্টাইলের ভেক্টর কমিটমেন্টের পরিবর্তে একটি শক্তিশালী পলিনোমিয়াল কমিটমেন্ট স্কিম ব্যবহার করে আরও বেশি স্পেস দক্ষতা অর্জন করা হবে। পলিনোমিয়াল কমিটমেন্ট সাক্ষীকে একটি নির্দিষ্ট আকার রাখার অনুমতি দেয়, এটি যতগুলো লিফ প্রমাণ করুক না কেন।
পলিনোমিয়াল কমিটমেন্ট স্কিমের অধীনে, সাক্ষীদের আকার পরিচালনাযোগ্য হয় যা সহজেই পিয়ার-টু-পিয়ার নেটওয়ার্কে স্থানান্তর করা যায়। এটি ক্লায়েন্টদের ন্যূনতম পরিমাণ ডেটা দিয়ে প্রতিটি ব্লকে স্টেট পরিবর্তনগুলো যাচাই করার অনুমতি দেয়।
ভার্কেল ট্রির স্ট্রাকচার কী?
ভার্কেল ট্রি হলো (key,value) জোড়া যেখানে কীগুলো হলো 32-বাইট উপাদান যা একটি 31-বাইট স্টেম এবং একটি একক বাইট সাফিক্স নিয়ে গঠিত। এই কীগুলো এক্সটেনশন নোড এবং ইনার নোডে সংগঠিত হয়। এক্সটেনশন নোডগুলো বিভিন্ন সাফিক্স সহ 256টি চিলড্রেনের জন্য একটি একক স্টেম উপস্থাপন করে। ইনার নোডগুলোরও 256টি চিলড্রেন থাকে, তবে সেগুলো অন্যান্য এক্সটেনশন নোড হতে পারে। ভার্কেল ট্রি এবং মার্কেল ট্রি স্ট্রাকচারের মধ্যে প্রধান পার্থক্য হলো ভার্কেল ট্রি অনেক বেশি সমতল, যার অর্থ হলো একটি লিফকে রুটের সাথে যুক্ত করার জন্য কম মধ্যবর্তী নোড থাকে এবং তাই একটি প্রমাণ তৈরি করতে কম ডেটার প্রয়োজন হয়।
ভার্কেল ট্রির স্ট্রাকচার সম্পর্কে আরও পড়ুন (একটি নতুন ট্যাবে খোলে)
বর্তমান অগ্রগতি
ভার্কেল ট্রি টেস্টনেটগুলো ইতিমধ্যেই চালু আছে, তবে ভার্কেল ট্রি সমর্থন করার জন্য ক্লায়েন্টদের এখনও উল্লেখযোগ্য বকেয়া আপডেটের প্রয়োজন। আপনি টেস্টনেটগুলোতে কন্ট্রাক্ট ডিপ্লয় করে বা টেস্টনেট ক্লায়েন্ট চালিয়ে অগ্রগতি ত্বরান্বিত করতে সাহায্য করতে পারেন।
Guillaume Ballet-এর Condrieu ভার্কেল টেস্টনেট ব্যাখ্যা করা দেখুন (একটি নতুন ট্যাবে খোলে) (মনে রাখবেন যে Condrieu টেস্টনেটটি প্রুফ-অফ-ওয়ার্ক (PoW) ছিল এবং এখন এটি Verkle Gen Devnet 6 টেস্টনেট দ্বারা প্রতিস্থাপিত হয়েছে)।
আরও পড়ুন
- স্টেটহীনতার জন্য ভার্কেল ট্রি (একটি নতুন ট্যাবে খোলে)
- PEEPanEIP-এ Dankrad Feist-এর ভার্কেল ট্রি ব্যাখ্যা (একটি নতুন ট্যাবে খোলে)
- আমাদের বাকিদের জন্য ভার্কেল ট্রি (একটি নতুন ট্যাবে খোলে)
- একটি ভার্কেল প্রমাণের অ্যানাটমি (একটি নতুন ট্যাবে খোলে)
- ETHGlobal-এ Guillaume Ballet-এর ভার্কেল ট্রি ব্যাখ্যা (একটি নতুন ট্যাবে খোলে)
- Devcon 6-এ Guillaume Ballet-এর "কীভাবে ভার্কেল ট্রি ইথেরিয়ামকে লিন এবং মিন করে তোলে" (একটি নতুন ট্যাবে খোলে)
- ETHDenver 2020 থেকে স্টেটহীন ক্লায়েন্টদের বিষয়ে Piper Merriam (একটি নতুন ট্যাবে খোলে)
- জিরো-নলেজ পডকাস্টে Dankrad Feist-এর ভার্কেল ট্রি এবং স্টেটহীনতা ব্যাখ্যা (একটি নতুন ট্যাবে খোলে)
- ভার্কেল ট্রির বিষয়ে ভিটালিক বুটেরিন (একটি নতুন ট্যাবে খোলে)
- ভার্কেল ট্রির বিষয়ে Dankrad Feist (একটি নতুন ট্যাবে খোলে)
- ভার্কেল ট্রি EIP ডকুমেন্টেশন (একটি নতুন ট্যাবে খোলে)
