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

ব্লক প্রস্তাব

ব্লক হলো ব্লকচেইনের মৌলিক একক। ব্লক হলো তথ্যের বিচ্ছিন্ন একক যা নোডগুলোর মধ্যে আদান-প্রদান করা হয়, ঐক্যমতে পৌঁছানো হয় এবং প্রতিটি নোডের ডাটাবেসে যুক্ত করা হয়। এই পৃষ্ঠায় ব্যাখ্যা করা হয়েছে কীভাবে এগুলো তৈরি হয়।

পূর্বশর্ত

ব্লক প্রস্তাব হলো প্রুফ-অফ-স্টেক (PoS) প্রোটোকলের একটি অংশ। এই পৃষ্ঠাটি ভালোভাবে বোঝার জন্য, আমরা আপনাকে প্রুফ-অফ-স্টেক এবং ব্লক আর্কিটেকচার সম্পর্কে পড়ার পরামর্শ দিচ্ছি।

কারা ব্লক তৈরি করে?

ভ্যালিডেটর অ্যাকাউন্টগুলো ব্লক প্রস্তাব করে। ভ্যালিডেটর অ্যাকাউন্টগুলো নোড অপারেটরদের দ্বারা পরিচালিত হয়, যারা তাদের এক্সিকিউশন ক্লায়েন্ট এবং কনসেনসাস লেয়ার ক্লায়েন্টের অংশ হিসেবে ভ্যালিডেটর সফটওয়্যার চালায় এবং ডিপোজিট কন্ট্রাক্টে কমপক্ষে 32 ETH জমা করেছে। তবে, প্রতিটি ভ্যালিডেটর কেবল মাঝে মাঝে একটি ব্লক প্রস্তাব করার জন্য দায়ী থাকে। ইথেরিয়াম সময়কে স্লট এবং ইপকে পরিমাপ করে। প্রতিটি স্লট হলো 12 সেকেন্ড, এবং 32টি স্লট (6.4 মিনিট) মিলে একটি ইপক তৈরি হয়। প্রতিটি স্লট ইথেরিয়ামে একটি নতুন ব্লক যুক্ত করার সুযোগ।

র‍্যান্ডম নির্বাচন

প্রতিটি স্লটে একটি ব্লক প্রস্তাব করার জন্য একটি একক ভ্যালিডেটরকে সিউডো-র‍্যান্ডমভাবে বেছে নেওয়া হয়। ব্লকচেইনে সত্যিকারের র‍্যান্ডমনেস বলে কিছু নেই, কারণ প্রতিটি নোড যদি সত্যিই র‍্যান্ডম সংখ্যা তৈরি করে, তবে তারা ঐক্যমতে পৌঁছাতে পারবে না। এর পরিবর্তে, লক্ষ্য হলো ভ্যালিডেটর নির্বাচন প্রক্রিয়াটিকে অপ্রত্যাশিত করে তোলা। ইথেরিয়ামে RANDAO নামক একটি অ্যালগরিদম ব্যবহার করে র‍্যান্ডমনেস অর্জন করা হয়, যা ব্লক প্রস্তাবকের একটি হ্যাশকে এমন একটি সিডের সাথে মিশ্রিত করে যা প্রতিটি ব্লকে আপডেট হয়। এই মানটি মোট ভ্যালিডেটর সেট থেকে একটি নির্দিষ্ট ভ্যালিডেটর নির্বাচন করতে ব্যবহৃত হয়। নির্দিষ্ট কিছু সিড ম্যানিপুলেশন থেকে রক্ষা করার উপায় হিসেবে ভ্যালিডেটর নির্বাচন 2 ইপক আগে থেকেই নির্ধারণ করা হয়।

যদিও ভ্যালিডেটররা প্রতিটি স্লটে RANDAO-তে যোগ করে, গ্লোবাল RANDAO মান প্রতি ইপকে মাত্র একবার আপডেট করা হয়। পরবর্তী ব্লক প্রস্তাবকের সূচক গণনা করার জন্য, প্রতিটি স্লটে একটি অনন্য মান দিতে RANDAO মানটিকে স্লট নম্বরের সাথে মিশ্রিত করা হয়। কোনো নির্দিষ্ট ভ্যালিডেটর নির্বাচিত হওয়ার সম্ভাবনা কেবল 1/N নয় (যেখানে N = মোট সক্রিয় ভ্যালিডেটর)। এর পরিবর্তে, এটি প্রতিটি ভ্যালিডেটরের কার্যকর ETH ব্যালেন্স দ্বারা ওজনযুক্ত হয়। সর্বোচ্চ কার্যকর ব্যালেন্স হলো 32 ETH (এর মানে হলো balance < 32 ETH এর ওজন balance == 32 ETH এর চেয়ে কম হয়, কিন্তু balance > 32 ETH এর ওজন balance == 32 ETH এর চেয়ে বেশি হয় না)।

প্রতিটি স্লটে কেবল একজন ব্লক প্রস্তাবক নির্বাচিত হয়। স্বাভাবিক পরিস্থিতিতে, একজন একক ব্লক প্রস্তুতকারক তাদের নির্ধারিত স্লটে একটি একক ব্লক তৈরি করে এবং প্রকাশ করে। একই স্লটের জন্য দুটি ব্লক তৈরি করা একটি স্ল্যাশিংযোগ্য অপরাধ, যা প্রায়শই "ইক্যুইভোকেশন" নামে পরিচিত।

ব্লক কীভাবে তৈরি হয়?

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

