ব্লক প্রস্তাব
পৃষ্ঠাটি সর্বশেষ আপডেট করা হয়েছে: ১৪ ফেব্রুয়ারী, ২০২৬
ব্লকগুলো হল ব্লকচেইনের মৌলিক একক। ব্লকগুলো হল তথ্যের বিচ্ছিন্ন একক যা নোডগুলোর মধ্যে আদান-প্রদান করা হয়, সম্মত হয় এবং প্রতিটি নোডের ডেটাবেসে যোগ করা হয়। এই পেজটি ব্যাখ্যা করে কীভাবে সেগুলি তৈরি করা হয়।
পূর্বশর্ত
ব্লক প্রস্তাব প্রুফ-অফ-স্টেক প্রোটোকলের একটি অংশ। এই পেজটি বুঝতে সাহায্য করার জন্য, আমরা আপনাকে প্রুফ-অফ-স্টেক এবং ব্লক আর্কিটেকচার সম্পর্কে পড়ার পরামর্শ দিই।
কারা ব্লক তৈরি করে?
ভ্যালিডেটর অ্যাকাউন্টগুলি ব্লক প্রস্তাব করে। ভ্যালিডেটর অ্যাকাউন্টগুলি নোড অপারেটরদের দ্বারা পরিচালিত হয় যারা তাদের এক্সিকিউশন এবং কনসেন্সাস ক্লায়েন্ট-এর অংশ হিসাবে ভ্যালিডেটর সফ্টওয়্যার চালায় এবং ডিপোজিট চুক্তিতে কমপক্ষে 32 ETH জমা করেছে। তবে, প্রতিটি ভ্যালিডেটর শুধুমাত্র মাঝে মাঝে একটি ব্লক প্রস্তাব করার জন্য দায়ী থাকে। ইথেরিয়াম স্লট এবং ইপোক-এ সময় পরিমাপ করে। প্রতিটি স্লট বারো সেকেন্ডের, এবং 32টি স্লট (6.4 মিনিট) মিলে একটি ইপোক তৈরি করে। প্রতিটি স্লট ইথেরিয়ামে একটি নতুন ব্লক যোগ করার একটি সুযোগ।
র্যান্ডম নির্বাচন
প্রতিটি স্লটে একটি ব্লক প্রস্তাব করার জন্য একজন একক ভ্যালিডেটর সিউডো-র্যান্ডমভাবে নির্বাচিত হয়। একটি ব্লকচেইনে প্রকৃত র্যান্ডমনেসের মতো কিছু নেই কারণ যদি প্রতিটি নোড প্রকৃত র্যান্ডম সংখ্যা তৈরি করত, তবে তারা কনসেন্সাসে আসতে পারত না। এর পরিবর্তে, লক্ষ্য হল ভ্যালিডেটর নির্বাচন প্রক্রিয়াটিকে অপ্রত্যাশিত করে তোলা। ইথেরিয়ামে র্যান্ডমনেস অর্জন করা হয় RANDAO নামক একটি অ্যালগরিদম ব্যবহার করে যা ব্লক প্রস্তাবকের থেকে একটি হ্যাসকে একটি সিডের সাথে মিশ্রিত করে যা প্রতিটি ব্লকে আপডেট করা হয়। এই মানটি মোট ভ্যালিডেটর সেট থেকে একটি নির্দিষ্ট ভ্যালিডেটর নির্বাচন করতে ব্যবহৃত হয়। নির্দিষ্ট ধরণের সিড ম্যানিপুলেশনের বিরুদ্ধে সুরক্ষার একটি উপায় হিসাবে ভ্যালিডেটর নির্বাচন দুই ইপোক আগে থেকে স্থির করা হয়।
যদিও ভ্যালিডেটররা প্রতিটি স্লটে RANDAO-তে যোগ করে, গ্লোবাল RANDAO মান প্রতি ইপোকে শুধুমাত্র একবার আপডেট করা হয়। পরবর্তী ব্লক প্রস্তাবকের সূচক গণনা করার জন্য, প্রতিটি স্লটে একটি অনন্য মান দিতে RANDAO মান স্লট নম্বরের সাথে মিশ্রিত করা হয়। একজন স্বতন্ত্র ভ্যালিডেটর নির্বাচিত হওয়ার সম্ভাবনা কেবল 1/N নয় (যেখানে N = মোট সক্রিয় ভ্যালিডেটর)। এর পরিবর্তে, এটি প্রতিটি ভ্যালিডেটরের কার্যকর ETH ব্যালেন্স দ্বারা ওজনযুক্ত হয়। সর্বোচ্চ কার্যকর ব্যালেন্স হল 32 ETH (এর মানে হল ব্যালেন্স < 32 ETH হলে ব্যালেন্স == 32 ETH-এর চেয়ে কম ওজন হয়, কিন্তু ব্যালেন্স > 32 ETH হলে ব্যালেন্স == 32 ETH-এর চেয়ে বেশি ওজন হয় না)।
প্রতিটি স্লটে শুধুমাত্র একজন ব্লক প্রস্তাবক নির্বাচিত হয়। স্বাভাবিক পরিস্থিতিতে, একজন একক ব্লক প্রযোজক তাদের নিবেদিত স্লটে একটি একক ব্লক তৈরি করে এবং প্রকাশ করে। একই স্লটের জন্য দুটি ব্লক তৈরি করা একটি স্ল্যাশযোগ্য অপরাধ, যা প্রায়শই "ইকুইভোকেশন" নামে পরিচিত।
ব্লকটি কীভাবে তৈরি করা হয়?
ব্লক প্রস্তাবকের একটি স্বাক্ষরিত বীকন ব্লক সম্প্রচার করার কথা যা তাদের স্থানীয়ভাবে চালিত ফর্ক পছন্দ অ্যালগরিদমের দৃষ্টিভঙ্গি অনুসারে চেইনের সবচেয়ে সাম্প্রতিক হেডের উপরে তৈরি হয়। ফর্ক পছন্দ অ্যালগরিদম পূর্ববর্তী স্লট থেকে অবশিষ্ট থাকা যেকোনো সারিবদ্ধ অ্যাটেস্টেশন প্রয়োগ করে, তারপর তার ইতিহাসে অ্যাটেস্টেশনের সর্বাধিক সঞ্চিত ওজনসহ ব্লকটি খুঁজে বের করে। সেই ব্লকটি হল প্রস্তাবক দ্বারা তৈরি করা নতুন ব্লকের প্যারেন্ট।
ব্লক প্রস্তাবক তার নিজস্ব স্থানীয় ডেটাবেস এবং চেইনের ভিউ থেকে ডেটা সংগ্রহ করে একটি ব্লক তৈরি করে। ব্লকের বিষয়বস্তু নীচের স্নিপেটে দেখানো হয়েছে:
1class BeaconBlockBody(Container):2 randao_reveal: BLSSignature3 eth1_data: Eth1Data4 graffiti: Bytes325 proposer_slashings: List[ProposerSlashing, MAX_PROPOSER_SLASHINGS]6 attester_slashings: List[AttesterSlashing, MAX_ATTESTER_SLASHINGS]7 attestations: List[Attestation, MAX_ATTESTATIONS]8 deposits: List[Deposit, MAX_DEPOSITS]9 voluntary_exits: List[SignedVoluntaryExit, MAX_VOLUNTARY_EXITS]10 sync_aggregate: SyncAggregate11 execution_payload: ExecutionPayloadসবকটি দেখুনrandao_reveal ফিল্ড একটি যাচাইযোগ্য র্যান্ডম মান নেয় যা ব্লক প্রস্তাবক বর্তমান ইপোক নম্বর স্বাক্ষর করে তৈরি করে। eth1_data হল ডিপোজিট চুক্তির বিষয়ে ব্লক প্রস্তাবকের দৃষ্টিভঙ্গির জন্য একটি ভোট, যার মধ্যে ডিপোজিট মার্কল ট্রাই-এর রুট এবং মোট ডিপোজিটের সংখ্যা অন্তর্ভুক্ত রয়েছে যা নতুন ডিপোজিট যাচাই করতে সক্ষম করে। graffiti একটি ঐচ্ছিক ফিল্ড যা ব্লকে একটি বার্তা যোগ করতে ব্যবহার করা যেতে পারে। proposer_slashings এবং attester_slashings হল এমন ফিল্ড যেগুলিতে প্রমাণ থাকে যে প্রস্তাবকের চেইন দেখার দৃষ্টিভঙ্গি অনুসারে নির্দিষ্ট ভ্যালিডেটররা স্ল্যাশযোগ্য অপরাধ করেছে। deposits হল নতুন ভ্যালিডেটর ডিপোজিটের একটি তালিকা যা সম্পর্কে ব্লক প্রস্তাবক সচেতন, এবং voluntary_exits হল এমন ভ্যালিডেটরদের একটি তালিকা যারা প্রস্থান করতে চায়, যাদের সম্পর্কে ব্লক প্রস্তাবক কনসেন্সাস লেয়ার গসিপ নেটওয়ার্কে শুনেছে। sync_aggregate হল একটি ভেক্টর যা দেখায় কোন ভ্যালিডেটরদের আগে একটি সিঙ্ক কমিটিতে (ভ্যালিডেটরদের একটি উপসেট যা লাইট ক্লায়েন্ট ডেটা পরিবেশন করে) নিযুক্ত করা হয়েছিল এবং ডেটা স্বাক্ষরে অংশ নিয়েছিল।
execution_payload এক্সিকিউশন এবং কনসেন্সাস ক্লায়েন্টদের মধ্যে লেনদেন সম্পর্কিত তথ্য পাস করতে সক্ষম করে। execution_payload হল এক্সিকিউশন ডেটার একটি ব্লক যা একটি বীকন ব্লকের ভিতরে নেস্টেড থাকে। execution_payload-এর ভিতরের ফিল্ডগুলি ইথেরিয়াম ইয়োলো পেপারে বর্ণিত ব্লক কাঠামোকে প্রতিফলিত করে, তবে এতে কোনো অমার্স নেই এবং difficulty-এর পরিবর্তে prev_randao বিদ্যমান। এক্সিকিউশন ক্লায়েন্টের লেনদেনের একটি স্থানীয় পুলে অ্যাক্সেস রয়েছে যা সে তার নিজস্ব গসিপ নেটওয়ার্কে শুনেছে। এই লেনদেনগুলি স্থানীয়ভাবে কার্যকর করা হয় একটি আপডেট করা স্টেট ট্রাই তৈরি করতে যা পোস্ট-স্টেট নামে পরিচিত। লেনদেনগুলি execution_payload-এ transactions নামক একটি তালিকা হিসাবে অন্তর্ভুক্ত করা হয় এবং পোস্ট-স্টেট state-root ফিল্ডে সরবরাহ করা হয়।
এই সমস্ত ডেটা একটি বীকন ব্লকে সংগ্রহ করা হয়, স্বাক্ষরিত হয়, এবং ব্লক প্রস্তাবকের পিয়ারদের কাছে সম্প্রচার করা হয়, যারা এটিকে তাদের পিয়ারদের কাছে প্রচার করে ইত্যাদি।
ব্লকের অ্যানাটমি সম্পর্কে আরও পড়ুন।
ব্লকের কী হয়?
ব্লকটি ব্লক প্রস্তাবকের স্থানীয় ডেটাবেসে যোগ করা হয় এবং কনসেন্সাস লেয়ার গসিপ নেটওয়ার্কের মাধ্যমে পিয়ারদের কাছে সম্প্রচার করা হয়। যখন একজন ভ্যালিডেটর ব্লকটি গ্রহণ করে, তখন সে এর ভিতরের ডেটা যাচাই করে, যার মধ্যে রয়েছে ব্লকটির সঠিক প্যারেন্ট আছে কিনা, সঠিক স্লটের সাথে মিলে যায় কিনা, প্রস্তাবকের সূচকটি প্রত্যাশিত কিনা, RANDAO রিভিল বৈধ কিনা এবং প্রস্তাবক স্ল্যাশড হয়নি কিনা তা পরীক্ষা করা। execution_payload আনবান্ডেল করা হয়, এবং ভ্যালিডেটরের এক্সিকিউশন ক্লায়েন্ট প্রস্তাবিত স্টেট পরিবর্তন পরীক্ষা করার জন্য তালিকার লেনদেনগুলি পুনরায় কার্যকর করে। ধরে নেওয়া হয় যে ব্লকটি এই সমস্ত পরীক্ষায় উত্তীর্ণ হয়েছে, প্রতিটি ভ্যালিডেটর ব্লকটিকে তার নিজস্ব ক্যানোনিকাল চেইনে যোগ করে। প্রক্রিয়াটি তারপর পরবর্তী স্লটে আবার শুরু হয়।
ব্লক রিওয়ার্ডস
ব্লক প্রস্তাবক তাদের কাজের জন্য পেমেন্ট পায়। সক্রিয় ভ্যালিডেটরের সংখ্যা এবং তাদের কার্যকর ব্যালেন্সের একটি ফাংশন হিসাবে একটি base_reward গণনা করা হয়। ব্লক প্রস্তাবক তারপর ব্লকে অন্তর্ভুক্ত প্রতিটি বৈধ অ্যাটেস্টেশনের জন্য base_reward-এর একটি ভগ্নাংশ পায়; যত বেশি ভ্যালিডেটর ব্লকটিকে অ্যাটেস্ট করে, ব্লক প্রস্তাবকের রিওয়ার্ড তত বেশি হয়। যে ভ্যালিডেটরদের স্ল্যাশ করা উচিত তাদের রিপোর্ট করার জন্যও একটি রিওয়ার্ড রয়েছে, যা প্রতিটি স্ল্যাশড ভ্যালিডেটরের জন্য 1/512 * কার্যকর ব্যালেন্স-এর সমান।
রিওয়ার্ড এবং পেনাল্টি সম্পর্কে আরও