ممپول (Mempool) چیست؟ همهچیز درباره استخر تراکنش در بلاکچین
ممپول یا استخر تراکنش فضاییست برای انتظار تراکنشهایی که هنوز در بلاکچین تایید نشدهاند. این تراکنشها پیش از آنکه به بلاکچین اضافه شوند، در ممپول منتظر تایید و اضافه شدن به یک بلاک هستند. به عبارت سادهتر، ممپول اتاق انتظار تایید تراکنشهاست. در این مقاله جزئیات بیشتری درباره این اتاق انتظار میخوانید.
ممپول (Mempool) که به آن استخر تراکنش هم گفته میشود، بهنوعی اتاق انتظار تراکنشهای تأیید نشده در بلاکچین است! سازوکار شبکه بلاکچین از این قرار است که برای پردازش یک تراکنش و تأیید نهایی آن، نودها باید وارد عمل شوند، بر اساس مکانیسم اجماعی که در شبکه تعبیه شده است تراکنش را تأیید کرده و یک بلاکِ جدید به شبکه اضافه کنند. طی این زمان، که در حقیقت مدتزمان انتظاری است که شما از ایجاد یک تراکشن جدید یا ارسال آن به شبکه تا انجام شدندش سپری میکنید، تراکنشها وارد یک فضای ویژه انتظار میشوند که ممپول نام دارد.
برای درک بهتر اینکه ممپول چیست و چگونه عمل میکند، بدونشک قبل از هرچیز لازم است ابتدا در مورد نحوه عملکرد شبکههای بلاکچینی و سازوکار آنها اطلاعات کسب کنیم. سپس به ویژگیها و نحوه عملکرد ممپول و ماهیت آنهم خواهیم پرداخت. با ما همراه باشید.
توضیحی کلی درمورد نحوه عملکرد بلاکچین
قبل از پرداختن به این موضوع که ممپول چیست، بیایید ابتدا درخصوص نحوه عملکرد یک بلاکچین صحبت کنیم. از آنجا که شبکه بیت کوین (Bitcoin)، اولین شبکه بلاکچینی ایجادشده برای یک ارز دیجیتال است، بد نیست اساس کارمان را روی همین شبکه قرار دهیم که بزرگترین و ارزشمندترین توکن بومی دنیا را هم دارد.
زمانی که شما، بهعنوان یک نود یا کاربر یک تراکنش جدید را در شبکه بیت کوین ایجاد کرده و به اصطلاح آن را به شبکه ارسال میکنید، اطلاعات این تراکنش به شبکهای غیرمتمرکز، توزیعشده و همتابههمتا از نودها ارسال میشود. همانطور که میدانید، نودها همان کاربران یا در اصل دستگاههایی هستند که به شبکه متصلاند.
هریک از نودها، این قابلیت را دارند که با تأیید این تراکنش جدید، یک بلاکِ جدید به شبکه بلاکچین اضافه کرده و در ازای آن، توکن پاداش دریافت کنند. همانکاری که به آن استخراج یا ماینینگ (Mining) گفته میشود.
شبکه بلاکچین، برای تأیید هر تراکنش و ایجاد بلاک جدید، سازوکار جالبی را در نظر گرفته است:
- دادههای تراکنش در اختیار نودها قرار میگیرد.
- نودها برای تأیید تراکنش موردنظر یک معادله ریاضی را حل میکنند.
- با حل معادله، تراکنش تأیید شده و بلاک جدید ایجاد میشود.
- با ایجاد بلاک جدید، تعدادی توکن جدید تولید میشوند.
- توکنهای جدید در اختیار نودهای برنده قرار میگیرد.
در واقع، حلکردن معادله ریاضی که حاصل فعالیت تابع هش (Hash Function) بوده است، هم باعث میشود تراکنش شما تأیید شود، هم باعث اضافهشدن یک بلاک جدید به زنجیره و بزرگتر شدن آن میشود، هم منجر به تولدی بیت کوینهای جدید شده و هم منجر به پاداشگرفتن نودهای ماینر میشود (که معادله را زودتر حل کردهاند)!
این فرایند، که به آن فرایند اعتبارسنجی تراکنشها گفته میشود و هدف از آن نیز بررسی دابل اسپندینگ (Double Spending) یا دوبار خرج کردن توکنها است، در مورد همه تراکنشها صورت میگیرد. اما در ادامه خواهیم دید که وظیفه ممپول در این فرایند چیست و چگونه عمل میکند؟!
ممپول (Mempool) چیست؟
در بخش اشاره کردیم که برای تأیید یک تراکنش که توسط یکی از کاربران به شبکه بلاکچین ارسال شده است، نودها وارد عمل میشوند و آن را تأیید میکنند. اما مگر تعداد تراکنشهایی که در یک شبکه بلاکچینی بزرگ مثل بیت کوین به شبکه ارسال میشوند یکی دوتاست که بخواهد به همین سادگی تأیید شده و به ثبت برسد؟!
روزانه چندین و چند هزار تراکنش مختلف از طرف طیف گستردهای از کاربران شبکه بیت کوین به این بلاچین ارسال میشوند. در نتیجه، باید فضایی وجود داشته باشد که این تراکنشها را در طول فرایند تأییدشان نگهداری کند!
این فضا، همان ممپول (Mempool) یا استخر تراکنش است ممپول از ترکیب دو کلمه زیر ساخته شده است:
- حافظه (Memory)
- استخر (Pool)
درواقع، ما با استخری مواجه هستیم که نگهدارنده یا حافظه تراکنشها در شبکه بلاکچین است. هر تراکنشی که ایجاد میشود، یک ممپول هم برایش ساخته میشود و تراکنش و اطلاعات آن در داخل این استخر قرار خواهند داشت تا زمانی که تأیید نهایی شده و به ثبت برسند.
این ممپولها در حقیقت بخشی از نودهای شبکه هستند. اگرچه سازوکار ممپول از همان نخست، در شبکه بیت کوین نیز وجود داشته اما اولین بار، این اصطلاحِ ممپول توسط پروژه اتریوم مطرح شد. از آن پس، معمولاً برای فضایِ ذخیرهسازیِ تراکنشهای تأیید نشده از ممپول استفاده میشود، هرچند که ممکن است در برخی پروژهها نیز تیم توسعهدهنده ترجیح دهد از واژه استخر تراکنش استفاده کند.
نحوه عملکرد ممپول چگونه است؟
از آنجا که حجم تراکنشهای ارسالی به شبکه بسیار بالا است و فرایند تأیید آنها نیز طولانی، پیچیده و زمانبر است، ممپول به شبکه بلاکچین کمک میکند تا تراکنشها و اطلاعات آنها را بهطور موقت ذخیرهسازی کرده و پس از تأیید، حذف کند.
به محض اینکه شما، بهعنوان یک کاربر تراکنش جدیدی را به شبکه بلاکچینی-مثل همان بلاکچین بیت کوین خودمان-ارسال میکنید، یک ممپول برای آن ایجاد شده، دادههای تراکنش در داخل آن ذخیرهسازی میشوند. اکنون ماینرها قابلیت این را دارند که سراغ این ممپول آمده و تراکنش داخل آن را بررسی و در صورت نداشتن مشکل تأیید کنند.
البته که این شکل سادهشدهای از نحوه عملکرد ممپولها است. درواقع، حجم کار بسیار بالاتر از یکی دوتا تراکنش است و ممپولها تا جایی که ظرفیت داشته باشند تراکنشهای ارسالی را در خود جای میدهند.
وقتی حجم تراکنشها پایینتر است، ممپولها هم خلوتتر هستند و در نتیجه فرایند تأیید تراکنشها سریعتر خواهد بود. با افزایش تراکنشها، ممپولها هم شلوغتر شده و ترافیک بیشتر میشود و درنتیجه امکان دارد تراکنش شما مدتزمان بیشتری را در ممپول بماند تا اینکه نوبت به تأییدش رسیده و ثبت شود.
این درست همان زمانی است که شما در ساعات ازدحام شبکه یک تراکنش را انجام میدهید اما تأیید نمیشود، رد هم نمیشود و نمیدانید که باید چکار کنید و قضیه از چه قرار است؟! اصلاً نباید نگران شوید… جای تراکنشتان در ممپول امن است و منتظر تأیید از سوی نودهاست!
خلاصه که وقتی ممپولها پر از تراکنش هستند، نودها به سراغ آنها رفته و ابتدا تراکنشهای کارمزد بالا و سپس کارمزد پایینها را پردازش و تأیید میکنند. در نهایت، هر تراکنشی که تأیید میشود، ثبت شده و بلاک جدید مربوط به آن ایجاد شده، اطلاعات آن از ممپول حذف شده و پاداش ماینرها نیز پرداخت میشود و سپس تراکنش بعدی و بعدی…
اندازه ممپول چقدر است؟
نکتهای که وجود دارد این است که اندازه ممپولها در هر شبکه بلاکچینی ثابت و استاندارد است. این ابعاد استاندارد در حالت نرمال معادل ۳۰۰ مگابایت است.
طبیعتاً زمانی که از ظرفیت یک ممپول مقدار یادی باقی است، سریعتر میتواند تراکنشها را تأیید کند و برعکس، زمانی که ممپول ظرفیتی ندارد و اصطلاحاً پر شده، مدتزمان بیشتری برای تأیید تراکنشهای داخل آن نیاز خواهد بود. به همینخاطر است که نودهایی که ممپولشان دارای ظرفیت بیشتری است، سریعتر تراکنشهای قبلی را پاک میکنند!
این سازوکار، یکی از عواملی است که میتواند در شبکههای بلاکچینی مورد سوءاستفاده قرار گرفته و دردسرساز شود! در ادامه، در این باره بیشتر صحبت میکنیم.
امنیت ممپول چگونه تأمین میشود؟
در بخش قبل اشاره کردیم که وقتی ازدحام در یک ممپول بیشتر باشد، پردازش تراکنشها در آن با مشکل مواجه شده و به سرعت پایینتری صورت میگیرد. پس طبیعی است که در حملات اسپم و سیل تراکنشها، حملات انکار سرویس (DoS)، چکشخواری تراکنشها (Transaction Malleability) وغیره، خرابکارها سعی کنند یک ممپول را بیش از حد بارگذاری کرده و مانع از پردازش تراکنشهای قانونی در آن شوند!
برای جلوگیری از چنین حملاتی، نودها قابلیت آن را دارند که دفاع از شبکه و حفظ امنیت ممپول اقدامات ضدهرزنامه یا آنتیاسپم انجام دهند. اقداماتی مثل:
- فیلتر کردن تراکنشها در بدو ورود
- محدود کردن ریت تراکنشهای ورودی در ثانیه
- قراردادن یک گلوگاه (Throttling) برای ورود تراکنشها به ممپول
- پیادهسازی مکانیسمهای تخلیه مختلف برای حذف تراکنشهای قدیمیتر
- بررسی و اعتبارسنجی اولیه تراکنشها در بدو ورود به ممپول و حذف تراکنشهای رد شده و …
چرا تراکنش من در ممپول گیر کرده است؟!
بسیار خوب! تا این بخش از مقاله تقریباً هرآنچه که لازم بود را در مورد چیستی ممپول و نحوه عملکرد و حفاظت از آن یاد گرفتیم. اما بهعنوان یک کاربر، ممکن است این سوال را پس از ارسال یک تراکنش داشته باشید که چرا تراکنش من هنوز در ممپول باقی مانده است؟!
اتفاقاتی که ممکن است افتاده باشند از قرارِ زیر هستند:
- شبکه با ازدحام روبهرو است – در این حالت تقریباً کاری از دستتان برنمیآید جز اینکه کارمزد بیشتری را برای پردازش تراکنش پرداخت کنید تا نودها زودتر به آن ترتیب اثر دهند!
- کارمزد مشخصشده خیلی پایین است – این نکته در مدنظر داشته باشید که اگر کارمزد یک تراکنش را خیلی پایین گرفته باشید، نودها هیچ اولویتی برای تراکنشتان قائل نخواهند بود و احتمالاً خیلی باید در صف بمانید!
- نرخ هش کاهش یافته است – در حالت سوم نیز نرخ هش کاهش یافته است که باز هم کاری از شما ساخته نیست و عملاً شبکه نودها توان محاسباتی لازم برای پردازش تراکنشها را (حداقل فعلاً) ندارند.
اما سوال بعدی این است که اگر تعلیق تراکنشم در ممپول بیش از حد طول بکشد، چه کار باید انجام دهم؟ چطور میتوانم از شر این استرس و نگرانی و انتظار خلاص شوم؟!
چگونه تراکنش معلق را از ممپول خارج کنم؟
برای اینکه تراکنشتان را از ممپول خارج کنید، چند راهکار ساده وجود دارد که البته همه آنها در همه شرایط عملی نخواهند بود. باید ببینید کدامیک عملی هستند و بیشتر به کارتان میآیند و سپس انجامش دهید:
- تراکنشهای خود را در بلاکچین لغو کنید
- با تغییر پلتفرم یا کیف پول، سرعت تراکنشها را افزایش دهید
- کمی دندان روی جگر بکذارید و صبر کنید تا تراکنش خودش تأیید شده و خارج شود
- اگر نمیتوانید زمان بیشتری را صرف کنید، کارمزد تراکنش را افزایش دهید تا نودها سریعتر پردازش کنند
جمعبندی
ممپول (Mempool) که به آن استخر تراکنش هم گفته میشود، بهنوعی اتاق انتظار تراکنشهای تأیید نشده در بلاکچین است! سازوکار شبکه بلاکچین از این قرار است که برای پردازش یک تراکنش و تأیید نهایی آن، نودها باید وارد عمل شوند، بر اساس مکانیسم اجماعی که در شبکه تعبیه شده است تراکنش را تأیید کرده و یک بلاکِ جدید به شبکه اضافه کنند.
طی این زمان، که در حقیقت مدتزمان انتظاری است که شما از ایجاد یک تراکشن جدید یا ارسال آن به شبکه تا انجام شدندش سپری میکنید، تراکنشها وارد یک فضای ویژه انتظار میشوند که ممپول نام دارد. ممپول از ترکیب دو کلمه زیر ساخته شده است:
- حافظه (Memory)
- استخر (Pool)
درواقع، ما با استخری مواجه هستیم که نگهدارنده یا حافظه تراکنشها در شبکه بلاکچین است. نحوه عملکرد شبکههای بلاکچینی، ماهیت و نحوه عملکرد ممپول و سایر نکات و جزئیاتی که لازم درخصوص آن بدانید را به تفصیل در متن مقاله توضیح دادهایم.