شاردینگ (sharding) یک نوع پایگاه داده یا دیتابیس تقسیمبندی شده است که به عنوان پایگاه دارای تقسیمبندی افقی نیز شناخته میشود. پروسه شارد کردن به این صورت است که یک داده را به چند قسمت کوچکتر و قابل مدیریت با هدف بهبود عملکرد و کاهش مدت صفها تبدیل میکند.
شاردینگ، یک اصطلاح جدید نیست و قدمت آن به اواخر دهه ۱۹۹۰ بر میگردد که مدیریت سنتی و متمرکز کاربرد بیشتری داشت. این اصطلاح توسط یک بازی چند نفره به نام MMORPG ساخته شد و به این صورت استفاده میشد که سازندگان آن از چند بانک داده مختلف در بازی برای شلوغ نشدن سرورها استفاده میکردند. مثال بارز شاردینگ در دنیای تجارت، تقسیم اطلاعات کاربران در مناطق مختلف جغرافیایی است. کاربرانی که در یک منطقه جغرافیایی قرار دارند، اطلاعاتشان یکی شده و در سرورهای همان منطقه ذخیره میشوند.
شاردینگ از نقطه نظر بلاکچین چیست؟
sharding در اصل فرآیندی در بلاکچین است. به طور کلی شاردینگ شبکه بلاکچین پایگاه دادهای است که گرهها یا نودها (nodes) را در سرورهای مجزا نشان میدهد.
در این زمان، هر قسمت از بلاکچین، به یک مجموعه منحصربهفرد از قراردادهای هوشمند و مانده حساب اکانتها تبدیل خواهد شد.
در این هنگام نودها نیز به چند قسمت تقسیم میشوند تا تراکنشها را اعتبارسنجی و تأیید کنند و این کار را به صورت اختصاصی انجام دهند.
هدف این است که با تقسیم کردن بلاکچین به چند سگمنت (Segment) یا بخش قابل کنترل، قدرت شبکه بیشتر شود و تراکنشهای بیشتری در هر ثانیه اعتبارسنجی و تأیید شوند.
شاردینگ چگونه کار میکند؟
برای توضیح بهتر این تکنولوژی، بهتر است که از بلاکچین اتریوم به عنوان یک مثال استفاده کنیم.
همانطور که میدانید، بلاکچین رمزارز اتریوم از هزاران کامپیوتر و نود تشکیل شده است. در حال حاضر با توجه به گزارشات سایت ethernodes.org، ۸.۶۲۲ نود و رایانه وجود دارد که هر کدام از آنها قدرت هش (hash power) مورد نیاز را به شبکه اصلی میرساند. این هش پاورها هستند که قدرت را به ماشین مجازی اتریوم (EVM) میدهد که قراردادهای هوشمند و نرم افزارهای غیر متمرکز را راهاندازی کند.
در حال حاضر شبکه اتریوم به این صورت کار میکند که اگر یک تراکنش به وجود بیاید، شبکه شروع به کار کرده و یک نود ایجاد میکند تا تراکنش را انجام دهد. بنابراین این تراکنش از یک فرآیند تأیید عبور میکند و شاید مدت زیادی به طول بینجامد.
به طور مثال شبکه ویزا (Visa) به طور متوسط میتواند ۲۴ هزار تراکنش در ثانیه را تأیید کند که سرعت بسیار زیادی است.
با استفاده از شاردینگ، که یک مدل اجرای خطی است (Linear execution model)، میتوان هر عملیات (تراکنش) را به یکی از نودها و رایانهها سپرد که یک مدل اجرای موازی تشکیل میشود. در این مدل، نودها فقط برای محاسبات خاص به کار میافتند و محاسبات آسان به رایانهها سپرده میشود. این کار به شبکه اجازه میدهد که چندین تراکنش را به صورت همزمان انجام دهد.
به طور کلی بلاکچین به چند قسمت کوچک تقسیم میشود که باکت یا ساب دامین (Sub Domain) نامیده میشوند. نودها نیز در بلاکچین پخش شده و به جای اینکه اطلاعات همه دفتر کل را حفظ کنند، بخشی از دفتر کل را حفظ میکنند که به اجرای پروسهها، اعتبارسنجی تراکنشها و تأیید آنها مربوط است.
شاردینگ چه مشکلی را حل خواهد کرد؟
شاردینگ یک راهحل بسیار خوب برای حل مشکل مقیاس پذیری شبکه بلاکچین است.
همانطور که در بخش قبل اشاره کردیم، یکی از بزرگترین مشکلاتی که شبکه بلاکچین با آن روبهرو شده است، مقیاسپذیری است. هر چقدر که یک شبکه بلاکچین معروف شود، کاربران، قراردادها و اپلیکشنهای غیر متمرکز (DApps) بیشتری به سمت آن میروند.
هر چقدر که تراکنشها در شبکه بیشتر شود، به نودهای بیشتری برای تأیید آنها نیاز خواهد داشت. در این زمان خطر کرش شدن شبکه بلاکچین بیشتر میشود و خطرات زیادی آن را تهدید خواهد کرد (همانطور که در بلاکچین اتریوم در بخش CryptoKitties، زمانی که ۱۱ درصد شبکه برای یک تراکنش اشغال شد، مشاهده کردید). اگر این اتفاق در بلاکچین رخ دهد، سرعت تراکنشها به شدت کاهش خواهد یافت که موقعیت ایدهآلی برای بلندمدت نخواهد بود و اعتبار آن را زیر سؤال خواهد برد.
همانطور که گفتیم، اگر بلاکچین به سگمنتهای کوچکتر همراه با تعدادی گره یا نود تقسیم شود، هر گره نیاز به به کار گرفتن تمام نیروی خود و شبکه برای انجام یک عملیات نخواهد داشت.
همچنین یک راهحل نیز برای مقیاسپذیری بلاکچینها در بلندمدت خواهد بود.
آیا شاردینگ نقطه ضعفی دارد؟
چالش شاردینگ مربوط به امنیت تبادل اطلاعات است.
اگر بلاکچین را به چند قسمت ایزولهشده تقسیم کنیم، هر شارد به عنوان یک شبکه بلاکچین دیده میشود. کاربران و اپلیکیشنهای یک سابدامین نمیتوانند با کاربران و اپلیکیشنهای سابدامین دیگر ارتباط برقرار کند و تنها راه ارتباطی آنها، روش مخصوص ارتباطی شارد است. این مورد یک مشکل دیگر را نیز ایجاد میکند که توسعهدهندگان باید به آن فکر کنند.
در سگمنت هر بلاکچین، امنیت به یک نگرانی و مساله بسیار مهم تبدیل شده است.
این مشکل به عنوان حمله ۱ درصد به یک شارد نیز شناخته میشود. زمانی که یک سگمنت هک شود، هکرها میتوانند یک تراکنش اشتباه یا غیرمجاز را تأیید کنند یا اطلاعات شبکه را از بین ببرند. راهکار اتریوم جهت این خطر امنیتی این است که باید دفاتر کل و تراکنشها به صورت تصادفی و رندوم در شبکه توزیع شود تا نودها نیز به صورت تصادفی آنها را تأیید کنند.
آیا برای جایگزین کردن شاردینگ، راهحلی وجود دارد؟
دو پیشنهاد از طرف توسعهدهندگان ارائه شده که به افزایش عملکرد و سرعت تأیید تراکنش در شبکه کمک خواهد کرد.
اولین پیشنهاد، افزایش سایز و حجم بلاکها است. هر چقدر که یک بلاک بزرگتر باشد، تراکنشهای بیشتری را در خود جای میدهد و تراکنشهای بیشتری در ثانیه مورد تأیید قرار میگیرند. البته هر چقدر که بلاک بزرگتر باشد، به قدرت بیشتری نیز برای تأیید بلاک نیاز خواهد داشت.
افزایش تجهیزات شبکه به این معنی است که استخر نودها کوچکتر و متمرکزتر خواهد شد. این امر خطر حملههای ۵۱ درصد را افزایش خواهد داد. افزایش سایز بلاک به یک هارد فورک نیز نیاز دارد که جلوی باز شدن شبکه را بگیرد. اگر هر کسی یک بلاکچین را به دو زنجیره متفاوت تقسیم کند، میتواند از دو کوین مجزا استفاده کند. البته با افزایش سایز بلاک تا مدتی مشکل برطرف میشود و پس از مدتی مجددا نیاز است که سایز بلاک افزایش پیدا کند، بنابراین افزایش سایز بلاک فقط به عنوان یک راهحل کوتاهمدت قابل انجام است.
دومین پیشنهاد این است که از آلت کوینها استفاده کنیم که عملکرد و نرم افزارهای آن روی یک زنجیره و یک کوین انجام میگیرد. این مورد، عملکرد را بهبود میدهد؛ زیرا دیگر از یک بلاکچین به صورت کامل استفاده نمیکنید. از طرفی یک خطر امنیتی را نیز به وجود میآورد که به دلیل استفاده از همه توان شبکه روی چندین بلاکچین به وجود میآید. دوباره خطرات هک شدن شبکه بیشتر میشوند و هکرها به آسانی میتوانند به شبکه حمله کنند. در حالی که همه قدرت هش شبکه روی چند بلاکچین تقسیم شده است، قدرت کافی برای به دست گرفتن ۵۱ درصد از عملیاتهای شبکه وجود نخواهد داشت. بنابراین این راهحل ناکارآمد بود.
چه کسی از شاردینگ استفاده میکند؟
در حال حاضر برخی از بلاکچینها از مکانیزم شاردینگ استفاده میکنند، در حالی که برخی دیگر در حال توسعه و تعمیر خود بر اساس آن هستند. زیلیکا (Zilliqa) اولین پلتفرم بلاکچین عمومی است که این تکنولوژی را پیادهسازی کرده است. این پلتفرم ۲.۸۲۸ تراکنش بر ثانیه را روی شبکه آزمایشی خود پیادهسازی کرده است.
اکوسیستم بلاکچین موسوم به نیِر (Blockchain Near) به توسعهدهندگان اجازه میدهد که به راحتی برنامههای غیرمتمرکز را ایجاد و نصب کنند. این برنامه خود را یک بلاکچین شاردشده میداند که با الگوریتم اثبات سهام سازگار است. همچنین میگوید فناوری شاردینگ به نودها اجازه میدهد که به اندازه کافی کوچک باشند تا در آینده در هاستهای ابری در تلفن همراه نیز قابل اجرا باشند.
دیگر پروژههای مبتنی بر بلاکچین، شاردینگ را به عنوان یک راهحل برای حل مشکل مقیاسپذیری میبینند که از آنها میتوان به کاردانو (Cardano)، کوارک چین (QuarkChain) و پی چین (PChain) اشاره کرد.
آینده بلاکچین شاردینگ چگونه است؟
شاردینگ به سبب ارتباط با رمزارز لیبرای فیسبوک توجه بیشتری را به خود جذب کرده است.
اخیراً فیسبوک اطلاعات بیشتری را درباره رمزارز خود یعنی لیبرا، انتشار داده است که همراه با این اطلاعات، وایت پیپر این رمزارز نیز منتشر شد. فیسبوک برنامه داشت که لیبرا را در اوایل سال ۲۰۲۰ راهاندازی کند. همچنین اعلام کرد به یک زنجیره نیاز دارد که فضای خوبی داشته باشد تا بتواند شاردینگ را روی آن اجرا کند. این موضوع میتواند نشاندهنده تقسیمبندی شدن بلاکچین پروژه لیبرا باشد.
به طور کلی این تکنولوژی میتواند یک راهحل برای حل مشکلات بلاکچینهای سهگانه باشد. همانطور که ویتالیک بوترین، بنیانگذار اتریوم توضیح داده است، در سهگانگی بلاکچینها، شما فقط توانایی راهاندازی ۲ بلاکچین را به صورت همزمان دارید.
این ویژگیها به این دلیل به وجود آمدهاند که شما باید توافق بلاکچین دیگر را برای انجام دادن کار و عملیات در شبکه داشته باشید.
همانطور که بنیامین مینکو (Beniamin Mincu)، مدیرعامل شبکه الراند بیان کرده است، یک بلاکچین باید بر مقیاسپذیری و قابلیت همکاری تمرکز داشته باشد.
یک دیدگاه