با پیدایش بیت کوین، دیدگاه بسیاری از افراد به ارزش بلاک چین تغییر کرد. این فناوری به یکی از هیجان انگیزترین پیشرفت های فنی قرن بیست و یکم تبدیل شده است. هر چه بلاک چین شناخته تر شد، افراد بیشتری برای زیرساخت پروژه های خود از آن استفاده کردند.
بلاک چین مانند ظهور اینترنت در دهه های 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 راهکاری در دنیای رایانه است که برای مقیاس بندی سیستم ها از آن بهره جویی می شود؛ به گونه ای که سیستم ها می توانند داده های مازاد را در بطن خود جای دهند.
از جمله مزایای این روش می توان به تقسیم پایگاه داده به اجزای خردتر، راحتی مدیریت داده ها، افزایش سرعت پردازش تراکنش ها، کمک به توسعه و بهبود عملکرد کلی سیستم و صرفه جویی در هزینه ها و از جمله معایب آن نیز می توان به وجود برخی ایرادات فنی، پیچیدگی های فراوان، از دست رفتن داده ها در صورت اجرانشدن صحیح، ایجاد تعادل میان مقدار داده های ذخیره شده در هر شارد، دشواری فرایند مدیریت داده ها درصورت پردازش حجم بالایی از تراکنش ها و برخی مشکلات سخت افزاری اشاره کرد
با تقسیم شبکه بلاک چین به اجزای کوچک تر، هر گره یا گره مسئول تأیید بخش مشخصی از تراکنش ها خواهند بود؛ درنتیجه، تأیید تراکنش ها به صورت موازی جایگزین مدل خطی شده و باعث افزایش سرعت کل شبکه بلاک چین خواهد شد.
افزایش سایز بلاک ها در شبکه و استفاده کردن از آلت کوین ها برای کاربردهای متفاوت.
برخی شبکه های بلاک چین مانند ارز زیلیکا موفق به اجرای فرایند شاردینگ در شبکه خود شده اند. حال آنکه تعدادی نیز درحال توسعه و اجرای آن هستند؛ مثل ارز دیجیتال اتریوم.