Sharding فرایندی آشنا در توسعه و نگهداری دیتابیس است که با ورود بلاک چین به دنیای فناوری کاربردهای بیشتری پیدا کرد.
Sharding بهصورت کلی بهمعنای پارتیشن بندی و تجزیه دیتابیس های بزرگ به بخشهای کوچکتر است که بهنام پارتیشنبندی افقی هم شناخته میشود (Horizontal Partitioning). فرایند شاردینگ شامل تقسیم دیتابیس به بخشهای کوچکتر با قابلیت مدیریت بیشتر میشود تا بهرهوری دیتابیس افزایش یافته و همچنین زمان پاسخگویی به درخواستهای شبکه بیشتر شود.
شاردینگ مفهوم جدیدی نیست و از زمان دیتابیسهای سنتی و متمرکز از سالهای پایانی دههی ۱۹۹۰ در دنیای فناوری وجود داشت. عبارت مذکور برای اولین بار در یک بازی چندنفرهی آنلاین نقشآفرینی (MMORPG) بهنام Ultima Online استفاده شد که توسعهدهندهها در آن بازیکنان را به سرورهای متعدد جداگانه تقسیم کردند. در بازی نیز هر بازیکن به دنیایی منحصر بهفرد رفت تا ترافیک وارد شده به سیستم کاهش یابد.
در بحثهای کسبوکاری میتوان شاردینگ را در تقسیم دیتابیس مشتریان مشاهده کرد. بهعنوان مثال تقسیمی را در نظر بگیرید که مشتریها را بر اساس موقعیت جغرافیایی در گروههای متعدد قرار میدهد. در چنین تقسیمبندی همه مشتریان یک منطقه در یک دسته قرار میگیرند و دادههای آنها در یک سرور مشخص نگهداری میشود.
شاردینگ در دنیای بلاک چین
در تعریف اولیه میدانیم که بلاک چین یک دیتابیس محسوب میشود که برای نمایش هر سرور داده، یک نود (گره یا Node) دارد. پیادهسازی شاردینگ در بلاک چین هم بهمعنای تقسیم شبکه بلاک چین به بخشهای مجزا (معروف به شارد – Shard) میشود. هر شارد میتواند دستهای از قراردادهای هوشمند یا موجودی حسابهای مالی را در خود نگه دارد.
پس از شاردینگ، نودها به شاردهای تکی اختصاص مییابند تا تراکنشها و عملیات را مدیریت کنند. درنتیجه هر نود وظیفه تأیید تمام تراکنشهای شبکه بلاک چین را نخواهد داشت.
ایده اصلی شاردینگ در بلاک چین برای رفع مشکلات اساسی مقیاسپذیری آن مطرح شد. شاردینگ، بلاکچین را به بخشهای قابل مدیریت کوچکتر تقسیم میکند که درنهایت حجم تراکنشهای قابل مدیریت را در شبکه افزایش خواهد داد. چنین رویکردی یک قدم مثبت در حل چالش مقیاسپذیری بلاک چین محسوب میشود.
شاردینگ چگونه کار میکند؟
برای توضیح نحوه عملکرد شاردینگ، شبکه اتریوم را بهعنوان یکی از محبوبترین بلاک چینها در نظر بگیرید. بلاک چین اتریوم از هزاران کامپیوتر یا همان نود تشکیل میشود. اکنون طبق آمارهای Ethernodes، بیش از ۸ هزار نود اتریوم فعال هستند که هر کدام مقدار مشخصی قدرت هش را به شبکه میدهند. همین قدرت هش به ماشین مجازی اتریوم (EVM) امکان انجام عملیات میدهد. عملیاتی که بهصورت اجرای قرارداد هوشمند یا اجرای اپلیکیشنهای غیر متمرکز (DApps) انجام میشود.
اتریوم درحال حاضر طبق رویکردی بر اساس اجرای پیوسته فعالیت میکند. بهبیاندیگر هر نود باید همه عملیات یا فرایندهای کل تراکنشها را پردازش کند. درنتیجه تراکنشی که وارد این سیستم میشود شاید زمان زیادی برای پردازش نیاز داشته باشد. درحالحاضر سرعت اتریوم حدود ۱۰ تراکنش در ثانیه گزارش میشود. درمقابل ویزا کارت سرعت ۲۴ هزار تراکنش در ثانیه دارد. در چنین رقابتی اضافه کردن کامپیوتر به شبکه هم راهکار کاربری نخواهد بود، چون تمامی دفتر کل در تمامی نودها وجود دارد که تنها به بزرگتر شدن زنجیره تأیید و احتمالا افزایش زمان خواهد انجامید.
شاردینگ ایده تأیید خطی و پشت سر هم تراکنشها را تغییر میدهد. با تغییر ساختار شبکه دیگر نیازی به پردازش همه تراکنشها توسط همه نودها نخواهد بود. روش اجرایی پس از شاردینگ بهنوعی موازی میشود و نودها تنها وظیفه برخی پردازشهای خاص را بر عهده خواهند داشت. درنتیجه تراکنشهای موازی و متعددی در زمان یکسان پردازش و تأیید میشوند.
بلاک چین پس از شاردینگ به شاردهای مجزا تقسیم میشود که به نام سابدامین یا باکت (Bucket) هم شناخته میشوند. نودها پس از شاردینگ تنها وظیفه اجرای بخشی از دفتر کل را بر عهده خواهند داشت و در آن، به پردازش تراکنشها و عملیات میپردازند. درنتیجه آنها نیازی به نگهداری کل حجم دفتر کل و پردازش همه فعالیتهای ندارند.
شاردینگ چه چالشی را حل میکند؟
همانطور که گفته شد مقیاسپذیری یکی از چالشهای مهم بر سر راه بلاک چین است. با افزایش شهرت و محبوبیت بلاک چین، کاربران بیشتری از آن استفاده میکنند که بهمعنای افزایش تعداد تراکنشها، اپلیکیشنهای غیرمتمرکز و قراردادهای هوشمند خواهد بود.
افزایش فعالیتهای تراکنشی در شبکه بلاک چین یعنی نودها برای تأیید فرایندها تحت فشار بیشتری قرار میگیرند. درواقع آنها باید تراکنشهای بیشتری را تأیید کنند و درنتیجه احتمال توقف فعالیت یا چالشهای بزرگتر برای آنها وجود دارد. چندی پیش رخدادی به همین صورت در اتریوم رخ داد که در نتیجهی فشار بیش از کاربران بازی CryptoKitties رخ داده بود. بازی مذکور در آن زمان ۱۱ درصد از تراکنشهای بلاک چین اتریوم را به خود اختصاص میداد. در صورت وقوع چنین رخدادهایی، سرعت تراکنشها بهشدت کاهش پیدا میکند گه قطعا برای کاربردهای طولانیمدت و گسترده از بلاک چین، پدیده قابل قبولی نیست.
وقتی بلاک چین را طبق تعریفهای بالا به بخشهای کوچکتر بشکنیم و هر گروه از نودها مسئولیت بخشی از تراکنشها را بر عهده بگیرند، هر نود مشغول مدیریت کل شبکه یا در اختیار داشتن همه بخشهای دفتر کل نخواهد بود. درنتیجه تأیید تراکنشها بهصورت موازی رخ خواهد داد و به روند تأیید پشت سر هم نیازی نخواهد بود. درنهایت سرعت کل شبکه افزایش مییابد. چنین رویکردی بهمرور موجب حل شدن چالش مقیاسپذیری بلاک چین میشود و آن را به راهکاری جامع و طولانیمدت بدل میکند.
نقاط ضعف شاردینگ
وقتی بلاک چین را طی فرایند شاردینگ به بخشهای کوچکتر تقسیم میکنیم، هریک از آنها به یک بلاک چین مجزا بدل خواهد شد. کاربران و اپلیکیشنهای یک زیرمجموعه بدون پیادهسازی راهکارهای اضافی توانایی ارتباط با کاربران و اپلیکیشنهای مجموعه دیگر را نخواهند داشت. درواقع مکانیزمهای ارتباطی مخصوص بین شارد باید در بلاک چین پیادهسازی شود. درنتیجه لایهای جدید برای توسعهدهندهها در بلاک چین ایجاد میشود که به پیچیدهتر شدن آن خواهد انجامید.
در بلاک چینهای تقسیم شده مسئله امنیت نیز نگرانی جدیدی ایجاد میکند. با کوچکتر شدن شبکه، قدرت هش مورد نیاز برای در اختیار گرفتن کنترل هر بخش کاهش مییابد و درنتیجه هکرها برای ورود به آن، فرایند آسانتری خواهند داشت.
وقتی یک بخش یا شارد از بلاک چین تقسیم شده تحت نفوذ هکرها قرار بگیرد، آنها میتوانند تراکنشهای غیرواقعی را به شبکه اصلی منتقل کنند. بهعلاوه این احتمال وجود دارد که همه تراکنشهای بخش تحت نفوذ غیرمعتبر شناخته شده و از بین بروند. اتریوم برای واکنش به این چالش راهکاری بهنام Random Sampling دارد که نودها در بخشهای متنوع را به دستههای تصادفی شبکه متصل میکند تا تراکنشها و رخدادها را طبق روندی تصادفی تأیید کنند.
راهکارهای جایگزین شاردینگ
همانطور که گفته شد شاردینگ بهعنوان راهکاری برای افزایش سرعت و مقیاسدهی بلاک چین مطرح میشود. برای حل این چالشها، دو راهکار دیگر نیز از سوی توسعهدهندهها ارائه میشود.
راهکار اول حل مشکل سرعت و مقیاسدهی بلاک چین، با افزایش ابعاد بلوک اجرا میشود. در تعریف ساده هرچه ابعاد بلوک بزرگتر باشد، تراکنشهای بیشتری در آن قرار میگیرند و تراکنشهای بیشتری در واحد ثانیه تأیید میشوند. البته افزایش ابعاد بلوک بهمعنای افزایش قدرت پردازشی مورد نیاز برای تأیید آن نیز خواهد بود.
اگر ابعاد بلوک در همه بلاک چین ها به صورت مداوم افزایش یابد، پس از مدتی تنها کامپیوترها فوق پیشرفته توانایی تأیید تراکنشها و عمل بهصورت نود را خواهند داشت. درنتیجه افزایش هزینه کاربران برای تبدیل شدن به نود، استخرهای استخراج بهمرور کوچکتر و متمرکزتر میشوند که ریسک حملات ۵۱ درصد را افزایش میدهد. بهعلاوه افزایش ابعاد بلوک به هاردفورک هم نیاز خواهد داشت که ریسک تقسیم شدن جامعه بلاک چین یا رمزارز مورد نظر را به همراه دارد. درنهایت اگر همه اعضای بلاک چین با تصمیم جدید موافق نباشند، دو شبکه با دو سکه مجزا خواهیم داشت. بهخاطر همه مشکلات بالا، افزایش ابعاد بلوک همیشه بهعنوان راهکاری موقتی و کوتاهمدت شناخته میشود.
راهکار دوم جایگزین شاردینگ بهصورت عرضه آلتکوین مطرح میشود. درنتیجه عملیات و اپلیکیشنهای متنوع در شبکههای مجزا اجرا میشوند. چنین راهکاری باعث افزایش کارایی و سرعت میشود چون فشار روی یک بلاک چین متمرکز نخواهد بود. ازطرفی ریسکهای امنیتی مجددا افزایش مییابند چون قدرت هش بین بلاک چینهای متعدد، تقسیم میشود و کاهش مییابد. درنتیجه باز هم حمله به شبکه آسانتر میشود چون قدرت هش مورد نیاز برای انجام حمله ۵۱ درصدی کمتر خواهد بود. درنهایت آلتکوین نیز بهعنوان راهکاری کاربردی مطرح نمیشود.
کاربردهای کنونی شاردینگ
چند نمونه از بلاک چینهای موجود از شاردینگ بهعنوان راهکار افزایش بازدهی استفاده میکنند، درحالیکه در برخی دیگر فرایند توسعه و بررسی هنوز ادامه دارد. بلاک چین Zilliqa یکی از معدود شبکههای عمومی است که شاردینگ را برای افزایش سرعت بهکار برد و در بررسیهای اولیه به سرعت ۲،۸۲۸ تراکنش در ثانیه رسید.
اکوسیستم بلاک چین Near به توسعهدهندهها امکان میدهد تا اپلیکیشنهای غیرمتمرکز بسازند و توزیع کنند. آنها از لقب بلاک چین شارد شدهی مورد پسند توسعهدهندهها برای خود استفاده میکنند که با رویکرد اثبات سهام فعالیت میکند. تیم پشتیبان Near ادعا میکند که شاردهای بلاک چین آنها بهقدری کوچک هستند که در پلتفرمهای کوچک ابری و حتی دستگاههای موبایل امکان ایجاد و پشتیبانی از یک نود وجود دارد.
اتریوم هم رویکردی شبیه به Near دارد و اکوسیستمی بلاک چینی برای پیادهسازی قرارداد هوشمند و اپلیکیشنهای غیرمتمرکز ارائه میکند. بنیاد اتریوم قصد دارد در نسخهی ۲/۰ این پلتفرم، شاردینگ را بهعنوان قابلیتی جدید معرفی کند که احتمالا در ژانویهی ۲۰۲۰ ارائه خواهد شد.
از دیگر پروژههای بلاک چین که شاردینگ را بهعنوان یک راهکار در نظر دارند میتوان به Cardano، QuarkChain و PChain اشاره کرد.
آیندهی شاردینگ در بلاک چین
فیسبوک اخیرا از رمزارز اختصاصی خود بهنام لیبرا رونمایی کرد و جزئیات Whitepaper آن نیز بررسی شد. غول شبکههای اجتماعی قصد دارد سرویس خود را در نیمه اول سال ۲۰۲۰ ارائه کند. بهعلاوه تیم Chaonspace نیز توسط آنها خریداری شدند که از پیشگامان شاردینگ در دنیای بلاک چین محسوب میشوند. درنتیجه شاید بلاک چین لیبرا در بخشهایی از شاردینگ استفاده کند.
کارشناسان امیدوار هستند که شاردینگ بتواند چالش سهگانه بلاک چین را حل کند. بنیانگذار اتریوم، ویتالیک بوترین مفهوم چالش سهگانه را مطرح کرده و ادعا میکند که اصولا در بلاک چین تنها دو عدد از سه قابلیت اصلی را میتوان حفظ کرد. قابلیتهای مذکور امنیت، غیرمتمرکز بودن و قابلیت مقیاسدهی هستند. بهبیان سادهتر همیشه باید یکی از قابلیتها فدای دو قابلیت دیگر شود. بههرحال برخی کارشناسان میگویند در صورت حل چالشهای شاردینگ، شاید بتوان مقیاسپذیری را بدون فدا کردن دو قابلیت دیگر، به بلاک چین اضافه کرد. رویکردی که بلاک چین را یک قدم به کاربرد جهانی و عمومی نزدیکتر خواهد کرد.
منبع : cointelegraph