شاردینگ (Sharding) به معنای تکه کردن و بخشبخش کردن یک مجموعه بزرگتر است. به صورتی که با کنار هم قراردادن محتوای همه بخشها، مجموعه مادر را، بدون هرگونه کموکاستی داشته باشیم. از اواخر دهه 90 میلادی از این مفهوم بهصورت عملی در سرورهای مربوط به بازیهای آنلاین و مدیریت پایگاهدادهها استفاده میشد.
تا اینکه به دلیل تاثیری که میتوانست در مقیاسپذیری بلاکچینها داشته باشد، تصمیم گرفته شد که از آن در بلاکچین اتریوم هم استفاده شود.
قبل از اینکه توضیحات بیشتری در این رابطه بدهیم بهتر است بدانید در حال حاضر ارزهای دیجیتالی هستند که بهصورت آزمایشی شاردینگ را روی بلاکچین خود پیادهسازی کردهاند، ارزهایی مثل زیلیکا (Zilliqa) و نیر (NEAR).
همانطور که میدانید، بلاکچین شبکهای است از اطلاعات که درون تعداد زیادی از سیستمهای کامپیوتری (نودها) ذخیره میشوند. هر نود تمامی اطلاعات شبکه را درون خود ذخیره میکند و هر داده جدیدی برای ثبت در یک بلاکچین باید در تمامی نودها ذخیره شود.
در کنار تعریف بالا و در حالت ایدهآل، هر بلاکچین باید سه خصوصیت بسیار مهم و اصلی را داشته باشد. این سه خصوصیت امنیت، غیرمتمرکز بودن و مقیاسپذیری هستند.
در حالت عادی کنار هم قرار دادن این ویژگیها کاری دشوار و تقریباً غیرممکن است. برای درک بهتر علت این موضوع با من همراه باشید.
شبکه اتریوم را در نظر بگیرید. این شبکه در حال حاضر شامل بیش از سه هزار نود است که بهخاطر تعداد بالای نودها، امنیت بالایی دارد و بهعنوان یک شبکه کاملا غیرمتمرکز شناخته میشود. این ویژگی به همراه روشی که برای تایید تراکنشها استفاده میشود(روش اثبات کار POW) مقیاسپذیری شبکه را پایین میآورد.
منظور از مقیاسپذیری چیست؟
احتمالا قبلا با کلمه مقیاس در اموری مربوط به نقشهخوانی آشنا شدهاید، همانطور که یک نقشه جغرافیایی نمای دقیق یک ناحیه را با جزئیات و بدون تغییر در شکل آن توصیف میکند، مقیاسپذیر بودن یک شبکه یعنی آن شبکه بتواند بدون برهم زدن ساختار و قوانین و شکل اصلی خود، رشد کند و بزرگتر شود.
مقیاسپذیرتر بودن یک شبکه فقط به معنای توانایی مناسب شبکه برای رشد نیست، بلکه در مرحله بعدی خواهی نخواهی نشانگر قدرت پردازش بیشتر و سرعت بالا در انجام فعالیتهای یک بلاکچین هم است.
برای آشنایی بهتر با رابطه مقیاسپذیری با سرعت و قدرت پردازش، برمیگردیم به مفهوم بلاکچین، وقتی که قرار است تعداد نودهای شبکه زیاد باشد و هر نود همه اطلاعات را تایید کند، اضافهشدن هر نود جدید به شبکه، حجم کار را برای ثبت اطلاعات، بیشتر و زمان انجام کار را نیز طولانیتر میکند.
یک بادکنک را در نظر بگیرید، ما میتوانیم آن را باد کنیم. حجم این بادکنک بعد از هر بار دمیده شدن در آن بیشتر میشود، این بیشتر شدنِ حجم تا زمان زیادی ادامه نخواهد داشت چون با هر بار بزرگتر شدن بادکنک فشار هوای بیشتری به آن وارد شده، پیوند و ارتباط بین مولکولهای پلاستیک سختتر حفظ شده و پوست پلاستیکی بادکنک نازکتر میشود.
در نتیجه به جایی میرسیم که برای جلوگیری از ترکیدن بادکنک (و ازبینرفتن کارایی آن) باید از باد کردن بیشتر آن دست بکشیم، در غیر این صورت پیوند و یکپارچگی بین مولکولهای تشکیلدهنده آن از بین رفته و بادکنک خواهد ترکید. شبکه اتریوم هم که دارای حدود سه هزار نود و تعداد بسیار زیادی تراکنش میباشد، بیشباهت به این بادکنک نیست.
همه قبول داریم که هرچه نودهای شبکه بیشتر و زنجیره بلاکچین طولانیتر شود، امنیت و غیرمتمرکز بودن قویتر خواهد شد اما درعینحال پردازش اطلاعات هم سختتر شده و در نهایت تا جایی پیش میرود که کارایی شبکه عملاً مختل شود.
فکر میکنم حالا همه با عقیده ویتالیک بوترین در مورد دشواری در کنار هم داشتن امنیت، عدم تمرکزگرایی و مقیاسپذیری موافق باشیم.
تاثیر شاردینگ بر مقیاسپذیری
تا اینجای کار با مشکلات مقیاسپذیری و کاهش سرعت در بلاکچینی مثل اتریوم نسخه 1.0 آشنا شدیم، اما شاردینگ چطور میتواند به حل این مشکل کمک کند؟
همانطور که گفتیم شاردینگ یعنی تفکیک کردن یک مجموعه به بخشهای کوچک. با انجام شاردینگ، بلاکچین اتریوم به قسمتهای کوچکتری تقسیم میشود. تایید و پردازش اطلاعات در هرکدام از این بخشها به عهده گروهی از نودهاست، این باعث میشود که فرایند تایید هر داده بهجای اینکه بهصورت متوالی از ابتدا تا انتهای زنجیره طول بکشد، همزمان و موازی در گروههای جداگانهای انجام شود.
بهاینترتیب دیگر نیاز نیست هر یک نود در شبکه اتریوم، تمامی تراکنشها و فعالیتها را تایید و اعتبارسنجی کند.
برای نزدیکتر شدن به معنای شاردینگ میتوانیم یک تولیدی لباس را تصور کنیم که ده نیرو دارد، هرکدام از این نیروها بهتنهایی و شخصا تمامی کارهای دوخت یک لباس را از صفر تا صد انجام میدهند و در پایان روز یک لباس کامل تحویل صاحبکار میدهند.
بعد از مدتی صاحب کارگاه به این نتیجه میرسد که این روش بازدهی کافی را ندارد و خروجی و سودآوری آن به حدنصاب نمیرسد. بنابراین تصمیم میگیرد وظایف کاری را تقسیمبندی کند، بهطوریکه تمامی فرایندها مثل قبل کامل و بدون نقص اما در ایستگاههای کاری جداگانه انجام شوند. و درعینحال بهجای اینکه هر کارگر در روز، مسئول دوخت یک لباس کامل باشد، نیروها به شکلی سازماندهی میشوند که هر فرد تنها مسئول انجام وظیفه خاصی از کل فرایند تهیه لباس باشد.
به این صورت یک فرد الگو را تهیه میکند دیگری پارچهها را از روی الگو برش میزند، کارگری دیگر با چرخخیاطی پارچه را میدوزد و نیروی بعدی تمیزکاری دوخت را انجام میدهد و همه نیروها میتوانند همزمان و بهصورت موازی با یکدیگر، فعالیتهای متفاوتی را انجام دهند.
حالا با این شکل از تقسیم کار، علاوه بر اینکه تمام مراحل تولید پوشاک بدون نقص و کاستی انجام میشود، کار کارگرها هم راحتتر شده و تعداد لباسهای تولید شده در هر روز هم بیشتر از حالت قبل است.
موانع انجام شاردینگ
اگر شاردینگ تا این حد اثربخش است پس چرا تابهحال اجرایی نشده است؟ در حقیقت اجرای شاردینگ با دو چالش ارتباط و امنیت همراه است.
در یک بلاکچین باید همه کاربران با یکدیگر در ارتباط باشند و به اطلاعات سایر کاربران دسترسی داشته باشند، ما نمیخواهیم با اجرای شاردینگ مفهوم بلاکچین که همان ارتباط قطع نشدنی زنجیره اطلاعاتی است را زیر سوال ببریم، پس باید این همبستگی حفظ شده و هر گروه از نودها از اطلاعات تایید شده گروههای دیگر و از تمام آنچه که در بلاکچین رخ میدهد اطلاع داشته باشند.
از طرفی دیگر در شبکه بلاکچین مهمترین عامل تامین کننده امنیت، تعداد بالای نودهای شبکه است. تفکیک شبکه به بخشهای کوچکتر مثل این است که تعداد نودهای تاییدگر اطلاعات را کم کرده باشیم، به این صورت هک و دست بردن در اطلاعاتِ هر شارد راحتتر میشود.
البته برای رفع این مشکل تیم پشتیبانی دومین رمزارز بزرگ بازار یعنی اتریوم، یک راهحل مناسب در نظر گرفته است. در اتریوم 2.0 (که پیشبینی شده شاردینگ در فاز 1 آن عملی شود)، قرار است نود اعتبارسنج (Validator Node) طبق یک الگوریتم کاملا تصادفی برای تایید هر بلاک انتخاب شود.
درست است که با اجرای این راهکار، برقراری امنیت در حد روش قبلی نخواهد بود، چون بهجای تایید هر بلاک توسط همه نودها، فقط نودهای انتخابی بلاک را تایید میکنند. اما بازهم نودهای زیادی در این شبکه وجود دارند و این در کنار تصادفی بودن انتخاب، احتمال برگزیده شدن یک نود مخرب را برای تایید اطلاعاتی که خودش تغییر داده، بسیار پایین میآورد.
شاردینگ در اتریوم 2.0
عملیات شاردینگ در اتریوم 2.0 نسخهای از اتریوم است که در آن با تغییر پلتفرم، قرار است به اهداف افزایش سرعت، بالابردن کارایی و کاهش کارمزد شبکه برسیم.
شاردینگ و تغییر در نحوه انجام الگوریتم اجماع در شبکه، از مهمترین اتفاقاتی است که قرار شده در این نسخه رخ دهد. اجرای کامل نسخه دوم اتریوم قرار است در چهار فاز صورت بگیرد.
مرحله اول که همان فاز 0 است و در یکم دسامبر سال 2020 انجام شده، بیکنچین (Beacon Chain) که یک ساختار جدید برای شبکه اتریوم است، راهاندازی شد. این ساختار کمک میکند تا اتریوم بتواند الگوریتم اجماع را تغییر داده و الگوی اثبات سهام (POS) را جایگزین الگوی اثبات کار (POW) کند.
مرحله دوم، اجرای فاز 1 است که در آن شاردینگ بر روی شبکه اجرا میشود . قرار است در این فرایند، زنجیره اتریوم به 64 شارد مجزا تفکیک شود تا این شاردها بهصورت موازی عملیات پردازش دادهها را انجام دهند. تخمین زده شده که با این کار سرعت پردازش در شبکه اتریوم حداقل 64 برابر خواهد شد.
در گام بعدی یعنی فاز 1.5، محتویات شبکه قبلی اتریوم با شبکه بیکنچین ترکیب میشود تا با کوچ به نسخه جدید هیچکدام از اطلاعات از بین نرود.
در فاز 2 که مرحله نهاییِ اجرای نسخه 2.0 است همه حسابهای هوشمند به زنجیره اتریوم اضافه شده و شبکه قادر خواهد بود بهصورت مستقل هر فعالیت مثل فراخوان قراردادها، اجرای برنامهها، تایید مبادلات در شاردهای مختلف و… را پشتیبانی کند.
جمعبندی شاردینگ، راهحلی برای افزایش سرعت بلاکچین
شاردینگ یکی از راههای هوشمندانه و نسبتا جدید، برای افزایش مقیاسپذیری در بلاکچینها است. از این روش هوشمندانه بهزودی در شبکه اتریوم، برای بالابردن سرعت در کنار حفظ امنیت و تمرکززدایی استفاده خواهد شد.
در این مقاله سعی کردیم تا شما را با مفهوم شاردینگ و علت انتخاب آن بهعنوان یک راهحل مناسب آشنا کنیم. خوشحال خواهیم شد نظر خود را درباره شاردینگ و آینده آن، از بخش دیدگاهها با ما در میان بگذارید.