آیا اندازه بلاک بیتکوین هنوز 1MB است؟
آیا اندازه بلاک بیتکوین هنوز 1MB است؟
نه به معنای ساده قبل از SegWit. قانون فعلی شبکه Block Weight حداکثر 4,000,000 WU است و Serialized Size بلاکهای SegWit میتواند از 1MB بیشتر باشد.
اندازه بلاک بیتکوین مشخص میکند چه مقدار داده تراکنش میتواند در هر بلاک ثبت شود؛ اما در شبکه فعلی بیتکوین، صحبتکردن فقط از «محدودیت ۱ مگابایت» تصویر کاملی ارائه نمیدهد. پس از فعالشدن SegWit، قانون اصلی اجماع به مفهوم Block Weight متکی است و حداکثر وزن معتبر هر بلاک 4,000,000 Weight Units است.
این موضوع روی ظرفیت لایه پایه، بازار کارمزد، نیازهای Full Node و بحث تمرکززدایی اثر دارد، اما رابطه آن با سرعت تأیید یا قیمت بیتکوین ساده و مستقیم نیست. برای درک بهتر اجزای شبکه میتوانید مقاله شبکه بیتکوین چیست؟ را نیز مطالعه کنید.
پیش از SegWit، محدودیت شناخته شده Bitcoin برای Block Size برابر 1,000,000 Byte بود. BIP141 این مدل را تغییر داد و Block Weight را معرفی کرد.
فرمول Weight در SegWit بهصورت زیر تعریف میشود:
Block Weight = Base Size × 3 + Total Size
و قانون اجماع میگوید:
Block Weight ≤ 4,000,000 WU
در نتیجه، یک بلاک دارای تراکنشهای SegWit میتواند از نظر Serialized Size از ۱ مگابایت بزرگتر باشد. مقدار دقیق Byte به ترکیب Base Data و Witness Data وابسته است. تعریف رسمی این سازوکار در BIP141 - Segregated Witness آمده است.
بنابراین جمله «اندازه بلاک بیت کوین در حال حاضر ۱ مگابایت است» باید از مقاله حذف شود یا صرفاً بهعنوان Legacy Limit پیش از SegWit توضیح داده شود.
در کد فعلی Bitcoin Core، مقدار MAX_BLOCK_WEIGHT برابر 4,000,000 تعریف شده است. مقدار MAX_BLOCK_SERIALIZED_SIZE نیز در کد 4,000,000 Byte است، اما قاعده شبکه برای ظرفیت بلاک بر Weight استوار است.
منبع مستقیم این ثابتها در فایل consensus.h در Bitcoin Core قابل مشاهده است.
برای آشنایی بیشتر با نرمافزاری که این قواعد اجماع را پیادهسازی میکند، مقاله Bitcoin Core چیست؟ را ببینید.
تراکنشها «به بلاک تبدیل نمیشوند»؛ ماینر یا Block Builder مجموعهای از تراکنشهای معتبر را از Mempool انتخاب میکند و آنها را در بلاک Candidate قرار میدهد.
ظرفیت بیشتر بلاک میتواند اجازه دهد داده تراکنش بیشتری در هر بلاک ثبت شود، اما تعداد تراکنش دقیق ثابت نیست؛ چون اندازه هر Transaction با توجه به تعداد Input، Output، نوع Script و استفاده از Witness متفاوت است.
همچنین بلاک بزرگتر لزوماً فاصله زمانی تولید بلاکها را کوتاه نمیکند. اثر اصلی آن افزایش ظرفیت داده در هر بلاک و تغییر فشار رقابت برای Block Space است.
زمانی که تقاضا برای Block Space از ظرفیت قابلدسترس بیشتر میشود، کاربران برای اولویت بالاتر معمولاً Fee Rate بیشتری پیشنهاد میکنند. بنابراین ظرفیت محدود میتواند در دورههای شلوغی با افزایش رقابت کارمزدی همراه شود.
در مقابل، افزایش ظرفیت میتواند بخشی از این فشار را کاهش دهد، اما کارمزد فقط به Block Size وابسته نیست؛ تقاضای کاربران، Mempool، سیاست انتخاب تراکنش ماینرها، نوع Transaction و شرایط بازار نیز اهمیت دارند.
پس جمله «بلاک کوچک همیشه باعث کارمزد بالا و بلاک بزرگ همیشه باعث کارمزد پایین میشود» نباید بهصورت قانون قطعی نوشته شود.
رابطه مستقیم و قابل اتکایی وجود ندارد که بگوییم افزایش یا کاهش ظرفیت بلاک بهتنهایی باعث افزایش یا کاهش قیمت Bitcoin میشود. Block Capacity میتواند روی تجربه کاربر، Fee Market و بحث مقیاسپذیری اثر بگذارد، اما قیمت تحت تأثیر مجموعه بسیار بزرگتری از عوامل عرضه، تقاضا، نقدینگی، شرایط اقتصاد کلان و رفتار بازار قرار دارد.
بنابراین بهجای ایجاد رابطه علت و معلولی مستقیم، برای وضعیت بازار باید قیمت بیتکوین و دادههای مستقل بازار بررسی شوند.
Trade-off اصلی بلاکهای بزرگتر این نیست که «ماینر بزرگ حتماً سود بیشتری میبرد». مسئله مهمتر، هزینه منابع لازم برای دریافت، اعتبارسنجی، ذخیره و انتشار بلاکها در شبکه است.
اگر بلاکها بسیار بزرگتر شوند، Full Nodeها ممکن است به پهنای باند، Storage و توان پردازشی بیشتری نیاز داشته باشند. بالا رفتن هزینه اجرای Node میتواند در بلندمدت تعداد افرادی را که قادر به اجرای Full Node مستقل هستند تحت فشار قرار دهد.
از طرف دیگر، ظرفیت بیشتر میتواند امکان ثبت داده تراکنش بیشتر در لایه پایه را فراهم کند. بحث Block Size در Bitcoin دقیقاً درباره پیدا کردن توازن میان ظرفیت، هزینه Node و غیرمتمرکز ماندن اعتبارسنجی است.
BIP101 در سال ۲۰۱۵ توسط Gavin Andresen پیشنهاد شد. این Proposal قصد داشت محدودیت ثابت ۱MB را با حداکثر Block Size بزرگتر و قابل رشد جایگزین کند.
طبق Specification این BIP، سقف پیشنهادی از 8,000,000 Byte شروع میشد و تقریباً هر دو سال دو برابر میشد؛ در فاصله بین Doublingها نیز افزایش بهصورت محاسبهشده انجام میشد. BIP101 در نهایت فعال نشد و وضعیت فعلی آن Closed است. متن رسمی BIP101
بنابراین متن فعلی که BIP101 را «راهکاری که بهطور خطی اندازه بلاک را افزایش میدهد» توصیف میکند باید دقیقتر شود.
Segregated Witness یا SegWit داده Witness را از بخش اصلی Serialization تراکنش تفکیک کرد و مفهوم Weight را وارد قواعد اجماع کرد. نتیجه این تغییر این بود که شبکه بدون یک Hard Fork ساده برای تغییر «1MB به 2MB»، ظرفیت مؤثر بیشتری برای تراکنشهای سازگار با SegWit به دست آورد.
بهتر است نگوییم SegWit صرفاً «اندازه بلاک را افزایش داد». بیان دقیقتر این است که SegWit نحوه محاسبه ظرفیت بلاک را تغییر داد و به Witness Data وزن کمتری نسبت به Base Data اختصاص داد.
تغییر Ruleهای Consensus درباره ظرفیت بلاک میتواند نیازمند تغییرات ناسازگار با Nodeهای قدیمی باشد. در سالهای گذشته اختلاف نظر درباره Scaling و Block Size یکی از موضوعات اصلی جامعه Bitcoin بود و بعضی پروژهها مسیر Consensus متفاوتی انتخاب کردند.
برای درک تفاوت Hard Fork و Soft Fork و اینکه چگونه تغییر Rule میتواند شبکهها را از هم جدا کند، مقاله فورک در بلاکچین چیست؟ را مطالعه کنید.
این مقاله نیازی ندارد فهرست طولانی Forkها یا اندازه فعلی بلاک آن شبکهها را نگه دارد؛ چون این اعداد ممکن است تغییر کنند و Intent اصلی صفحه، قانون Block Size در خود Bitcoin است.
خیر. Scaling Bitcoin فقط به افزایش Block Size محدود نمیشود. روشهای مختلفی برای استفاده کارآمدتر از Block Space یا انتقال بخشی از تعاملات خارج از Base Layer وجود دارند.
متن قدیمی که «Rollup و Sharding» را بهصورت عمومی راهحل مقیاسپذیری Bitcoin معرفی میکند، برای این مقاله دقیق نیست و باید حذف شود؛ Sharding بخشی از Consensus فعلی Bitcoin نیست.
| موضوع | ظرفیت بالاتر | ظرفیت محدودتر |
|---|---|---|
| Transaction Data در هر بلاک | بیشتر | کمتر |
| فشار Fee Market در تقاضای مشابه | میتواند کمتر باشد | میتواند بیشتر باشد |
| Bandwidth / Storage Node | نیاز بیشتر | نیاز کمتر |
| Propagation | داده بیشتر برای انتقال | داده کمتر برای انتقال |
| تمرکززدایی Full Node | ممکن است هزینه اجرا را بالا ببرد | اجرای Node میتواند سبکتر بماند |
هدف طراحی شبکه پیدا کردن یک Trade-off مناسب است؛ نه اینکه «بلاک بزرگ همیشه بهتر» یا «بلاک کوچک همیشه بهتر» باشد.
بحث اندازه بلاک Bitcoin دیگر با جمله «هر بلاک 1MB است» قابل توضیح نیست. SegWit سازوکار Weight را وارد شبکه کرد و حداکثر Consensus Block Weight را روی 4 میلیون WU قرار داد.
افزایش ظرفیت میتواند Transaction Data بیشتری در Base Layer جای دهد، اما در مقابل منابع بیشتری برای Full Node و انتشار بلاک نیاز دارد. به همین دلیل Block Size یک Trade-off میان Capacity، Fee Market، Node Cost و Decentralization است.
نه به معنای ساده قبل از SegWit. قانون فعلی شبکه Block Weight حداکثر 4,000,000 WU است و Serialized Size بلاکهای SegWit میتواند از 1MB بیشتر باشد.
معیاری است که Base Data و Witness Data را با وزن متفاوت محاسبه میکند و ظرفیت بلاک پس از SegWit را تعیین میکند.
ظرفیت بیشتر میتواند تراکنشهای بیشتری را در هر بلاک جا دهد، اما زمان ایجاد بلاک و زمان نهایی تأیید به عوامل دیگری نیز وابستهاند.
میتواند فشار رقابت برای Block Space را کاهش دهد، اما Fee به تقاضا، Mempool، Transaction Size و سیاست انتخاب تراکنشها نیز بستگی دارد.
چون افزایش شدید ظرفیت میتواند نیازهای Storage، Bandwidth و Validation Full Nodeها را بالا ببرد و Trade-offهایی برای تمرکززدایی شبکه ایجاد کند.