شاردینگ (Sharding) در بلاک چین چیست؟

شاردینگ در بلاک چین یعنی تقسیم شبکه به واحدهای کوچکتر. هدف از این کار، افزایش سرعت تأیید تراکنشها و بهبود عملکرد شبکه است. برای مثال، شبکه اتریوم را به عنوان یکی از بزرگترین بلاکچینهای دنیا در نظر بگیرید. اگر همزمان میلیونها نفر در حال انجام تراکنش باشند، اتریوم برای تأیید همه آنها با مشکل کندی مواجه میشود. اما اگر این تراکنشها بین چند گروه مختلف تقسیم شوند و هر گروه بهصورت موازی پردازش شود، مشکل کندی و مقیاسپذیری تا حد زیادی حل خواهد شد. در این مقاله آموزشی از رمزآگاه، قصد داریم بهطور کامل توضیح دهیم شاردینگ چیست، چگونه کار میکند و دقیقاً چه مشکلاتی را حل میکند.
شاردینگ یعنی تقسیم کردن یک پایگاه داده بزرگ به چند قسمت کوچکتر. این روش باعث میشود که کار با پایگاه داده سریعتر و راحتتر انجام شود. به این نوع تقسیم، تقسیمبندی افقی هم گفته میشود. وقتی یک سیستم تعداد زیادی کاربر دارد یا حجم اطلاعاتش زیاد است، اگر همه این دادهها در یکجا نگهداری شوند، دسترسی به آنها کند و سخت خواهد شد. شاردینگ کمک میکند که این مشکل حل شود؛ چون هر بخش از دادهها در سرور جداگانهای ذخیره میشود و درخواستها بهصورت همزمان (پراکنده) پردازش میشوند.
شاردینگ چیز جدیدی نیست! از دهه ۱۹۹۰ در پایگاههای داده سنتی استفاده میشده. واژه شاردینگ با یک بازی کامپیوتری به نام Ultima Online معروف شد. در این بازی، چون تعداد بازیکنها زیاد بود، سازندگان آنها را بین سرورهای مختلف تقسیم کردند. هر سرور مثل یک جهان جداگانه بود. این کار باعث شد بازی برای همه روانتر اجرا شود.
یک مثال ساده در دنیای واقعی: فرض کنید یک فروشگاه بزرگ آنلاین مشتریهایی در شهرهای مختلف دارد. اگر همه اطلاعات مشتریها در یک سرور باشد، دسترسی به دادهها کند میشود. اما اگر دادههای مشتریهای تهران در یک سرور، دادههای مشهد در سرور دیگر و… ذخیره شوند، سرعت و کارایی خیلی بیشتر میشود؛ به این تقسیمبندی شاردینگ میگویند.
بلاک چین هم در اصل یک پایگاه داده است، با این تفاوت که اطلاعات بهجای اینکه روی یک سرور متمرکز ذخیره شوند، در بین نودها (گرهها) پخش و به صورت غیرمتمرکز ذخیره میشوند. برای درک بهتر، میتوانید مقاله بلاکچین چیست؟ را مطالعه کنید. شاردینگ در بلاک چین، این پایگاه داده بزرگ را به چند قسمت کوچکتر (به نام شارد) تقسیم میکند. هدف این است که سرعت انجام تراکنشها بالا برود و ترافیک شبکه کمتر شود.

