با پیدایش بیت کوین، دیدگاه بسیاری از افراد به ارزش بلاک چین تغییر کرد. این فناوری به یکی از هیجانانگیزترین پیشرفتهای فنی قرن بیست و یکم تبدیل شده است. هر چه بلاک چین شناختهتر شد، افراد بیشتری برای زیرساخت پروژههای خود از آن استفاده کردند.
بلاک چین مانند ظهور اینترنت در دهههای 80 و 90 میلادی است. در آن زمان اینترنت پیشگام ارتباطات آنلاین بود و بلاک چین امروزه راه جدیدی برای افزایش دارایی براساس شبکههای داده و داراییهای دیجیتالی ایجاد میکند.
درواقع این شبکهها شامل محیط فناوری غیرمتمرکز خود هستند که بهمنظور ارائه خدمات دفتر کل و قرارداد هوشمند به اپلیکیشنهای غیرمتمرکز (dApps) شناخته میشوند. آنها برای تسهیل برنامههای خود از اتریوم استفاده میکنند. هدف اتریوم ایجاد رایانه جهانی برای اجرا، رشد و گسترش اپلیکیشنهای غیرمتمرکز است.
شبکه اتریوم درصورتی میتواند به این هدف دست یابد که حجم زیادی از دادهها را در سیستم خود ذخیره و نگهداری کند. البته این کار در حال حاضر امکانپذیر نیست، اما باز هم غیرممکن، یعنی غیرممکن.
شاردینگ چیست؟ (Sharding)
از سوی دیگر، یکی از چالشهایی که از ابتدای ظهور بلاک چین سرنوشت توسعههای آینده را تهدید میکرد، نبود مقیاسپذیری بود. توسعهدهندگانی که تلاش میکردند مشکل مقیاسپذیری را حل کنند، معمولاً به راهکارهایی دست پیدا میکردند که در تضاد با تمرکززدایی و تأمین امنیت شبکه بود.
در این راستا، تلاشهای زیادی صورت گرفت و راهحلهای متنوعی ارائه شد تا درنهایت روشهایی به نام شاردینگ و لایتنینگ توانستند توجه بخش زیادی از فعالان حوزه ارزها را بهسوی خود جلب کنند.
درحقیقت Sharding میتواند کلید اصلی مقیاسپذیری بلاک چین باشد؛ درحالیکه بحث حفظ کردن مشخصههای حریم خصوصی و امنیت که فناوری دفتر کل توزیعشده را میسازد، داغ است.
با وجود خوبیهایی که شاردینگ دارد، هنوز مشکلها و چالشهایی وجود دارد که باید به آنها توجه کرد؛ از اینرو در این مطلب قصد داریم تا به مقوله Sharding بپردازیم و تمامی زوایا و جوانب آن را بررسی کنیم.
شاردینگ پایگاه داده (Database Sharding)
Sharding نوعی تقسیمبندی یا خردکردن شبکه است که با عنوان طبقهبندی افقی (Horizontal Partitioning) نیز شناخته میشود. این فرایند شامل خردکردن یک پایگاه داده بسیار عظیم به پایگاههای داده کوچکتر و بخشهایی با قابلیت مدیریت بیشتر است که ایده بهبود عملکرد و کاهش مدتزمان پاسخدهی به درخواستها را در خود دارد.
Sharding یک مفهوم جدید نیست و حداقل از دهه 90 میلادی تاکنون در مدیریت پایگاه دادههای متمرکز و سنتی حضور داشته است. این اصطلاح توسط یکی از اولین بازیهای نقشآفرینی آنلاین بزرگ چندنفره به نام Ultimate Online محبوب شد که در آن توسعهدهندگان بازیکنان را در سرورهای گوناگون تقسیمبندی کردند تا مشکل ترافیک حل شود.
در کسب و کارها، یکی از مثالهای رایج از شاردینگ یک پایگاه داده بزرگ، شکستن پایگاه داده مشتریان به مناطق جغرافیایی است. در این حالت، مشتریان حاضر در مناطق جغرافیایی یکسان گروهبندی و در سرورهای منحصربهفرد جای داده میشوند. بهطورکلی، پیش از تصمیمگیری بهمنظور پارتیشنبندی پایگاه داده خود، بهتر است دیگر گزینهها را بررسی کنیم؛ بهطوریکه برخی بهبودهایی که میتوانیم انجام دهیم عبارتاند از:
مجزا سازی سرور اپلیکیشن از سرور پایگاه داده
اگر یک اپلیکیشن بهاصطلاح Monolithic داشته باشیم که تمامی اجزای آن روی تنها یک سرور است، شاید بتوان با انتقال پایگاه داده به یک سرور مجزا عملکرد آن را بهبود بخشید؛ بهطوریکه با دنبالکردن این استراتژی میتوان به Vertical Scaling دست زد.
استفاده از ساز و کارهای کیچ (Cache) مطلوب
چنانچه فراخوانی دادهها در اپلیکیشن ما بیش از ثبت دادههای جدید باشد، در چنین مواقعی میتوان با کشکَشکردن کوئریها بار روی سرور را کم و درنتیجه عملکرد را زیاد کرد.
استفاده از رپلیکیشن (Replication)
در معماری پایگاه داده، اساساً رپلیکیشن به فرایندی گفته میشود که بهموجب آن، داده از یک پایگاه داده به یک یا چند پایگاه داده دیگر کپی میشود؛ بهطوریکه همه آنها از دادههای یکسانی برخوردار هستند و این کار سبب میشود تا فرایند فراخوانی دادهها میان چندین سرور پخش شده و از ایرادات احتمالی جلوگیری شود.
شاردینگ در بلاک چین
Sharding یک مهارت طبقهبندی پایگاه داده است و در بلاک چینها و با هدف مقیاسپذیری استفاده میشود تا بلاک چینها بهکمک آن بتوانند تراکنشهای بیشتری را در هر ثانیه پردازش کنند. درحقیقت Sharding تمامی شبکه بلاک چین را به طبقاتی کوچکتر تقسیم میکند که به هرکدام از آنها یک «شارد» گفته میشود.
از طرفی هر شارد از دادههای مخصوص خود تشکیل شده است که آن را در قیاس با دیگر شاردها متمایز و مستقل میکند. همچنین هدف اصلی Sharding در بلاک چین، کاهش تأخیر در پردازش اطلاعات و بهبود سرعت آن نیز خواهد بود.
از سوی دیگر، نگرانیهای امنیتی پیرامون بهکارگیری شاردینگ در بلاک چین نیز وجود دارد؛ برای مثال هک یا تصاحب شاردی، به نوعی تهاجم گفته میشود که در آن یک شارد به شاردی دیگر حمله میکند و به از دست رفتن اطلاعات آن منجر میشود. بهمنظور درک ساز و کار Sharding، ابتدا باید مفاهیمی مانند فناوری دفتر کل توزیعشده (Decentralized Ledge) و مقیاسپذیری را درک کنیم.
دفتر کل توزیعشده
بهکارگیری فناوری دفتر کل توزیعشده (DLT) در بلاک چین آن را جذاب میکند؛ چراکه اجازه میدهد تراکنشها بهطور توافقی در چندین نقطه گوناگون در سراسر جهان به اشتراک گذاشته شوند. با ثبت تراکنشها، دادهها کپی میشود و در عرض چند ثانیه در شبکه ارسال شده و به اشتراک عموم گذاشته میشوند و بهاصطلاح شواهد عمومی شکل میگیرد.
در این فناوری، اگر بخشی از شبکه قربانی کلاهبرداری یا حمله خرابکارها شود، شرکتکنندگان شبکه میتوانند آنچه را که کلاهبرداران تغییر داده و دستکاری کردهاند، شناسایی کنند؛ زیرا همگی یک کپی از تراکنشهای منتشرشده در دفتر کل را در سیستم خود نگهداری میکنند.
درنتیجه، سیستم دفتر کل توزیعشده اجراشده در بلاک چین میتواند به کاهش تقلب و محدودکردن آسیبهای ناشی از حملات سایبری و هکشدن در آن کمک کند.
مقیاسپذیری بلاک چینها
یکی از چالشهای اصلی فناوری بلاک چین این است که با اضافهشدن کاربران شبکه و پردازش تراکنشهای بیشتر، شبکه بهاصطلاح دچار ایراد شده و روند پردازش اطلاعات در آن کند میشود که به آن تأخیر یا لتنسی (Latency) شبکه میگویند.
تأخیر مانعی برای بلاک چین محسوب میشود و کاربرد آن را محدود میکند؛ درحالیکه بلاک چینها با مانعی به نام تأخیر در روند گسترش خود مواجه میشوند و سیستمهای پرداخت متمرکز الکترونیکی فعلی با سرعت و کارآمدی بیشتری عمل میکنند.
به عبارت دیگر، همچنان که صنایع و کاربران بیشتری از این فناوری استفاده میکنند، مقیاسپذیری چالشی برای بلاک چین در مدیریت حجم فزاینده دادهها و جریان تراکنشهاست. همچنین یکی از راهحلهایی که برای فراهمکردن مقیاسپذیری بیتأخیر در نظر گرفته میشود، فرایند شاردینگ است.
Sharding بهگونهای طراحی شده است که حجم کاری شبکه را به پارتیشنها تقسیم میکند تا در حد ممکن در کاهش تأخیر مؤثر باشد و امکان پردازش تراکنشهای بیشتر در زمان کوتاهتر توسط بلاک چین را فراهم کند.
شاردینگ اتریوم
اساساً از طریق بستر اتریوم، کاربران میتوانستند کنترل بیشتری بر داراییها و اطلاعات دیجیتالی خود داشته باشند. ایده بنیادین درباره اتریوم، ایجاد «رایانه جهانی» است تا اپلیکیشنهای غیرمتمرکز بتوانند از طریق آن اجرایی شوند و کاربردهای خود را گسترش دهند.
درنهایت اینکه، این اپلیکیشنهای غیرمتمرکز باید بتوانند تجارتها و پلتفرمهای بزرگ جهانی (مانند توییتر یا آمازون) را به چالش بکشند؛ بنابراین اتریوم بهعنوان یک رایانه جهانی غیرمتمرکز عمل میکند. این رایانه در اختیار عموم قرار دارد و نمیتواند دستکاری شود.
اگر تمام این اهداف اتریوم بخواهند محقق شوند، اتریوم باید بتواند مقدار عظیمی از اطلاعات را درون سیستم خود ذخیره و حفظ کند، اما اکنون این قابلیت را ندارد. با این حال میتواند مشکل مقیاسپذیری خود را از طریق روشی به نام Sharding حل کند. بیشک این روش در بهروزرسانی جدید اتریوم (نسخه ۲) به فاز اجرایی کامل خواهد رسید.
به بیانی دیگر، بلاک چین اتریوم از هزاران رایانه (معروف به گره یا نود) تشکیل شده است که در حال حاضر به گفته وبسایت etherndes.org، تعداد آنها برابر با 5 هزار و 822 واحد است. هرکدام از این نودها مقدار مشخصی قدرت هش را در اختیار این شبکه قرار دادهاند.
درواقع همین قدرت هش به ماشین مجازی اتریوم (EVM) اجازه عملکردهایی مانند اجرای قراردادهای هوشمند و اپلیکیشنهای غیرمتمرکز را میدهد، اما قبل از تصمیم اتریوم برای مهاجرت به اتریوم ۲٫۰ و افزایش مقیاسپذیری، این شبکه براساس اجراهای متوالی کار میکرد و هرکدام از این نودها مجبور به محاسبه تکتک عملیات و پردازش تمامی تراکنشها بودند.
از اینرو گذر هر تراکنش از چنین فرایند اعتبارسنجی بسیار طولانی بود. در سال ۲۰۱۹ و در شلوغیهای عظیم اتریوم، این شبکه میتوانست حدود ده تراکنش بر ثانیه (TPS) را پردازش کند. جالب اینکه در مقام قیاس، برای مثال شرکت ویزا بهطور متوسط دارای 24 تراکنش بر ثانیه است.
از سوی دیگر، اضافهکردن رایانه بیشتر هم لزوماً کارایی را افزایش نمیدهد؛ چراکه تمام این دفتر کل در همه رایانهها نگهداری میشود و زنجیره اعتبارسنجیها طولانیتر خواهد شد، اما با قدمنهادن در مسیر اتریوم ۲٫۰ و استفاده از شاردینگ این بلاک چین قادر به پردازش صد هزار تراکنش در ثانیه خواهد بود.
درحقیقت، ایده استفاده از Sharding، حرکت از یک مدل اجرایی خطی که تمامی نودها مجبور به محاسبه کل عملیات هستند، به یک مدل اجرای موازی است که در آن نودها برای پردازش محاسبات خاص تخصیص داده میشوند. این امر پردازش موازی تراکنشها بهصورت همزمان را امکانپذیر میکند.
از اینرو، این بلاک چین به شاردها، یعنی سابدامینها یا باکتهای مجزا تقسیم خواهد شد. نودها نیز برای پردازش و اعتبارسنجی تراکنشها، تنها بخشی از دفتر کل را که به آنها محول شده اجرا میکنند و درواقع جزئی حیاتی در زیرساخت بلاک چین هستند.
درحقیقت انتقال اطلاعات بدون حضور نودها میسر نخواهد بود. همه نودها به یکدیگر متصل هستند و بارها اطلاعات بلاک چین را بین یکدیگر مبادله میکنند. به این ترتیب، همگی در جریان آخرین وضعیت قرار میگیرند. اساساً نودها سازنده لایه بنیادین بلاک چینها هستند و به شبکه بلاک چین کمک میکنند تا دادهها را در سراسر زیرساخت خود ذخیره و نگهداری کند یا بسط دهد.
نقش نودها در بلاک چینهای مختلف
در شبکههای بلاک چین غیرمتمرکز، هر نود باید بتواند اطلاعات حساس مانند تاریخچه تراکنشها و ترازنامه حسابها را در خود ذخیره کند. با پخشکردن اطلاعات و تراکنشها میان نودهای گوناگون، بلاک چین میتواند امنیت خود را تضمین کند. با این حال، این مدل چندان از لحاظ مقیاسپذیری واقعگرایانه نیست.
با اینکه سیستم اهرمی غیرمتمرکز به تحقق ویژگیهای تمرکززدایی و امنیتی برای بلاک چین منجر میشود، شبکهای که باید این حجم گسترده از تراکنشها و اطلاعات را پردازش کند، ممکن است دچار اختلال، تأخیر در پردازش، یا ترافیک شود؛
برای مثال، اتریوم میتواند 10 تا 20 تراکنش را در هر ثانیه پیش ببرد، اما واقعیت این است که عدد برای بلاک چینی به این اندازه چندان چشمگیر نیست. دلیل سرعت کم شبکه اتریوم را باید در الگوریتم اجماع گواه اثبات کار (Proof of Work) آن یافت که در زیرساخت آن وجود دارد. درنتیجه و به این دلیل، بلاک چین اتریوم نیاز مبرمی به مقیاسپذیری دارد.
شبکه بلاک چین از طریق شاردینگ میتواند حجم کار خود را بهصورت افقی گسترش دهد. در این صورت نیازی نیست هر گروه وظیفه کنترل و پردازش همه تراکنشها را بر عهده بگیرد. بدینترتیب طراحی طبقهبندیشده و کارآمدی شکل میگیرد.
طبقهبندی افقی
Sharding از طریق طبقهبندی افقی پایگاه داده به ردیفهای گوناگون انجام میشود. به این ردیفها «شارد» گفته میشود. این ساختار افقی به ایجاد اکوسیستمی پویاتر منجر میشود؛ زیرا به شاردها اجازه میدهد تا عملکردهای تخصصی را براساس خصوصیاتشان انجام دهند؛
برای نمونه، یک شارد ممکن است وظیفه ذخیره تاریخچه تراکنشها و وضعیت یک آدرس خاص را بر عهده داشته باشد یا ممکن است بتواند با دیگر شاردها مشارکت کرده و یک دارایی دیجیتال را پردازش کند.
برای فهم بهتر نحوه کار طبقهبندی افقی، نگاهی به مدل زیر بیندازید:
این مدل نشاندهنده یک پایگاه داده عظیم از 6 ردیف است. سپس جدول اصلی اطلاعات به ۳ تکه کوچکتر تقسیم میشود. آن بخشهای کوچکتر همان شاردهای افقی هستند که مدیریت جدول اطلاعات را سادهتر میکنند.
طبقهبندی افقی تنها جدول اصلی دادهها را به جداولی کوچکتر و کارآمدتر تبدیل میکند.
در جداول کوچک نیز ویژگیهای اصالت اطلاعات کاملاً حفظ خواهند شد. همین مفهوم برای زیرساختهای بلاک چینی نیز اتفاق میافتد. بهموجب آن، وضعیت زنجیره میتواند به بخشهای کوچکتر و منظمتری تبدیل شود که به آنها «شارد» گفته میشود.
استفاده از راهکارهای لایه ۲
اساساً راهکار لایه ۲، برای مقیاسپذیری خارج از زنجیرهای بر رأس بلاک چین است. ایده اصلی در این فرایند، کنارگذاشتن لایه اصلی و تشکیل لایهای دیگر روی آن است. این لایه اضافی با محاسبات پیچیده سر و کار خواهد داشت و مشکلات ساختار لایه اصلی را کاهش میدهد.
شبکههای پلاسما (Plasma) و ریدن (Raiden) برترین مثالها برای مقیاسپذیری لایه دوم هستند. همچنین شاید سرشناسترین پروژههایی نیز که از اهرم کمکی لایه 2 استفاده کردهاند، شبکههای پالیگان (Polygon) و ماتیک (Matic) باشند.
مقیاسپذیری عمودی
در این مرحله، نوبت به راهحل مقیاسپذیری عمودی میرسد. مقیاسپذیری عمودی شامل گسترش شبکه از طریق تزریق قدرت و حافظه بیشتر به واحد پردازش مرکزی سیستم است. این کار از طریق بهبود کارایی انجام هر تراکنش انجام میگیرد. برای انجام این کار، مقیاسپذیری عمودی اساساً قدرت پردازش بیشتری را در یک ماشین مجازی جای میدهد تا ظرفیت پردازش خود را بالا ببرد.
مقیاسپذیری عمودی اندکی کارآمدی پایینی دارد، اما اجرای آن بسیار سادهتر از مقیاسهای افقی است. درحقیقت اگر حافظه اصلی ماشین مجازی نتواند حجم تراکنشهای ورودی را پردازش کند، احتمالاً مقیاسپذیری عمودی میتواند پاسخ مناسبی باشد. در این سناریو، مقیاسپذیری عمودی میتواند حافظه بیشتری را برای زیرساخت ماشین مجازی به ارمغان آورد.
درنتیجه، حجم مضاعف پردازش کاهش مییابد و توان عملیاتی تراکنشها بالا میرود. با این حال اگر حجم تراکنش ورودی از ظرفیت سختافزار ماشین مجازی بهحدی بالاتر برود که دیگر ازلحاظ فیزیکی قادر به پردازش آن نباشد، راهحل «مقیاسپذیری افقی» موردنیاز است.
مقیاسپذیری افقی
همانطور که در بالا بیان شد، مقیاسپذیری افقی یا شاردینگ به توان عملیاتی در زیرساختهای بلاک چین کمک میکند. در این روش، از خوشهها (Clusters) یا ماشینهایی مجازی استفاده میشود که به لایه اصلی در بلاک چین اضافه میشوند. با اینکه Sharding یک سیستم کاملاً مؤثر برای مقیاسپذیری است، بیشک با پیچیدگیهایی در اجرا همراه است.
علاوه بر این موارد، وقتی صحبت از اجرای روشهای مقیاسپذیری در زیرساختهای بلاک چین باشد، باید به سؤالاتی فنی و بنیادین پاسخ داده شود.
تفاوت شاردینگ اتریوم و لایتنینگ بیت کوین
بسیاری از افراد فناوری شارینگ و لایتنینگ را یکی میدانند؛ درحالیکه این دو مورد کاملاً متفاوت هستند و از روشهای گوناگونی استفاده میکنند. Sharding و لایتنینگ هر دو فناوریهایی براساس بلاک چین هستند که برای بهبود مقیاسپذیری شبکه بلاک چین و نیز افزایش سرعت پردازشها ارائه میشوند.
لایتنینگ که در شبکه بلاک چین بیت کوین استفاده میشود، نوعی فناوری است که در آن افرادی که میخواهند بین خودشان بیت کوین مبادله کنند، این امکان را داشته باشند تا بین خود کانالی ایجاد کنند و مبادلات را بین خودشان و با سرعت بیشتر و کارمزد کمتر انجام دهند.
در شبکه بیت کوین هر چه کارمزد انتقال بیشتر باشد، انجام تراکنش در شبکه در اولویت قرار میگیرد و سرعت بیشتر خواهد شد. با استفاده از لایتنینگ علاوه بر افزایش سرعت معاملات میتوان حتی یکدهم ساتوشی را نیز انتقال داد.
شاردینگ فناوری متفاوتی است که در آن پایگاه داده به تکههای کوچکتر تقسیم میشود تا بتواند نودهای بیشتری را در خود جای بدهد و پردازش کند. در این روش نیز بهدلیل اینکه نودها در شاردهای بیشتری قرار میگیرند، شبکه بلاک چین میتواند تعداد تراکنشهای بیشتری را مدیریت کند و سرعت انجام تراکنش در شبکه بالا برود.
در هردوی این ۲ فناوری یکی از موارد بسیار مهمی که مورد توجه قرار گرفته و بهنوعی سبب میشود تا شرکتهای کمتری با وجود مزایای زیاد از این فناوریها استفاده نکنند، مباحث امنیتی هر ۲ مورد است.
فناوری شاردینگ چه مشکلاتی را حل میکند؟
بهطورکلی یکی از بزرگترین مشکلات فعلی شبکههای بلاک چینی مسئله مقیاسپذیری است. با افزایش محبوبیت یک شبکه بلاک چینی، کاربران بیشتری به انجام تراکنش، استفاده از اپلیکیشنهای غیرمتمرکز و دیگر پردازشها در آن میپردازند.
افزایش فعالیتهای تراکنشی، به ایجاد تقاضای بیشتر روی نودها برای اعتبارسنجی تراکنشها منجر میشود و درنتیجه، تهدید مسدودکردن این بلاک چینها را (همانطور که در شبکه اتریوم در هنگام محبوبیت بازی کریپتوکیتیز (Cryptokitties) شاهد بودیم و این بازی یازده درصد تراکنشهای آن را تشکیل میداد) به دنبال دارد.
در این حالت، سرعت تراکنشها بسیار کاهش مییابد که شرایط ایدهآلی برای پذیرش بلندمدت و پایدار یک بلاک چین نخواهد بود. با شکست یک بلاک چین به بخشهای کوچکتر و تخصیص نودها به هر بخش، هر گره دیگر مجبور به نگهداری کل دفتر کل برای انجام تمام فعالیتها نیست؛
بنابراین اعتبارسنجی تراکنش میتواند بهجای حالت خطی، بهصورت موازی انجام شود و سرعت کل شبکه را افزایش دهد؛ پس Sharding راهحلی برای پرداختن به مسئله مقیاسپذیری پیرامون شبکههای بلاکچینی است که ثبات بیشتر در بلندمدت را به همراه دارد.
مزایای استفاده از شاردینگ
استفاده از این روش در بلاک چین، موجب برطرفشدن مشکلات ناشی از مقیاسپذیری میشود. درواقع امروزه مقیاسپذیری یکی از مشکلات بلاک چینها محسوب میشود. هرچقدر کاربران یک شبکه بلاک چین افزایش یابد، تعداد تراکنشها و اپلیکیشنهای غیرمتمرکز و دیگر عملیات در شبکه بلاک چین افزایش مییابد.
از سوی دیگر، افزایش تراکنشها به افزایش سطح تقاضای نودها برای تأیید تراکنش منجر میشود. با افزایش سطح تقاضای تراکنشها، تأیید تراکنشها بهکندی انجام میشود و در این حالت بلاک چین با مشکل روبهرو میشود،
اما استفاده از Sharding در شبکه بلاک چین موجب برطرفکردن چنین مشکلی خواهد شد. این روش با تقسیمکردن بلاک چین به دادههای کوچکتر و تبدیل تأیید تراکنشها از نوع خطی بهصورت موازی موجب افزایش سرعت تراکنشها میشود.
غیر این موارد، باید بدانیم تجزیهکردن بلاک چین به شاردها یا قطعات گوناگون امکان بروز بعضی مشکلات امنیتی را افزایش میدهد، اما فناوری شاردینگ بهگونهای عمل میکند که هر شارد مانند شبکه بلاک چین جداگانه و استقلالیافته عمل میکند. وجود این امر موجب پیچیدگی بیشازحد آن، برای کاربر خواهد بود.
ضمن اینکه احتمال هکشدن هر شارد با توجه به قسمتکردنهای انجامگرفته، بالا خواهد رفت؛ زیرا با این کار توان هش برای کنترل و سلطه شارد عملاً کاهش یافته و کم خواهد شد.
معایب استفاده از شاردینگ
در حال حاضر بزرگترین ایراد فرایند Sharding، نحوه برقراری ارتباط و امنیت آن است. از طرفی با وجود حل مشکل مقیاسپذیری بلاک چین، شاردینگ چالشهای قابلتوجهی نیز دارد که توسعهدهندگان تلاش میکنند راهکارهایی برای این موضوعات پیدا کنند.
محدودیتها
ارزهای گوناگونی از Sharding برای حل مشکلات پردازشی خود بهره میگیرند، اما تمام آنها در رسیدن به اهداف خود موفق نبودهاند؛ برای مثال، زیلیکا با وجود اعمال راهکار شاردینگ، فرایند ذخیرهسازی را طوری طراحی کرده است که دادههای کل بلاک چین در نودها ذخیره خواهد شد.
از طرفی ارزهای دیجیتالی مثل Near بهتازگی استفاده از Sharding را شروع کردهاند و نمیتوان پیرامون نتیجه این راهکار نظر قطعی اعلام کرد. بهعلاوه اگر تعداد نودها در مقطعی زیاد شده و به هر علتی شبکه مجبور به کاهش دوباره تعداد آنها شود، ترافیک بسیار زیادی در بلاک چین ایجاد خواهد شد و سرعت پردازش کاهش چشمگیری خواهد داشت.
هماهنگی شاردها
این هماهنگی دومین چالش ارتباطاتی است که باید میان شاردها برقرار شود و با نام ارتباط بین شاردی شناخته میشود. این اتفاق زمانی رخ میدهد که بین ۲ کاربر در ۲ شارد گوناگون تراکنشی صورت بگیرد و نیاز به هماهنگی دادهها بین ۲ شارد حس شود.
برای حل این مشکل نیز باید معماری شبکه بهشکلی صحیح و بدون نقص طراحیشده باشد تا برای چنین موقعیتهایی آمادگی لازم را داشته باشد.
حمله به شاردها
چالش بعدی تصرف شارد است. این اتفاق شباهت زیادی به حمله 51 درصدی در فرایند استخراج دارد. در این حالت یک فرد یا سازمان کنترل یک شارد را در اختیار میگیرد و اعمال خرابکارانه خود را در شبکه انجام میدهد. در حالت زنجیره انفرادی نودها همه در یک دسته قرار دارند و فرد سوءاستفادهگر باید از هر صد گره 51 عدد را تحت سلطه خود درآورد،
اما وقتی زنجیره به شاردهای گوناگون تقسیم میشود، کافی است هکر یا حملهکننده به 51 درصد از نودهای یک شارد مسلط شود؛ برای مثال اگر 100 گره به 5 شارد 20 عددی تقسیم شدهاند، نیروی خرابکار اگر به 11 گره از یک شارد مسلط شود، میتواند کنترل آن دسته را در اختیار بگیرد و تراکنشهای خودش را از طریق آن شارد انجام دهد.
آیا جایگزینی برای شاردینگ در دسترس است؟
دو طرح پیشنهادی دیگر برای بهبود عملکرد و سرعت تراکنشها در بلاک چین ارائه شدند. اولین طرح، افزایش سایز و اندازه بلاک بود. ایده این بود که در بلاک بزرگتر، امکان جایدادن تراکنشهای بیشتر وجود دارد؛ از اینرو تعداد تراکنش در ثانیه بیشتر خواهد شد. با اینکه این طرز فکر درست است، بلاک بزرگتر به قدرت محاسباتی بیشتری هم برای اعتبارسنجی خود نیاز دارد.
درصورت افزایش نامحدود اندازه بلوک، تنها تجهیزات رایانهای پرقدرت و بسیار پیشرفته و تخصصی قادر به مدیریت قدرت پردازش موردنیاز برای تبدیلشدن به یک گره خواهند بود؛ بنابراین افزایش هزینه در این نوع تجهیزات به این معناست که استخرهای نودها الزاماً کوچکتر و متمرکزتر شده و خطر حمله 51 درصد را افزایش خواهند داد.
درحقیقت افزایش سایز بلاک همچنین نیازمند هارد فورک است که ریسک جداسازی جامعه را به همراه دارد. درصورت آپگریدنشدن تمام نودهای شبکه در بلاک چین جدید، ۲ زنجیره مجزا وجود خواهد داشت که از ۲ کوین جدا هم استفاده خواهند کرد؛ به همین دلیل افزایش اندازه بلوک تنها یک راهحل کوتاهمدت است. به این نکته در Sharding اتریوم توجه ویژه شده است.
دومین طرح پیشنهادی جایگزین شاردینگ در بلاک چین استفاده از آلت کوینها بود تا عملکردها و برنامههای گوناگون قادر به اجرای زنجیره به همراه ارز خود باشند. این طرح نیز بهدلیل اعمالنشدن بار بیشازحد روی یک بلاک چین واحد سبب افزایش عملکرد میشود، ولی از طرفی نیز بهدلیل تقسیم شدن قدرت هشینگ بین چند بلاک چین، خطرات امنیتی را بیشتر میکند.
در این صورت، بهدلیل کمترشدن هشینگ پاور موردنیاز برای اجرای موفق حمله 51 درصدی، هککردن شبکه راحتتر خواهد بود.
کدام بلاک چینها از شاردینگ استفاده میکنند؟
جدا از اتریوم ۲٫۰، برخی بلاک چینها هماکنون از مکانیسم Sharding استفاده میکنند و در برخی دیگر این تکنیک همچنان درحالتوسعه است. زیلیکا (Zilliqa) اولین بلاک چین عمومی بود که شاردینگ را اجرا کرد و توانست با این روش در شبکه آزمایشی خود به 2 هزار و 828 تراکنش بر ثانیه برسد.
اکوسیستم بلاک چینی نیر (Near) امکان ساخت و استقرار راحت اپلیکیشنهای غیرمتمرکز را برای توسعهدهندگان فراهم کرده است. این شبکه همچنین خود را «یک بلاک چین شاردشده توسعهدهنده پسند اثبات سهام» نامیده و اظهار داشته است که فناوری Sharding به نودها اجازه میدهد برای اجرا روی سرورهای ساده میزبان ابری (Cloud) و حتی گوشیهای موبایل در آینده، تا جای ممکن کوچک باقی بمانند.
از دیگر بلاک چینهایی که بهدنبال استفاده از شاردینگ بهعنوان راهحلی برای بهبود مقیاسپذیری هستند، میتوان کاردانو (Cardano)، کوارک چین (QuarkChain) و پی چین (PChain) را نام برد.
1- شاردینگ زیلیکا (Zilliqa)
Sharding بلاک چین در زیلیکا در ۲ مرحله انجام میگیرد. ابتدا گرههای کمیته راهنمای خدمات (Directory Service Committee Nodes) انتخاب میشوند که فرایند شاردینگ را آغاز کرده و هر گره را به یک شارد مرتبط میکنند. از طرفی، وقتی تراکنشها در شارد تأیید شدند، میتوانند از سوی کل شبکه نیز تأیید شده و به مرحلهای جهانی تبدیل شوند که هر تراکنش در شارد را به یک منبع سنجش اعتبار مستقل در بلاک چین زیلیکا ضمیمه میکنند.
اساساً، یک تراکنش شاردشده در شبکه زیلیکا شامل یک کاربر میشود که یک تراکنش را آغاز میکند. سپس آن تراکنش به شاردی منتقل میشود که تراکنش را میسنجد و آن را با دیگر تراکنشها مقایسه میکند تا یک «میکرو بلاک» از تراکنشها ایجاد کند. در ادامه، بهوسیله شارد موجود در سنجش اعتبار میکرو بلاک، اجماع حاصل میشود.
درواقع این اجماع به کمیته راهنمای خدمات سپرده میشود که میکرو بلاکها را با «بلاک نهایی» ادغام میکند. کمیته راهنمای خدمات در اینجا، پیش از ضمیمهکردن این بلاک به بلاک چین، به اجماع نهایی دست مییابد.
2- شاردینگ نیر (NEAR)
پروژهای که از شکلی متفاوت از Sharding استفاده میکند، Near است که در ۲۰۲۰ راهاندازی شد؛ یک پلتفرم بلاک چین شاردشده با مدیریت اجتماعی که از اثبات سهام استفاده میکند. در این پروتکل، مقیاسپذیری و تعامل از اهمیت بالایی برخوردارند. Near از فناوری Nightshade خود بهره میگیرد تا توان عملیاتی بالایی را میسر کند.
براساس این فناوری، اعتبارسنجها تراکنشها را بهصورت موازی پردازش میکنند تا ظرفیت تراکنشها را در بلاک چین افزایش دهند. با اینکه مدل شاردینگ بر پایه زنجیرههای شاردی و زنجیره بیکن (Beacon Chain) بسیار قدرتمند عمل میکند، برخی مشکلات ساختاری را نیز به همراه دارد.
این مشکلات به این دلیل پیش میآیند که زنجیرههای شاردی و زنجیره بیکن ماهیتی جداگانه در یک بلاک چین دارند. پروتکل Near این مشکل را از طریق ارائه یک طرح Sharding حل میکند. این طراحی با مدلسازی زیرساخت آن بهعنوان یک بلاک چین منفرد میسر میشود.
اساساً در این مدل، هر بلاک دارای تمام تراکنشها برای همه شاردهاست و کل وضعیت شاردها را تغییر میدهد. Near از طریق Nightshade میتواند الگوی مستقل خود را در بلاک چین از طریق شاردینگ تراکنشهای هر بلاک در دستههای فیزیکی تحقق بخشد. در حالت ایدهآل، هر شارد یک دسته (بخش) خواهد داشت و همه آنها در یک بلاک جمع خواهند شد.
3- شاردینگ پولکادات (Polkadot)
پولکادات از یک مدل Sharding کاملاً متفاوت با مکانیسم شاردینگ اتریوم استفاده میکند. این پروژه از ویژگیهای میان زنجیرهای خود بهره میبرد و شاردینگ را بهکمک زنجیرههای موازی یا پاراچینها (Parachains) عملی میکند.
درحقیقت طراحی بومی پولکادات از یک شبکه چند زنجیرهای تشکیل میشود که امنیت، اطمینان و مقیاسپذیری لایه صفر را برای تمامی بلاک چینهای لایه 1 که بر روی آن اجرا شوند، به ارمغان میآورد.
این لایههای اول همان شبکه پاراچین هستند. پاراچینها بلاک چینهایی گوناگون هستند که بهصورت موازی درون اکوسیستم پولکادات فعالیت میکنند. همچنین به کمک زنجیره اصلی (Relay Chain) موجود در پولکادات به یکدیگر وصل شده و ایمن میشوند.
آنها از امنیت، تعامل و مقیاسپذیری استفاده میکنند. شبکه پاراچین میتواند بهجرئت بهعنوان یک الگوی Sharding پیشرفته تلقی شود که ویژگیهای زنجیره اصلی پولکادات را اجرا میکند. این شبکه بهصورتی موازی و شبیه به شارد عمل میکند.
برای مثال پروژههای پاراچینی مانند کلاور (Clover) میتوانند از تراکنشهایی بدون کارمزد گس استفاده کرده و لایههایی جدیدی را با مقیاسپذیری و تعامل بالا به زیرساختهای لایه یک اضافه کنند؛ زیرا پولکادات، بهعنوان یک شبکه چندزنجیرهای که با پاراچینها ایجاد شده، قادر به پردازش چندین تراکنش موازی در چندین زنجیره بهصورت آنی است. درنهایت از این طریق، مفهوم شاردینگ میان زنجیرهای محقق میشود.
نقش شاردینگ در آینده بلاک چین
پس از معرفی پروژه ارزی فیسبوک به نام لیبرا (Libra) که بعدها به دیم (Diem) تغییر نام یافت، توجهات به Sharding بهویژه در اتریوم افزایش یافت. در آن زمان فیسبوک حتی تیم توسعهدهنده کمپانی چین اسپیس (Chainspace) را برای کار روی این حوزه به خدمت گرفت.
اساساً میتوان گفت هدف شاردینگ، دسترسی به سهگانه بلاک چین (Blockchain Trilemma) است. براساس گفتههای ویتالیک بوترین (Vitalik Buterin)، خالق و بنیانگذار اتریوم، در سهگانه بلاک چین، شما قادر به حفظ ۲ مورد از ۳ مشخصه اصلی بلاک چین در یک زمان هستید. این ۳ مشخصه امنیت، تمرکززدایی و مقیاسپذیری هستند.
دلیل این اتفاق این است که برای داشتن ۲ مشخصه، باید حتماً یکی از آنها را به خطر بیندازید.
سخن پایانی
حل مشکل مقیاسپذیری بلاک چین سالهاست که به مشکل اساسی تمامی توسعهدهندگان بدل شده و راهکارهای بسیار گوناگونی برای این معضل ارائه شده است. درحقیقت، افزایش حجم بلاکها، هارد فورک و سافت فورک، لایه دوم محاسباتی و… ازجمله راهحلهایی هستند که مهندسان حوزه بلاک چین طراحی کردهاند تا این معضل برطرف شود.
از طرفی با توجه به تلاش همهجانبه تیمهای توسعهدهنده، به نظر میرسد این معضل بهزودی و بهکمک Sharding و راهکارهای مشابه آن برطرف شود، اما چالشهایی که درباره شاردینگ مطرح میشود، احتمالاً در توسعههای بعدی اصلاح شده و سرعت پردازش تراکنشها نیز افزایش خواهد یافت.
درواقع بلاک چینها میخواهند پردازش تمامی خدمات و تراکنشهای انسانها را میزبانی کند؛ از اینرو بهزودی شاهد اعمال و اصلاح Sharding و ارائه راهکارهایی بهتر از آن در شبکههای بلاک چینی گوناگون خواهیم بود. بهصورت کلی، این روش فرایند پیچیدهای دارد، اما استفاده از آن در بلاک چین، موجب ارتقای مقیاسپذیری شبکههای بلاک چینی میشود. درواقع شاردینگ به بلاک چینها کمک میکند تا روند مدیریت دادههای خود را راحتتر انجام دهند و درنتیجه، سرعت پردازش تراکنشها نیز افزایش پیدا کند.
با وجود این، اگر Sharding موفق شود چالشهای پیش روی خود را رفع کند، قادر خواهد بود تا مقیاسپذیری را به بلاک چین و غیرمتمرکز بودن و امنیت را بدون استفاده از سهگانگی بلاک چین، به شبکه برگرداند و بدین ترتیب بلاک چینها را یک قدم به پایداری نزدیک کند.
پرسشهای متداول
میتوان گفت Sharding راهکاری در دنیای رایانه است که برای مقیاسبندی سیستمها از آن بهرهجویی میشود؛ بهگونهای که سیستمها میتوانند دادههای مازاد را در بطن خود جای دهند.
از جمله مزایای این روش میتوان به تقسیم پایگاه داده به اجزای خردتر، راحتی مدیریت دادهها، افزایش سرعت پردازش تراکنشها، کمک به توسعه و بهبود عملکرد کلی سیستم و صرفهجویی در هزینهها و از جمله معایب آن نیز میتوان به وجود برخی ایرادات فنی، پیچیدگیهای فراوان، از دست رفتن دادهها در صورت اجرانشدن صحیح، ایجاد تعادل میان مقدار دادههای ذخیرهشده در هر شارد، دشواری فرایند مدیریت دادهها درصورت پردازش حجم بالایی از تراکنشها و برخی مشکلات سختافزاری اشاره کرد
با تقسیم شبکه بلاک چین به اجزای کوچکتر، هر گره یا گره مسئول تأیید بخش مشخصی از تراکنشها خواهند بود؛ درنتیجه، تأیید تراکنشها بهصورت موازی جایگزین مدل خطی شده و باعث افزایش سرعت کل شبکه بلاک چین خواهد شد.
افزایش سایز بلاکها در شبکه و استفادهکردن از آلت کوینها برای کاربردهای متفاوت.
برخی شبکههای بلاک چین مانند ارز زیلیکا موفق به اجرای فرایند شاردینگ در شبکه خود شدهاند. حالآنکه تعدادی نیز درحالتوسعه و اجرای آن هستند؛ مثل ارز دیجیتال اتریوم.















































