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

ব্লকস

পেজ সর্বশেষ আপডেট: ২৩ ফেব্রুয়ারী, ২০২৬

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

পূর্বশর্ত

ব্লকস খুব শিক্ষানবিস-বান্ধব একটি বিষয়। তবে এই পৃষ্ঠাটি আরও ভালোভাবে বুঝতে সাহায্য করার জন্য, আমরা সুপারিশ করছি যে আপনি প্রথমে একাউন্ট, লেনদেন, এবং আমাদের ইথিরিয়ামের পরিচিতি পড়ুন।

ব্লক কেন?

ইথিরিয়াম নেটওয়ার্কের সকল অংশগ্রহণকারী একটি সিঙ্ক্রোনাইজড স্টেট বজায় রাখে এবং লেনদেনের সঠিক ইতিহাসে একমত হয় তা নিশ্চিত করতে, আমরা লেনদেনগুলোকে ব্লকে ব্যাচ করি। এর মানে হলো ডজন ডজন (বা শত শত) লেনদেন একসাথে কমিট করা হয়, সম্মত হওয়া হয় এবং সিঙ্ক্রোনাইজ করা হয়।

A diagram showing transaction in a block causing state changes চিত্রটি Ethereum EVM illustrated (opens in a new tab) থেকে গৃহীত

কমিটগুলোর মধ্যে ব্যবধান রেখে, আমরা সমস্ত নেটওয়ার্ক অংশগ্রহণকারীদের কনসেন্সাস-এ আসার জন্য পর্যাপ্ত সময় দিই: যদিও প্রতি সেকেন্ডে ডজন ডজন লেনদেনের অনুরোধ ঘটে, ইথিরিয়ামে প্রতি বারো সেকেন্ডে একবার ব্লক তৈরি এবং কমিট করা হয়।

ব্লক কীভাবে কাজ করে

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

একবার নেটওয়ার্কে এলোমেলোভাবে নির্বাচিত একজন ভ্যালিডেটর দ্বারা একটি ব্লক একত্রিত হলে, এটি নেটওয়ার্কের বাকি অংশে ছড়িয়ে দেওয়া হয়; সমস্ত নোড এই ব্লকটিকে তাদের ব্লকচেইনের শেষে যুক্ত করে এবং পরবর্তী ব্লক তৈরি করার জন্য একজন নতুন ভ্যালিডেটর নির্বাচন করা হয়। সঠিক ব্লক-অ্যাসেম্বলি প্রক্রিয়া এবং কমিটমেন্ট/কনসেন্সাস প্রক্রিয়া বর্তমানে ইথিরিয়ামের "প্রুফ-অফ-স্টেক" প্রটোকল দ্বারা নির্দিষ্ট করা হয়েছে।

প্রুফ-অফ-স্টেক প্রটোকল

প্রুফ-অফ-স্টেক এর অর্থ হলো:

  • ভ্যালিডেটিং নোডগুলোকে খারাপ আচরণের বিরুদ্ধে জামানত হিসেবে একটি ডিপোজিট কন্টাক্ট-এ 32 ETH স্টেক করতে হয়। এটি নেটওয়ার্ককে রক্ষা করতে সাহায্য করে কারণ প্রমাণিত অসৎ কার্যকলাপের ফলে সেই স্টেক-এর কিছু অংশ বা পুরোটাই ধ্বংস হয়ে যায়।
  • প্রতিটি স্লটে (বারো সেকেন্ডের ব্যবধানে) একজন ভ্যালিডেটরকে এলোমেলোভাবে ব্লক প্রপোজার হিসেবে নির্বাচন করা হয়। তারা লেনদেনগুলোকে একসাথে বান্ডিল করে, সেগুলো এক্সিকিউট করে এবং একটি নতুন 'স্টেট' নির্ধারণ করে। তারা এই তথ্যগুলোকে একটি ব্লকে মুড়িয়ে অন্যান্য ভ্যালিডেটরস-এর কাছে পাঠিয়ে দেয়।
  • অন্যান্য ভ্যালিডেটরস যারা নতুন ব্লক সম্পর্কে জানতে পারে তারা গ্লোবাল স্টেট-এ প্রস্তাবিত পরিবর্তনের সাথে একমত কিনা তা নিশ্চিত করতে লেনদেনগুলো পুনরায় এক্সিকিউট করে। ব্লকটি বৈধ ধরে নিয়ে, তারা এটিকে তাদের নিজস্ব ডাটাবেসে যুক্ত করে।
  • যদি কোনো ভ্যালিডেটর একই স্লটের জন্য দুটি সাংঘর্ষিক ব্লক সম্পর্কে জানতে পারে, তবে তারা সবচেয়ে বেশি স্টেক করা ETH দ্বারা সমর্থিত ব্লকটি বেছে নিতে তাদের ফর্ক-চয়েস এ্যালগরিদম ব্যবহার করে।

