شاردینگ
والبی بلاگ » آرشیو پست ها » آموزش » آموزش بلاک چین » شاردینگ (sharding) چیست؟
آموزش آموزش بلاک چین

شاردینگ (sharding) چیست؟

شاردینگ روشی مناسب برای حلّ برخی مشکلات اساسی بلاکچین ها می باشد. در ابتدا، بیایید نگاهی به تاریخچه بلاکچین ها و مشکلات دیرینه آنها بیندازیم. از زمان آغاز به کار بیت کوین، فناوری بلاکچین کاملاً درک ما را نسبت به مفهوم و ارزش پول دستخوش تغییر کرده است. بلاکچین توانسته است تا با جلب توجه بسیاری از شرکت های بزرگ، تبدیل به یکی از جذاب ترین دستاوردهای تکنولوژی در قرن بیست و یکم شود.

این تمایلات در اصل از میل درونی به ایجاد انقلاب نشأت می گیرد. انقلابی که می تواند به اندازه ساخت اینترنت در دهه های 80 و 90 جذاب باشند. در حالیکه اینترنت توانست قلمروی ارتباطات آنلاین را آغاز کند، بلاکچین در حال پیشتازی در عرصه های ایجاد اعتبار از طریق شبکه های دارایی دیجیتال می باشد.

این شبکه ها دارای اکوسیستم مستقل غیر متمرکز و فنی خود می باشند. آنها به گونه ای طراحی شده اند تا بتوانند خدمات قراردادهای هوشمند و اهرم سازی را برای برنامه هایی فراهم سازند که از آنان به عنوان “برنامه های غیر متمرکز” (dApps) یاد می شود. اتریوم، دومین ارز دیجیتال با ارزش جهان، به منظور تسهیل ساخت این برنامه ها آغاز به کار کرد.

 

بلاکچین اتریوم

از طریق بستر اتریوم، کاربران می توانستند کنترل بیشتری بر  دارایی ها و اطلاعات دیجیتالیشان داشته باشند. ایده بنیادین در مورد اتریوم، ایجاد “کامپیوتری جهانی” است تا برنامه های غیر متمرکز بتوانند از طریق آن اجرایی شده و کاربردهای خود را گسترش دهند. در نهایت، این برنامه های غیر متمرکز باید بتوانند تجارت ها و پلتفرم های بزرگ جهانی (همچون توییتر یا آمازون) را به چالش بکشند. بنابراین، اتریوم به عنوان یک “کامپیوتر جهانی غیر متمرکز” عمل می کند. این کامپیوتر در اختیار عموم قرار داشته و نمی تواند دچار دستکاری شود.

اگر تمام این اهداف اتریوم بخواهند محقق شوند، آنگاه اتریوم باید قادر باشد تا مقدار عظیمی از اطلاعات را درون سیستم خود ذخیره و حفظ کند. اتریوم اکنون این قابلیت را ندارد. با اینحال، اتریوم می تواند این مشکل مقیاس پذیری خود را از طریق روشی به نام “شاردینگ” (sharding) حل کند.  مطمئناً این روش در به روز رسانی جدید اتریوم (نسخه 2) به فاز اجرایی کامل خواهد رسید.

 

شاردینگ چیست؟

در علوم کامپیوتر، شاردینگ روشی است که برای مقیاس پذیریِ برنامه ها استفاده می شود. به کمک این روش، برنامه ها می توانند از اطلاعات بیشتری پشتیبانی کنند. این فرآیند شامل خرد کردنِ انبوهی از اطلاعات به تکه هایی کوچک تر است، که “شارد” نامیده می شوند. این شاردها در میان سرورهای مختلف گسترش می یابند. هر شارد دارای اطلاعات خود می باشد. این اطلاعات منجر به استقلال و تمایز آن شارد در مقایسه با دیگر شاردها می شود.

شاردینگ برای مقیاس پذیری
شاردینگ برای حل مشکل مقیاس پذیری

فرآیند شاردینگ از اهمیت بسیاری در شبکه های بلاکچینی برخوردار است. این روش به بلاکچین ها اجازه می دهد تا از تأخیرات شبکه ای و ازدیاد اطلاعات جلوگیری کنند. شاردینگ از تقسیم شبکه به قسمت های کوچک تر استفاده می کند. این قسمت های کوچک تر (پارتیشن ها) آنگاه قادر خواهند بود تا تراکنش های بیشتری را در هر ثانیه پردازش کنند. به خصوص، اگر مجموعه اطلاعات به حدّی بزرگ باشد که در یک دیتابیس منفرد جای نگیرد، آنگاه شاردینگ نیاز است. با توجه به پروژه های بسیار زیاد بر روی بستر اتریوم و توسعه دهندگانی که از این بستر استفاده می کنند، مسلماً اتریوم نیاز به اجرای این روش دارد.

در حقیقت، طبق تحلیل های آماری حدود 3 هزار برنامه غیر متمرکز بر روی بلاکچین اتریوم وجود دارند. بنابراین، مقیاس پذیری از طریق شاردینگ یک الزام کلی برای اتریوم است. با این روش، اتریوم می تواند جایگاه اول خود را در این اکوسیستم حفظ کرده و کارایی بالای شبکه را تضمین کند.

 

