ব্লক
পৃষ্ঠাটি সর্বশেষ আপডেট করা হয়েছে: ২৩ ফেব্রুয়ারী, ২০২৬
ব্লক হলো চেইনে থাকা আগের ব্লকের একটি হ্যাস সহ লেনদেনের ব্যাচ। এটি ব্লকগুলিকে একসাথে (একটি চেইনে) লিঙ্ক করে কারণ হ্যাসগুলি ক্রিপ্টোগ্রাফিকভাবে ব্লক ডেটা থেকে উদ্ভূত হয়। এটি জালিয়াতি প্রতিরোধ করে, কারণ ইতিহাসে যেকোনো ব্লকে একটি পরিবর্তন পরবর্তী সমস্ত ব্লককে অবৈধ করে দেবে কারণ পরবর্তী সমস্ত হ্যাস পরিবর্তিত হবে এবং ব্লকচেইন পরিচালনাকারী প্রত্যেকে তা লক্ষ্য করবে।
পূর্বশর্ত
ব্লক একটি খুব শিক্ষানবিস-বান্ধব বিষয়। কিন্তু আপনাকে এই পৃষ্ঠাটি আরও ভালভাবে বুঝতে সাহায্য করার জন্য, আমরা আপনাকে প্রথমে অ্যাকাউন্ট, লেনদেন, এবং আমাদের ইথেরিয়ামের পরিচিতি পড়ার পরামর্শ দিই।
কেন ব্লক?
ইথেরিয়াম নেটওয়ার্কের সমস্ত অংশগ্রহণকারী একটি সিঙ্ক্রোনাইজড অবস্থা বজায় রাখে এবং লেনদেনের সঠিক ইতিহাসে সম্মত হয় তা নিশ্চিত করার জন্য, আমরা লেনদেনগুলিকে ব্লকে ব্যাচ করি। এর মানে হল কয়েক ডজন (বা শত শত) লেনদেন একবারে প্রতিশ্রুতিবদ্ধ, সম্মত এবং সিঙ্ক্রোনাইজ করা হয়।
Ethereum EVM illustrated (opens in a new tab) থেকে অভিযোজিত চিত্র
কমিটগুলিকে ব্যবধান দিয়ে, আমরা সমস্ত নেটওয়ার্ক অংশগ্রহণকারীদের কনসেন্সাসে আসার জন্য যথেষ্ট সময় দিই: যদিও প্রতি সেকেন্ডে কয়েক ডজনবার লেনদেনের অনুরোধ ঘটে, ইথেরিয়ামে প্রতি বারো সেকেন্ডে একবারই ব্লক তৈরি এবং প্রতিশ্রুতিবদ্ধ হয়।
ব্লকগুলি কীভাবে কাজ করে
লেনদেনের ইতিহাস সংরক্ষণ করার জন্য, ব্লকগুলিকে কঠোরভাবে অর্ডার করা হয় (তৈরি করা প্রতিটি নতুন ব্লকে তার মূল ব্লকের একটি রেফারেন্স থাকে), এবং ব্লকের মধ্যে লেনদেনগুলিও কঠোরভাবে অর্ডার করা হয়। বিরল ঘটনা ব্যতীত, যেকোনো নির্দিষ্ট সময়ে, নেটওয়ার্কের সমস্ত অংশগ্রহণকারী ব্লকের সঠিক সংখ্যা এবং ইতিহাসের বিষয়ে একমত, এবং পরবর্তী ব্লকে বর্তমান লাইভ লেনদেনের অনুরোধগুলিকে ব্যাচ করার জন্য কাজ করছে।
নেটওয়ার্কে এলোমেলোভাবে নির্বাচিত একজন ভ্যালিডেটর দ্বারা একটি ব্লক একত্রিত হয়ে গেলে, এটি নেটওয়ার্কের বাকি অংশে প্রচারিত হয়; সমস্ত নোড এই ব্লকটিকে তাদের ব্লকচেইনের শেষে যুক্ত করে এবং পরবর্তী ব্লক তৈরি করার জন্য একজন নতুন ভ্যালিডেটর নির্বাচন করা হয়। সঠিক ব্লক-অ্যাসেম্বলি প্রক্রিয়া এবং প্রতিশ্রুতি/কনসেন্সাস প্রক্রিয়াটি বর্তমানে ইথেরিয়ামের “প্রুফ-অফ-স্টেক” প্রোটোকল দ্বারা নির্দিষ্ট করা হয়েছে।
প্রুফ-অফ-স্টেক প্রোটোকল
প্রুফ-অফ-স্টেক মানে নিম্নলিখিত:
- ভ্যালিডেটিং নোডগুলিকে খারাপ আচরণের বিরুদ্ধে সমান্তরাল হিসাবে একটি ডিপোজিট চুক্তিতে 32 ETH স্টেক করতে হবে। এটি নেটওয়ার্ককে সুরক্ষিত করতে সাহায্য করে কারণ প্রমাণিতভাবে অসৎ কার্যকলাপের ফলে সেই স্টেকের কিছু বা সমস্ত ধ্বংস হয়ে যায়।
- প্রতিটি স্লটে (বারো সেকেন্ডের ব্যবধানে) একজন ভ্যালিডেটরকে এলোমেলোভাবে ব্লক প্রোপোজার হিসেবে নির্বাচিত করা হয়। তারা লেনদেনগুলিকে একসাথে বান্ডিল করে, সেগুলি সম্পাদন করে এবং একটি নতুন 'অবস্থা' নির্ধারণ করে। তারা এই তথ্যটিকে একটি ব্লকে আবৃত করে এবং অন্যান্য ভ্যালিডেটরদের কাছে পাঠায়।
- অন্যান্য ভ্যালিডেটর যারা নতুন ব্লক সম্পর্কে জানতে পারে তারা লেনদেনগুলি পুনরায় কার্যকর করে তা নিশ্চিত করার জন্য যে তারা বিশ্বব্যাপী অবস্থার প্রস্তাবিত পরিবর্তনে সম্মত। ব্লকটি বৈধ বলে ধরে নিয়ে, তারা এটিকে তাদের নিজস্ব ডাটাবেসে যুক্ত করে।
- যদি একজন ভ্যালিডেটর একই স্লটের জন্য দুটি পরস্পরবিরোধী ব্লক সম্পর্কে জানতে পারে, তবে তারা তাদের ফর্ক-চয়েস অ্যালগরিদম ব্যবহার করে সবচেয়ে বেশি স্টেক করা ETH দ্বারা সমর্থিত একটি বেছে নেয়।
প্রুফ-অফ-স্টেক সম্পর্কে আরও জানুন
একটি ব্লকের মধ্যে কী আছে?
একটি ব্লকের মধ্যে অনেক তথ্য থাকে। সর্বোচ্চ স্তরে একটি ব্লকে নিম্নলিখিত ক্ষেত্রগুলি থাকে:
| ক্ষেত্র | বিবরণ |
|---|---|
slot | ব্লকটি যে স্লটের অন্তর্গত |
proposer_index | ব্লকের প্রস্তাবকারী ভ্যালিডেটরের আইডি |
parent_root | পূর্ববর্তী ব্লকের হ্যাস |
state_root | স্টেট অবজেক্টের রুট হ্যাস |
body | নীচে সংজ্ঞায়িত হিসাবে বিভিন্ন ক্ষেত্র ধারণকারী একটি বস্তু |
ব্লকের বডিতে নিজস্ব কয়েকটি ক্ষেত্র রয়েছে:
| ক্ষেত্র | বিবরণ |
|---|---|
randao_reveal | পরবর্তী ব্লক প্রোপোজার নির্বাচন করতে ব্যবহৃত একটি মান |
eth1_data | ডিপোজিট চুক্তি সম্পর্কে তথ্য |
graffiti | ব্লক ট্যাগ করতে ব্যবহৃত অবাধ তথ্য |
proposer_slashings | স্ল্যাশ করা হবে এমন ভ্যালিডেটরদের তালিকা |
attester_slashings | স্ল্যাশ করা হবে এমন প্রত্যয়নকারীদের তালিকা |
attestations | পূর্ববর্তী স্লটের বিরুদ্ধে করা প্রত্যয়নের তালিকা |
ডিপোজিট | ডিপোজিট চুক্তিতে নতুন জমার তালিকা |
voluntary_exits | নেটওয়ার্ক থেকে প্রস্থানকারী ভ্যালিডেটরদের তালিকা |
sync_aggregate | লাইট ক্লায়েন্টদের পরিষেবা দেওয়ার জন্য ব্যবহৃত ভ্যালিডেটরদের উপসেট |
execution_payload | এক্সিকিউশন ক্লায়েন্ট থেকে প্রেরিত লেনদেন |
attestations ক্ষেত্রটিতে ব্লকের সমস্ত প্রত্যয়নের একটি তালিকা রয়েছে। প্রত্যয়নগুলির নিজস্ব ডেটা টাইপ রয়েছে যা বিভিন্ন ডেটা ধারণ করে। প্রতিটি প্রত্যয়নে রয়েছে:
| ক্ষেত্র | বিবরণ |
|---|---|
aggregation_bits | এই প্রত্যয়নে কোন ভ্যালিডেটররা অংশ নিয়েছিল তার একটি তালিকা |
data | একাধিক উপক্ষেত্র সহ একটি ধারক |
signature | data অংশের বিরুদ্ধে এক সেট ভ্যালিডেটরের সামগ্রিক স্বাক্ষর |
attestation-এর data ক্ষেত্রটিতে নিম্নলিখিতগুলি রয়েছে:
| ক্ষেত্র | বিবরণ |
|---|---|
slot | যে স্লটের সাথে প্রত্যয়নটি সম্পর্কিত |
index | প্রত্যয়নকারী ভ্যালিডেটরদের জন্য সূচক |
beacon_block_root | চেইনের হেড হিসাবে দেখা বীকন ব্লকের রুট হ্যাস |
উৎস | শেষ ন্যায্য চেকপয়েন্ট |
target | সর্বশেষ ইপোক বাউন্ডারি ব্লক |
execution_payload-এ লেনদেন সম্পাদন করা বিশ্বব্যাপী অবস্থা আপডেট করে। সমস্ত ক্লায়েন্ট execution_payload-এ লেনদেনগুলি পুনরায় সম্পাদন করে তা নিশ্চিত করার জন্য যে নতুন অবস্থা নতুন ব্লকের state_root ক্ষেত্রের সাথে মেলে। এইভাবে ক্লায়েন্টরা বলতে পারে যে একটি নতুন ব্লক বৈধ এবং তাদের ব্লকচেইনে যোগ করার জন্য নিরাপদ। 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 | কাঁচা বাইট হিসাবে অবাধ অতিরিক্ত ডেটা |
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 | কাঁচা বাইট হিসাবে অবাধ অতিরিক্ত ডেটা |
base_fee_per_gas | বেস ফি মান |
block_hash | এক্সিকিউশন ব্লকের হ্যাস |
লেনদেনসমূহ | সম্পাদন করা হবে এমন লেনদেনের তালিকা |
উইথড্রয়াল | উত্তোলন বস্তুর তালিকা |
withdrawals তালিকায় withdrawal বস্তুগুলি নিম্নলিখিত উপায়ে গঠিত:
| ক্ষেত্র | বিবরণ |
|---|---|
address | অ্যাকাউন্টের ঠিকানা যা উত্তোলন করেছে |
amount | উত্তোলনের পরিমাণ |
index | উত্তোলন সূচক মান |
validatorIndex | ভ্যালিডেটর সূচক মান |
ব্লকের সময়
ব্লকের সময় বলতে ব্লকগুলিকে পৃথক করার সময়কে বোঝায়। ইথেরিয়ামে, সময়কে বারো সেকেন্ডের এককে ভাগ করা হয় যাকে 'স্লট' বলা হয়। প্রতিটি স্লটে একটি ব্লক প্রস্তাব করার জন্য একজন একক ভ্যালিডেটর নির্বাচন করা হয়। ধরে নেওয়া হচ্ছে সমস্ত ভ্যালিডেটর অনলাইন এবং সম্পূর্ণ কার্যকরী, প্রতিটি স্লটে একটি ব্লক থাকবে, যার অর্থ ব্লকের সময় 12 সেকেন্ড। তবে, মাঝে মাঝে ভ্যালিডেটররা ব্লক প্রস্তাব করার জন্য ডাকলে অফলাইন থাকতে পারে, যার অর্থ স্লটগুলি কখনও কখনও খালি যেতে পারে।
এই বাস্তবায়ন প্রুফ-অফ-ওয়ার্ক ভিত্তিক সিস্টেম থেকে ভিন্ন যেখানে ব্লকের সময় সম্ভাব্যতামূলক এবং প্রোটোকলের লক্ষ্য মাইনিং অসুবিধা দ্বারা সুর করা হয়। ইথেরিয়ামের গড় ব্লক সময় (opens in a new tab) এর একটি নিখুঁত উদাহরণ যেখানে প্রুফ-অফ-ওয়ার্ক থেকে প্রুফ-অফ-স্টেক-এ রূপান্তরটি নতুন ১২ সেকেন্ডের ব্লক সময়ের ধারাবাহিকতার উপর ভিত্তি করে স্পষ্টভাবে অনুমান করা যেতে পারে।
ব্লকের আকার
একটি চূড়ান্ত গুরুত্বপূর্ণ দ্রষ্টব্য হলো ব্লকগুলি নিজেরাই আকারে সীমাবদ্ধ। প্রতিটি ব্লকের একটি লক্ষ্য আকার 30 মিলিয়ন গ্যাস কিন্তু নেটওয়ার্কের চাহিদা অনুযায়ী ব্লকের আকার বাড়বে বা কমবে, 60 মিলিয়ন গ্যাসের ব্লক সীমা পর্যন্ত (2x লক্ষ্য ব্লক আকার)। ব্লক গ্যাস সীমা পূর্ববর্তী ব্লকের গ্যাস সীমার থেকে 1/1024 ফ্যাক্টর দ্বারা উপরের দিকে বা নীচের দিকে সামঞ্জস্য করা যেতে পারে। ফলস্বরূপ, ভ্যালিডেটররা কনসেন্সাসের মাধ্যমে ব্লক গ্যাস সীমা পরিবর্তন করতে পারে। ব্লকের সমস্ত লেনদেন দ্বারা ব্যয় করা মোট গ্যাসের পরিমাণ অবশ্যই ব্লক গ্যাস সীমার চেয়ে কম হতে হবে। এটি গুরুত্বপূর্ণ কারণ এটি নিশ্চিত করে যে ব্লকগুলি যথেচ্ছভাবে বড় হতে পারে না। যদি ব্লকগুলি যথেচ্ছভাবে বড় হতে পারত, তবে স্থান এবং গতির প্রয়োজনীয়তার কারণে কম কর্মক্ষম সম্পূর্ণ নোডগুলি ধীরে ধীরে নেটওয়ার্কের সাথে তাল মিলিয়ে চলতে অক্ষম হয়ে পড়ত। ব্লক যত বড় হবে, পরবর্তী স্লটের জন্য সময়মতো প্রক্রিয়া করার জন্য তত বেশি কম্পিউটিং শক্তি প্রয়োজন হবে। এটি একটি কেন্দ্রীভূত শক্তি, যা ব্লকের আকার সীমাবদ্ধ করে প্রতিরোধ করা হয়।
আরও পড়ুন
এমন কোনো কমিউনিটি রিসোর্স সম্পর্কে জানেন যা আপনাকে সাহায্য করেছে? এই পৃষ্ঠাটি সম্পাদনা করুন এবং এটি যোগ করুন!