همانطور که احتمالاً در جریان هستید، اتریوم از ابتدا کاربردهای بیشتری نسبت به یک ارز دیجیتال داشته و هدف اصلی آن ایجاد زیرساخت راه اندازی برنامه های غیر متمرکز و قراردادهای هوشمند است.در این بین برای استفاده از خدمات این پلتفرم، توسعه دهندگان بایستی بهای آن را به وسیله کوین داخلی یا همان اتر پرداخت کنند؛ اما این موضوع در زمانی که هر اتر به بالای 1000 دلار رسیده و توسعه دهندگان جدید قادر به پرداخت آن نیستند ممکن است مشکل ساز باشد.
در سوی دیگر تغییرات اعمالی در شبکه بلاکچین غیر قابل برگشت پذیر هستند و توسعه دهندگان در صورت ایجاد تغییری در بستر بلاکچین اتریوم دیگر راهی برای بازگرداندن آن ندارند.برای حل این مشکلات که میتواند برای توسعه دهندگان جدید دردسرساز باشد، ویتالیک بوترین خالق اتریوم شبکه تستی به موازات شبکه اصلی ایجاد کرده که دقیقا تمام ویژگی های اصلی شبکه اتریوم را دارا بوده، اما برای دریافت بازخورد و تست برنامه ها به اتر نیازی نخواهد داشت.امکان ندارد که تیم توسعه یک اپلیکیشن غیرمتمرکز یا شبکه در فضای بلاک چین، تغییرات مورد نظر خود را مستقیماً روی شبکه اصلی ایجاد کند، چراکه مشکلات زیادی به همراه خواهد داشت. به همین علت از تست نت ها یا شبکه های آزمایشی استفاده می کنیم.
تست نت چیست؟
تست نت (Test net) یا شبکه آزمایشی، یک شبکه جانبی در کنار شبکه اصلی یا مین نت است، که توسعه دهندگان از آن برای بررسی درستی کارکرد شبکه و کدهای خود استفاده می کنند. تست نت ها را می توانیم به راحتی تغییر دهیم، زیرا عملاً ارزشی ندارند.آنچه در تست نت آزموده می شود، کاربردها، ویژگی ها و امکاناتی است که قرار است شبکه اصلی داشته باشد. به این ترتیب تمام این موارد در شبکه آزمایشی بررسی می شوند و سپس وقتی نهایی شدند، به مین نت منتقل می شوند.
به طور کلی دو نوع تست نت داریم، یکی پیش از راه اندازی شبکه اصلی استفاده می شود و دیگری در طول حیات شبکه اصلی. نوع دوم، جایی است که توسعه دهندگان آپدیت های هر شبکه را پیش از انتشار روی آن بررسی می کنند.در حوزه ارز دیجیتال و بلاک چین، استفاده از تست نت بسیار دیده می شود، معروف ترین تست نت ها در این حوزه به ارزهای دیجیتال بیت کوین، اتریوم و ایاس تعلق دارند.
کاربردهای تست نت چیست؟
برای آنکه بتوانیم به درک مناسبی از شبکه های آزمایشی برسیم، لازم است کاربردهای آن را بشناسیم. کاربردهای اصلی تست نت عبارتند از:
- آزمون و خطا:توسعه دهندگان نمی توانند هر تغییری که می خواهند در شبکه اصلی ایجاد کنند، چراکه کاربران واقعی در حال استفاده از آن هستند و نباید هیچ مشکلی رخ دهد. به همین دلیل از تست نت استفاده می شود، تا تیم توسعه بدون نگرانی از مشکلات احتمالی، تغییرات دلخواه خود را با آزمون و خطا ایجاد کند.
- حذف اختلال از شبکه اصلی:عمده مشکلاتی که تیم توسعه را به ایجاد تغییر وا می دارد، سه اصل مقیاس پذیری، امنیت و غیرمتمرکز بودن است. هرگونه تغییر در هریک از این موارد، شبکه را با اختلال مواجه خواهد کرد. به همین دلیل از شبکه آزمایشی استفاده می شود.
- تست اپلیکشین های غیرمتمرکز:در هر نوع برنامه نویسی و توسعه نرم افزاری، مرحله تست وجود دارد. در مورد شبکه بلاک چین و اپلیکیشن های غیرمتمرکز نیز به همین ترتیب است. تست هایی که برای اپلیکیشن های غیرمتمرکز روی تست نت انجام می شوند عبارتند از: تست امنیتی، آزمون یکپارچه سازی، آزمون بارگیری و غیره.
مهم ترین شبکه های آزمایشی اتریوم
شبکه آزمایشی اتریوم یا تست نت اتریوم مجموعه ای از نودها است، که برای آزمایش پروتکل اتریوم استفاده می شود. تست ها روی شبکه های آزمایشی اجرا می شوند تا اطمینان حاصل شود که پروتکل مطابق انتظار کار می کند. شبکه های آزمایشی از این نظر شبیه به آزمون های آزمایشی هستند که برای تست پروتکل در یک محیط کنترل شده استفاده می شوند.در فهرست زیر، شبکه های آزمایشی اتریوم با اولویت زمانی، از قدیم به جدید مرتب شده است و توضیحاتی درباره تاریخچه هر یک ارائه می کنیم.
۱. شبکه آزمایشی Olympic – اوایل سال ۲۰۱۵
شبکه Olympic اولین شبکه آزمایشی اتریوم بود که قبل از راه اندازی شبکه اصلی، منتشر شد. این شبکه که دارای الگوریتم اجماع گواه اثبات کار (PoW) بود و نهمین آزمایشی بود که قبل از معرفی رسمی شبکه اصلی اتریوم انجام شد.توسعه دهندگان اپلیکیشن، ارائه دهندگان داده و صرافی ها برای سنجش سطح توان این شبکه، حجم بالایی از داده به آن ارسال کردند. شبکه Olympic با نام Ethereum 0.9 نیز شناخته می شد و شناسه آن ۰ بود. این شبکه پس از راه اندازی موفقیت آمیز شبکه اصلی اتریوم، در جولای ۲۰۱۵ (تیر ۱۳۹۴) غیرفعال شد.
۲. شبکه آزمایشی Morden – جولای ۲۰۱۵
در زمان راه اندازی شبکه اصلی عمومی اتریوم، به یک شبکه آزمایشی عمومی نیاز بود که تا حد زیادی شبیه شبکه اصلی باشد. به همین دلیل تست نت Morden با مکانیسم اجماع گواه اثبات کار معرفی شد.این شبکه با شناسه ۲ معرفی شد و به مدت یک سال شبکه آزمایشی اتریوم بود، اما در نوامبر ۲۰۱۶ (آبان ۱۳۹۵) به دلیل انباشت فایل های بی مصرف و برخی مشکلات مربوط به اجماع در کلاینت های Geth و Parity، دیگر مورد استفاده قرار نگرفت.شبکه Morden دیگر مورد استفاده تیم اتریوم قرار نگرفت، اما همچنان در جامعه کاربری اتریوم کلاسیک فعال ماند و نام آن به شبکه آزمایشی Morden Classic تغییر کرد.
۳. شبکه آزمایشی Ropsten – نوامبر ۲۰۱۶
Ropsten سومین و آخرین شبکه آزمایشی اتریوم با الگوریتم اجماع گواه اثبات کار است که بعد از معرفی شبکه اصلی راه اندازی شد. این شبکه آزمایشی از روی یک ایستگاه مترو در استکهلم سوئد نام گذاری شده است.شبکه آزمایشی Ropsten از تمام کلاینت های اصلی اتریوم پشتیبانی می کند و تنها شبکه آزمایشی در دسترس با مکانیسم اجماع گواه اثبات کار است.
در فوریه ۲۰۱۷ (بهمن ۱۳۹۵)، شبکه آزمایشی Ropsten مورد هدف حمله DDOS قرار گرفت. در نتیجه این حمله، کلاینت های اتریوم در همگام سازی با شبکه Ropsten دچار مشکل شدند و این باعث کندی شبکه و اشغال شدن مقدار زیادی از فضای آن شد. این حمله به تدریج باعث افزایش محدودیت گس بلاک از ۴.۷ میلیون به ۹ میلیارد شد. به صورتی که بلاک های اسپم بسیار زیادی ایجاد شده است و در زمان ارسال تراکنش های بزرگ، شبکه فلج می شد.در مارس ۲۰۱۷ (اسفند ۱۳۹۵)، تیم Ropsten توانست با استفاده از توان هش کارت گرافیک (GPU) ارائه شده توسط جامعه کاربری، این شبکه را احیا کرده و تمام بلاک های اسپم ایجاد شده را از شبکه پاک کند.
۴. شبکه آزمایشی Kovan – مارس ۲۰۱۷
حمله به شبکه Ropsten در فوریه ۲۰۱۷ باعث تشکیل چند شبکه آزمایشی جدید شد. یکی از آن ها شبکه آزمایشی Kovan بود که توسط تیم Parity راه اندازی شد. همانند شبکه های آزمایشی قبلی، شبکه آزمایشی Kovan نیز بر اساس نیاز توسعه دهندگان به یک شبکه آزمایشی پایدار و مشتری محور، راه اندازی شد.شبکه Kovan از الگوریتم اجماع اثبات اعتبار (PoA) استفاده می کند. در این نوع مکانیسم اجماع، تنها گروه کوچکی از اعتبارسنج های قابل اعتماد شرکت دارند که با استفاده از اعتبار خود، ساخت بلاک های جدید را تضمین می کنند. در شبکه Kovan، تمرکززدایی قربانی امنیت می شود.
مشخص بودن هویت های این اعتبارسنج ها، آن ها را به حفظ ارزش شبکه تشویق می کند؛ زیرا هیچ اعتبارسنجی نمی خواهد که اعتبارش کاهش پیدا کند.مانند شبکه Ropsten، اسم شبکه آزمایشی Kovan نیز از یک ایستگاه مترو در سنگاپور گرفته شده است. شناسه این شبکه ۴۲ است و ساخت یک بلاک جدید در آن ۴ ثانیه طول می کشد. برخی از کلاینت های اصلی اتریوم مانند Geth در این شبکه پشتیبانی نمی شوند و برخی از ویژگی های شبکه اصلی را ندارد.شبکه آزمایشی Kovan محیط پایدارتر و سریع تری نسبت به شبکه Ropsten دارد، زیرا برای حفظ این شبکه نیازی به استخراج با CPU نیست. با این حال، ویژگی های منفی نیز دارد که از جمله آن ها می توان به موارد زیر اشاره کرد:
- با توجه به اینکه در شبکه اتریوم محدودیت بلاک به صورت متغیر است، شبکه آزمایشی Kovan از این مزیت استفاده نمی کند.
- پرتابل نیست (قابلیت فورک شدن ندارد).
- قابلیت سازگاری با حالت های همگام سازی مختلف را ندارد.
شبکه آزمایشی Kovan همچنان فعال بوده و هنوز یکی از تست نت های محبوب در میان جامعه کاربری اتریوم است.
۵. شبکه آزمایشی Rinkeby – آوریل ۲۰۱۷
با توجه به اینکه راه اندازی شبکه Kovan با کمی عجله و به دلیل حمله به شبکه Ropsten انجام شد، تیم اتریوم به عنوان یک راهکار بلندمدت شبکه آزمایشی Rinkeby را که از الگوریتم اجماع Clique PoA استفاده می کند، راه اندازی کردند.نام این شبکه نیز از یک ایستگاه مترو در استکهلم گرفته شده و شناسه آن ۴ است. زمان ساخت بلاک جدید آن نیز ۱۵ ثانیه است. این شبکه آزمایشی PoA جدید، ازتمام کلاینت های اتریوم پشتیبانی می کند و بدون اینکه نیازی به ویژگی های اضافی باشد، مدل های همگام سازی جدید از جمله Fast ،Light و Warp در آن قابل استفاده هستند.
امضاکننده های معتمد شبکه تنها در دو مورد زیر تغییر می کنند:
- تغییر فیلد ۳۲ بایتی Extra-data در عنوان بلاک ها به یک فیلد ۶۴ بایتی که امضای ماینر Secp256k1 را در خود جای دهد. در این صورت هر کسی که یک بلاک در اختیار دارد می تواند آن را با فهرستی از امضا های مجاز تایید کند. یعنی بخش Miner در عنوان بلاک های دیگر منسوخ می شود.
- استفاده از فیلد Miner و فیلد Nonce منسوخ شده برای ایجاد یک پروتکل رای گیری میان بلاک های عادی. مقدار هردوی این فیلد ها روی عدد صفر تنظیم شده است؛ اما اگر یکی از امضاکننده ها بخواهد تغییری در فهرست امضاهای مجاز ایجاد کند، باید مقدار فیلد Miner را بر اساس امضاکننده ای که به آن رای می دهد، تنظیم شود و مقدار فیلد Nonce را نیز به 0 یا 0xff…f تغییر دهد تا بتواند به اخراج یک امضاکننده یا اضافه کردن یک نفر جدید رای دهد.
هر کلاینتی که با زنجیره همگام سازی می شود، می تواند در فرایند پردازش بلاک، تعداد رای ها را بشمارد و بر اساس رای های محبوب، یک لیست به روز از امضاهای مجاز ارائه کند.تیم اتریوم تلاش کردند یک الگوریتم PoA استاندارد بسازند، اما شبکه Rinkeby تنها از کلاینت Geth پشتیبانی می کرد. به همین دلیل، به یک شبکه آزمایشی جدید نیاز بود که از تمام کلاینت ها پشتیبانی کند.
۶. شبکه آزمایشی Gorli – سپتامبر ۲۰۱۸
این شبکه آزمایشی به صورت یک پروژه هکاتون (رویداد های Hackathon، به برنامه های دریافت پاداش در ازای یافتن باگ در شبکه گفته می شود) و توسط تیم Chainsafe در انجمن ETHBerlin# آغاز شد. هدف از راه اندازی این شبکه، پیاده سازی مکانیسم Aura PoA کلاینت Parity (که عمدتا با زبان برنامه نویسی Rust نوشته شده است) در کلاینت Geth (با زبان GO) بود.این شبکه زمانی به صورت یک پروژه رسمی درآمد که تیم های Chainsafe و Afri Scohedon با یکدیگر همکاری کردند. این دو تیم قصد داشتند یک شبکه آزمایشی عمومی با الگوریتم PoA بسازند که از تمام کلاینت های اتریوم پشتیبانی کند.
موارد زیر قدم های اولیه تیم ها برای راه اندازی این شبکه هستند:
- انتخاب یک موتور PoA مانند Aura یا Clique در یکی از پروپوزال های بهبود شبکه اتریوم (EIP-225)
- به کارگیری این موتورها در کلاینت های مختلف
- راه اندازی یک شبکه آزمایشی ساده با الگوریتم PoA که شرایط شبکه اصلی را داشته باشد.
در نتیجه این اقدامات اولیه، شبکه آزمایشی Gorli با موفقیت در اوایل سال ۲۰۱۹ راه اندازی شد. Gorli همچنان یکی از قوی ترین و پایدارترین تست نت ها است.شناسه این شبکه ۵ و شناسه زنجیره آن نیز ۵ است. میانگین زمان تشکیل بلاک در شبکه Gorli پانزده ثانیه است.