بلاکچین‌ها و چالش مقیاس پذیری

مفهوم چالش مثلث بلاکچین اولین بار توسط ویتالیک بوترین،موسس اصلی اتریوم مطرح شد. این مفهوم به طور کلی بیان می کند که بلاکچین ها به طور ذاتی در معماری و ماهیت خود دارای محدودیت هایی هستند که از سه قابلیت غیرمتمرکز بودن، مقیاس پذیری و امنیت تنها دو مورد از آن ها قابل دستیابی در حد مطلوب است و در صورت دستیابی به دو عدد از این سه مقوله،‌‌ سومین قابلیت ناخواسته در سطح ضعیفتری قرار خواهد گرفت. این مفهوم و تبعات آن موافقان و مخالفان بسیاری دارد و هنوز هم موضوع صحبت ها،تحقیقات و حتی درگیری های جدی در جوامع رمزارز است. در این مطلب من قصد دارم تا به مبحث مقیاس پذیری، راه‌های انجام و چالش‌های بر سر راه آن یک نگاه اجمالی داشته باشم.چالش مثلث بلاکچین,طبق فرضیه این مفهوم ما تنها می‌توانیم دو ضلع از سه ضلع این مثلث را در سطحی مطلوب داشته باشیممطالعه بیشتر : چالش مثلث بلاکچین چیست ؟چرا مفهوم مقیاس پذیری برای ما اهمیت دارد؟برای درک بهتر مفهوم مقیاس پذیری ابتدا باید با نحوه کار بلاکچین‌ها اشنا بشویم. میتوان گفت تمامی بلاکچین‌ها در نهایت بلاک‌هایی از تراکنش‌ها و دیگر اطلاعات مهم برای ذخیره سازی امن تراکنش‌ها هستند که ماینرها یا دیگر واحدهای تامین کننده امنیت(مانند گره‌های تایید‌کننده ) در هر شبکه برای نهایی شدن هر تراکنش باید صحت آن و تطبیق آن با اطلاعات قبلی را تایید کنند. از انجایی که هر بلاکچین با توجه به متغیرها و محدودیت‌هایی که در ادامه از آنها سخن خواهیم گفت، توانایی محدودی برای پردازش تراکنش‌ها را دارد، برای همین مقوله مقیاس پذیری و توانایی پشتیبانی و خدمات رسانی یک بلاک‌چین به افراد بیشتر در عین حفظ امنیت و غیرمتمرکز بودن آن معیار مهمی است که امروزه در صنعت رمزارزها به یک چالش جدی تبدیل شده است. زیرا اگر بنا باشد رمزارز‌‌‌ها به عنوان یک تکنولوژی پرداخت و ذخیره ارزش جهانی در بلندمدت ماندگار و پذیرفته شوند باید قادر باشند خدمات فعلی سیستم های بانکی و پرداخت حال حاضر دنیا را با مقیاس، کیفیت و سادگی بیشتر یا مشابه آنها انجام دهند. معمولا برای سنجش رسیدن مقیاس پذیری به حد مطلوب آن را با سرویس پرداخت Visa مقایسه میکنند که به طور متوسط 65 هزار تراکنش در ثانیه را پردازش می‌کند.مطالعه بیشتر : چالش‌های مقیاس پذیری بلاکچینمقایسه قابلیت پردازش تراکنش بر ثانیه تعدادی از بلاک‌چین ها با Visaاما چه معیاری برای سنجش مقیاس پذیری یک بلاکچین وجود دارد؟همین ابتدا باید گفت که معیار واحد و مشخصی برای اندازه گیری مقیاس پذیری پروژه‌های بلاک‌چین وجود ندارد اما دوتا از رایج‌ترین معیارها برای سنجش مقیاس پذیری تعداد تراکنش بر ثانیه ( TPS) و سرعت نهایی شدن تراکنش (Finality) هستند.قبل از اشنایی با این معیارهای سنجش مقیاس پذیری بهتر است با دو مفهوم حیاتی در زمینه طراحی و مقیاس پذیری بلاکچین ها اشنا شویم.زمان تشکیل بلاک(Block Time) در هر بلاکچین زمان مشخصی برای شکل گیری و توافق و تایید اعضای شبکه در مورد یک بلاک وجود دارد که به آن بلاک‌تایم گفته می شود. برای مثال بلاک‌تایم بیت‌کوین به صورت متوسط حدود ده دقیقه است.اندازه بلاک (Block Size) به جز بعضی از بلاکچین‌های خاص, تقریبا تمام بلاکچین‌ها محدودیت اندازه مشخصی دارند که تعداد تراکنش‌های قابل گنجایش در هر بلاک را تعیین می‌کند. به عنوان مثال محدودیت اندازه بلاک در بیت‌کوین یک مگابایت و اندازه هر تراکنش حدودا 250 بایت است که با تقسیم این مقادیر به هم به این نتیجه می‌رسیم که هر بلاک بیت‌کوین گنجایش حدود 4000 تراکنش را دارد.تراکنش بر ثانیه (Transactions Per Second) این معیار عددی است که بیانگر نهایت تعداد تراکنش‌هایی است که یک بلاک‌چین قادر به پردازش آن در ثانیه است. معمولا این عدد از تقسیم تراکنش‌های موجود در یک بلاک به واحد ثانیه به دست می اید. بیت‌کوین با داشتن گنجایش 4000 تراکنش در یک بلاک و بلاک‌تایم حدود 10 دقیقه(600 ثانیه) از TPS‌‌ ای در حدود 7 یا به عبارت دیگر 7 تراکنش در ثانیه برخوردار است.در اینجا باید اشاره شود که معمولا TPS عنوان شده در تبلیغات یک پروژه بلاکچینی اشاره به تراکنش‌های ساده دارد و نه قراردادهای هوشمند و تراکنش‌های پیچیده‌تر. در مورد اینگونه تراکنش‌ها معمولا این رقم بسیار پایین‌تر و نهایتا دو تا سه‌ رقمی است.مقایسه تعدادی از شناخته شده‌ترین بلاک‌چین ها ،به ردیف های TPS و Block Time دقت کنید.زمان نهایی شدن تراکنش (Finality) بیانگر میانگین زمان پس از ارسال تراکنش است که ارسال کننده تراکنش می تواند مطمئن باشد پس از آن تراکنش او قابل برگشت یا کنسل شدن نیست و تراکنش او نهایی شده است.مقایسه زمان نهایی شدن تراکنش تعدادی از پروژه هاراه‌های افزایش مقیاس پذیریافزایش اندازه بلاک ساده ترین راه افزایش مقیاس پذیری بالا بردن پارامترهای محدود کننده است. اما بالا بردن این پارامترها تبعاتی دارد. می‌توان اندازه بلاک را بالا برد اما بالا بردن اندازه بلاک در شرایط خاصی باعث میشود بعضی از ماینرها/استخرهای ماینینگ نسبت به بقیه، دارای برتری غیرعادلانه ای شوند. در بعضی موارد ثابت نگه داشتن الگوریتم شبکه و افزایش اندازه بلاک میتواند شبکه را برای پردازش و تایید حجم زیاد درخواست ها با مشکل مواجه کند. بالا بردن اندازه بلاک در بعضی موارد می‌تواند باعث افزایش بسیار زیاد حجم کل بلاکچین شود که در نتیجه این اتفاق باعث می‌شود تنها افراد و سازمان‌های خاصی با منابع سخت افزاری خاص قادر به ذخیره کل تاریخ بلاکچین باشند این اتفاق در نهایت باعث از بین رفتن ساختار غیرمتمرکز شبکه میشود مبحث افزایش اندازه بلاک از ابتدا در جامعه رمزارز ها بخصوص بیت‌کوین موجب اختلاف نظر و بحث بوده است و در مقاطعی این موضوع باعث چنددستگی و اختلاف شدید این جامعه شده است که در نهایت منجر به شکل گیری رمزارز بیت‌کوین کش(Bitcoin Cash) شد.البته بالا بردن حجم بلاک با فرض ثابت بودن تمام پارامترهای دیگر باعث انتقال حجم بیشتر اطلاعات در میان ماینر‌ها و شبکه و کندتر شدن پروسه تایید بلاک‌‌‌‌ها در شبکه میشود که ممکن است نهایتا با وجود انجام این تغییرات بهبودی در مقیاس پذیری بلاکچین حاصل نشود. برای همین انتخاب و بهینه‌سازی اندازه بلاک یکی از مهمترین انتخاب‌ها در طراحی بلاکچین است.برای مطالعه بیشتر : جنگ اندازه بلاک : ضربه اول-فصل یکمقایسه افزایش حجم بلاکچین های بیتکوین و اتریوم در طول زمانکاهش زمان بلاک یکی دیگر از راه‌های افزایش مقیاس پذیری کاهش زمان بلاک است. این عمل میتواند با افزایش سرعت نهایی شدن تراکنش‌ها و همچنین بالا بردن تعداد کلی تراکنش‌های پردازش شده در واحد زمان مقیاس پذیری کلی شبکه را افزایش دهد، اما کاهش زمان بلاک نیز تبعاتی دارد.برای کاهش زمان بلاک به صورت عملی دو راه کلی وجود دارد: یا باید تعداد تایید کننده‌های شبکه را محدود کنیم یا با تعداد تایید کننده‌های نامحدود اجازه دهیم هر بلاک پس از تایید درصد پایینی از تایید کننده‌ها نهایی شود. در حالت اول به دلیل تعداد محدود تایید کننده‌ها به غیرمتمرکز بودن شبکه لطمه میخورد. در حالت دوم نیز به دلیل پایین بودن تعداد تایید های مورد نیاز امکان انجام حملات مخرب روی شبکه ساده‌تر میشود. همچنین با پایین اوردن زمان بلاک نیازهای سخت افزاری و پهنای باند مورد نیاز تایید کننده‌های شبکه بالا می رود و این موضوع خود نیز میتواند به مرور باعث متمرکز شدن شبکه شود.البته در مورد مشکل فضای ذخیره سازی امکان ذخیره سابقه تراکنش‌ها بر روی پروتکل‌های غیرمتمرکز ذخیره سازی مانند Arweave وجود دارد و در حال حاضر تاریخچه کل‌ تراکنش‌های بلاکچین سولانا بر روی آن ذخیره میشود. اما دیگر مشکلات منجر به متمرکز شدن بلاکچین همچنان در جای خود باقیست و در حال حاضر بلاکچین سولانا با وجود مقیاس پذیری و سرعت تراکنش‌ بسیار بالا تنها دارای حدود 1500 تایید‌کننده است.برای مطالعه بیشتر : در مورد زمان بلاک‌های سریع و کندپس به جز تغییر دادن پارامترها و قبول تبعات آن چه راه‌هایی برای افزایش مقیاس پذیری وجود دارد؟در تقابل با مبحث چالش مثلث بلاکچین طراحان به دو دسته بسیار کلی تقسیم می‌شوند :دسته اول طراحانی هستند که این چالش را با متعادل کردن و تغییر دادن پارامتر های مختلف و انتخاب الگوریتم و طراحی مناسب قابل حل می دانند.و دسته دوم دسته ای هستند که با قبول این مشکل به عنوان چالشی بنیادی و سخت، به نوعی سعی در دور زدن مشکل یا کاهش شدت آن دارند.بیشتر راه های حل هایی که در ادامه به انها اشاره خواهم کرد در دسته دوم جای میگیرند.شاردینگ(Sharding) یکی از راه حل‌های مشکل مقیاس پذیری شاردینگ است. شاردینگ به طور خلاصه بلاکچین را به بخش‌های کوچکتری به اسم شارد تقسیم میکند، این تقسیم بندی اجازه میدهد هر بخش از بلاکچین تایید کننده های خود را داشته باشد که اینکار نهایتا باعث ارتقای کلی مقیاس پذیری و توان پردازشی برای تراکنش های بیشتر میشود،یکی از مشکلات شاردینگ تخصیص تایید کننده‌های محدود به هر شارد و آسانتر شدن تصرف شارد‌‌ها با منابع کمتر توسط بازیگران مخرب است، این مشکل توسط روشی به نام تخصیص تصادفی(Random Assignment) که در هر بلاک یک شارد تصادفی را به تایید کننده‌های تصادفی اختصاص میدهد و این راه انباشت منابع برای حمله به یک شارد را بسیار سخت میکند، قابل حل است. بلاک‌چین‌های Near ،Harmony و اتریوم ورژن دو (در صورت پیاده‌سازی کامل) از جمله بلاک‌چین‌هایی هستند که از شاردینگ استفاده می‌کنند.یک نمونه ساده از شاردینگلایه دوم‌ها(Layer 2) لایه دوم یک عبارت کلی برای دسته وسیعی از روش‌های افزایش مقیاس پذیری مانند Optimistic Rollups، Zk Rollups ،Plasma، State channels و ... است نقطه مشترک این روشها وابستگی امنیت اکثریت آنها به بلاکچین اصلی و پردازش تراکنش‌ها خارج از شبکه و در نهایت ثبت انها در بلاکچین اصلی است که این کار بخش بزرگی از فشار تراکنش‌های متعدد را از روی شبکه اصلی بر میدارد. اربیتروم بر روی اتریوم و شبکه لایتنینگ بیتکوین نمونه هایی از لایه دوم هستند.یک نگاه کلی به بعضی از لایه دوم های اتریوم بلاکچین جانبی(Sidechain)بلاکچین های جانبی نیز یکی از راه‌های افزایش مقیاس پذیری در بلاکچین ها هستند که گاها به عنوان بخشی از لایه دوم ها در نظر گرفته میشوند اما تفاوت عمده آنها عملکرد موازی (و نه زیرمجموعه) نسبت به بلاکچین اصلی و ازادی عمل بیشتر در ساختار، امنیت و الگوریتم های اجماع است. مجموعه Skale نمونه ای از بلاکچین های جانبی است. (در اینجا باید اشاره کرد در بسیاری از مطالب و مقاله های انلاین عبارات "Plasma" و "Sidechain" به جای هم و با تعاریف متناقض با هم آورده شده است که میتواند برای مخاطب گیج کننده باشد،تفاوت بلاکچین های جانبی یا سایدچین با پلاسما در مستقل بودن ساختار و امنیت سایدچین هاست)مطالعه بیشتر :تفاوت پلاسما و سایدچین‌هایک نمونه فرضی از تقسیم وظایف در میان سایدچین های مختلفپاراچین‌ها(Parachain)یکی دیگر از راه‌های مقیاس پذیری اجرای تعداد زیادی زنجیره موازی در کنار هم یا پاراچین(Parachain) است. این پاراچین‌ها که به صورت موازی در کنارهم و با استفاده از حمایت شبکه اصلی اجرا می‌شوند، قابلیت ارتباط با هم و اجرای تراکنش‌های مستقل را دارند. از دیگر مزیت‌های این ساختار قابلیت شخصی سازی هر بلاکچین توسط توسعه دهندگان آن است. در واقع در این سیستم به جای یک بلاکچین اصلی ده‌ها بلاکچین اصلی موازی با قابلیت ارتباط با هم وجود دارد که توانایی مقیاس پذیری شبکه را به صورت تصاعدی بالا می برد. پولکادات شبکه‌ای با قابلیت اجرای ده‌ها پاراچین موازی است.شمای کلی از نحوه کار پاراچین های پولکاداتتغییرات بنیادی در معماری شبکه این دسته از تغییرات به قدری وسیع و گسترده است که خود نیازمند چندین مقاله مستقل است. اما به طور کلی تغییراتی مانند استفاده از الگوریتم‌های اجماع متفاوت به جای الگوریتم اثبات کار(Proof of work)، مانند اثبات سهام(Proof of stake)و زیرمجموعه های متعدد آن و استفاده از معماری های متفاوت برای ذخیره سازی و پردازش تراکنش‌ها به جای بلاکچین مانند DAG(Directed Acyclic Graph) می‌‌تواند در شرایطی باعث بهبود کارکرد شبکه بشود اما اگر پارامترهای دیگر ما ثابت باشد تغییر معماری نیز به تنهایی به طرز معجزه آسایی مشکلات مقیاس پذیری را حل نمی‌کند. معمولا پیاده سازی این تغییرات تبعاتی برای امنیت یا غیرمتمرکز بودن شبکه دارد برای مثال Fantom که از معماری DAG استفاده می‌کند با وجود دستیابی به مقیاس‌پذیری مطلوب به دلیل داشتن تعداد تاییدکننده‌های بسیار محدود از مشکل متمرکز بودن شدید رنج می‌برد.یک مقایسه بصری از تفاوت میان بلاکچین و DAGجمع‌ بندیفارغ از اینکه در نهایت مقیاس پذیری بلاکچین‌ها چه مسیری را طی می کند، نباید انکار کرد بلاکچین‌هایی که خصوصیات اولیه رمزارزها مانند غیرمتمرکز بودن را حفظ کرده‌اند هنوز مسیر طولانی‌ای برای دستیابی به مقیاس پذیری در سطح سیستم‌های مالی فعلی در پیش دارند، حتی شبکه‌هایی که با فدا کردن نسبی غیرمتمرکز بودن به سطح مطلوبی از مقیاس پذیری رسیده‌اند، بخش اعظم تایید‌کننده‌های خود را به جای استفاده از سرور‌های مستقل با استفاده از سرویس‌های ابری عظیم و متمرکز مانند سرویس‌های‌ ابری آمازون تامین می کنند. قطعا بخشی از مشکل مقیاس پذیری با طراحی سیستم‌های بهتر و طراحی‌های هوشمندانه‌تر قابل حل است اما بخش دیگر(و بزرگتر آن) نیازمند پیشرفت کلی تکنولوژی و اینترنت و دسترسی به سخت‌افزار و زیرساخت اینترنتی بهتر برای عموم مردم در تمام جهان است.مطالب مفید : میزان وابستگی بعضی از بلاکچین های شاخص به سرویس های ابریمقایسه اسیب پذیری : اثبات کار در مقابل اثبات سهام معنی واقعی مقیاس پذیری در بلاکچین چیست؟زمان تشکیل بلاکیک معرفی کوتاه در مورد DAGبهترین لایه دوم های اتریوم