نحوه کار شاردینگ

برای شناخت کامل نحوه کار شاردینگ در بلاکچین ها، مهم است که ابتدا کارکرد نودها را بررسی کنیم. باید دریابیم که اطلاعات چگونه ذخیره و پردازش می شوند.

نودها جزئی حیاتی در زیرساخت بلاکچین هستند. در حقیقت، انتقال اطلاعات بدون حضور نودها میسر نخواهد بود. همه نودها به یکدیگر متصل هستند. آنان مرتباً اطلاعات بلاکچین را بین یکدیگر مبادله می کنند. اینگونه، همه در جریان آخرین وضعیت قرار می گیرند. اساساً، نودها سازنده لایه بنیادین بلاکچین ها هستند. آنان بلاکچین را قادر می سازند تا اطلاعات را در سراسر زیرساخت خود ذخیره، نگهداری یا بسط دهد.

نقش نودها در بلاکچین ها

در شبکه های غیر متمرکز، هر نود باید بتواند اطلاعات حساس همچون تاریخچه تراکنش ها و ترازنامه حساب ها را در خود ذخیره کند. با پخش کردنِ اطلاعات و تراکنش ها میان نودهای مختلف، بلاکچین می تواند امنیت خود را تضمین کند. با اینحال، این مدل چندان از لحاظ مقیاس پذیری  واقع گرایانه نیست. با اینکه سیستم اهرمی غیر متمرکز منجر به تحقق ویژگی های تمرکز زدایی و امنیتی برای بلاکچین می شوند، شبکه ای که باید این حجم گسترده از تراکنش ها و اطلاعات را پردازش کند ممکن است دچار اختلال، تأخیر در پردازش، یا ترافیک شود.

اتریوم، برای مثال، می تواند 10 تا 20 تراکنش را در هر ثانیه پیش ببرد. اما واقعیت این است که عدد برای بلاکچینی به این اندازه چندان چشمگیر نیست. دلیل سرعت کم شبکه اتریوم را باید در پروتکل اجماع اثبات کار (PoW) آن یافت که در زیرساخت آن موجود است. در نتیجه و به این دلیل، بلاکچین اتریوم نیاز مبرمی به مقیاس پذیری دارد.

اما از طریق شاردینگ، شبکه بلاکچین میتواند حجم کار خود را به صورت افقی گسترش دهد. آنگاه نیازی نیست که هر نود وظیفه کنترل و پردازش همه تراکنش ها را بر عهده بگیرد. بدین ترتیب، طراحی طبقه بندی شده و کارآمدی شکل می گیرد.

 

طبقه بندی افقی

شاردینگ از طریق طبقه بندی افقی دیتابیس (یا شبکه) به ردیف های مختلف انجام می گیرد. به این ردیف ها، “شارد” گفته میشود. این ساختار افقی منجر به ایجاد اکوسیستمی پویاتر می شود. زیرا به شاردها اجازه می دهد تا عملکردهای تخصصی را براساس خصوصیاتشان انجام دهند. برای مثال، یک شارد ممکن است وظیفه ذخیره تاریخچه تراکنش ها و وضعیت یک آدرس خاص را بر عهده داشته باشد. یا ممکن است قادر باشد تا با دیگر شاردها مشارکت کرده و یک دارایی دیجیتال را پردازش کند.

برای فهم بهتر نحوه کار طبقه بندی افقی، نگاهی به مدل زیر بیندازید:

تقسیم بندی افقی
تقسیم بندی افقی اطلاعات

این مدل نشان دهنده یک دیتابیس عظیم از 6 ردیف می باشد. سپس، جدول اصلی اطلاعات به سه تکه کوچکتر تقسیم می گردد. آن بخش های کوچکتر همان شاردهای افقی هستند که مدیریت جدول اطلاعات را ساده تر می سازند. طبقه بندی افقی تنها جدول اصلی داده ها را تبدیل به جداولی کوچکتر و کارآمدتر می سازد. در جداول کوچک نیز ویژگی های اصالت اطلاعات کاملاً حفظ خواهند شد. همین مفهوم برای زیرساخت های بلاکچینی نیز اتفاق می افتد. به موجب آن، وضعیت زنجیره می تواند به بخش های کوچکتر و منظم تری تبدیل شود، که به آنها “شارد” گفته می شود.

 

مقیاس پذیری افقی در برابر عمودی

هنگام رویارویی با مبحث مقیاس پذیری، زیرساخت های بلاکچین تنها چند گزینه در پیش رو دارند: لایه 2، مقیاس پذیری عمودی و طبقه بندی افقی.

استفاده از “لایه 2”

