شاردینگ (Sharding) یک تکنیک پارتیشن بندی پایگاهداده است که توسط شرکتهای بلاکچینی با هدف افزایش مقیاس پذیری استفاده میشود و آنها را قادر میسازد تا تراکنشهای بیشتری را در هر ثانیه پردازش کنند.
در سامانه مدیریت پایگاه داده ها (DBMS)، شاردینگ نوعی پارتیشن بندی پایگاه داده است که در آن یک پایگاه بزرگداده به پایگاه های کوچکتر (موسوم به شارد) تقسیم میشود. این شاردها نه تنها کوچکتر هستند، بلکه سریعتربوده و به راحتی قابل کنترل هستند.
شاردینگ مفهوم جدیدی نیست و حداقل از اواخر دهه 1990 در مدیریت سنتی و متمرکز پایگاه داده وجود داشتهاست. این اصطلاح در واقع توسط یکی از اولین بازی های نقش آفرینی آنلاین چند نفره گسترده (MMORPG) به نام “Ultima Online” عمومیت یافت که در آن توسعه دهندگان برای حل مشکل ترافیک، بازیکنان را در سرورهای مختلف پخش کردند.
شاردینگ در بلاکچین
شبکه بلاکچین پایگاه داده ای است که در آن نودها دادههای مجزایی را ارائه میکنند. اگر شاردینگ را در بلاکچین اعمال کنیم، شبکه به قسمت های کوچکتری (شارد) تقسیم خواهد شد. هر یک از شاردها مجموعه ای مجزا از قراردادهای هوشمند و موجودی حساب را نگهداری خواهند کرد.
با شاردینگ، نودها در شاردهای جداگانه ای قرار خواهند گرفت تا تراکنشها و عملیات خاص را تایید کنند و دیگر مثل گذشته مسئول تایید تراکنشها در کل شبکه نیستند.
هدف استفاده از شاردینگ در بلاکچین تقسیم شبکه به قسمت های کوچکتر و قابل کنترل تر است تا در نتیجه آن تعداد تراکنشها افزایش یابد و مشکل مقیاس پذیری که امروزه بیشتر بلاکچینهای بزرگ با آن روبرو هستند، حل شود.
روش کار شاردینگ چگونه است؟
برای آشنایی بیشتر با روش کار شاردینگ، می توانیم از بلاکچین اتریوم استفاده کنیم. بلاکچین اتریوم همانند بلاکچین بیت کوین شامل نودهای مختلفی است که هر یک از این نودها میزان مشخصی از قدرت هش را در اختیار دارند که از این طریق می توانند قراردادهای هوشمند و برنامه های غیرمتمرکز خود را اجرایی کند.
در حال حاضر روش کار بلاکچین ارز دیجیتال اتریوم به صورت خطی و یا افقی بوده که در آن هر یک از نودها باید تمامی تراکنش ها را پردازش کنند. از آنجایی که تمام روند تراکنش ها به صورت خطی است، فرآیند آن زمان بر است. به گونه ای که بابت تایید هر 10 تراکنش، یک ثانیه زمان می برد. اگر برای افزایش عملکرد بلاکچین اتریوم، کامپیوتر اضافه شود، تاثیر چندانی بر روند کار بلاکچین نخواهد داشت.
اما این مشکل با استفاده از شاردینگ قابل رفع است، به گونه ای که شاردینگ پردازش تراکنش ها را از حالت افقی به موازی تبدیل می کند. از این طریق هر یک از نودها مسئول پردازش تعداد مشخصی از تراکنش ها هستند و تمامی تراکنش ها به صورت موازی و به صورت خطوط چندگانه انجام می شود. در واقع شاردینگ موجب می شود که بلاکچین به شاردهای مختلف تقسیم شده و نودها مسئولیت تایید بخشی از تراکنش های بلاک را بر عهده دارد و نیازی نیست تمامی تراکنش ها را تایید کند.
شاردینگ چه مشکلی را حل میکند؟
شاردینگ راهکار بالقوهای برای مشکلات مقیاسپذیری در بلاک چینهای امروزی است.
با استفاده از شاردینگ، دیتابیس به اجزای کوچکتری تقسیم میشود. در نتیجه مدیریت دادهها آسانتر خواهد شد. زمانی که یک دیتابیس به شاردهای کوچکتر تقسیم میشود، سرعت پردازش و تراکنش در این شاردهای کوچک، سریعتر خواهد بود. این مورد به بهبود عملکرد کلی سیستم کمک زیادی میکند. مزیت دیگر شاردینگ، کاهش هزینهها است. سیستمی که از ساختار شاردینگ استفاده میکند، در مقایسه با سیستمهای دارای پایگاه داده یکتا، به مراتب ارزانتر است.
معایب شاردینگ چیست؟
چالش شاردینگ مربوط به امنیت تبادل اطلاعات است.
اگر بلاکچین را به چند قسمت ایزولهشده تقسیم کنیم، هر شارد به عنوان یک شبکه بلاکچین دیدهمیشود. کاربران و اپلیکیشنهای یک سابدامین نمیتوانند با کاربران و اپلیکیشنهای سابدامین دیگر ارتباط برقرار کند و تنها راه ارتباطی آنها، روش مخصوص ارتباطی شارد است. این مورد یک مشکل دیگر را نیز ایجاد میکند که توسعهدهندگان باید به آن فکر کنند. در سگمنت هر بلاکچین، امنیت به یک نگرانی و مساله بسیار مهم تبدیل شدهاست.
این مشکل به عنوان حمله 1 درصد به یک شارد نیز شناخته میشود. زمانی که یک سگمنت هک شود، هکرها میتوانند یک تراکنش اشتباه یا غیرمجاز را تأیید کنند یا اطلاعات شبکه را از بین ببرند. راهکار اتریوم جهت این خطر امنیتی این است که باید دفاتر کل و تراکنشها به صورت تصادفی و رندوم در شبکه توزیع شود تا نودها نیز به صورت تصادفی آنها را تأیید کنند.
آیا برای جایگزین کردن شاردینگ، راهحلی وجود دارد؟
دو پیشنهاد از طرف توسعهدهندگان ارائهشده که به افزایش عملکرد و سرعت تأیید تراکنش در شبکه کمک خواهد کرد.
اولین پیشنهاد، افزایش سایز و حجم بلاکها است. هر چقدر که یک بلاک بزرگتر باشد، تراکنشهای بیشتری را در خود جای میدهد و تراکنشهای بیشتری در ثانیه مورد تأیید قرار میگیرند. البته هر چقدر که بلاک بزرگتر باشد، به قدرت بیشتری نیز برای تأیید بلاک نیاز خواهد داشت.
دومین پیشنهاد این است که از آلت کوینها استفاده کنیم که عملکرد و نرم افزارهای آن روی یک زنجیره و یک کوین انجام میگیرد. این مورد، عملکرد را بهبود میدهد؛ زیرا دیگر از یک بلاکچین به صورت کامل استفاده نمیکنید. از طرفی یک خطر امنیتی را نیز به وجود میآورد که به دلیل استفاده از همه توان شبکه روی چندین بلاکچین به وجود میآید. دوباره خطرات هک شدن شبکه بیشتر میشوند و هکرها به آسانی میتوانند به شبکه حمله کنند.
چه بلاکچینهایی از شاردینگ استفاده می کنند؟
اولین بلاکچین عمومی که به طور عملی sharding را پیاده سازی کرده است، زیلیکا (Zilliqa) نام دارد. این ارز با استفاده از شاردینگ تعداد تراکنشهای انجامشده در هر ثانیه را به 2828 رساندهاست.
بلاکچین “Near” نیز به توسعه دهندگان اجازه می دهد تا به راحتی برنامه های غیر متمرکز را بسازند و اجرا کنند. این اکوسیستم خود را یک بلاکچین اثبات سهام شاردشده و مناسب برای توسعه دهندگان می داند. فناوری شاردینگ در این بلاکچین به نودها اجازه می دهد تا به اندازه کافی کوچک بمانند که حتی در آینده قابلیت اجرا بر روی گوشی های هوشمند را داشته باشند.
سایر پروژههای بلاک چینی دیگر که شاردینگ را راه حلی برای مقیاس پذیری می دانند شامل کاردانو، کوارک چین (QuarkChain) و پی چین (PChain) هستند.
شاردینگ در شبکه اتریوم
ساختار فعلی شبکه اتریوم، همانند شبکه بیت کوین، از الگوریتم اجماع گواه اثبات کار استفاده میکند. در چنین ساختاری، نودها برای مشارکت در شبکه بایستی دستگاه ماینر برای تولید هش ریت متناسب برای ایجاد بلوکهای جدید را فراهم کنند. اما در شبکه اتریوم ۲ این ساختار به گواه اثبات سهام تغییر خواهد کرد. در آینده، شاردینگ یکی از المانهای اساسی شبکه اتریوم، موسوم به اتریوم ۲، خواهد بود. اتریوم از ۶۴ شارد مختلف استفاده خواهد کرد. در شبکه اتریوم شاردشده، تراکم شبکه کاهشیافته و سرعت پردازش تراکنشها در هر ثانیه افزایش خواهد یافت.
سخن پایانی
همانطور که اشاره شد، اگر شاردینگ از پس چالشهای پیش روی خود برآید، میتواند مقیاسپذیری را به بلاکچین و غیرمتمرکز بودن و امنیت را به شبکه برگرداند. این کار میتواند بلاکچینها را یک قدم دیگر به پایداری نزدیک کند.