প্রুফ-অফ-স্টেক সম্পর্কে আরও জানুন

একটি ব্লকে কী থাকে?

একটি ব্লকের মধ্যে প্রচুর তথ্য থাকে। সর্বোচ্চ স্তরে একটি ব্লকে নিম্নলিখিত ফিল্ডগুলো থাকে:

ফিল্ডবিবরণ
slotব্লকটি যে স্লটের অন্তর্গত
proposer_indexব্লক প্রস্তাবকারী ভ্যালিডেটর-এর আইডি
parent_rootপূর্ববর্তী ব্লকের হ্যাস
state_rootস্টেট অবজেক্টের রুট হ্যাস
bodyনিচে সংজ্ঞায়িত বেশ কয়েকটি ফিল্ড ধারণকারী একটি অবজেক্ট

ব্লক body-তে নিজস্ব বেশ কয়েকটি ফিল্ড থাকে:

ফিল্ডবিবরণ
randao_revealপরবর্তী ব্লক প্রপোজার নির্বাচন করতে ব্যবহৃত একটি মান
eth1_dataডিপোজিট কন্টাক্ট সম্পর্কে তথ্য
graffitiব্লক ট্যাগ করতে ব্যবহৃত ইচ্ছামতো ডাটা
proposer_slashingsস্ল্যাশিং করা হবে এমন ভ্যালিডেটরস-এর তালিকা
attester_slashingsস্ল্যাশিং করা হবে এমন অ্যাটেস্টারদের তালিকা
attestationsপূর্ববর্তী স্লটগুলোর বিপরীতে করা এটেস্টেশন-এর তালিকা
depositsডিপোজিট কন্টাক্ট-এ নতুন জমার তালিকা
voluntary_exitsনেটওয়ার্ক থেকে বেরিয়ে যাওয়া ভ্যালিডেটরস-এর তালিকা
sync_aggregateলাইট ক্লায়েন্টদের পরিষেবা দিতে ব্যবহৃত ভ্যালিডেটরস-এর সাবসেট
execution_payloadএক্সিকিউশন ক্লায়েন্ট থেকে পাস করা লেনদেন

attestations ফিল্ডে ব্লকের সমস্ত এটেস্টেশন-এর একটি তালিকা থাকে। এটেস্টেশন-এর নিজস্ব ডাটা টাইপ রয়েছে যাতে বেশ কিছু ডাটা থাকে। প্রতিটি এটেস্টেশন-এ থাকে:

ফিল্ডবিবরণ
aggregation_bitsএই এটেস্টেশন-এ কোন ভ্যালিডেটরস অংশগ্রহণ করেছে তার একটি তালিকা
dataএকাধিক সাবফিল্ড সহ একটি কন্টেইনার
signaturedata অংশের বিপরীতে ভ্যালিডেটরস-এর একটি সেটের সামগ্রিক স্বাক্ষর

attestation-এর data ফিল্ডে নিম্নলিখিত বিষয়গুলো থাকে:

ফিল্ডবিবরণ
slotএটেস্টেশন-এর সাথে সম্পর্কিত স্লট
indexঅ্যাটেস্ট করা ভ্যালিডেটরস-এর সূচক
beacon_block_rootচেইনের হেড হিসেবে দেখা বিকন ব্লকের রুট হ্যাস
sourceসর্বশেষ জাস্টিফাইড চেকপয়েন্ট
targetসর্বশেষ এপোক বাউন্ডারি ব্লক