راه حلّ “لایه 2″، راه حلی برای مقیاس پذیری برون زنجیره ای بر رأس بلاکچین می باشد. ایده اصلی در این فرآیند، کنار گذاشتنِ لایه اصلی و تشکیل لایه ای دیگر بر روی آن است. این لایه اضافی با محاسبات پیچیده سر و کار خواهد داشت، و مشکلات ساختار لایه اصلی را کاهش می دهد. شبکه های پلاسما (Plasma) و رایدن (Raiden) برترین مثال ها برای مقیاس پذیری لایه 2 هستند. همچنین شاید سرشناس ترین پروژه هایی نیز که از اهرم کمکی “لایه 2” استفاده کرده اند، شبکه های پالی گان (Polygon) و ماتیک (Matic) می باشند.

مقیاس پذیری از طریق لایه 2
مقیاس پذیری از طریق لایه 2

مقیاس پذیری عمودی

سپس نوبت به راه حل ” مقیاس پذیری عمودی” می رسد. مقیاس پذیری عمودی شامل گسترش شبکه از طریق تزریق قدرت و حافظه بیشتر به واحد پردازش مرکزی سیستم میشود. این کار از طریق بهبود کارایی انجام هر تراکنش انجام می گیرد. برای انجام این کار، مقیاس پذیری عمودی اساساً قدرت پردازش بیشتری را در یک ماشین مجازی جای می دهد تا ظرفیت پردازش خود را بالا ببرد.

مقیاس پذیری عمودی اندکی کارآمدی پایینی دارد. اما اجرای آن بسیار ساده تر از مقیاس های افقی است. در حقیقت، اگر حافظه اصلی ماشین مجازی نتواند حجم تراکنش های ورودی را پردازش کند، مقیاس پذیری عمودی می تواند احتمالاً پاسخ مناسبی را به همراه داشته باشد. در این سناریو، مقیاس پذیری عمودی می تواند حافظه بیشتری را برای زیرساخت ماشین مجازی به ارمغان آورد. در نتیجه، حجم مضاعف پردازش کاهش یافته و توان عملیاتی تراکنش ها بالا می رود.

با اینحال، اگر حجم تراکنش ورودی از ظرفیت سخت افزار ماشین مجازی به حدّی بالاتر رود که دیگر از لحاظ فیزیکی قادر به پردازش آن نباشد، راه حل “مقیاس پذیری افقی” مورد نیاز است.

مقیاس پذیری افقی

همانطور که در بالا بیان شد، مقیاس پذیری افقی یا شاردینگ به توان عملیاتی در زیرساخت های بلاکچین کمک میکند. در این روش، از خوشه ها (clusters) یا ماشین هایی مجازی استفاده می گردد که به لایه اصلی در بلاکچین اضافه می گردند. با اینکه شاردینگ یک سیستم کاملاً مؤثر برای مقیاس پذیری می باشد، اما مطمئناً با پیچیدگی هایی در اجرا و پیاده سازی همراه است.

علاوه بر اینها، زمانیکه صحبت از اجرای روش های مقیاس پذیری در زیرساخت های بلاکچین باشد، سؤالاتی فنی و بنیادین باید پاسخ داده شوند.

 

شاردینگ برای تمرکززدایی بیشتر

قطعاً بحث و جدلی عمیق در خصوص رابطه متقابل شاردینگ و تمرکززدایی در بلاکچین مطرح است. در واقع، در هنگام معرفی مفهوم مقیاس پذیری در فناوری بلاکچین، باید توجه داشت که از آنجا که این سیستم ها به عنوان شبکه های توزیع یافته عمل میکنند، ذاتاً دشوار میتوان توان کلی آنان را از طریق افزودن سخت افزار بیشتر افزایش داد. از جمله این سخت افزارها میتوان به نودها، ماینرها یا اعتبارسنج ها اشاره کرد.

این موضوع زمانی بیشتر آشکار میشود که بدانیم توسعه دهندگان بلاکچین ها تلاش می کنند تا ثبات کلی لایه اصلی را حفظ کنند. آنها تلاش میکنند تا ساختار اصلی آن را دستکاری نکنند.

همچنین، روشهای مقیاس پذیری نیز اهمیت و محبوبیت بیشتری می یابند. زیرا آنها می توانند به امنیت و اعتبار لایه اصلی کمک کنند. آنگاه توان تراکنشی بلاکچین، بدون تغییر زیرساخت کلی آن بهبود می یابد. شبکه لایتنینگ (Lightning Network)  یکی از مثالهای خوب از این بابت است. این شبکه از فناوری خود استفاده می کند تا به امنیت بیتکوین به منظور افزایش ظرفیت تراکنش های کلی سیستم کمک کند.

استفاده شبکه لایتنینگ از اعتبار بیت کوین
استفاده شبکه لایتنینگ از اعتبار بیت کوین

شاردینگ منجر به تقسیم حجم بالایی اطلاعات به بخش های کوچک تر و کارآمدتر می گردد. در نتیجه، ایجاد یک اکوسیستم غیر متمرکز تر میسر می گردد. در واقع، اگر تمام ساختار اطلاعاتی یک شبکه بلاکچین در یک سوپرنود (supernode) جمع گردد و تنها چند فرد محدود قادر به دسترسی به آن باشند، اول از همه دستکاری و بهره برداری از این ساختار توسط مهاجمان ساده تر می شود. دوماً، اهداف اصلی بلاکچین ها مبنی بر ساختاری “غیر متمرکز و بدون نیاز به اعتماد” از بین خواهد رفت.