ব্লক প্রস্তাবক তার নিজস্ব স্থানীয় ডাটাবেস এবং চেইনের দৃষ্টিভঙ্গি থেকে ডেটা সংগ্রহ করে একটি ব্লক তৈরি করে। ব্লকের বিষয়বস্তু নিচের স্নিপেটে দেখানো হয়েছে:

randao_reveal ফিল্ডটি একটি যাচাইযোগ্য র‍্যান্ডম মান গ্রহণ করে যা ব্লক প্রস্তাবক বর্তমান ইপক নম্বরে স্বাক্ষরকরণের মাধ্যমে তৈরি করে। eth1_data হলো ডিপোজিট কন্ট্রাক্ট সম্পর্কে ব্লক প্রস্তাবকের দৃষ্টিভঙ্গির জন্য একটি ভোট, যার মধ্যে ডিপোজিট মার্কেল ট্রাইয়ের রুট এবং মোট জমার সংখ্যা অন্তর্ভুক্ত থাকে যা নতুন জমা যাচাই করতে সক্ষম করে। graffiti হলো একটি ঐচ্ছিক ফিল্ড যা ব্লকে একটি বার্তা যোগ করতে ব্যবহার করা যেতে পারে। proposer_slashings এবং attester_slashings হলো এমন ফিল্ড যা প্রমাণ ধারণ করে যে নির্দিষ্ট ভ্যালিডেটররা চেইন সম্পর্কে প্রস্তাবকের দৃষ্টিভঙ্গি অনুযায়ী স্ল্যাশিংযোগ্য অপরাধ করেছে। deposits হলো নতুন ভ্যালিডেটর জমার একটি তালিকা যা ব্লক প্রস্তাবক অবগত আছেন, এবং voluntary_exits হলো এমন ভ্যালিডেটরদের একটি তালিকা যারা প্রস্থান করতে ইচ্ছুক এবং যাদের সম্পর্কে ব্লক প্রস্তাবক কনসেনসাস লেয়ার গসিপ নেটওয়ার্কে শুনেছেন। sync_aggregate হলো একটি ভেক্টর যা দেখায় কোন ভ্যালিডেটরদের আগে একটি সিঙ্ক কমিটিতে (ভ্যালিডেটরদের একটি উপসেট যারা লাইট ক্লায়েন্ট ডেটা পরিবেশন করে) নিয়োগ করা হয়েছিল এবং ডেটা স্বাক্ষরকরণে অংশগ্রহণ করেছিল।

execution_payload এক্সিকিউশন ক্লায়েন্ট এবং কনসেনসাস লেয়ার ক্লায়েন্টের মধ্যে লেনদেন সম্পর্কিত তথ্য আদান-প্রদান করতে সক্ষম করে। execution_payload হলো এক্সিকিউশন ডেটার একটি ব্লক যা একটি বিকন ব্লকের ভেতরে নেস্ট করা থাকে। execution_payload এর ভেতরের ফিল্ডগুলো ইথেরিয়াম ইয়েলো পেপারে বর্ণিত ব্লক কাঠামোকে প্রতিফলিত করে, তবে এতে কোনো ওমার (ommers) নেই এবং difficulty এর পরিবর্তে prev_randao বিদ্যমান। এক্সিকিউশন ক্লায়েন্টের কাছে লেনদেনের একটি স্থানীয় পুলের অ্যাক্সেস থাকে যা সে তার নিজস্ব গসিপ নেটওয়ার্কে শুনেছে। এই লেনদেনগুলো স্থানীয়ভাবে এক্সিকিউট করা হয় যাতে একটি আপডেট করা স্টেট ট্রাই তৈরি হয় যা পোস্ট-স্টেট নামে পরিচিত। লেনদেনগুলো execution_payload-এ transactions নামক একটি তালিকা হিসেবে অন্তর্ভুক্ত করা হয় এবং পোস্ট-স্টেটটি state-root ফিল্ডে প্রদান করা হয়।

এই সমস্ত ডেটা একটি বিকন ব্লকে সংগ্রহ করা হয়, স্বাক্ষরিত হয় এবং ব্লক প্রস্তাবকের পিয়ারদের কাছে সম্প্রচার করা হয়, যারা এটি তাদের পিয়ারদের কাছে প্রচার করে, ইত্যাদি।

ব্লকের অ্যানাটমি সম্পর্কে আরও পড়ুন।

ব্লকের কী হয়?

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

ব্লক পুরস্কার

ব্লক প্রস্তাবক তাদের কাজের জন্য পেমেন্ট পায়। সক্রিয় ভ্যালিডেটরদের সংখ্যা এবং তাদের কার্যকর ব্যালেন্সের একটি ফাংশন হিসেবে গণনা করা একটি base_reward রয়েছে। এরপর ব্লক প্রস্তাবক ব্লকে অন্তর্ভুক্ত প্রতিটি বৈধ সত্যায়নের জন্য base_reward এর একটি ভগ্নাংশ পায়; যত বেশি ভ্যালিডেটর ব্লকের সত্যায়ন করে, ব্লক প্রস্তাবকের পুরস্কার তত বেশি হয়। যেসব ভ্যালিডেটরকে স্ল্যাশিং করা উচিত তাদের রিপোর্ট করার জন্যও একটি পুরস্কার রয়েছে, যা প্রতিটি স্ল্যাশিং হওয়া ভ্যালিডেটরের জন্য 1/512 * effective balance এর সমান।

পুরস্কার এবং জরিমানা সম্পর্কে আরও জানুন

আরও পড়ুন