execution_payload-এ লেনদেনগুলো এক্সিকিউট করলে গ্লোবাল স্টেট আপডেট হয়। নতুন স্টেটটি নতুন ব্লকের state_root ফিল্ডের সাথে মিলেছে কিনা তা নিশ্চিত করতে সমস্ত ক্লায়েন্ট execution_payload-এর লেনদেনগুলো পুনরায় এক্সিকিউট করে। এভাবেই ক্লায়েন্টরা বুঝতে পারে যে একটি নতুন ব্লক বৈধ এবং তাদের ব্লকচেইনে যুক্ত করা নিরাপদ। execution payload নিজেই বেশ কয়েকটি ফিল্ড সহ একটি অবজেক্ট। এছাড়াও একটি execution_payload_header রয়েছে যাতে এক্সিকিউশন ডাটা সম্পর্কে গুরুত্বপূর্ণ সারসংক্ষেপ তথ্য থাকে। এই ডাটা স্ট্রাকচারগুলো নিম্নরূপভাবে সাজানো হয়েছে:

execution_payload_header-এ নিম্নলিখিত ফিল্ডগুলো থাকে:

ফিল্ডবিবরণ
parent_hashপ্যারেন্ট ব্লকের হ্যাস
fee_recipientলেনদেন ফি প্রদানের জন্য একাউন্ট এডড্রেস
state_rootএই ব্লকে পরিবর্তনগুলো প্রয়োগ করার পর গ্লোবাল স্টেট-এর রুট হ্যাস
receipts_rootলেনদেনের রসিদ ট্রাইয়ের হ্যাস
logs_bloomইভেন্ট লগ ধারণকারী ডাটা স্ট্রাকচার
prev_randaoএলোমেলো ভ্যালিডেটর নির্বাচনে ব্যবহৃত মান
block_numberবর্তমান ব্লকের নম্বর
gas_limitএই ব্লকে অনুমোদিত সর্বোচ্চ গ্যাস
gas_usedএই ব্লকে ব্যবহৃত প্রকৃত গ্যাস-এর পরিমাণ
timestampব্লকের সময়
extra_dataর (raw) বাইট হিসেবে ইচ্ছামতো অতিরিক্ত ডাটা
base_fee_per_gasবেস ফি মান
block_hashএক্সিকিউশন ব্লকের হ্যাস
transactions_rootপেলোডে থাকা লেনদেনের রুট হ্যাস
withdrawal_rootপেলোডে থাকা উত্তোলনের রুট হ্যাস

execution_payload-এ নিম্নলিখিত বিষয়গুলো থাকে (লক্ষ্য করুন যে এটি হেডারের মতোই, তবে লেনদেনের রুট হ্যাস-এর পরিবর্তে এতে লেনদেনের প্রকৃত তালিকা এবং উত্তোলনের তথ্য অন্তর্ভুক্ত থাকে):

ফিল্ডবিবরণ
parent_hashপ্যারেন্ট ব্লকের হ্যাস
fee_recipientলেনদেন ফি প্রদানের জন্য একাউন্ট এডড্রেস
state_rootএই ব্লকে পরিবর্তনগুলো প্রয়োগ করার পর গ্লোবাল স্টেট-এর রুট হ্যাস
receipts_rootলেনদেনের রসিদ ট্রাইয়ের হ্যাস
logs_bloomইভেন্ট লগ ধারণকারী ডাটা স্ট্রাকচার
prev_randaoএলোমেলো ভ্যালিডেটর নির্বাচনে ব্যবহৃত মান
block_numberবর্তমান ব্লকের নম্বর
gas_limitএই ব্লকে অনুমোদিত সর্বোচ্চ গ্যাস
gas_usedএই ব্লকে ব্যবহৃত প্রকৃত গ্যাস-এর পরিমাণ
timestampব্লকের সময়
extra_dataর (raw) বাইট হিসেবে ইচ্ছামতো অতিরিক্ত ডাটা
base_fee_per_gasবেস ফি মান
block_hashএক্সিকিউশন ব্লকের হ্যাস
transactionsএক্সিকিউট করা হবে এমন লেনদেনের তালিকা
withdrawalsউত্তোলন অবজেক্টের তালিকা

