Asynchronous چیست؟ بررسی مفهوم غیر هم زمانی و دلایل آن
به صورت کلی هر بلاکچین از معماری خاص خود استفاده میکند تا تراکنشها یا دادهها را تایید و برای اجرا به بلاک موردنظر بفرستد. یکی از همین معماریها که بسیار به مقیاسپذیری بلاکچین کمک میکند، روش غیر همزمان یا Asynchronous است. فناوری بلاکچین ناهمزمان، به دلیل عدم پیروی از توالی تراکنشها؛ به مقیاسپذیری بالایی دست پیدا میکند. در این مقاله به صورت کامل به پاسخ سوال Asynchronous چیست پرداخته و با مزایای آن بیشتر آشنا میشویم.
Asynchronous چیست؟
در علوم کامپیوتر، Asynchronous به وقوع رویدادهایی اشاره دارد که مستقل از برنامه واقعی هستند. رویدادها در یک سیستم ناهمزمان به جای هماهنگسازی بر اساس زمان، بر اساس اولویت فعالیت (تغییرات در سیستم) اجرا میشوند. سیستمهای غیر همزمان برای عملکرد قابل اعتماد، به سیگنالها یا پیامهای خارجی وابسته نیستند.
سیستمهای ناهمزمان معمولاً با استفاده از طراحی مدولار ساخته میشوند. هر ماژول در چنین شبکهای میتواند به طور مستقل عمل کرده، در حالی که همچنان با دیگران تعامل دارد. این اجزای به هم پیوسته در نهایت با هم ترکیب شده تا یک راه حل و سیستم کارآمد تولید کنند.
مفهوم غیر همزمان به فرآیندی اطلاق میشود که در آن دادهها بهجای یک جریان پیوسته، بهطور متوالی عرضه میشوند. به عنوان مثال انجمنهای آنلاین یا ایمیل نمونههای محبوبی هستند که در آن افراد در زمانهای مختلف پیام ارسال کرده و به درستی بر اساس مفهوم غیر همزمانی عمل میکنند.
شبکههای بلاکچین Asynchronous یا نیمه سنکرون به طور گسترده در صنعت کریپتو استفاده میشوند. زیرا شبکهها هیچ بازخوردی در مورد وضعیت دادههایی که ارسال میکنند به نود (گره) نمیدهند و گرهها ممکن است نظرات متفاوتی در مورد فعالیت شبکه داشته باشند. در این نوع بلاکچینها، توان عملیاتی تراکنش افزایش مییابد، زیرا گرهها مجبور نیستند در صف بایستند تا پیامهایشان توسط سایر نودها پردازش شود.
هدف شبکههای نیمه سنکرون، جلوگیری از هرگونه اختلال در وضعیت شبکه است. این اختلالات میتواند باعث بر هم زدن وحدت گرهها شود. این شبکهها قابلیت اطمینان و دسترسی را در اولویت قرار میدهند. با این حال، اگر یک گره تصمیم بگیرد تراکنشی را تایید نکند، ممکن است برخی از تراکنشها تا زمانی که تمام تراکنشهای قبلی تایید نشده باشند، انجام نشوند یا به تعویق بیفتند. لازم به ذکر است یکی از موارد پرکاربرد استفاده از مفهوم غیر همزمانی، صرافی ارز دیجیتال است. زیرا این پلتفرمها معمولا به انجام چندین تراکنش در زمان واحد نیاز دارند و برای تحقق این امر، ملزم به استفاده از روش Asynchronous هستند.
مزایای مفهوم غیر همزمانی
پس از پاسخ سوال Asynchronous چیست، بهتر است با مزایای این مفهوم بیشتر آشنا شویم. بلاکچینهایی که از مفهوم غیر همزمانی استفاده میکنند، شامل مزایایی هستند که در ادامه به آنها میپردازیم.
- افزایش مقیاسپذیری: یکی از مزایای مهم بلاکچین Asynchronous، توانایی آن در مقیاسپذیری با وجود حجم تراکنشهای بالا است. این امر از طریق اشتراکگذاری تراکنشها امکانپذیر میشود؛ به این معنا که به یک بلاکچین اجازه میدهد تراکنشها را به صورت موازی پردازش کرده و توان عملیاتی کلی خود را به میزان قابل توجهی افزایش دهد.
- پردازش سریعتر تراکنشها: فناوری بلاکچین ناهمزمان، تراکنشها را به جای ترتیب متوالی، مستقل از یکدیگر پردازش میکند. این بدین معناست که تراکنشها میتوانند به طور قابل توجهی سریعتر پردازش شوند و برای برنامههایی که نیاز به پردازش فوری دارند مناسب است.
- هزینههای کمتر: مفهوم غیر همزمانی به بلاکچین اجازه میدهد تا تراکنشها را به صورت موازی و نه متوالی پردازش کند. این بدین معناست که برای انجام تعداد معینی تراکنش به قدرت پردازش و هزینه کمتری نیاز است. کاربران نیازی به پرداخت کارمزد اضافی برای انجام تراکنشها در جلوی صف ندارند (همانطور که در روش Outdated Queue بلاکچینهای بیت کوین و اتریوم انجام میشود.)
تفاوت بین مفهوم همزمانی و غیر همزمانی
در دنیای بلاکچین، اصطلاحات “غیر همزمان” و “همزمان” به روشهای مختلف ارتباط و تعامل بین اجزای مختلف شبکه بلاکچین اشاره دارد. در یک سیستم سنکرون یا همزمان، تراکنشها و فرآیندها به صورت فوری انجام میشود و همه شرکتکنندگان در شبکه باید به طور همزمان فعال باشند. سیستمهای سنکرون با ارتباط فوری و مستقیم بین گرهها کار میکنند. در مفهوم Synchronous هر گره باید قبل از انجام عملیات بعدی منتظر پاسخ باشد. این عامل میتواند به ظهور مشکلات بالقوه، به ویژه در شبکههای بزرگ منجر شود و مقیاسپذیری را محدود کند.
در مقابل، یک سیستم غیر همزمان امکان ارتباط مستقل بین گرهها را فراهم میکند. در روش Asynchronous، گرهها قبل از انجام وظایف خود نیازی به دریافت پاسخ از سایر نودها ندارند. سیستمهایی که براساس مفهوم غیرهمزمانی کار میکنند، اغلب مقیاسپذیرتر هستند؛ زیرا میتوانند تعداد بیشتری از تراکنشها را همزمان پردازش کنند. آنها همچنین میتوانند تحمل خطا و پاسخگویی بهتری را ارائه دهند، زیرا به پاسخهای فوری از طرف گرههای شبکه وابسته نیستند.
نکته قابل توجه اینکه مفهوم غیرهمزمانی ممکن است دچار شکاف زمانی ثبت دادهها و پارتیشنبندی شود و این میتواند امنیت بلاکچین را به خطر بیاندازد. به همین خاطر برخی شبکهها به استفاده از روش نیمه همزمان روی آوردهاند که مزایای مفهوم همزمان و غیرهمزمان را همزمان دارا بوده و بخشی از معایب مانند ایجاد شکاف زمانی را رفع میکنند.
در دنیای بلاکچین، این اصطلاحات اغلب برای توصیف فرآیند اعتبارسنجی تراکنشها بین گرههای مختلف استفاده میشود. سیستمهای Synchronous ممکن است برای برنامههای فوریِ خاصی که نیاز به توافق آنی دارند، مناسبتر باشند؛ در حالی که سیستمهای غیر همزمان ممکن است برای مدیریت تعداد زیادی تراکنشها و اطمینان از مقیاسپذیری، کارآمدتر باشند. پلتفرمهای مختلف بلاکچین ممکن است روشهای همزمان یا غیر همزمان را بسته به نیاز و موارد استفاده خاص خود انتخاب کنند.
مثالهایی از مفهوم غیر همزمانی در علوم کامپیوتری
تکامل از سیستمهای همزمان به سیستمهای ناهمزمان را میتوان تقریباً در همه جنبههای علوم کامپیوتر مشاهده کرد. اکثر سیستمها در سالهای اولیه خود به صورت کاملاً همزمان شروع به کار کردند، زیرا پیادهسازی و درک این مدل بسیار آسانتر بود. در برخی مواقع، تحقق مقیاسپذیری بر سادگی فرایندها پیروز میشود و سیستمها برای رشد، ناهمزمان میشوند.
به عنوان مثال، بیشتر سیستمعاملها به عنوان سیستمهای همزمان شروع به کار کردند که تنها میتوانستند یک کار را در یک زمان واحد انجام دهند. ممکن است نامهای تاریخی مانند MS-DOS را به خاطر بیاورید که در ابتدا برای اجرای یک برنامه طراحی شده بودند. این رابط بر اساس یک خط فرمان بود که در آن کاربر تنها پس از تکمیل دستور قبلی، میتوانست یک دستور جدید را تایپ کند.
زمانی که سیستمعاملهای جدیدتر مانند MS Windows منتشر شدند، این روش انجام کارها دیگر کارآمد نبود. در واقع کاربران میخواستند چندین کار را همزمان انجام دهند. بنابراین فرایند انجام تسکها باید تکامل مییافت و ناهمزمان میشد. امروزه، هر سیستمعامل مدرنی، چه برای رایانههای رومیزی مانند مک، لینوکس و ویندوز یا موبایل (iOS و Android)، کاملاً ناهمزمان هستند تا از انجام چند وظیفه پشتیبانی کنند.
مثال خوب دیگر پایگاههای داده است. برنامهنویسان اولین نسل از پایگاههای داده را با این فرض طراحی کردند: «دادهها به اندازه کافی کم هستند تا در یک مکان قرار گیرند.» این امر راه را برای زبانهایی مانند SQL که بسیار قدرتمند و انعطافپذیر هستند هموار کرد. اما، این زبانها تنها با این فرض رشد میکنند که همه دادهها به آسانی در دسترس باشند و به طور همزمان پردازش شوند تا سیستم ثابت و بینقص بماند. همانطور که به ناچار دادهها رشد کردند و دیگر نمیتوانستند در یک مکان قرار بگیرند، شاهد تغییر رویکرد به سمت دادههای بزرگ و NoSQL بودیم. امروزه، معماریهای پایگاه داده مدرن با تاکید زیادی بر اقدامات ناهمزمان طراحی میشوند. به این ترتیب، پردازش میتواند به صورت موازی بر روی دادههای مختلف انجام شود.
تکامل بلاکچینها به نوع غیر همزمان
در سالهای آینده، انتظار میرود که تقاضا برای بلاکچین بسیار افزایش یابد. تعداد کاربران بلاکچین از چند میلیون به میلیاردها نفر خواهد رسید و نرخ تراکنش از دهها تراکنش در ثانیه (اتریوم امروزی) به میلیونها تراکنش در ثانیه افزایش خواهد یافت! تحت این الزامات، پارادایمهای سنتی دیگر کارآمد نخواهند بود.
به عنوان مثال پایگاههای داده سنتی برای ذخیره هر پست، توییت و چت در شبکههای اجتماعی با مشکل مواجه شده و مجبور به مهاجرت به سمت دادههای بزرگ و مفهوم غیر همزمانی شدند. به طور مشابه، بلاکچینها نیز با این مشکلات مواجه خواهند شد و باید به یک الگوی متفاوت و کارآمد تغییر کنند.
بلاکچین The Open Network یا به اختصار TON نمونهای از بلاکچینهای نسل بعدی است. TON یکی از اولین بلاکچینهایی است که به طور کامل از قراردادهای هوشمند ناهمزمان پشتیبانی میکند. در این بلاکچین، هنگامی که قرارداد هوشمند A با قرارداد هوشمند B تعامل میکند، یک پیام غیر همزمان ارسال میشود. این پیام در یک تراکنش جداگانه قرار گرفته و به دادهها اجازه میدهد تا به طور کاملا موازی پردازش شوند. این معماری از یک سیستم متفاوت الهام گرفته شده که امروزه میلیونها تراکنش در ثانیه را برای تقریبا یک میلیارد کاربر پردازش میکند. این سیستم چیزی نیست جز پیامرسان تلگرام.
این مدل که توسط ماشین مجازی تون (TVM) پیادهسازی شده، قراردادهای هوشمند TVM را بخاطر الگوی متفاوت، با قراردادهای هوشمند EVM ناسازگار میکند. بنابراین یک زبان برنامهنویسی جدید به نام FunC برای جایگزینی با زبان سالیدیتی (Solidity) اتریوم ایجاد شده که به توسعهدهندگان این امکان را میدهد تا از این پارادایم جدید به طور موثر استفاده کنند.
مفهوم غیر همزمانی؛ تضمین بقای بلاکچینها
در دنیای امروز که حجم عظیمی از دادهها در ثانیه بین کاربران تبادل میشود، مفهوم غیر همزمانی بیش از هر زمان دیگری اهمیت پیدا کرده است. در واقع سیستمهای کامپیوتری، پایگاههای داده و حتی شبکههای اجتماعی برای تضمین بقای خود به این مفهوم روی آوردهاند. شبکههای بلاکچینی نیز با رشد تعداد کاربران و افزایش حجم دادهها، برای تضمین پاسخگویی به کاربران و بقای خود، باید به سمت مفهوم غیر همزمانی کوچ کنند. در این مقاله به صورت کامل به پرسش Asynchronous چیست پاسخ دادیم، مزایای این سیستم را برشمردیم و با تفاوت مفاهیم غیر همزمانی و همزمانی آشنا شدیم.