شاردینگ (sharding)؛ حل مشکل مقیاس پذیری اتریوم
شاردینگ (sharding) یکی از پارامترهای اصلی و تأثیرگذار در آینده پروژه اتریوم است. این مفهوم در واقع کمی پیچیده است و بسیاری از فعالان حوزه کریپتو با آن بهخوبی آشنا نیستند. بنا به گفته خالق اتریوم «ویتالیک بوترین»، تکنولوژی شاردینگ بهترین راه برای افزایش «مقیاس پذیری» در شبکههای بلاکچین است. اما شاردینگ چیست و چه راه حلی برای حل مشکل مقیاس پذیری دارد؟ در این مقاله از والکس، بهصورت کامل این مفهوم را بررسی خواهیم کرد.
درک مفهوم مقیاس پذیری
برای آنکه درک بهتری از شاردینگ داشته باشید بهتر است یک گام به عقب برداشته و مفهوم مقیاسپذیری را بررسی کنید.
مقیاسپذیری (Scalability) در بلاکچین، توانایی قدرت پاسخگویی یک شبکه به میزان تقاضا کاربران است که شامل تعداد تراکنش در ثانیه، حجم موردنیاز برای ذخیره شبکه بلاکچین و سرعت انتقال در اطلاعات شبکه میشود. هرچه سرعت تأیید تراکنشها در شبکه بالاتر باشد، نشاندهنده مقیاسپذیری بهتر شبکه است. در واقع مقیاسپذیری به این معناست که وقتی تعداد کاربرانی که از یک شبکه استفاده میکنند زیاد شود، عملکرد و کارایی سیستم چه تغییری میکند. برای مثال، ممکن است روزانه ۲۰۰ تراکنش به شبکه بلاکچین ارسال شود و هر تراکنش به طور میانگین در زمان ۲ دقیقه پردازش، تأیید و انجام شود. اما چنانچه یک روز دیگر ۲ هزار تراکنش به شبکه بلاکچین ارسال شود، تراکنش و تأیید باز هم ۲ دقیقه زمان نیاز دارد؟ اگر جواب این سؤال بله است، یعنی این شبکه مقیاسپذیر است. درصورتیکه جواب خیر باشد و زمان میانگین برای تأیید تراکنشها بیشتر شود، این شبکه مقیاسپذیر نیست.
راه کارهای حل مشکل مقیاس پذیری بلاکچین
تا به امروز راه کارهای مختلفی برای حل این مشکل ارائه شدهاند که برخی از آنها چندان هم موفق نبودهاند. در مقابل برخی نیز دستاوردهای چشمگیری را به ارمغان آوردهاند. معرفی مکانیزمهای اجماع کار، شاردینگ، هارد فورک (Hard Fork) و بلاک چین تو در تو، بهترین راهحلهایی هستند که برای برطرفکردن مشکل مقیاسپذیری بلاکچین معرفی شدهاند. در این مطلب راهحل شاردینگ را مورد بررسی قرار میدهیم.
سه گانه مقیاس پذیری
سه ویژگی «تمرکززدایی»، «مقیاسپذیری» و «امنیت» در کنار یکدیگر مفهومی به نام سهگانه مقیاسپذیری را میسازند. این مفهوم برای اولینبار توسط ویتالیک بوترین مطرح شد و میگوید اگر پروژهای میخواهد مقیاسپذیری داشته باشد، باید تمرکززدایی و امنیت را قربانی کند. چنانچه یک پروژه قصد دارد تمرکززدایی داشته باشد، باید از مقیاسپذیری بگذرد. تمامی شبکههای بلاکچین در تلاش هستند تا این ۳ ویژگی را بهصورت همزمان داشته باشند، اما دچار مشکل میشوند. تا قبل از ظهور شاردینگ این امکان اصلاً وجود نداشت و همیشه باید یکی از این ۳ ویژگی را قربانی سایرین میکردند. اما حالا راهی پیش روی توسعهدهندگان بلاکچین باز شده است تا در کنار حفظ امنیت و تمرکززدایی، مقیاسپذیری پروژههای خود را نیز افزایش دهند.
اکنون باتوجهبه مسئلهای که مطرح شد، زمان آن رسیده است که به سراغ ایده تکنولوژی شاردینگ برویم.
شاردینگ چیست؟
کلمه “Shard” به معنای جزء کوچکی از مجموعه بزرگتر و “Sharding” به معنی تقسیم کردن یک مجموعه بزرگ به اجزای کوچکتر است. شاردینگ به معنای تقسیم کردن یک پردازش بزرگ به پردازشهای کوچکتر است. فرض کنید قصد چیدن یک پازل ۱۰۰۰ تکهای را دارید. بهجای آن که تمام قطعات را روی میز بریزید و شروع به ساخت پازل کنید، بهتر است آنها را بر اساس رنگ و فرم آنها دستهبندی کنید. سپس میتوانید آنها خیلی راحتتر کنار هم بچینید و پازل خود را تکمیل کنید. تکنولوژی شاردینگ نیز راهکاری است که بار پردازش را به قسمتهای کوچکتر تقسیم میکند و به همین جهت، امنیت و سرعت شبکه افزایش پیدا میکند. به لحاظ تئوری این راهکاری که ارائه شدهاست با کمترین هزینه میتواند مشکلات مقیاسپذیری را کاهش دهد.
تکنولوژی شاردینگ میتواند تأخیر و دادههای اضافی را به پارتیشنهای کوچکتر تقسیم کند، که این کار برای بلاکچین بسیار کاربردی است. به همین جهت اگر بخواهید مجموعهدادههای بزرگ و زیادی را در پایگاه دادهای ذخیره کنید، به شاردینگ نیاز خواهیم داشت. البته در حال حاضر این ویژگی فقط در شبکه اتریوم قابلدسترسی است. بر اساس تجزیهوتحلیل دادهها، هم اکنون بیش از ۳۰۰۰ برنامه غیرمتمرکز در بلاکچین اتریوم وجود دارد، بنابراین مقیاسپذیری اتریوم از طریق شاردینگ، جهت حفظ موقعیت در اکوسیستم و حفظ کارایی کل شبکه امری ضروری است.
شاردینگ چگونه کار میکند؟
باتوجهبه تعریف شاردینگ و مشکلات مقیاسپذیری احتمالاً متوجه شدهاید که این تکنولوژی تا چه حدی در دنیای ارزهای دیجیتال کاربردی است. شاردینگ در شبکه بلاکچین به معنی تقسیمبندی یک مجموعه داده بزرگ به چند قسمت کوچکتر و ذخیره آن در چندین پایگاهداده است.
در حقیقت شبکههای بلاکچین یک پایگاه داده خیلی بزرگ هستند که در آنها یک نود(Node) وجود دارد که به عنوان سرور مجزایی در شبکه فعالیت میکند. با اجرا شدن شاردینگ در اکوسیستم بلاکچین، در واقع شبکه به اجزا کوچکتری که «شارد» نام دارد تقسیم میشود. هر کدام از شاردهای موجود در شبکه، مجموعه منحصر به فردی از قرارداد های هوشمند و موجودی حسابها را نگهداری میکنند.
نودها برایآنکه بتوانند تراکنشها و عملیات خاصی را تایید کنند در شاردهای مجزا قرار میگیرند. یعنی نودها در بلاکچین دیگر مسئول تأیید اعتبار تمامی تراکنشها نیستند. برای مثال، بلاکچین قدرتمند اتریوم از هزاران کامپیوتر تحت عنوان نودها تشکیل شده است. هرکدام از این گرهها مقدار مشخصی از قدرت هش را در اختیار شبکه قرار میدهند تا ماشین مجازی اتریوم از پس وظایف خود برآید.
اتریوم بر پایه اجرای خطی کار میکند که در آن هر نود باید تمامی عملیات و تراکنشها را پردازش کند. انجام این فرآیند بسیار زمانبر است و در حال حاضر اتریوم میتواند هر در ثانیه حدود ۱۳ تراکنش را تأیید کند. در مقابل سیستم پرداخت ویزا میتواند ۲۴۰۰۰ تراکنش در ثانیه را پردازش کند. سیستم کاری تکنولوژی شاردینگ بهگونهای است که مدل خطی که در آن هر نود مسئول پردازش تمامی فعالیتها است را به مدل اجرای موازی تغییر میدهد. در این مدل هر نود مسئول پردازش تعداد مشخصی از تراکنشها است که موجب میشود پردازش تراکنشها بهصورت موازی و در خطوط چندگانه پیش خواهند رفت.
انواع قسمت بندی در شاردینگ
شبکه بلاکچین به شاردهای مختلف تقسیم میشود. نودها نیز برای تأیید تراکنشها فقط بخشی از دفتر کل که به آنها اختصاص یافته است را اجرا میکنند و دیگر نیازی به نگهداری و بهروزرسانی کل تراکنشها نخواهد بود. به همین جهت به شاردینگ، قسمتبندی افقی نیز گفته میشود که جایگزینی برای قسمتبندی عمودی است.
دادههای کاربران در قسمتبندی افقی در شاردهای متفاوت ذخیره میشوند. درحالیکه مشخصات کاربران در قسمتبندی عمودی در یک شارد جداگانه ذخیره خواهند شد. برای مثال، آدرس کیف پول در یک شارد و موجودی حساب در یک شارد دیگر قرار میگیرند. در واقع قسمتبندی افقی در فناوری بلاکچین مزایای بیشتری دارد زیرا مقیاسپذیری در آن با کارایی بیشتری قابل پیادهسازی است. در این شبکهها وقتی تعداد زیادی کاربر یا نود وارد شبکه میشوند بهراحتی میتوان یک شارد جدید برای ذخیره اطلاعات ایجاد کرد. با افزایش تعداد شاردها هیچ مشکلی برای مقیاسپذیری پیش نخواهد آمد.
اما در قسمتبندی عمودی تعداد شاردها ثابت هستند و دارای مشکل مقیاسپذیری هستند. در این روش برخی از شاردها مانند شاردی که برای ذخیره آدرس کیف پول کاربر در نظر گرفته شدهاست، با مشکل مقیاسپذیری مواجه خواهند شد.
تکنولوژی شاردینگ چه مشکلی را حل میکند؟
همانطور که در ابتدای متن به آن اشاره کردیم، یکی از مشکلاتی که شبکه بلاکچین با آن مواجه بوده، مقیاسپذیری است. هر میزانی که یک شبکه بلاکچین معروفتر شود، کاربران، اپلیکیشنهای غیرمتمرکز (DApps) و قراردادهای بیشتری به سمت آن میروند. در حال حاضر شاردینگ یک راهحل بسیار عالی و مؤثر برای حل مشکل مقیاسپذیری شبکه بلاکچین است.
زمانی که تراکنشها در یک شبکه زیاد میشوند؛ به نودهای بیشتری برای تأیید آنها نیاز خواهد بود. در این موقعیت خطر کرش شدن شبکه بلاکچین بیشتر میشود و خطراتی زیادی آن را تهدید خواهد کرد. چنانچه این اتفاق در بلاکچین رخ دهد سرعت تراکنشها بهشدت کم میشود و در بلندمدت اعتبار آن را زیر سؤال میبرد. اگر بلاکچین به شاردهای کوچک تقسیم شود نیاز نیست هر گره از تمام نیروی خود و شبکه برای انجام عملیات استفاده کند. در نهایت تأیید تراکنشها بهصورت همزمان انجام میشود که موجب افزایش سرعت شبکه میشود.
دیگر مزیت شاردینگ، کاهش هزینهها است. سیستمهایی که از ساختار شاردینگ استفاده میکنند، در مقابله با سیستمهای دارای پایگاهداده یکتا، بهمراتب ارزانتر هستند.
معرفی نقطه ضعفهای شاردینگ
هرچند تکنولوژی شاردینگ بسیاری از مشکلات ما را حل کرده است اما این سیستم نیز نقاط ضعفی دارد. چالش اصلی شاردینگ مربوط به امنیت تبادل اطلاعات است. اگر اکوسیستم بلاکچین به چند قسمت ایزوله شده تقسیم شود، هر شارد بهعنوان یک شبکه بلاکچین دیده میشود. کاربران و اپلیکیشنهای یک سابدامین نمیتوانند با کاربران و اپلیکیشنهای یک سابدامین دیگر ارتباط برقرار کنند. تنها راه ارتباطی بین آنها، روش مخصوص ارتباطی شاردها است. این مورد یکی مشکل دیگر را نیز به وجود میآورد که توسعهدهندگان باید آن هم در نظر بگیرند. در سگمنت هر بلاکچین، امنیت به یک نگرانی و مسئله بسیار مهم تبدیل شدهاست.
افراد سودجو مانند هکرها با در دست گرفتن تنها یک شارد میتوانند مقداری از سرعت شبکه را کم کنند. چنانچه چند شارد به طور همزمان توسط هکرها، هک شوند یعنی کنترل کل شبکه ازدسترفته است، به این مشکل «حمله ۱ درصد» نیز گفته میشود. وقتی یک سگمنت هک میشود، هکرها میتوانند یک تراکنش اشتباه یا غیرمجاز را تأیید کنند و یا اطلاعات شبکه را از بین ببرند. اما اتریوم یک راهکار امنیتی پیشنهاد داده است که باید دفاتر کل و تراکنشها بهصورت تصادفی و رندوم در شبکه توزیع شود تا نودها نیز بهصورت تصادفی آنها را تأیید کنند.
مشکل بعدی، مشکلات سختافزاری است. ماشینهای پردازش دیتا که منطبق با ساختار شاردینگ باشند با دیگر پردازشگرها متفاوت هستند. یعنی نمیتوانید با استفاده از سختافزارهای فعلی، دیتابیس شارد را مدیریت کنید. این مورد نیز برای بسیاری از افراد مسئلهساز خواهد بود.
راه حل جایگزین برای استفاده از شاردینگ وجود دارد؟
یکی از راهکارهایی که برای افزایش مقیاسپذیری پیشنهاد میشود، افزایش سایز بلاکها است. برخی از کارشناسان بر این باورند که هرچقدر سایز بلاکها بزرگتر شود، تراکنشهای بیشتری در آن جا میشوند. به همین جهت تعداد تراکنشهایی که در ثانیه انجام میشوند هم افزایش پیدا میکند. این راهکار ممکن است عملی شود اما این نکته را باید در نظر داشت که بزرگشدن بلاکها، نیاز به قدرت محاسباتی بیشتر برای تأیید را به دنبال خواهد داشت. اگر سایز بلاکها به طور نامحدودی افزایش پیدا کنند، فقط تجهیزات و سختافزارهای بسیار تخصصی از عهده مدیریت پردازش تراکنشها بهعنوان نود بر میآمدند و تعداد نودهای شبکه به طور قابلتوجهی کاهش پیدا میکرد.
افزایش تجهیزات شبکه به این معنی است که استخر نودها کوچکتر و در نهایت موجب متمرکز شدن نودها و افزایش خطر ۵۱ درصدی است. افزایش سایز بلاکها دردسرهای زیادی دارد و نیازمند هارد فورک است و خطر ایجاد دوگانگی در جامعه پروژه را به دنبال دارد. چنانچه همه افراد بلاکچین خود را به نسخه جدید بهروزرسانی نکنند، دوزنجیره جدا با کوینهای مجزا ایجاد میشود، بنابراین افزایش سایز بلاکها بهعنوان یک راهحل کوتاهمدت قابل انجام است.
دومین پیشنهاد این است که از ارزهای دیجیتالی استفاده کنیم که عملکرد و نرمافزارهای آنها روی یک زنجیره و یک کوین انجام میگیرد. این مورد عملکرد را تا حدودی بهبود میبخشد زیرا دیگر به طور کامل از یک بلاکچین استفاده نمیشود. در مقابل یک خطر امنیتی به دلیل استفاده از همه توان شبکه روی چندین بلاکچین به وجود میآید. این ماجرا موجب آسان شدن کار هکرها میشود و این افراد بهراحتی میتوانند به شبکه حمله کنند. درحالیکه همه قدرت هش شبکه روی چند بلاکچین تقسیم شدهاست، قدرت لازم برای به دست گرفتن ۵۱ درصد از عملیاتهای شبکه وجود نخواهد داشت در نهایت این روش هم ناکارآمد است.
کدام ارزهای دیجیتال از شاردینگ استفاده میکنند؟
تا به امروز فقط چند پروتکل محدود هستند که تکنولوژی شاردینگ را با موفقیت پیادهسازی کردهاند. برخی از پروژههای دیگر نیز درحالتوسعه و تعمیر خود بر اساس این تکنولوژی هستند. اولین پلتفرم بلاکچین عمومی که تکنولوژی شاردینگ را پیادهسازی کرد، پروژه زیلیکا (Zilliqa) است و در شبکه آزمایشی خود موفق به انجام ۲.۸۲۸ تراکنش در ثانیه شد. بلاکچین نیر (Blockchain Near) به توسعهدهندگان اجازه میدهد که بتوانند برنامههای غیرمتمرکز خود را ایجاد و نصب کنند. این برنامه با الگوریتم اثبات سهام سازگار است و خود را یک بلاکچین شارد شده میداند. ویتالیک بوترین خالق بلاکچین اتریوم، قرار است در بهروزرسانی اتریوم ۲.۰ تکنولوژی شاردینگ را پیادهسازی کند. اتریوم دومین بلاکچین بزرگ جهان است و پیادهسازی شاردینگ در آن نمونه برجستهای برای دیگر توسعهدهندگان بلاکچین خواهد بود. از پروژههای دیگری که شاردینگ را بهعنوان یک راهحل برای حل مشکل مقیاسپذیری میبینند میتوان به کاردانو (Cardano)، کوارک چین (QuarkChain) و پی چین (PChain) اشاره کرد. برای معامله کاردانو و اتریوم میتوانید به سایت فروش ارز دیجیتال معتبر والکس مراجعه کنید.
شاردینگ در شبکه اتریوم
در حال حاضر ساختار اتریوم مانند شبکه بیت کوین است و از الگوریتم اجماع گواه اثبات کار استفاده میکند. در این ساختارها نودها برای مشارکت در شبکه، باید دستگاه ماینر جهت تولید هش ریت مناسب برای ایجاد بلوکهای جدید را فراهم کنند. اما این ساختار در بهروزرسانی اتریوم ۲ به گواه اثبات سهام تغییر خواهد کرد. شاردینگ یکی از المانهای اصلی در آینده شبکه اتریوم است که طی آن اتریوم از ۶۴ شارد مختلف استفاده خواهد کرد. در این شبکه جدید، تراکم در شبکه کاهش پیدا میکند و سرعت پردازش تراکنشها به شکل قابلتوجهی افزایش پیدا مییابد.
ویژگیهای شاردینگ اتریوم
شاردینگ به نسبت ایده خیلی بهتری برای مقیاسپذیری یک بلاکچین در مقایسه با پیشنهاد افزایش سایز دیتابیس کنونی است. در اتریوم شارد شده هر کاربری میتواند به نود شبکه تبدیل شود. هزینه راهاندازی برای نود در شبکه اتریوم شارد شده بسیار کمتر از شبکه اتریوم فعلی است. برای راهاندازی نود در این شبکه نیاز به دستگاه خیلی پیشرفتهای نیست و کاربران میتوانند با استفاده از لپتاپ و تلفن هوشمند خود به نود شبکه متصل شوند. اضافهشدن این ویژگی جدید باعث میشود که شبکه غیرمتمرکزتر شود و امنیت آن نیز افزایش پیدا کند.
آینده بلاکچین شاردینگ چگونه خواهد بود؟
شاردینگ توانست به سبب ارتباطی که با رمزارز لیبرای فیسبوک دارد، توجه بیشتری را به خود جلب کند. تکنولوژی شاردینگ میتواند یک راهحل برای بهبود و حل مشکلات بلاکچینهای سهگانه باشد. همانطور که در ابتدای متن به آن اشاره شد، در سهگانگی بلاکچینها توانایی راهاندازی ۲ بلاکچین را بهصورت همزمان دارید. این ویژگیها برای این به وجود آمدند که شما برای انجام کار و عملیات در شبکه باید توافق بلاکچین دیگر را داشته باشید. همان گونه که مدیرعامل شبکه الراند بنیامین مینکو (Beniamin Mincu) اعلام کرد، یک بلاکچین باید بر مقیاسپذیری و قابلیت همکاری متمرکز باشد.
تکنولوژی شاردینگ، راه حلی برای بهبود مقیاس پذیری
در این مطلب از والکس، به بررسی شاردینگ و نحوه کار آن پرداختیم. هم اکنون تکنولوژی شاردینگ یکی از بهترین روشهای ارائه شده برای حل مشکل مقیاسپذیری شبکههای بلاکچین است. شبکه اتریوم نیز قرار است در بهروزرسانی اتریوم ۲ از آن استفاده کند. در این تکنولوژی، زنجیره بلوکی به زنجیرههای کوچکتر تقسیم خواهد شد که به هرکدام از آنها شارد گفته میشود. در این ساختار تمام تراکنشهای ارسال شده به شبکه میان شاردهای مختلف تقسیم شده و به این صورت بار کل تحمیل شده به شبکه میان نودها توزیع میشود. در حال حاضر این پروژه ایرادات کمتری در مقایسه با سایر روشهای مقیاسپذیری دارد. باید منتظر ماند و دید در آینده این راهکار مورد استقبال فعالان حوزه بلاکچین قرار میگیرد یا اینکه یک راهکار دیگر جایگزین آن خواهد شد.
شما آینده تکنولوژی شاردینگ را چگونه تصور میکنید؟ لطفاً نظرات خود را با ما در میان بگذارید.
سؤالات متداول
شاردینگ یک راهحل جدید و کاربردی برای افزایش مقیاسپذیری است و به ترفند خرد کردن دیتا و محاسبه آن به افزایش سرعت تراکنشها کمک میکند.
خیر، در شبکههایی که مبتنی بر الگوریتم گواه اثبات کار هستند به دلیل اینکه تمام تراکنشها توسط تمام نودها بررسی میشود، نمیتوان از تکنولوژی شاردینگ استفاده کرد. فقط در پروژههای مبتنی بر گواه اثبات سهام میتوان از این تکنولوژی استفاده کرد.