withdrawals তালিকায় নিম্নলিখিত উপায়ে গঠিত withdrawal অবজেক্ট থাকে:

ফিল্ডবিবরণ
addressউত্তোলন করা একাউন্ট এডড্রেস
amountউত্তোলনের পরিমাণ
indexউত্তোলনের সূচক মান
validatorIndexভ্যালিডেটর সূচক মান

ব্লক টাইম

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

এই বাস্তবায়নটি প্রুফ-অফ-ওয়ার্ক ভিত্তিক সিস্টেমগুলো থেকে আলাদা যেখানে ব্লক টাইমগুলো সম্ভাব্য এবং প্রটোকলের লক্ষ্য মাইনিং অসুবিধার দ্বারা টিউন করা হয়। ইথিরিয়ামের গড় ব্লক টাইম (opens in a new tab) এর একটি নিখুঁত উদাহরণ যার মাধ্যমে নতুন 12s ব্লক টাইমের ধারাবাহিকতার উপর ভিত্তি করে প্রুফ-অফ-ওয়ার্ক থেকে প্রুফ-অফ-স্টেক-এ রূপান্তর স্পষ্টভাবে অনুমান করা যায়।

ব্লকের আকার

একটি চূড়ান্ত গুরুত্বপূর্ণ বিষয় হলো ব্লকগুলো নিজেরাই আকারে সীমাবদ্ধ। প্রতিটি ব্লকের লক্ষ্যমাত্রা আকার হলো 30 মিলিয়ন গ্যাস তবে নেটওয়ার্কের চাহিদা অনুযায়ী ব্লকের আকার বৃদ্ধি বা হ্রাস পাবে, যা 60 মিলিয়ন গ্যাস (লক্ষ্যমাত্রা ব্লকের আকারের 2x) ব্লক লিমিট পর্যন্ত হতে পারে। ব্লক গ্যাস লিমিট পূর্ববর্তী ব্লকের গ্যাস লিমিট থেকে 1/1024 ফ্যাক্টর দ্বারা উপরের দিকে বা নিচের দিকে সামঞ্জস্য করা যেতে পারে। ফলস্বরূপ, ভ্যালিডেটরস কনসেন্সাস-এর মাধ্যমে ব্লক গ্যাস লিমিট পরিবর্তন করতে পারে। ব্লকের সমস্ত লেনদেন দ্বারা ব্যয় করা মোট গ্যাস-এর পরিমাণ অবশ্যই ব্লক গ্যাস লিমিট-এর চেয়ে কম হতে হবে। এটি গুরুত্বপূর্ণ কারণ এটি নিশ্চিত করে যে ব্লকগুলো ইচ্ছামতো বড় হতে পারে না। যদি ব্লকগুলো ইচ্ছামতো বড় হতে পারত, তবে কম পারফরম্যান্স সম্পন্ন ফুল নোডগুলো স্থান এবং গতির প্রয়োজনীয়তার কারণে ধীরে ধীরে নেটওয়ার্কের সাথে তাল মিলিয়ে চলতে অক্ষম হয়ে পড়ত। ব্লক যত বড় হবে, পরবর্তী স্লটের জন্য সময়মতো সেগুলো প্রসেস করতে তত বেশি কম্পিউটিং শক্তির প্রয়োজন হবে। এটি একটি কেন্দ্রীভূত শক্তি, যা ব্লকের আকার সীমাবদ্ধ করার মাধ্যমে প্রতিরোধ করা হয়।

আরও পড়ুন

আপনাকে সাহায্য করেছে এমন কোনো কমিউনিটি রিসোর্স সম্পর্কে জানেন? এই পৃষ্ঠাটি সম্পাদনা করুন এবং এটি যুক্ত করুন!

এই আর্টিকেলটি কি সহায়ক ছিল?