مقیاس پذیری و شاردینگ میتوانند به عنوان اجزای اصلی توسعه شبکه های بلاکچینی شناخته شوند. آنها همچنین کاتالیزورهای بسیار مهمی برای تحقق “تمرکز زدایی بلاکچین” هستند.

 

شاردینگ با اتریوم 2 (Ethereum 2.0)

به نقل از سامانه سنجش بلاکی “اتراسکن” (Etherscan)، فول نودهای اتریوم هم اکنون حداقل 5 ترابایت فضا اشغال می کنند، که 10 برابر بیشتر از گنجایش معمول رایانه هاست. علاوه بر اینها با توسعه پلتفرم و افزایش تعداد کاربران، نودهای اتریوم بیشتر شده و کار با آنها سخت تر خواهد شد.

پس مشخص است که اتریوم نیازی مبرم به مقیاس پذیری دارد. شاردینگ دقیقاً راه حل همین مشکل است. پس بیایید نگاهی به نحوه کار شاردینگ در اتریوم 2 بیندازیم.

 

تقسیم نودها و دستیابی به موفقیت

در کنار پروتکل کسپر (Casper) و ماشین “وب اسمبلی اتریوم” (Ethereum WebAssembly: ewasm)، شاردینگ یکی از اصلی ترین ویژگی های جدید در نسخه 2 اتریوم می باشد. هم اکنون در شبکه اتریوم، هر نود وظیفه سنجش هر تراکنش را بر عهده دارد. این ویژگی نشان دهنده پویایی شبکه اتریوم می باشد. این شبکه به گونه ای کار می کند که حتی اگر 80 درصد نودهای اتریوم همزمان از کار بیفتند، باز هم بقای شبکه متزلزل نخواهد شد.

مدل فعلی الزاماً باعث کند شدن اتریوم نمی گردد. اما می تواند مشکل ساز باشد. زیرا این مدل نمی تواند منابع شبکه اتریوم را به خوبی بهینه سازی کند.

تقسیم نودها در اتریوم 2

برای مثال، فرض کنیم سه نود جداگانه بر روی شبکه اتریوم موجود بوده و در حال سنجش اعتبار تراکنش باشند. این نودها را به عنوان نود X، نود Y، نود Z در نظر بگیرید. با وضعیت فعلی، به منظور سنجش اعتبار اطلاعات یک تراکنش (در این مثال، اطلاعات T)، هر نود باید کلّ مجموعه داده های T را تأیید کرده و بسنجد.

اگرچه این کار باعث تضمین امنیت کلی شبکه می گردد، اما ترافیکی را برای صف تراکنش ها ایجاد می کند. در حقیقت بدین ترتیب، شبکه مجبور است تا منتظر هر نود باشد تا تراکنش ها را تأیید کند. و البته این سناریو به هیچ وجه کارآمد و ایده آل نیست. با اینحال در نسخه “اتریوم 2” و از طریق طرح شاردینگ آن، مجموعه اطلاعات T می تواند به دسته های T1، T2 و T3 تقسیم شود. آنگاه برای مثال، نودهای X، Y و Z تنها باید شاردی کوچک از اطلاعات را به منظور تکمیل تأیید اطلاعات T پردازش کنند.

«می خواهیم قادر به پردازش بیش از 10 هزار تراکنش در ثانیه باشیم. اما این کار باید بدون اجبار نودها برای تبدیل شدن به ابررایانه انجام گیرد. همچنین آنها نباید اجباری برای ذخیره یک ترابایت اطلاعات داشته باشند. اما این کار نیاز به راه حلی مبسوط دارد که در آن حجم ذخیره بالا، پردازش تراکنش ها، و حتی دانلود تراکنش ها و انتشار دوباره آنها در میان نودهای مختلف گسترده شود.» (بخش سؤالات متداول شاردینگ- اطلاعات اتریوم (Ethereum Wiki))

با شکاندن اطلاعات به زیرمجموعه های کوچک تر، اتریوم می تواند به توان تراکنشی بالاتری دست یابد. در نتیجه، محیطی سریعتر و با دوام بیشتر را برای پیشبرد اهداف و تداوم رشد خود ایجاد می کند.

 

ساز و کار مکانیکی شاردینگ

“اتریوم 2” (Ethereum 2.0) تلاش دارد تا کارکرد شبکه خود را از طریق انتقال لایه اصلی خود از اثبات کار (PoW) به اثبات سهام (PoS) به حداکثر برساند. الگوریتم اجماع اثبات کار برحسب مفهوم “ماینر” کار می کند تا شبکه را امن و متوازن بسازد. این الگوریتم نیاز به قدرت محاسباتی بالا دارد. از سوی دیگر، اثبات کار نیز این مصرف انرژی را با تعهد مالی پاسخ می دهد.

