Mempool چیست؟
تراکنشها در یک شبکه غیر متمرکز بلاکچینی مانند بیت کوین، بعد از آن که توسط گره های شبکه تایید شدند و توسط ماینرها در بلاک قرار گرفتند در مرحله بعد بر روی بلاکچین ثبت میشوند. اما ممکن است این سوال پیش بیاید که این تراکنشها بعد از آنکه در شبکه منتشر شدند، تا زمانی که توسط یک ماینر در بلاکچین ثبت شوند، کجا به انتظار مینشینند؟ جواب این سوال MemPool و یا Memory Pool است. در این مقاله قصد داریم در مورد Mempool و نحوه کارکرد آن توضیح دهیم.
روند تایید تراکنش های تایید نشده
در کل هر گره ای در شبکه بیت کوین بعد از دریافت یک تراکنش جدید، جزئیات آن را بر اساس قواعد تعریف شده در پروتوکل بیت کوین ابتدا بررسی میکند و بعد از آنکه تراکنش توسط گره (نود) تایید شد، در Mempool ذخیره می شود و در شبکه منتشر میشود تا سایر گرهها هم از وجود آن مطلع شوند. اما در نظر داشته باشید که با وجود تایید شدن تراکنش توسط گره ها با توجه به آنکه تراکنش هنوز توسط ماینرها در بلاکچین ثبت نشده است کماکان تراکنش تایید نشده تلقی می شود. تراکنشهایی هم که به هر نوعی با پروتوکل بیت کوین در تضاد باشند، توسط گرهها رد میشوند و اصلا در شبکه منتشر نمیشوند.
اما همانطور که گفته شد یک تراکنش تایید نشده توسط گره های کامل شبکه در فضای Mempool گره به انتظار می نشیند تا یک ماینر، آن تراکنش را در بلاکی که قصد دارد آن را استخراج کند قرار دهد و موفق به پیدا کردن هش مربوط به آن بلاک شود و با اضافه شدن آن بلاک در بلاکچین، آن تراکنش هم تایید شده تلقی شود. توجه داشته باشید که یک گره کامل شبکه میتواند خود ماینر هم باشد، اما تمام گرههای کامل (Full Node) لزوما اقدام به صرف انرژی برای پیدا کردن هش بلاک جدید (ماینینگ) نمیکنند و تنها وظیفه ذخیره کل اطلاعات بلاکچین و تایید تراکنش ها و بلاکهای جدید را به عهده دارند.
فضای MemPool
بعد از آنکه تراکنش بالاخره در بلاکچین ثبت شد، بقیهی گره های شبکه آن را از Mempoolهای خود حذف میکنند. به این ترتیب بعد از استخراج هر بلاک جدید حجم MemPool گرهها افت پیدا میکند و دوباه با انتشار تراکنشهای جدید در شبکه این حجم به تدریج افزایش پیدا میکند. در شبکه بیت کوین با توجه به آنکه حجم هر بلاک به ۱ مگابایت محدود شده است و هر ده دقیقه به صورت میانگین یک بلاک جدید به بلاکچین اضافه می شود، در زمان های شلوغی شبکه، تعداد تراکنشهای تایید نشده که در فضای MemPool به انتظار تایید هستند، افزایش مییابد. در واقع در این مواقع که حجم MemPool از حجم یک بلاک که یک مگابایت است، بیشتر میشود، برای ثبت شدن یک تراکنش در بلاکچین ممکن است زمان بیشتری نیاز باشد.
ماینرها برای انتخاب تراکنشها از بین تراکنشهای تایید نشده موجود در فضای Mempool کاملا مختار هستند. از آنجاکه هدف ماینرها کسب سود بیشتر از توان محاسباتی خرج شده است، اولویت آنها با تراکنشهایی است که کارمزد (Fee) بیشتری را به ماینرها پیشنهاد میدهند نه زمانی که تراکنش در انتظار تایید بوده است. به همین دلیل است که با افزایش میزان کارمزد پرداختی، سرعت تایید تراکنش و ثبت آن در بلاکچین افزایش مییابد و تراکنشهای با کارمزد خیلی کم شاید مجبور باشند مدت زمان زیادی در صف انتظار Mempool باقی بمانند.
به تعداد گرههای شبکه Mempool وجود دارد
هر گره کامل شبکه، در واقع یک کامپیوتر است که بر اساس پروتوکل شبکه بیت کوین عمل مینماید و یک فضایی مخصوص به ذخیره تراکنش های تایید نشده یا Mempool دارد که بر روی حافظه RAM ذخیره میشود. از آنجا که شبکه بیت کوین یک شبکه توزیع یافته است، تراکنشهایی که هر گره دریافت میکند لزوما با سایر تراکنش های دریافتی سایر گرهها یکی نیست. به علاوه آنکه هر شخصی برای راهاندازی یک گره کامل، سخت افزار انتخابی خود، با ظرفیت RAM مد نظر خود را میتواند داشته باشد. در نتیجه هر گره ای از شبکه میتواند تراکنشهای در صف انتظار مخصوص به خودش را داشته باشد و لزوما تمام تراکنشهای موجود در تمام Mempool های گرههای شبکه با هم یکسان نیستند.
در صورت پر شدن فضای MemPool یک گره چه اتفاقی رخ میدهد؟
در نسخههای قدیمیتر نرمافزار Bitcoind، با پر شدن فضای RAM اختصاصی یک گره برای تراکنشهای تایید نشده یا MemPool، گره کرش میکرد و با MemPool خالی ریاستارت میشد. اما در نسخههای جدید تر نرم افزار Bitcoind، میتوان در نرمافزار یک آستانه کارمزد (Fee) تعریف کرد که با رسیدن به حداکثر ظرفیت Mempool تراکنشهای با کارمزد کمتر از آستانه، به طور خودکار از فضای Mempool حذف شوند.
مشاهده حجم کلی تراکنشهای در صف انتظار MemPool
در اکثر مرورگرهای بلاکچین بیت کوین مانند Blockhchain.info قسمتی برای مشاهده حجم کلی تراکنشهای در صف انتظار تایید و تغییرات آن در طول زمان وجود دارد. در زمان نگارش این مطلب همانطور که در تصویر زیر می توان دید حجم کل تراکنشهای موجود در MemPool های بیت کوین، حدود ۶ مگابایت است.
دیدگاهتان را بنویسید