شاردینگ در بلاک چین چیست؟
شاردینگ یکی از پارامترهای مهم در آیندهی شبکه اتریوم است. مفهومی که به واقع پیچیده بوده و بسیاری از افراد فعال در این حوزه نیز به خوبی با آن آشنا نیستند. Sharding به دنبال حل مسئله مقیاسپذیری در حوزه بلاکچین است. برای اینکه بدانیم شاردینگ چیست
ابتدا باید یک گام به عقب برداشته و مفهوم مقیاس پذیری را درک کنیم.مقیاسپذیری به زبان ساده به این معناست که کارایی و عملکرد یک سیستم با افزایش تعداد کاربرانی که از آن استفاده میکنند، چقدر تغییر خواهد کرد؟ فرض کنید در یک روز ۱۰۰ تراکنش به یک شبکه بلاکچین ارسال شود و هر تراکنش به طور میانگین در ۲ دقیقه پردازش، تایید و انجام شود. حال اگر فردای آن روز، ۱۰۰ هزار تراکنش به همین شبکه ارسال شود، باز هم هر تراکنش به طور میانگین در ۲ دقیقه تایید خواهد شد؟ اگر بله، پس این شبکه مقیاسپذیر است؛ یعنی افزایش تعداد تراکنش در عملکرد این شبکه تاثیری ندارد. اما اگر جواب منفی است و زمان میانگین برای تایید تراکنشها افزایش یابد، پس این شبکه مقیاسپذیر نیست. این یکی از مسائل مهم برای تمام شبکههای بلاک چین است. کلمه Shard به معنی جزء کوچکی از یک مجموعه بزرگتر است. Sharding به معنی تقسیم کردن یک مجموعه بزرگ به اجزای کوچکتر است. این روش برای بهبود عملکرد مراکز ذخیره دادهها یا DataBase از طریق تقسیم بندی دیتابیس است که به آن پارتیشن بندی افقی نیز میگویند. به عبارتی، شاردینگ یک الگوی معماری مراکز داده است که به صورت افقی و در عرض، دیتابیس را به تکههای کوچکتر تقسیم بندی میکند. به هر بخش در این ساختار معماری، شارد گفته میشود. اطلاعات ذخیره شده در هر شارد، منحصر به همان شارد بوده و همینطور مستقل از دادههایی است که در سایر شاردها ذخیره میشود. در ادامه برای درک بهتر این موضوع مثالی میزنیم.
یک دانشگاه را در نظر بگیرید که از ابتدای تاسیس تا به امروز ۱ میلیون دانشجو در آن تحصیل کردهاند. کارنامهی تمام این دانشجویان در “یک دیتابیس” بزرگ نگهداری میشود. فرض کنید بخواهیم کارنامهی یک دانشجوی خاص را بیابیم. برای این کار باید تمام ۱ میلیون کارنامه را بررسی کنیم تا به کارنامه فرد مورد نظر خود برسیم. اکنون بیاید دیتابیس این دانشگاه را با تکنیک شاردینگ، منظمتر کنیم. برای اینکار، بر اساس سال فارغالتحصیل شدن دانشجویان، کارنامههای آنها را مرتب کنیم. در واقع ما با این کار، دیتابیس دانشگاه را بر اساس سال فارغالتحصیلی دانشجویان به شاردهای کوچکتر تقسیم کردهایم. این کار را میتوان بازهم ادامه داد؛ اینبار، براساس رشته تحصیلی دانشجویان، و حرف اول فامیلی دانشجویان، شاردها را بازهم دقیقتر خواهیم کرد. در چنین ساختاری یافتن کارنامه یک دانشجوی خاص بسیار راحتتر از قبل است.گفتیم که شاردینگ یک تکنیک پارتیشن بندی پایگاه داده است و در بلاک چینها با هدف مقیاس پذیری استفاده میشود تا آنها را قادر سازد تراکنشهای بیشتری را در هر ثانیه پردازش کنند. شاردینگ کل شبکه بلاک چین را به پارتیشنهای کوچکتری تقسیم میکند که هر کدام به نام «شارد» شناخته میشوند. هر شارد از دادههای مخصوص خود تشکیل شده است که آن را در مقایسه با سایر شاردها متمایز و مستقل میکند. هدف اصلی شاردینگ در بلاک چین کاهش تاخیر در پردازش اطلاعات و بهبود سرعت آن است.
از سویی نگرانیهای امنیتی پیرامون به کار بستن شاردینگ در بلاک چین نیز وجود دارد؛ مثلا هک یا «تصاحب شاردی» تهاجمی است که در آن یک شارد به دیگری حمله میکند و منجر به از دست رفتن اطلاعات میشود. در ادامه به شرح سازوکار شاردینگ در بلاک چین میپردازیم و ضرورت و برنامه اتریوم برای به کار بستن آن را به عنوان یک نمونه بارز بررسی میکنیم. برای درک سازوکار شاردینگ باید ابتدا مفاهیمیمثل تکنولوژی دفتر کل توزیع شده (DL) و مقیاس پذیری را درک کرد.بلاک چینها به عنوان بستر اکثر ارزهای دیجیتال، به دلیل گسترش کاربرد این فناوری که شامل مدیریت زنجیره تامین و تراکنشهای مالی است، روز به روز محبوبیت بیشتری پیدا میکنند. با افزایش محبوبیت این تکنولوژی، حجم کار و حجم معاملاتی که توسط آنها باید مدیریت شود نیز افزایش مییابد. اگر بلاک چین را به عنوان یک پایگاه داده اشتراکی در نظر بگیریم، با افزودن دادههای بیشتر، شبکه باید راههای جدیدی پیدا کند تا بتواند همه آن دادهها را به طور موثر و سریع پردازش کند.
در واقع، اگر یک شبکه بلاک چین به اندازه کافی مقیاس پذیر نباشد، با افزایش تعداد کاربران، آن شبکه در معرض ترافیک شدید قرار گرفته و ممکن است دچار مشکل تأخیر و کندی قابل توجهی در پردازش تراکنشها شود و اینجاست که شاردینگ میتواند موثر باشد. تکنیک شاردینگ (Sharding) برای حل این مشکل توسط شبکههای بلاک چین به کار گرفته میشود.
انتظار میرود شاردینگ بتواند افت سرعت به وجود آمده را با تقسیم یک شبکه بلاک چین به بخشهای جداگانه (شاردها) بهبود بخشد. در این روش، هر شارد با دادههای خاص خود و متفاوت از سایر شاردها سروکار دارد و در واقع سنگینی بار تراکنشها در شبکه میان بخشهای مختلف آن تقسیم میشود. به طور خلاصه، میتوان این تکنیک در پارتیشن بندی پایگاه داده را راه حلی برای مقیاس پذیر کردن بلاک چینها دانست که در حال حاضر در شبکه دومین رمز ارز محبوب جهان، اتریوم، نیز آزمایش میشود. همچنین، توجه به این نکته مهم است که روش شاردینگ هنوز در مرحله آزمایش اولیه برای استفاده در شبکههای بلاک چین قرار دارد.
مزایای استفاده از شاردینگ چیست؟
با استفاده از شاردینگ، دیتابیس به اجزای کوچکتری تقسیم میشود. در نتیجه مدیریت دادهها آسانتر خواهد شد. زمانی که یک دیتابیس به شاردهای کوچکتر تقسیم میشود، سرعت پردازش و تراکنش در این شاردهای کوچک، سریعتر خواهد بود. این مورد به بهبود عملکرد کلی سیستم کمک زیادی میکند. مزیت دیگر شاردینگ، کاهش هزینهها است. سیستمی که از ساختار شاردینگ استفاده میکند، در مقایسه با سیستمهای دارای پایگاه داده یکتا، به مراتب ارزانتر است.
مقایسه شاردینگ و سایر راهکارهای مقیاس پذیری
علاوه بر شاردینگ چندین راهکار مقیاس پذیری دیگر برای ارزهای دیجیتال نظیر بیت کوین و اتریوم معرفی شده است. این راهکارهای مقیاس پذیری شامل شبکه لایتنینگ و SegWit۲x هستند. شبکه لایتنینگ یک راهکار مقیاس پذیری خارج از زنجیره است که انجام تراکنشها خارج از زنجیره را امکان پذیر میسازد. شبکه لایتنینگ با ایجاد کانالهای پرداختی این امر را محقق میکند. این کانالها به کاربران امکان میدهند تا بدون آنکه نیازی به تایید تراکنشها توسط نودهای شبکه اصلی را داشته باشند، تراکنشهایی را میان یکدیگر ارسال کنند. از بلاک چین در این روش فقط برای باز و بستن کانالهای پرداخت استفاده میشود.
شبکه لایتنینگ پتانسیل این را دارد که میلیاردها تراکنش در ثانیه پردازش کند. در صورت کامل شدن و پیاده سازی این شبکه، پیشرفت مثال زدنی در زمینه مقیاس پذیری ایجاد خواهد شد. اگر شبکه لایتنینگ طبق برنامه عمل کند، دیگر هیچکس درباره مقیاس پذیری شکایت نخواهد کرد.
شبکه رایدن نیز راهکار مقیاس پذیری دیگری است که تقریبا مشابه با شبکه لایتنینگ است. هرچند شبکه رایدن چندین ویژگی متفاوت دیگر نیز دارد. شبکه رایدن مشخصا برای اتریوم طراحی شده است برخلاف شبکه لایتنینگ علاوه بر تسهیل پرداختها، وظایف دیگری نیز انجام میدهد. شبکه رایدن قرار است که از قراردادهای هوشمند و برنامههای غیرمتمرکز پشتیبانی کند و انتقال توکن های ERC-۲۰ را امکان پذیر سازد. بنابراین شبکه رایدن بسیار شبیه شبکه لایتنینگ بوده اما پتانسیل بیشتری دارد؛ زیرا ویژگیهای بیشتری نسبت به شبکه لایتنینگ ارائه میدهد.
سگویت نیز برای بیت کوین معرفی شده است و حجم بلاکهای تراکنش را از یک مگابایت به دو مگابایت افزایش خواهد داد. اگرچه این راهکار میتواند تا حدودی به مقیاس پذیری بیت کوین کمک کند، اما پروپوزال سگویت به طور کل به هیجان انگیزی یا سودمند بودن شبکه لایتنینگ نبود. عرضه سگویت برای پاییز ۲۰۱۷ برنامه ریزی شده بود اما به دلیل عدم پشتیبانی از جانب جامعه بیت کوین نتوانست طبق برنامه پیش برود.
دفتر کل توزیع شده
به کار گیری فناوری فناوری دفتر کل توزیع شده (DLT) در بلاک چین آن را جذاب میکند، زیرا اجازه میدهد تراکنشها به طور توافقی در چندین نقطه جغرافیایی مختلف در سراسر جهان به اشتراک گذاشته شوند. با ثبت تراکنشها، دادهها کپی شده و در عرض چند ثانیه در شبکه ارسال شده و به اشتراک عموم گذاشته میشوند و به اصطلاح شواهد عمومی شکل میگیرند.
در این فناوری، اگر بخشی از شبکه قربانی کلاهبرداری یا حمله خراب کارها شود، شرکتکنندگان شبکه میتوانند آنچه که کلاهبرداران تغییر داده و دستکاری کردهاند را شناسایی کنند، چرا که همگی یک کپی از تراکنشهای منتشر شده در دفتر کل را در سیستم خود نگهداری میکنند. در نتیجه، سیستم دفتر کل توزیع شده پیاده سازی شده در بلاک چین میتواند به کاهش تقلب و محدود کردن آسیبهای ناشی از حملات سایبری و هک شدن در آن کمک کند.
مقیاس پذیری در بلاک چین
یکی از چالشهای اصلی فناوری بلاک چین این است که با اضافه شدن کاربران شبکه و پردازش تراکنشهای بیشتر، شبکه به اصطلاح دچار باگدان شده و روند پردازش اطلاعات در آن کند میشود که به آن تأخیر یا لیتنسی (Latency) شبکه میگویند.
تأخیر یک مانع برای بلاک چین محسوب میشود و کاربرد آن را محدود میکند. در حالی بلاک چینها با مانعی به نام تاخیر در روند گسترش خود دست و پنجه نرم کرده که سیستمهای پرداخت متمرکز الکترونیکی فعلی با سرعت و کارآمدی بیشتری عمل میکنند. به عبارت دیگر، همچنان که صنایع و کاربران بیشتری از این فناوری استفاده میکنند، مقیاسپذیری یک چالش برای بلاک چین در مدیریت حجم فزاینده دادهها و جریان تراکنشهاست.
یکی از راه حلهایی که برای فراهم آوردن مقیاس پذیری بیتأخیر در نظر گرفته میشود، فرآیند شاردینگ است. شاردینگ به گونهای طراحی شده است که حجم کاری شبکه را به پارتیشنها تقسیم کند تا در حد ممکن به کاهش تأخیر کمک کند و امکان پردازش تراکنشهای بیشتر در زمان کوتاهتر توسط بلاک چین را فراهم کند.
سازو کار شاردینگ در بلاک چین
قبل از بررسی نحوه انجام شاردینگ در شبکه بلاک چین، بررسی نحوه ذخیره و پردازش دادهها در شبکههای پارتیشن بندی نشده که در حال حاضر اکثرا به این صورت کار میکنند، مهم است.
در یک بلاک چین به اصطلاح شارد نشده، هر نود در یک شبکه باید تمام حجم تراکنشهای درون شبکه را پردازش و مدیریت کند. نودها در یک بلاک چین مستقل بوده و مسئول نگهداری و ذخیره تمام دادهها در یک شبکه غیر متمرکز هستند. به عبارت دیگر، هر نود باید اطلاعات مهمی مانند موجودی حساب و تاریخچه تراکنش را در سیستم خود ذخیره کند. اکنون، اکثر شبکههای بلاک چین به گونهای هستند که هر فول نود باید تمام عملیات، دادهها و تراکنشهای شبکه را پردازش کند.
در حالی که ذخیره کردن هر تراکنش در تمام نودها، امنیت یک بلاک چین را تضمین میکند، اما سرعت پردازش تراکنشها را به میزان قابل توجهی کند میکند. سرعت پایین برای پردازش تراکنشها، آینده خوبی برای بلاک چینی که با گسترش پذیرش خود مسئول میلیونها تراکنش خواهد بود، رقم نمیزند.
شاردینگ میتواند در تقسیم بار کاری نودهای یک شبکه بلاک چین موثر عمل کند. در این صورت هر نود نیازی به مدیریت یا پردازش تمام بار کاری بلاک چین ندارد و به نوعی، شاردینگ حجم کار کل شبکه را به پارتیشنها یا شاردها تقسیم میکند.
پارتیشن بندی افقی مورد استفاده در روش شاردینگ
شاردینگ را میتوان از طریق پارتیشن بندی افقی پایگاههای داده و از طریق تقسیم بندی آنها به ردیفهای افقی انجام داد. شاردها، که اینجا ردیف (row) نامیده میشوند، هر کدام ممکن است مسئول کار خاصی با ویژگی خاصی شوند. به عنوان مثال، یک شارد ممکن است مسئول ذخیره وضعیت و تاریخچه تراکنش برای آدرس خاصی باشد. همچنین، ممکن است بتوان شاردها را بر اساس نوع دارایی دیجیتال ذخیره شده در آنها تقسیم کرد و تراکنشهای مربوط به آن دارایی دیجیتال ممکن است از طریق همکاری ترکیبی از شاردها امکان پذیر شود.
به عنوان مثال، یک معامله املاک و مستغلات را در نظر بگیرید که در آن چندین شارد دخیل باشند. بخشهای مختلف مسئول وجوه مختلف این معامله هستند؛ از نام مشتری گرفته تا کلیدهای دیجیتالی که به صورت یک قفل هوشمند برنامه ریزی شدهاند و پس از تکمیل پرداخت معامله، در اختیار خریدار قرار میگیرند.
به اشتراک گذاری شاردها
هر شارد هنوز هم میتواند بین سایر شاردها به اشتراک گذاشته شود و جنبه کلیدی در فناوری بلاک چین یعنی پایندی به اصول دفتر کل توزیع شده و غیر متمرکز را حفظ کنند. به عبارت دیگر، نامتمرکزی و امنیت DLT هنوز برای هر کاربر قابل لمس است و آنها هنوز هم اجازه دارند تا تمام تراکنشهای دفتر کل را مشاهده کنند.
امنیت در شاردینگ و مقابله اتریوم با تهاجم شاردی
یکی از مسائل اصلی شاردینگ در عمل، مشکل امنیت است. اگرچه هر شارد جدا از دیگران، فقط دادههای مربوط به خود را پردازش میکند، یک نگرانی امنیتی در رابطه با تهاجم و خرابکاری در این شاردها هنوز وجود دارد: جایی که یک شارد شارد دیگر را تصاحب میکند و منجر به از دست رفتن اطلاعات یا دادهها میشود. اگر هر شارد را به عنوان شبکه بلاک چین خود با کاربران و دادههای احراز هویت شده در نظر بگیریم، یک هکر از طریق یک حمله سایبری میتواند دیگری را تصاحب کند. سپس این مهاجم میتواند تراکنشهای نادرستی وارد دادهها کند یا یک اپلیکیشن مخرب را برای دستکاری دادهها در آن قسمت به کار ببندد.
حال که با مفاهیم و سازوکار کلی شاردینگ در بلاک چین آشنا شدیم، به عنوان یک نمونه بارز شبکههای محبوب رمز ارزی که با مشکلات مقیاس پذیری دست و پنجه نرم میکند، بیایید به به کارگیری شاردینگ و روش مقابله با تهاجم شاردی در اتریوم بیشتر بپردازیم. اتریوم در خط مقدم آزمایش شاردینگ به عنوان راه حلی برای مشکلات تاخیر و مقیاس پذیری قرار دارد. اتریوم با تخصیص تصادفی نودها به شاردها و تخصیص مجدد آنها در فواصل زمانی تصادفی، با حمله شاردی و امکان بروز تهاجم در شبکه مبارزه کرده است. این عمل و تصادفی بودن اختصاص شاردها باعث میشود هکرهای احتمالی در مورد زمان و مکانی که باید یک شارد را مورد حمله قرار دهند با مشکل روبرو شوند. در ادامه برنامه شاردینگ اتریوم را بیشتر بررسی میکنیم، اما پیش از آن باید بدانیم اتریوم چگونه بدون استفاده از شاردینگ دادهها را ذخیره و مدیریت میکند.
ذخیره دادههای عظیم در اتریوم بدون استفاده از شاردینگ
اتریوم دومین بلاک چین بزرگ جهان است و برای تسهیل ساخت اپلیکیشنهای غیر متمرکز طراحی شده است تا کنار سایر اهداف پیش بینی شده برای آن، امکان کنترل بیشتری بر امور مالی و دادههای آنلاین به کاربران دهد. هدف این است که این گزینههای غیر متمرکز گسترش یابند و جایگزینی برای اپلیکشنهایی مانند رابین هود (Robinhood) یا توییتر ارائه کنند که توسط یک پایگاه خاص و متمرکز اداره میشوند. بنابراین، اتریوم به عنوان یک «کامپیوتر جهانی» عمل میکند که برای همه در دسترس است و کسی یا نهاد متمرکزی نمیتواند مانع آن شود و آن را کنترل کند.
با این حال، اتریوم برای اینکه بتواند جایگزینی قوی برای حالتهای متمرکز موجود شود، باید قادر باشد حجم عظیمی از دادهها را با احترام به هدف اصلی خود یعنی تمرکز زدایی، ذخیره، کنترل و مدیریت کند. در حالت سنتی، در سرویسهایی مانند خدمات وب آمازون (AWS)، حجم عظیم دادههای مربوط به هزاران اپلیکیشن به راحتی ذخیره میشوند و در حال حاضر، اتریوم از توانایی ذخیره دادهها به اندازه سرویس متمرکزی مانند AWS هنوز فاصله زیادی دارد. در واقع، اتریوم در طول مدتی که مورد استفاده عموم قرار گرفته، دچار نقص عملکرد پلتفرم شده است و هزینههای شبکه آن به شدت بالا رفته است.
پشت پرده اتریوم، یک شبکه جهانی از نودهاست که توسط کاربران و گروههای توسعه دهنده در اتریوم اداره میشوند. هر نود کل تاریخچه و دادههای مربوط به شبکه اتریوم را ذخیره میکند. این بدان معناست که تمام دادهها در مورد اینکه چه شخصی و در چه تاریخی تراکنشی را ارسال کرده و چه مقدار دارایی جابجا شده در هر نود ذخیره میشود. همچنین اطلاعات مربوط به قراردادهای هوشمند، کدهای نوشته شده برای مدیریت منابع مالی و غیره نیز در هر نود نگهداری میشوند.
همانطور که میتوانید تصور کنید، این دادهها حجم بسیار زیادی دارند و این سوال پیش میآید که چرا همه نودها نیاز به ذخیره کل تاریخچه دادههایی به این بزرگی را دارند؟ البته این همان چیزی است که اتریوم را غیر متمرکز میکند و طبق ادعای این پروژه میتواند آن را قادر سازد تا اپلیکیشنهایی ایجاد کند که “هیچ کس” نتواند آنها را دستکاری کند. برای مثال، اگر تنها تعداد کمی از شرکت کنندگان در شبکه این دادههای عظیم را ذخیره کنند، آنگاه دستکاری شبکه برای این افراد یا گروهها آسانتر است. در واقع اگر یک بازیگر بد بتواند به اندازه کافی بر نودهای اصلی چیره شود، میتواند کل تاریخچه اتریوم را بازنویسی کند. از نظر تئوری، چنین خرابکاری به فرد مهاجم این امکان را میدهد که برای خود تراکنشهای دروغین ایجاد کرده و دارایی جمع کند. پس به همین دلیل است که هرچه اجرای این نودها آسانتر باشد، احتمال وقوع سناریوی تهاجم کمتر میشود زیرا کنترل شبکه در دست کاربران بیشتری است و تحقق اهداف جسورانه تمرکز زدایی آسانتر میشود.
علی رغم همه اینها، مشکل این است که این نودها (که به فول نود (full nodes) نیز معروفند) معمولاً به فضای ذخیره سازی بزرگی نیاز دارند که اجرا و نگهداری آنها سخت و پیچیده است. شاردینگ یکی از روشهای ممکن برای تجهیز اتریوم با قابلیتی برای ذخیره دادههای بیشتر در عین حفظ اصول تمرکز زدایی است. در اصل قدمی است که باید توسط این پروژه برداشته شود تا اجرای موفقیت آمیز هزاران اپلیکیشن غیر متمرکز یا دی اپها (dapps) در پلتفرم آن بتواند محقق شود.
چرا اتریوم به شاردینگ نیاز دارد؟
خلاصه کلام این است که شاردینگ میتواند اجرای فول نودها در اتریوم را آسانتر کند. طبق دادههای بلاک اکسپلورر اتر اسکن (Etherscan)، فول نودهای اتریوم در حال حاضر حداقل پنج ترابایت فضای ذخیره سازی نیاز دارد، که تقریباً 10 برابر فضایی است که یک رایانه معمولی میتواند در خود جای دهد. همچنین پیش بینی میشود که نودها با گذشت زمان و پیوستن کاربران بیشتری به پلتفرم، برای ذخیره سازی دادهها با مشکل جدی روبرو شوند.
شاردینگ یک تکنیک رایج در علوم کامپیوتر برای مقیاسبندی است تا امکان پشتیبانی از دادههای بیشتری را فراهم کند. اگر شاردینگ را بتوان به درستی در اتریوم پیادهسازی کرد (که هنوز هم نمیشود از این مساله مطمئن بود)، هر کاربر میتواند برخلاف روشی که معمولاً بلاک چینها اکنون با آن کار میکند، تنها قسمتی از تاریخچه تغییرات پایگاه داده، و نه همه، را در سیستم خود ذخیره کند.
شاردینگ یکی از بهترین روشهای ارائه شده برای حل مسئله مقیاس پذیری شبکههای بلاک چین است. شبکه اتریوم در آپدیت اتریوم ۲ نیز از تکنیک Sharding استفاده خواهد کرد. در این تکنیک، زنجیره بلوکی به زنجیرههای کوچکتر تقسیم خواهد شد که به هر یک از آنها شارد گفته میشود. در چنین ساختاری، تمام تراکنشهای ارسال شده به شبکه میان شاردهای مختلف تقسیم شده و به این شکل بار کل تحمیل شده به شبکه میان نودها توزیع میشود.
ثبت دیدگاه
0دیدگاه
دیدگاهی ثبت نشده است.
اولین نفری باشید که دیدگاهتان ثبت میشود.