در عین حال، پروتکل اثبات سهام در اتریوم 2 (با نام کسپر) دیگر نیازی به ماینرها ندارد. بلکه در عوض از اعتبارسنج ها استفاده می کند. آنان می توانند با تزریق حداقل 32 توکن ETH در استخر استیکینگ در فرآیند تأیید تراکنش ها و تشکیل بلاک های جدید شرکت کنند. پروتکل “کسپر” از طریق “زنجیره بیکن” (Beacon Chain) میسر می گردد. این زنجیره همان زنجیره اصلی سیستم در اتریوم 2 خواهد بود. این زنجیره به شاردها اجازه می دهد تا با یکدیگر ارتباط برقرار کنند.

"زنجیره بیکن"، مسئول ایجاد بلاک های جدید
“زنجیره بیکن”، مسئول ایجاد بلاک های جدید

البته، همه این فرآیند شامل زیرساخت های زیادی بوده است. در نتیجه، کاربران باید انتظار مواجهه با شکلی کاملاً جدید و بهینه از اتریوم را داشته باشند. برای شروع، “اتریوم 2” باعث می شود که حساب های کاربران در یک شارد خاص قرار گیرند. همچنین تراکنش ها را درون “بسته های تراکنشی” تقسیم بندی می کند. سپس هر “بسته” به یک شارد خاص اختصاص داده می شود. این بسته ها همچنین در ادامه به زیرمجموعه های دیگری متشکل از سرتیترها و بدنه های تراکنش تقسیم می شوند. هر کدام از این سرتیترها یا بدنه ها، ویژگی هایی خاص از شارد را معرفی می کند.

سرتیتر و بدنه تراکنش های یک شارد
سرتیتر و بدنه گروه تراکنش های یک شارد

 

ویژگی سرتیترها در بلاک های تراکنشی

همانطور که در تصویر بالا نشان داده شده است، هر سرتیتر گروه تراکنش ها دارای یک بخش راست و چپ جداگانه است. قسمت چپ سرتیتر دارای اجزای زیر می باشد:

  • شناسه شارد (Shard ID): به منظور انتقال گروه تراکنش ها به شاردی مطمئن و شناسایی شده.
  • ریشه پیش از وضعیت: وضعیت ریشه آن شارد خاص پیش از گنجاندن گروه تراکنش ها در آن.
  • ریشه پس از وضعیت: وضعیت ریشه شارد پس از گنجاندن گروه تراکنش ها در آن.
  • ریشه رسید: تأییدیه ای مبنی بر ورود گروه تراکنش ها در ریشه شارد.

 

قسمت راست سرتیتر، از سوی دیگر، یک گروه از اعتبارسنج های تصادفی را نشان می دهد که تراکنش ها را در خود شارد تأیید می کنند. در ادامه، این بسته های تراکنشی باید دستخوش فرآیند تأیید دوگانه قرار گیرند تا به زنجیره اصلی ضمیمه شوند. اولین فرآیند تأیید شامل اعتبارسنج هایی میشود که به صورت تصادفی برای یک شارد معین شده اند. آنان باید در مورد صحّت هر بسته تراکنش رأی دهند. اگر اعتبارسنج ها رأی “آری” دهند، کمیته ای جداگانه در “زنجیره بیکن” باید صحّت این رأی را با استفاده از یک قرارداد هوشمند مدیریت شاردینگ بسنجد. اگر رأی دوم نیز مثبت باشد، آن بسته تراکنشی به زنجیره اصلی ضمیمه می گردد و بخشی از دفتر کل توزیع شده میشود. همچنین، پیوندی درونی و استوار با گروه تراکنشی در آن شارد خواهد داشت.

 

ارتباط میان شاردها

زیر ساخت “اتریوم 2” به شاردها اجازه می دهد تا به طور مؤثر به منظور ایجاد اکوسیستمی تعاملی و سودمند با یکدیگر ارتباط داشته باشند. ویتالیک بوترین (Vitalik Buterin)، مؤسس اتریوم، توانست مفهوم “ارتباط میان شاردی” را به بهترین صورت در کنفرانس ” DevCon 2018″ در شهر پراگ تعریف کند:

«تصور کنید که اتریوم به هزاران جزیره تقسیم شود. هر جزیره می تواند کار خود را بکند. هر جزیره ویژگی های خاصّ خود را دارد و هر کسی  در آن جزیره (حساب ها) می تواند به آسانی با افراد دیگر معاشرت کند. همچنین، آنها می توانند از ویژگی های مشترک یکدیگر لذت ببرند. اگر آنان بخواهند با جزایر دیگر ارتباط برقرار کنند، باید از یک نوع پروتکل استفاده کنند.»

نیاز به پروتکل میان شاردی

با در نظر گرفتن این “تشبیه شارد به جزیره”، کاملاً واضح است که اگر این شاردها بخواهند با موفقیت با یکدیگر ارتباط برقرار کنند، نیاز به یک پروتکل میان شاردی خاص دارند. این پروتکل مدّ نظر در اتریوم 2 به عنوان “پارادیم رسید” یا “الگوی رسید” (receipt paradigm) شناخته می شود. همانطور که پیش تر در تصویر بالا نشان داده شد، “ریشه رسید” بخشی از سرتیتر گروه تراکنش می باشد و برای تأیید ورود یک گروه تراکنش به ریشه شارد در یک درخت “مرکل” (Merkle tree) مورد استفاده قرار می گیرد.