وقتی در یک بلاک چین مثل اتریوم، هزاران تراکنش بهصورت همزمان انجام میشود، هر نود باید همه تراکنشها را بررسی و تأیید کند. این کار خیلی وقتگیر و پرهزینه است. اما با شاردینگ، هر نود فقط مسئول یک شارد میشود؛ یعنی فقط تراکنشهای مربوط به یک بخش از شبکه را بررسی میکند، نه کل شبکه را. این کار باعث میشود که تراکنشها سریعتر و با راحتتر تأیید شوند.
برای درک بهتر، تصور کنید بهجای اینکه فقط یک تیم همه کارهای شرکت را انجام دهد، چند تیم تشکیل میدهید و هر یک وظیفهای مشخص دارد. این یعنی کارها سریعتر و با بازده بیشتر انجام میشوند. در نتیجه، شاردینگ میتواند به بلاک چینها کمک کند تا مقیاسپذیرتر شوند؛ یعنی بتوانند بدون کند شدن، تعداد بیشتری تراکنش را همزمان پردازش کنند. این یکی از مهمترین چالشهایی است که بلاک چینها در حال حاضر با آن روبهرو هستند و شاردینگ یکی از راه حلهای اصلی برای آن است. در ادامه، با جزئیات بیشتری درباره نحوه کار شاردینگ در بلاک چین صحبت میکنیم.
همانطور که پیشتر گفته شد، یکی از بزرگترین چالشهایی که شبکههای بلاک چین با آن روبهرو هستند، مقیاسپذیری است و شادینگ بهعنوان یکی از راه حلهای مهم برای آن بهشمار میرود. هرچه یک شبکه بلاک چینی محبوبتر شود، کاربران بیشتری از آن برای ارسال تراکنش، اجرای قراردادهای هوشمند و استفاده از برنامههای غیرمتمرکز (DApps) استفاده میکنند. این افزایش فعالیت، فشار زیادی بر شبکه وارد میکند.
با بیشتر شدن تراکنشها، نیاز به نودهای بیشتر برای پردازش و تأیید آنها نیز افزایش مییابد. در این شرایط، اگر معماری شبکه بهینه نباشد، احتمال کند شدن یا حتی انسداد شبکه وجود دارد. نمونه شناختهشده این مشکل، زمانی بود که بازی CryptoKitties در اوج محبوبیتش حدود ۱۱ درصد از تراکنشهای شبکه اتریوم را به خود اختصاص داد و باعث ازدحام و کاهش شدید سرعت شبکه شد.
در چنین شرایطی، شاردینگ راه حلی مؤثر ارائه میدهد. با تقسیم بلاک چین به بخشهای کوچکتر بهنام شارد، هر گروهی از نودها فقط مسئول پردازش بخشی از دادهها میشود؛ این یعنی دیگر لازم نیست هر نود تمام بلاک چین را اجرا کند. در نتیجه، پردازش تراکنشها میتواند بهصورت همزمان (موازی) انجام شود، نه بهصورت ترتیبی. این مدل باعث افزایش سرعت، کاهش ترافیک و بهبود کارایی کلی شبکه میشود. به همین دلیل، شاردینگ بهعنوان یکی از راهکارهای کلیدی برای مقیاسپذیری در بلاک چینها در نظر گرفته میشود و میتواند نقش مهمی در پایداری و موفقیت بلندمدت آنها ایفا کند.
برای درک بهتر، شادینگ اتریوم را بهعنوان یکی از مهمترین بلاک چینهای حال حاضر توضیح میدهیم:
اتریوم شبکهای غیرمتمرکز است که از هزاران نود (Node) یا گره تشکیل شده. هر نود بخشی از شبکه را پشتیبانی کرده و در تأیید تراکنشها و اجرای قراردادهای هوشمند نقش دارد. پس از ارتقای Merge در سال ۲۰۲۲، اتریوم از الگوریتم اثبات کار (Proof of Work) به اثبات سهام (Proof of Stake) مهاجرت کرد. در نتیجه، نودها دیگر با قدرت هش کار نمیکنند و اعتبارسنجها با استیک کردن اتریوم در فرایند اجماع شرکت میکنند.
اتریوم همچنان بر اساس فرآیند اجرای ترتیبی عمل میکند؛ به این معنا که هر نود باید تمام تراکنشهای شبکه را بررسی و پردازش کند. این ساختار باعث محدود شدن سرعت شبکه میشود. در زمان نگارش این مقاله و طبق دادههای Etherscan.io، اتریوم بهطور میانگین حدود ۱۵ تراکنش در ثانیه (TPS) را پردازش میکند. برای مقایسه، شبکههایی مانند ویزا میتوانند بهطور میانگین تا ۲۴ هزار TPS را پشتیبانی کنند.
در چنین ساختاری، حتی اضافه کردن نودهای بیشتر به شبکه، تأثیر چشمگیری در بهبود سرعت ندارد؛ چون همه نودها موظفاند کل دادههای شبکه را نگهداری و پردازش کنند. اینجاست که شاردینگ وارد عمل میشود. هدف اتریوم از شاردینگ این است که از اجرای خطی به سمت اجرای موازی حرکت کند. در این مدل جدید، هر نود فقط مسئول پردازش بخشی از دادهها خواهد بود، نه کل شبکه. این تقسیمبندی باعث میشود تراکنشها بهصورت همزمان در بخشهای مختلف اجرا شوند و در نتیجه، مقیاسپذیری و سرعت شبکه به شکل قابل توجهی افزایش یابد.
مکانیزم sharding چه مشکلاتی دارد؟
در حال حاضر، چالشهای اصلی شاردینگ به دو موضوع مهم مربوط میشود: ارتباط بینشاردی و امنیت. اگر یک بلاک چین به بخشهای مجزا تقسیم شود، هر قطعه مانند یک شبکه بلاک چین مستقل عمل میکند. در چنین حالتی، کاربران و برنامههای یک زیر دامنه یا شارد، بدون پیادهسازی یک مکانیزم ارتباطی ویژه، نمیتوانند با کاربران یا برنامههای موجود در شاردهای دیگر ارتباط برقرار کنند. این موضوع توسعه شاردینگ را برای برنامهنویسان و توسعهدهندگان پیچیدهتر میکند.
از سوی دیگر، امنیت نیز یکی دیگر از نگرانیهای مهم در بلاک چینهای مبتنی بر شاردینگ است. چون برای کنترل هر بخش جداگانه از شبکه، قدرت کمتری نسبت به کل شبکه نیاز است، در نتیجه هک کردن یک شارد راحتتر خواهد بود. به این نوع حمله، حمله تصاحب تکشاردی یا حمله ۱٪ گفته میشود. اگر یک شارد مورد حمله قرار بگیرد، هکرها میتوانند تراکنشهای نامعتبر را به شبکه اصلی ارسال کنند یا باعث از بین رفتن و بیاعتباری اطلاعات در آن بخش شوند.
پاسخ پیشنهادی اتریوم به این تهدید امنیتی، استفاده از نمونهگیری تصادفی است. در این روش، اعتبارسنجها بهطور تصادفی برای تأیید بلاکها در شاردهای مختلف تعیین میشوند تا از تمرکز قدرت در یک شارد جلوگیری شود. برای مثال، در شبکهای که به ۱۰۰ شارد تقسیم شده، تنها ۱٪ از قدرت کل شبکه برای نفوذ به یک شارد کافی است و این مسأله نیازمند مکانیزمهای امنیتی دقیقتری است.
آیا جایگزینی برای شاردینگ وجود دارد؟
در کنار شاردینگ، دو پیشنهاد دیگر نیز توسط توسعهدهندگان برای بهبود عملکرد و افزایش سرعت تراکنش در بلاک چین ارائه شده است.
- افزایش اندازه بلاکها:
اولین پیشنهاد این است که اندازه بلاکها افزایش یابد؛ چراکه اگر اندازه بلاک بزرگتر شود، میتوان تعداد بیشتری تراکنش را در هر بلاک جای داد. در نتیجه، تعداد تراکنشهای پردازششده در هر ثانیه افزایش مییابد. با اینکه این ایده در ظاهر منطقی به نظر میرسد، اما مشکلاتی هم دارد. بزرگتر شدن اندازه بلاکها به این معناست که برای پردازش و تأیید آنها، قدرت محاسباتی بیشتری نیاز است. در چنین شرایطی، فقط دستگاههای پیشرفته و تخصصی قادر به اجرای نودها خواهند بود. این مسئله باعث میشود تعداد نودهای مستقل کمتر شده و تمرکزگرایی افزایش یابد. تمرکز بیشتر نیز خطر حملات ۵۱ درصدی را بالا میبرد. علاوه بر این، افزایش اندازه بلاک معمولاً نیازمند اجرای یک هارد فورک است؛ یعنی تغییر اساسی در پروتکل شبکه. در این حالت، اگر همه اعضای جامعه به نسخه جدید ارتقا ندهند، دو زنجیره مجزا شکل میگیرد که هرکدام رمزارز جداگانهای دارند. به همین دلیل، افزایش اندازه بلاکها بیشتر یک راه حل موقتی در نظر گرفته میشود. - استفاده از آلتکوینها و زنجیرههای مجزا:
دومین پیشنهاد این است که بهجای استفاده از یک بلاک چین واحد، عملیات مختلف روی آلتکوینها و زنجیرههای مجزا اجرا شود؛ یعنی برنامههای مختلف هرکدام روی بلاک چین اختصاصی خود با رمزارز مستقل فعالیت کنند. این روش میتواند تا حدی کارایی را بالا ببرد، چون بار اصلی بین چند شبکه تقسیم میشود و هیچ بلاک چینی بیش از حد شلوغ نمیشود. اما این رویکرد هم خطرات امنیتی قابل توجهی دارد؛ چراکه در این حالت، قدرت هش شبکه بین چند بلاک چین پراکنده میشود و در نتیجه، حمله به هرکدام از این زنجیرهها سادهتر خواهد شد. بهطور خاص، قدرت هش مورد نیاز برای انجام یک حمله موفق ۵۱ درصدی کاهش مییابد و امنیت کلی شبکهها پایینتر میآید. بنابراین، این پیشنهاد نیز راهحل ایده آلی برای مقیاسپذیری به شمار نمیرود.
در حال حاضر کدام بلاک چین از شاردینگ استفاده میکند؟
به جز اتریوم، برخی از بلاک چینها تاکنون شاردینگ را بهصورت کامل یا جزئی پیادهسازی کردهاند. در ادامه، با مهمترین آنها آشنا میشویم:
- Zilliqa: شبکه Zilliqa اولین پلتفرم بلاک چین عمومی بود که شاردینگ را بهصورت کامل پیادهسازی کرد. این شبکه توانست در شبکه آزمایشی خود به سرعتی برابر با ۲۸۲۸ تراکنش در ثانیه (TPS) دست یابد و از سال ۲۰۱۹ بهطور عملیاتی از شاردینگ بهره میبرد.
- Near Protocol: اکوسیستم بلاک چین Near نیز یکی از پروژههایی است که شاردینگ را در چند فاز طراحی کرده است. در حال حاضر، نسخهای ابتدایی از شاردینگ در شبکه Near فعال است و به نودها اجازه میدهد در اندازهای سبک باقی بمانند که حتی امکان اجرا روی دستگاههای موبایل را داشته باشند. با این حال، پیادهسازی کامل و پویا (Dynamic Sharding) هنوز بهطور کامل انجام نشده است.
- پروژههای دیگر: پروژههایی مانند Cardano ،QuarkChain و PChain نیز در حال بررسی یا توسعه مکانیزمهایی مشابه شاردینگ هستند.
-
- کاردانو از شاردینگ استفاده نمیکند و بهجای آن، روی راهکار لایه دومی بهنام Hydra تمرکز دارد.
- QuarkChain مدلی خاص از شاردینگ را بهطور جزئی پیادهسازی کرده است.
- PChain نیز از جمله پروژههایی است که درباره اجرای شاردینگ صحبت کرده، اما اطلاعات دقیق و شفاف زیادی از وضعیت فعلی آن در دست نیست.
جمعبندی
شاردینگ در بلاکچین روشی است برای حل مشکل مقیاسپذیری؛ یعنی امکان پردازش همزمان تعداد زیادی تراکنش بدون کاهش سرعت یا عملکرد شبکه. در این روش، شبکه به چند بخش مستقل بهنام شارد تقسیم میشود و هر نود فقط وظیفه پردازش بخشی از دادهها را دارد، نه کل شبکه. این ساختار باعث افزایش سرعت، کاهش ترافیک و کارایی بیشتر بلاکچین میشود.
هرچند شاردینگ مزایایی مثل پردازش موازی و بهبود عملکرد دارد، اما با چالشهایی مثل امنیت و ارتباط بین شاردها نیز مواجه است. اجرای شاردینگ اتریوم، زیلیکا و Near نشان دادهاند که این روش میتواند راهکاری جدی برای آینده بلاکچینها باشد.