یکی از مهمترین مشکلات بلاک چین این است که افزایش تعداد گرهها مقیاسپذیری آن را کاهش میدهد. ممکن است برخی از افراد تصور کنند گرههای بیشتر یعنی سرعت بیشتر. اما این صحیح نیست. شاردینگ (Sharding) در حقیقت یک نوع تقسیم وظیفه است. به جای اینکه یک نفر مسئولیت همه کارها را بر عهده بگیرد، وظایف بین چند نفر تقسیم میشود تا دادهها به قطعات کوچکتر، قابل کنترل و مقیاس پذیر تبدیل شود. در این مقاله فکت کوینز به بررسی مفهوم شاردینگ در اتریوم میپردازیم.
شاردینگ در پایگاه داده
هر برنامه یا وب سایتی که رشد قابل ملاحظهای داشته باشد، در نهایت نیاز به مقیاس بندی دارد تا بتواند افزایش شمار کاربران را پاسخ دهد. برای برنامههای مبتنی بر داده و وب سایتها،بسیار مهم است که مقیاسبندی به گون ای انجام شود که امنیت و یکپارچگی داده های آنها را تضمین کند. پیشبینی میزان محبوبیت یک وبسایت یا برنامه یا مدت زمان ماندگاری این محبوبیت دشوار است. به همین دلیل برخی از سازمانها معماری پایگاه دادهای را انتخاب میکنند که به آنها اجازه می دهد پایگاه داده خود را به صورت پویا مقیاسبندی کنند.
شاردینگ در اتریوم روشی برای تقسیم اطلاعات و ذخیره یک سری داده در چندین پایگاه داده (دیتابیس) مجزا است. با توزیع دادهها در بین چندین پایگاه داده، میتوان دادههای بیشتری را ذخیره و پردازش و درخواست های اضافی را مدیریت کرد. شاردینگ فرآیند تقسیم یک پایگاه داده به صورت افقی برای گسترش بار و پردازش سریعتر است. این یک مفهوم رایج در علوم کامپیوتر است.
شاردینگ در اتریوم
اتریوم دومین بلاک چین بزرگ جهان است که برای سهولت در ساخت برنامه های غیرمتمرکز طراحی شده است و به کاربران امکان کنترل بیشتر بر امور مالی و دادههای خود را میدهد.
“Sharding” یک روش پیشنهادی برای تقسیم زیرساختهای اتریوم به قطعات کوچکتر با هدف مقیاسپذیر کردن پلتفرم است تا بتواند کاربران بیشتری را پشتیبانی کند.در بلاکچین اتریوم، شاردینگ با ایجاد زنجیره های جدید، معروف به شارد، از ازدحام شبکه میکاهد و تعداد تراکنش ها را در ثانیه افزایش میدهد.
مزایای شاردینگ
- Sharding مرکز حافظه Ethereum 2.0 است.
- Sharding یک روش چند مرحلهای برای بهبود مقیاس پذیری و ظرفیت اتریوم است.
- شاردها با پایین نگه داشتن نیازهای سخت افزاری، اجرای گره را آسان میکنند.
مثلث DCS (Decentralized, Consensus, Scalable)
یک بلاکچین ایده آل، غیر متمرکز، مبتنی بر اجماع و مقیاس پذیر است. اما در واقعیت، یک بلاکچین نمیتواند هر سه مورد را همزمان داشته باشد.
به عنوان مثال، Ethereum و Bitcoin غیرمتمرکز و بر پایه اجماع هستند، اما مقیاس پذیر نیستند. به همین ترتیب، هایپرلجر بر پایه اجماع و مقیاس پذیر است اما غیرمتمرکز نیست.
[irp posts=”3332″ name=”ویژگی های بلاکچین”]
عضل سه گانه مقیاس پذیری (Scalability Trilemma)
- تیم اتریوم معضل سه گانهای به نام مقیاس پذیری معرفی کردهاند. بر این اساس ، یک سیستم بلاکچین حداکثر میتواند دارای دو ویژگی از سه ویژگی زیر باشد:
- غیرمتمرکز بودن (Decentralization)
- امنیت (Security)
- مقیاس پذیری (Scalability)
در حال حاضر، اتریوم میتواند در هر ثانیه 12 تا30 تراکنش را پردازش کند که از این لحاظ بهتر از بیت کوین است که فقط میتواند 7 تا 10 تراکنش در ثانیه را پردازش کند.
هر گره در اتریوم باید تراکنشهای شبکه را پردازش کند. آنها همچنین باید کل بلاک چین اتریوم (حدود 300 گیگابایت) را در رایانه خود ذخیره کنند. اینها دلایلی است که Ethereum 1.0 برای تراکنشهای خرد مناسب نیست و از مشکلات مقیاس پذیری رنج میبرد. بنابراین، sharding تلاشی توسط اتریوم برای غلبه بر این مشکلات است.
از نظر دیتابیس، sharding فرآیند تقسیم یک دیتابیس بزرگ به دیتاهای کوچکتر، قابل کنترل و مقیاس پذیر است که شاردهای دیتا (data shards) نامیده میشوند. یعنی، به جای اینکه یک نفر مسئولیت همه کارها را بر عهده بگیرد، وظایف بین چند نفر تقسیم میشود.
ویژگی های شاردینگ در اتریوم
همه می توانند یک گره را اجرا کنند
برای اینکه همه کارها به صورت غیرمتمرکز انجام شود، Sharding روش خوبی است. این امر باعث میشود نودهای اعتبار سنج بیشتری در دسترس باشند. با استفاده از زنجیره های شارد شده، اعتبارسنجها فقط باید دادههای شارد شدهای که اعتبار سنجی میکنند را ذخیره یا اجرا کنند، نه کل شبکه (مانند آنچه امروز اتفاق میافتد). این امر سرعت کار را افزایش داده و نیازهای سخت افزاری را به شدت کاهش میدهد.
مشارکت بیشتر در شبکه
شاردینگ در نهایت به شما امکان میدهد Ethereum را روی لپ تاپ یا تلفن شخصی خود اجرا کنید. بنابراین افراد بیشتری میتوانند در یک اتریوم شارد شده شرکت کنند یا کلاینت ها را مدیریت کنند. این امر امنیت را افزایش میدهد زیرا هرچه شبکه غیرمتمرکزتر باشد، احتمال حمله کمتر خواهد بود.
پیاده سازی شاردینگ در اتریوم 2.0
قبل از ادامه، بیایید چند اصطلاح مهم را در اینجا درک کنیم.
- State یا صورت وضعیت: به طور کلی، مجموعه ای از اطلاعات است که یک سیستم را در هر لحظه از زمان توصیف میکند. در Ethereum این صورت وضعیت حساب جاری است که شامل مانده حساب و کد قرارداد هوشمند در یک زمان مشخص است. با هر تراکنش جدید، State تغییر میکند.
- تراکنش: عملیاتی که توسط کاربر انجام میشود و وضعیت سیستم را تغییر میدهد. تراکنش میتواند انتقال اتر یا استقرار یک قرارداد هوشمند باشد.
- Merkle Tree: یک ساختار داده است که می تواند مقدار زیادی داده را از طریق هش های رمزنگاری ذخیره کند.
در شاردینگ، تاریخچه و وضعیت کل بلاک چین اتریوم به پارتیشن های جداگانهای تقسیم میشود که شارد (shard) نامیده میشوند. هر شارد وضعیت و تاریخ تراکنشهای مربوط به خود را خواهد داشت.
همانطور که ویتالیک بوترین، خالق اتریوم بیان کرد: «یک راه آسان برای درک این مطلب این است که تصور کنید اگر اتریوم به هزاران جزیره تقسیم شود. هر جزیره میتواند کار خود را انجام دهد، میتواند ویژگی های خاص خود را داشته باشد. اگر آنها بخواهند با جزایر دیگر ارتباط داشته باشند، باید از نوعی پروتکل استفاده کنند».
انواع مختلف گره در اتریوم 2
- گره کامل( Super-full node): این گره ها داده های کامل beacon chain را دانلود میکنند.
- گره سطح بالا(Top-level node): این گره ها فقط بلاک های زنجیره beacon chain را پردازش میکنند و تمام داده های بلاک های شارد را دانلود نمیکنند.
- گره تک شارد (Single-shard node): به عنوان یک گره سطح بالا عمل می کنند، اما همچنین هر مجموعه ای را که خاص است و بیشتر به آن اهمیت می دهد، دانلود و تأیید می کند.
- گره سبک (Light node): فقط هدر بلاک های اصلی را دانلود و تأیید میکند.
شاردینگ در اتریوم بر چه اساسی انجام میشود؟
یک روش برای شاردینگ، تقسیم بندی بر اساس آدرس است.
به عنوان مثال، آدرس هایی که با 0x0 شروع می شوند یک شارد؛ و آدرس هایی که با 0x1 شروع میشوند یک شارد دیگر تشکیل میدهند و غیره.
مثال:
“فرض کنید باب 50 کوین در شارد B داشته باشد، و آلیس از شارد A، به تعداد 20 کوین به باب می فرستد، اما شارد B هنوز از وضعیت شارد A اطلاعی ندارد و بنابراین نمیتواند انتقال را به طور کامل تأیید کند. اگر انتقال از آلیس معتبر باشد وضعیت حساب باب به طور موقت 70 کوین میشود در غیر این صورت مانده حسابش 50 کوین است. کلاینتهایی که توانایی احراز هویت شارد A و B را دارند میتوانند از نهایی بودن انتقال مطمئن باشند. به محض اینکه انتقال در داخل زنجیره تأیید شد، بلافاصله ، کیف پول آنها می تواند به سادگی عمل انتقال را نشان میدهد.
همانطور که میدانید اعتبارسنج هایی وجود دارند که وظیفه تولید بلاکهای مبتنی بر Proof-of-Stake را دارند. یک اعتبارسنج (پیشنهاد دهنده) به طور تصادفی (از طریق RANDAO) برای یک شارد خاص انتخاب می شود.
پس از آن ، اعتبارسنج بلاکی را پیشنهاد می کند که در قسمت شارد شده گنجانده شود. علاوه بر آن ، 99 اعتبار سنج دیگر (گواهی دهندگان) بلاک را تایید می کنند. هدر یک بلاک ، همراه با حداقل 67 امضای تأیید شده (رأی)، میتواند به عنوان اطلاعاتی که در قسمت شارد شده گنجانده شود، منتشر شود. به همین ترتیب در مراحل بعدی، اعتبار سنج دیگری به طور تصادفی انتخاب میشود و روند ادامه مییابد.
محدودیت های شاردینگ در اتریوم
در حال حاضر، شاردینگ از قراردادهای هوشمند پشتیبانی نمیکند. اما با پیشرفت های بیشتر در EVM، قراردادهای هوشمند نیز به فناوری شاردینگ وارد میشوند.
یکی از بزرگترین موضوعات مربوط به شاردینگ، Single-Shard Takeover Attack است که در آن یک مهاجم تمام قدرت هش خود را در یک شارد واحد متمرکز میکند تا یک شارد مخرب ایجاد کند. اتریوم پیشنهاد می کند که از طریق انتخاب تصادفی بر این مشکل غلبه کنیم.
دومین مشکل شاردینگ در اتریوم تشخیص کلاهبرداری به ویژه در مورد ارتباطات بین شاردی (cross-shard) است. در صورتی که کسی یک بلاک نامعتبر پیدا کند، هیچ پروتکل استانداردی وجود ندارد که گرههای دیگر را از وجود آن آگاه کند.
نتیجه گیری
شاردینگ در اتریوم یک رویکرد هوشمندانه برای حل مکل مقیاس پذیری بلاک چین است. با این حال، همانطور که در این مقاله دیدیم، این روش بدون اشکال نیست. به دلیل ساختار آن ،به خطر افتادن یک قطعه در سیستم آسانتر از حمله به کل سیستم است.