هر تراکنش در گروه منجر به ایجاد یک رسید در شارد متعلق به خود می شود. “زنجیره بیکن”، یا همان زنجیره سیستمی موجود در اتریوم 2، آنگاه از حافظه مشترک توزیع یافته خود برای ذخیره تمام رسیدهای تراکنشی در درونش استفاده می کند. به همین دلیل به آن “الگوی رسید” گفته میشود. این اتفاق برای آن رخ می دهد تا دیگر شاردها بتوانند رسیدهای درون “زنجیره بیکن” را ببینند و با آنها تعامل داشته باشند. اما به دلیل ذات تغییر ناپذیر بلاکچین، خودشان نمی توانند رسیدهای تراکنش ها را مرتب و تنظیم کنند.

این ویژگی بسیار کلیدی محسوب میشود. از طریق این ویژگی، شاردها دقیقاً می فهمند که چه موقع برای ارتباط با شاردهای دیگر مناسب است. اساساً، این طراحی خاص برای اتریوم 2 به شاردها اجازه می دهد تا از فعالیت یکدیگر بهره ببرند. همچنین در عین حال، شاردها می توانند هدف خاص خود را حفظ کنند.

 

اختلالات و پیچیدگی های فعالیت های میان شاردی

دو مسئله اساسی در رابطه با ارتباطات میان شاردی در اتریوم 2 عبارتند از: پیچیدگی های اجرایی و تأخیرها. با اینحال، ویتالیک بوترین دو پیشنهاد را برای حلّ این مشکلات و تضمین توسعه “اتریوم شارد شده” مطرح می سازد.

این پیشنهادها عبارتند از:

  • انتقال برخی مسئولیت ها و وظایف از شاردهای اختصاصی به “زنجیره بیکن”.
  • تضمین وضعیت و فعالیت منحصر به فرد هر شارد.
  • کاهش پیچیدگی ها در ساختار شارد و حفظ کارکردهای مختلف شبکه.
  • اهدای کارکردهای کافی به شاردها در جهت پشتیبانی از اجرای قراردادهای هوشمند در گروه های مختلف تراکنشی.
  • معرفی 3 نوع تراکنش جدید: سند اجرایی جدید، اعتبارسنج جدید و برداشت از حساب. “سند اجرایی جدید” (New Execution Script) منجر به ایجاد سندی اجرایی می گردد که می تواند توکن های ETH را در خود جای دهد. “اعتبارسنج جدید” (New Validator) می تواند اعتبارسنج های جدید را به سیستم اضافه کند. “برداشت از حساب” (Withdrawal) می تواند اعتبارسنج ها را از “زنجیره بیکن” بیرون راند.

 

تأخیرهای اجرایی در ارتباطات میان شاردی

علاوه بر اینها، دیگر مسئله ای که “اتریوم 2” در تلاش برای حلّ آن است، تأخیرات شبکه ای در ارتباطات میان شاردی می باشد. اگر برای مثال، کاربری بخواهد یک توکن را از شارد X به شارد Y بفرستد، یک تراکنش در شارد X آن توکن را از بین می برد. اما در عین حال، گزارشی از اعتبار ارسال شده، آدرس و شارد مقصد (در اینجا، شارد Y) ذخیره می کند.

با مقداری تأخیر، همه شاردها از ریشه وضعیتیِ دیگر شاردها مطلع می شوند. این آگاهی باعث میشود که آنها بتوانند تراکنش و صحّت آدرس شارد Y را تأیید کنند. آنگاه، شارد X اقدام به ایجاد یک رسید تراکنش می کند که توسط شارد Y بازیابی می گردد، و اجازه می دهد تا اعتبار درون شارد X از بین برود و به شارد Y منتقل گردد.

مطمئناً می توانید تصور کنید که این فرآیند تأخیرات بسیاری را به همراه خواهد داشت. همچنین، اهداف مقیاس پذیری اتریوم 2 را زیر پا می گذارد.

راه حل اتریوم 2

اتریوم راه حلی را تحت عنوان “انتقالات سریع میان شاردی از طریق ریشه های خوش بینانه رسیدی” (Fast Cross-Shard Transfers Via Optimistic Receipt Roots) پیشنهاد داده است. با اینکه این عنوان شاید اندکی گیج کننده باشد، اما در حقیقت سیستمی ساده است که وضعیت های مختلف را ذخیره کرده و در مورد صحّت تراکنش ارسال شده خوش بینانه عمل می کند.

فرض کنید اصغر 50 توکن در شارد B داشته باشد. صغری 20 توکن را از شارد A برای او ارسال کند، بدون آنکه اصغر در خصوص وضعیت شارد A اطلاع داشته باشد. بنابراین اصغر نمی تواند کاملاً اعتبار انتقال را بسنجد. آنگاه وضعیت حساب اصغر (شارد B) موقتاً در صورت اصالت انتقال از سوی صغری 70 توکن، و در صورت عدم اصالت این انتقال همان 50 توکن را نشان می دهد.

دلیل این کار آن است که اعتبارسنج هایی که تراکنش از شارد A به شارد B را تصدیق می کنند، میتوانند نسبت به نهایی شدنِ انتقال خوشبین باشند. یعنی خوشبین باشند که حساب اصغر  در نهایت، به محض سنجش اعتبار تراکنش از سوی صغری، دارای 70 توکن خواهد شد. بدین ترتیب، اعتبارسنج ها می توانند جوری رفتار کنند که انگار اصغر به 70 توکن دست یافته است.

به محض تأیید تراکنش از سوی شارد A به شارد B، وضعیت آن “دائم” خواهد شد یا در صورت عدم تأیید آن “رد” خواهد شد. این “سیستم سریع انتقال میان شاردی” میتواند به شدت تأخیرهای شبکه را از بین ببرد. در صورت اجرای صحیح و موفق آن، اتریوم 2 می تواند توان عملیاتی خود را تسریع کرده و مقیاس پذیری خود را بهبود بخشد.

بیایید اکنون “اتریوم 2” را کنار بگذاریم و مبحث شاردینگ را در دیگر پروژه ها بررسی کنیم. در اینجا، به طور خاص به بررسی شاردینگ در زیلیکا (Zilliqa)، نیر (NEAR) و پولکادات (Polkadot) خواهیم پرداخت.

 

پروژه زیلیکا (Zilliqa)

دیگر پروژه معتبر و جذاب که از شاردینگ نیز استفاده میکند، زیلیکا نام دارد. زیلیکا، که در 2017 راه اندازی شد، بلاکچینی با کاربردهای گسترده محاسباتی برای سازمان ها و فناوری های رو به رشد است. ویژگی های کاربردی کلیدی آن، “شاردینگ” و “پردازش موازی تراکنش” می باشند.

اگرچه این شبکه براساس الگوریتم های اثبات کار فعالیت می کند که نیازمند قدرت محاسباتی بسیار بالا هستند، زیلیکا به گونه ای طراحی شده است تا برحسب تقاضا از طریق مشارکتِ نودها و ماینرهای ZIL بیشتر به افزایش مقیاس خود بپردازد. بدین ترتیب، شاردهای بیشتری می توانند در این شبکه جای بگیرند.

توکن بومی زیلیکا ZIL می باشد. براساس مدل شاردینگ آن، آگر زیلیکا بخواهد 20 هزار نود را در خود جای دهد، آنگاه این شبکه می تواند به 25 زیرشبکه با 800 نود در هر کدام تقسیم شود که می توانند اطلاعات را به صورت موازی و همزمان پردازش کنند. ساختار زیلیکا دارای پیچیدگی خاصی است. این ساختار از دو بلاکچین به صورت موازی استفاده می کند. این پروژه از بلاک های تراکنشی تحت عنوان ” TX-Blocks” استفاده می کند که تراکنش های ارسال شده از سوی کاربران شبکه را در خود جای می دهند. نوع دیگر بلاک های تراکنشی در این شبکه، بلاک های راهنمای خدمات یا “DS-Blocks” هستند. این بلاک ها نیز اطلاعات را نزد ماینرهای شبکه نگه می دارند که به امنیت شبکه کمک می کند.

 

شاردینگ در زیلیکا (Zilliqa)

شاردینگ بلاکچین در زیلیکا در دو مرحله انجام می گیرد. ابتدا، “نودهای کمیته راهنمای خدمات” (Directory Service Committee Nodes) انتخاب می گردند که فرآیند شاردینگ را آغاز می کنند و هر نود را به یک شارد مرتبط می سازند. در ادامه، زمانیکه تراکنش ها در شارد تأیید شدند، می توانند از سوی کلّ شبکه نیز تأیید گردند و به مرحله ای جهانی تبدیل شوند که هر تراکنش در شارد را به یک منبع سنجش اعتبار مستقل در بلاکچین زیلیکا ضمیمه می کنند.

اساساً، یک تراکنش شارد شده در شبکه زیلیکا شامل یک کاربر می شود که یک تراکنش را آغاز می کند. سپس، آن تراکنش به شاردی منتقل می شود که تراکنش را می سنجد و آن را با دیگر تراکنش ها مقایسه می کند تا یک “میکرو بلاک” از تراکنش ها ایجاد کند. در ادامه، به وسیله شاردِ موجود در سنجش اعتبار میکرو بلاک، اجماع حاصل می گردد.  این اجماع به کمیته راهنمای خدمات سپرده می شود که میکرو بلاک ها را با “بلاک نهایی” ادغام می کند. کمیته راهنمای خدمات در اینجا، پیش از ضمیمه کردنِ این بلاک به بلاکچین، به اجماع نهایی دست می یابد.

 

شاردینگ در نیر (NEAR)

پروژه ای که از شکلی متفاوت از شاردینگ استفاده می کند، پروتکل نیر است. نیر، که در 2020 راه اندازی شد، یک پلتفرم بلاکچین شارد شده با مدیریت اجتماعی است که از اثبات سهام استفاده می کند. در این پروتکل، مقیاس پذیری و تعامل از اهمیت بالایی برخوردارند.

نیر از فناوری “نایت شید” (Nightshade) خود بهره می گیرد تا توان عملیاتی بالایی را میسر سازد. براساس این فناوری، اعتبارسنج ها تراکنش ها را به صورت موازی پردازش می کنند تا ظرفیت تراکنش ها را در بلاکچین افزایش دهند. با اینکه مدل شاردینگ بر پایه  زنجیره های شاردی و زنجیره بیکن بسیار قوی عمل می کند، اما برخی مشکلات ساختاری را نیز به همراه دارد. این مشکلات از آن جهت پیش می آیند که هر دوی زنجیره های شاردی و زنجیره بیکن اساساً ماهیتی جداگانه در یک بلاکچین دارند.

پروتکل نیر این مشکل را از طریق ارائه یک طرح شاردینگ حل می کند. این طراحی با مدل سازیِ زیرساخت آن به عنوان یک بلاکچین منفرد میسر می گردد. در این مدل، هر بلاک دارای تمام تراکنش ها برای همه شاردها است و کلّ وضعیت شاردها را تغییر می دهد. از طریق “نایت شید”، نیر می تواند الگوی مستقل خود را در بلاکچین از طریق شاردینگِ تراکنش های هر بلاک در دسته های فیزیکی تحقق بخشد. در حالت ایده آل، هر شارد دارای یک دسته (بخش) خواهد بود و همه آنها در یک بلاک جمع خواهند شد.

 

شاردینگ در پولکادات (Polkadot)

پولکادات از یک مدل شاردینگ کاملاً متفاوت با مکانیزم شاردینگ اتریوم استفاده می کند. این پروژه از ویژگی های میان زنجیره ای خود بهره برده و شاردینگ را به کمک پاراچین ها (parachain) محقق می سازد. طراحی بومی پولکادات از یک شبکه چند زنجیره ای تشکیل می شود که امنیت، اطمینان و مقیاس پذیری “لایه صفر” را برای همه بلاکچین های “لایه 1” که بر روی آن پیاده سازی شوند، به ارمغان می آورد.

این لایه های 1 همان شبکه پاراچین می باشند. پاراچین ها بلاکچین هایی مختلف هستند که به صورت موازی درون اکوسیستم پولکادات (بر روی هر دوی شبکه های پولکادات و کوساما) فعالیت می کنند.

پاراچین ها به کمک زنجیره اصلی (Relay Chain) موجود در پولکادات به یکدیگر وصل شده و امن می گردند. آنان از امنیت، تعامل و مقیاس پذیری استفاده می کنند. شبکه پاراچین می تواند به جرأت به عنوان یک الگوی شاردینگ پیشرفته تلقی شود که ویژگی های زنجیره اصلی پولکادات را اجرا می سازد. این شبکه به صورتی موازی و شبیه به شارد عمل می کند.

پروژه های پاراچینی، همچون کلاور (Clover) برای مثال، می توانند از تراکنش هایی بدون کارمزد گس استفاده کرده و لایه هایی جدیدی را با مقیاس پذیری و تعامل بالا به زیرساخت های لایه 1 اضافه کنند. زیرا پولکادات، به عنوان یک شبکه چند زنجیره ای که با پاراچین ها ایجاد شده است، قادر به پردازش چندین تراکنش موازی در چندین زنجیره به صورت آنی می باشد. در نهایت از این طریق، مفهوم شاردینگ میان زنجیره ای محقق می گردد.

 

نتیجه گیری

شاردینگ کلید اصلی مقیاس پذیری در شبکه های غیر متمرکز است و فرصت های بسیاری را برای پروژه هایی فراهم می سازد که از آن (حداقل تا حدودی) استفاده می کنند.

مسئله پیش رو هم اکنون بلاکچین هایی هستند که با گسترش روزافزون به دلیل محبوبیت، کاربرد و تقاضای خود همراه هستند. در عوض، مشکلات و پیچیدگی های درون زنجیره ای برای آنها پیش می آید. در نهایت، این مشکلات منجر به نیاز مبرم آنها به راه حلی مناسب برای مقیاس پذیری می گردد.

اتریوم 2 شاردینگ را در این به روز رسانی پیاده سازی کرده است. انتظارات همچنان از این روش بالا است. اگر اتریوم 2 بتواند در استفاده از شاردینگ موفق عمل کند، مقیاس پذیری اتریوم تا بلندمدت تضمین می گردد. در نتیجه، اتریوم موفق خواهد شد تا در مسیر خود به عنوان پروژه ای غیر متمرکز و عمومی به پیشتازی ادامه دهد. و در نهایت می توان احتمال داد که اتریوم، در صورت موفقیت ویژگی شاردینگ، در تحقق رؤیای “کامپیوتر جهانی” به موفقیت های بیشتری برسد.

پست های مرتبط

سگویت (SegWit) چیست؟

تیم تحریر دوم

آموزش ساخت توکن غیر قابل تعویض (NFT)

آموزش نحوه استیک سولانا (SOL)

تیم تحریر اول والبی

درج دیدگاه

error: اجازه کپی ندارید