testnet چیست؟
اساساً برای هر توسعهدهنده، دسترسی به شبکهای کامل و بینقص، از اهمیت بسیار بالایی برخوردار خواهد بود. از طرفی ساخت شبکهای بدون اختلال و نقص فنی و امنیتی نیز نیازمند انجام آزمون و خطاهای فراوان است؛ از اینرو پرسش اصلی این است که چطور میتوان بدون راهاندازی یک شبکه، آن را آزمایش کرده و خطاهای آن را پیدا کرد؟ درحقیقت این کار با استفاده از شبکه آزمایشی یا Testnet امکانپذیر است.
بهطورکلی، پایه و اساس دنیای ارزهای دیجیتال و امور مالی غیرمتمرکز یا دیفای (DeFi) فناوری بلاک چین است. این فناوری باقابلیتهای بینظیر خود (همچون غیرمتمرکز بودن و امکان انجام تراکنشهای مالی به شکل ناشناس)، روزبهروز از محبوبیت بالاتری برخوردار شده و همین موضوع سبب شده تا هر روز شاهد راهاندازی پروژههای بلاک چینی جدیدی باشیم.
از طرفی، یکی از گامهای بسیار مهم در توسعه هر پروژه ارز دیجیتال یا دیفای بر بستر بلاک چین، همین شبکه آزمایشی یا Testnet است. درواقع هدف از راهاندازی شبکه آزمایشی، آزمایشکردن یک شبکه پیش از راهاندازی آن است، اما در مقابل تست نت، شبکه اصلی یا مین نت (MainNet) قرار دارد که همان بلاک چین اصلی یک ارز دیجیتال است. درواقع Testnet ها را میتوان به ۲ دستهبندی کلی تست نتهایی که پیش و بعد از شروع به کار مین نت اجرا میشوند تقسیمبندی کرد.
امروزه تراکنشهایی به ارزش میلیاردها دلار بر بستر شبکههای بلاک چینی انجام میشود. حال فرض کنید اگر این بلاک چینها و پلتفرمها بدون تستشدن راهاندازی میشدند، چه مشکلاتی به وجود میآمد. بلاک چینها و اپلیکیشنهای آزمایشنشده میتوانند مشکلاتی داشته باشند که خسارتهای چند میلیارد دلاری به مردم وارد کنند و کل دنیای ارزها و دیفای را تحت تأثیر قرار دهند
testnet چیست؟
نوعی شبکه بلاک چین آزمایشی است که برای اجرا و آزمایشکردن بلاک چینها یا پروژههای بلاک چین پیش از راهاندازی یا حتی پس از راهاندازی آنها ایجاد و اجرا میشود. اساساً راهاندازی Testnet سادهترین روشی است که برنامهنویسان و توسعهدهندگان میتوانند از طریق آن، قابلیتهای مختلف پروژههای بلاک چین و دیفای، مثل انواع مختلف قراردادهای هوشمند و اپلیکیشن های غیرمتمرکز (dApps) را تست و اصلاح کنند و تا زمانی که برای استفاده در دسترس عموم قرار میگیرند، به عملکرد آنها نظارت داشته باشند.
برنامهنویسان و توسعهدهندگان در تست نتها، ایرادات پروژهها، اپلیکیشنها، قراردادهای هوشمند، صرافیهای غیرمتمرکز و هر قابلیت بلاک چین و دیفای را آزمایش کرده و ایرادات آن را شناسایی و برطرف میکنند. از طرفی، در محیط Testnet میتوان آزمایشهای مختلفی را بهصورت مکرر انجام داد و عملکرد هر قابلیت را پیش از عمومیشدن آن، تحت نظر داشت و بررسی کرد.
از آنجا که Testnet ها بهصورت کاملاً مجزا از مین نتها عمل میکنند، میتوان در آنها پروژههای بلاک چین را بدون تداخل با تراکنشها در مین نت، بهطور کامل آزمایش کرد. مدل جعبه شن یا سند باکس (Sandbox) به توسعهدهندگان و برنامهنویسان امکان میدهد تا ریسکها و آزمایشهای مختلفی را انجام دهند و به بهترین مدل ممکن برای راهاندازی بر بستر مین نت برسند.
از آنجا که Testnet ها، پیش نمونه یا پروتوتایپ محسوب میشوند، هرگز نبایستی از آنها برای انتقال داراییهای ارزشمند استفاده کرد، بلکه برای انجام آزمونها و آزمایش مدلها در این شبکهها بایستی از توکنهای تقلبی و بدون ارزش استفاده شود. همچنین معمولاً توسعهدهندگان برای راهاندازی و آزمایش بلاک چینها، تست نتها را میسازند و زمانی که توسعه بلاک چین پس از پشت سر گذاشتن تمامی آزمایشها و رفع تمامی نواقص به پایان رسید، آن را در مین نت راهاندازی میکنند.
برخی از بلاک چینها مانند اتریوم دارای روشهای استانداردی برای آزمایشکردن پروژهها، اپلیکیشنها و دیگر انواع قابلیتهای دیفای هستند. این بلاک چینها، به پروژههایی که آزمونها را با موفقیت پشت سر میگذارند، گواهینامه میدهند. این گواهینامهها خیال کاربران را راحت میکنند و سبب جلب اعتماد آنها میشوند. بهعلاوه، یکی از مدارک موردنیاز برای پذیرش پروژهها در آن بلاک چینها هستند.
MainNet چیست؟
در بالا بهطور کامل توضیح دادیم که Testnet چیست و حالا زمان آن رسیده که مین نت یا شبکه اصلی را برای شما همراهان گرامی توضیح دهیم. بهصورت کلی مین نت نیز همانطور که از نام آن مشخص است، به معنی شبکه اصلی است که بلاک چین یا پروژه بلاک چین روی آن اجرا میشود. راهاندازی پروژه یا بلاک چین در مین نت، بعد از آزمایشکردن موفق آن در تست نت انجام میشود.
درحقیقت مین نت، یک شبکه کاملاً توسعهیافته است که میتوان در آن تراکنشهای واقعی انجام داد و تراکنشها را ثبت و تأیید کرد. وقتی توسعهدهندگان پروژهای، آن را در مین نت راهاندازی میکنند، درواقع اعلام میدارند که آزمایشهای لازم را روی پروژه انجام دادهاند و به آن اعتماد کامل دارند.
مین نتها، بلاک چینهایی کاملاً عملکردی هستند که کاربران میتوانند تراکنشهای ارزهای دیجیتال یا NFT ها را بر بستر آنها انجام دهند یا به مبادله اطلاعات بپردازند. بهعلاوه، میتوان از مین نتها برای اجرای پروژهای که نیازمند نوعی پروتکل ویژه بلاک چین است، استفاده کرد؛ برای مثال میتوان به اجرای dApp ها بر بستر مین نت اتریوم اشاره داشت.
مین نتها امکان استفاده عمومی از dApp ها را فراهم میآورند. از آنجا که در مین نتها، از داراییهای دارای ارزش واقعی استفاده میشود، تأییدکنندهها برای مشارکت در آنها، انگیزه کافی دارند. پروژههایی که مین نت دارند، بیشتر مورد اعتماد کاربران هستند و میتوان آنها را پروژههای پختهتری دانست. وقتی پروژهای مین نت داشته باشد، کاربران میدانند منابع زیادی به آن پروژه اختصاصیافته و کار زیادی روی آن انجام شده است.
تفاوتهای میان تست نت و مین نت
در ادامه قصد داریم به تفاوتهای Testnet و مین نت پرداخته تا بدین ترتیب به درک صحیحی از این دو مفهوم دست پیدا کنیم.
آی دی شبکه
اساساً آی دی تست نت با آی دی مین نت متفاوت است. درواقع آی دی تست نتهای Ropsten، Rinkeby و Kovan در اتریوم به ترتیب، ۳، ۴ و ۴۲ است؛ درحالیکه آی دی Testnet با آی دی مین نت تفاوت دارد. آی دی مین نت اتریوم، ۱ است.
وضعیت انتشار کد
کد Testnet ها منتشر نمیشود؛ زیرا هنوز روند توسعه کامل نشده است؛ درحالیکه کد مین نتها منتشر میشوند و در دسترس عموم قرار میگیرند.
هدف
در تست نت هدف از اجرای آزمایشی پروژه با داراییهای بدون ارزش و غیرواقعی بهمنظور پیداکردن نقاط ضعف، خطاها، باگها و ایرادات و برطرفکردن آنها پیش از راهاندازی در مین نت است؛ درحالیکه در مین نت، پروژه بلاک چین اصلی که تراکنشهای داراییهای باارزش و واقعی در آن انجام میشوند.
هزینه عملیات
در Testnet توکنها هیچ ارزشی ندارند؛ بنابراین تراکنشها در تست نت بدون کارمزد هستند؛ درحالیکه در تراکنشهای مین نت از توکنهای واقعی استفاده میشود؛ بنابراین، هر تراکنش دارای کارمزد است. درنتیجه، هزینه عملیات در مین نت بالاتر از Testnet است.
تعداد تراکنشها
در تست نت تعداد تراکنشها، کمتر از تعداد تراکنش در مین نت است؛ درحالیکه در مین نت، تعداد تراکنشها، بیشتر از تعداد تراکنشها در Testnet است.
در تست نت، نخستین بلوک شبکه مستقل از نخستین بلوک شبکه در مین نت است؛ درحالیکه در مین نت، نخستین بلوک شبکه، مستقل از نخستین بلوک شبکه در Testnet است.
گرهها
در تست نت، تعداد گرهها، کمتر از تعداد گرهها در مین نت است؛ درحالیکه در مین نت، تعداد گرهها، بیشتر از تعداد گرهها در Testnet است.
کاربردهای اصلی شبکه آزمایشی یا Testnet
به جهت اینکه بلاک چین عملکرد قرارداد هوشمند را فعال کند، باید از ارز دیجیتال خود شبکه برای انجام تحویل استفاده شود؛ برای مثال اتر (ETH) یک درخواست پرداخت برای محاسباتی است که در شبکه بلاک چین اتریوم انجام میشود. برای توسعهدهندگان، آزمایش ویژگیهای برنامه یا اجرای آزمایشها در شبکه اصلی بسیار پرهزینه خواهد بود؛ زیرا آنها باید مقادیر زیادی ارز دیجیتال با ارزش واقعی خریداری کنند.
تست نت یک پلتفرم آزمایشی برای توسعهدهندگانی فراهم میکند که میخواهند برنامههای کاربردی را در بلاک چین ایجاد کنند یا عملکردهای خاصی را بدون هزینه آزمایش کنند. Testnet میتواند در ساخت اپلیکیشن های غیرمتمرکز، ایفای نقش بهعنوان اعتباردهنده، آزمایش قراردادهای هوشمند یا صدور توکنهای جدید، شبکههای توسعه شبکه بلاک چین و… استفاده شوند. شبکههای آزمایشی میتوانند بدون به خطر افتادن شبکه اصلی ارزش قابلتوجهی برای شبکههای اصلی بلاک چین ارائه دهند.
تیمهای بلاک چین با سرعت بالایی برای حلکردن مشکلاتی مثل مقیاسپذیری، امنیت و غیرمتمرکز بودن، تلاش میکنند. آزمایشهای متعددی در تست نتها انجام میشوند و این آزمونها، هیچ اختلالی در مین نتها ایجاد نمیکنند. درحقیقت Testnet به آزمایشکنندگان و توسعهدهندگان برنامه اجازه میدهد تا ویژگیها و عملکرد پروتکل را بدون نگرانی درمورد شکستن زنجیره اصلی بلوک در یک محیط جداگانه آزمایش کنند. انجام آزمایش روی شبکه اصلی امکانپذیر نیست؛ زیرا تعاملات پیچیده بین اجزای موجود در پروتکل میتواند به شبکه آسیب برساند یا زنجیره اصلی را بشکند. این امر سبب اختلال عمده در بلاک چین میشود و ممکن است پروتکل را ضعیف کند؛ بنابراین این یک روش معمول برای پروژههایی است که ابتدا نمونه اولیه را در شبکه آزمایشی اجرا میکنند تا مشخصات را حل کنند و اطمینان حاصل کنند که همهچیز در نظم درست است.
توسعه مستمر
میدانید که فناوری بلاک چین هنوز در مراحل ابتدایی است و نیاز به آزمایش و توسعه زیادی دارد تا بهتدریج به جریان اصلی و مجاز تبدیل شود. محیط تست نت برای تأمین این امر ایجادشده است؛ برای مثال یکی از مسائل اصلی که در جامعه بلاک چین حل میشود، مقیاسپذیری است. تحقیق و توسعه مداوم، توانایی بلاک چین را برای مدیریت تراکنشهای بیشتر افزایش میدهد. بهمنظور بهبود مستمر قابلیتهای بلاک چین، آزمایشهای زیادی در مورد عملکرد قرارداد هوشمند، تراکنشها و فرایندهای استخراج باید انجام شود. Testnet بهعنوان یک شبیهسازی از نحوه عملکرد پروتکل شبکه بلاک چین اصلی (mainnet) در زندگی واقعی عمل میکند.
آزمایش سازگاری اپلیکیشن های غیرمتمرکز
هر اپلیکیشن غیرمتمرکز، قبل از اجراییشدن بر بستر بلاک چین، باید آزمایشهای متعددی را پشت سر بگذارد و باگهای آن برطرف شود. بستههای بهروزرسانی جدید، قابلیتهای جدید و… پیش از اجراییشدن در Testnet آزمایش میشوند. برخی از این تستها عبارتاند از: آزمایشهای امنیتی، تست بارگذاری، مهاجرت بلاک چین، آزمون یکپارچهسازی، آزمون مدیریت بحران و بازیابی پس از حادثه.
برخی نگرانیها درباره تست نت
با وجود مزایای برجستهای که در بالا برای Testnet ذکر کردیم، ماهیت بیارزش تعداد بیشماری از ارزهای آزمایشی (شبکه Testnet ها)، ممکن است کاربران را در معرض خطرات امنیتی قرار دهد. اگرچه با پیچیدهترشدن شبکههای بلاک چین، اثربخشی رو به کاهش خواهد رفت، یک حمله مجدد وقتی اتفاق میافتد که یک تراکنش معتبر بر بستر یک شبکه بلاک چین و بهصورت مخرب یا متقلبانه تکرار شود.
برای نمونه، دو بار پرداختن هزینه بین یک شبکه آزمایشی و شبکه اصلی، یکی از این موارد است. همچنین برخی از کلاهبردارها تلاش دارند ارز دیجیتال Testnet را بهعنوان نسخه اصلی به فروش برسانند.
با اینکه برخی پروتکلهای بلاک چین اثبات کار به کاربران امکان استخراج ارزهای دیجیتال تست شبکه را میدهند، بسیاری از کاربران برای صرفهجویی در زمان و هزینه به فاستها (Faucets) روی میآورند. این سرویسهای مبتنی بر وب معمولاً افراد یا سازمانهایی هستند که سکههای شبکه آزمایشی اضافی دارند که مایلاند از آنها جدا شوند، اغلب بهصورت رایگان.
کاربردهای شبکه اصلی یا مین نت (MainNet)
در اینجا قصد داریم برای واضحتر شدن مطلب، به برخی از اصلیترین کاربردهای مین نتها بپردازیم.
1)قرارگیری فرصتهای بیشتر، پیش روی توسعهدهندگان
2)مین نتها بهعنوان شبکههای عمومی بدون نیاز به مجوز، فرصتهایی برای پروژههای جدید ایجاد میکنند.
جلب اطمینان کاربران
داشتن مین نت نشان میدهد آن پروژه بلاک چین، عملکردی است و باگ مهمی ندارد؛ بنابراین کاربران به پروژههای دارای مین نت اطمینان میکنند و وارد آنها میشوند. بهعلاوه، پس از راهاندازی مین نت، اکثر پروژهها کدهای خودشان را عمومی و متنباز میکنند و این موضوع نیز در افزایش اعتبار پروژه و اعتماد کاربران نقش دارد.
دسترسی به اپلیکیشنهایی با کاربردهای بیشتر
هر بلاک چین پیش از راهاندازی مین نت با توسعهدهندگان اپلیکیشن ها وارد همکاری میشود؛ بنابراین برخی از آن اپلیکیشن ها، با راهاندازی مین نت شروع به کار میکنند و موارد کاربرد اپلیکیشنها افزایش پیدا میکند.
قابلیتهای بیشتر
مین نتها از قابلیتهای دیگری همچون قابلیتهای امنیتی یا ضد اسپم، برخوردار هستند.
علت اهمیت تست نتها
درواقع انجام این آزمایشها بر روی مین نتها بسیار هزینهبر است؛ چراکه در مین نتها از توکنهای واقعی استفاده میشود؛ بنابراین هر تراکنش کارمزد خودش را دارد. حتی راهاندازی پروژه در مین نت و اعمال هر تغییر روی آن، بدون پرداخت کارمزد به تأمینکننده مین نت امکانپذیر نیست؛ بنابراین آزمایشکردن کامل پروژه در مین نت با هزینههای زیادی همراه است.
از طرفی اگر مشکلی در فاز آزمایشی پروژه در مین نت رخ دهد، کل شبکه با اختلال مواجه میشود و داراییهای کاربران در معرض خطر قرار میگیرد. این موضوع میتوان برای تأمینکننده مین نت بسیار گران تمام شود و آن ارز، اعتبار خود را بهطور کامل از دست بدهد.
همچنین دومین دلیل استفاده از تست نتها برای آزمایشکردن پروژههای بلاک چینی، مشکل سازگاری (Compatibility) است. درحقیقت، در تست نتها از توکنهای دارای ارزش مالی استفاده نمیشود و بهجای آن، داراییهای بدون ارزش (Fake Money) استفاده میشوند. ضمناً ارزهایی که در Testnet ها استفاده میشوند با مین نتها سازگاری ندارند؛ بنابراین باید برای آزمایشکردن پروژهها در مین نتها، رمز ارزهای جدیدی ضرب یا مینت (Mint) شوند که کاری بسیار پیچیده و پرهزینه است.
درنهایت اینکه به دلایلی که در بالا ذکر شد، حتماً باید پروژههای بلاک چین در تست نتها مورد آزمایش قرار بگیرند و آزمایشکردن آنها در مین نتها پرهزینه و پرخطر است. با آزمایشکردن پروژهها در تست نتها، این پروژهها بهصورت کاملاً مجزا از بازار ارزها آزمون و خطا میشوند و توسعهدهندگان میتوانند با خیال آسوده، هر قابلیتی را در این پروژهها آزمایش کنند.
تأثیر Testnet ها بر قیمت یک ارز دیجیتال
اساساً اگر قیمت را ناشی از یکی از ارزش هر محصولی بدانیم و این را قبول کنیم که تست نتها به افزایش ارزش محصولات توسعهدهندگان کمک میکنند، آنگاه باید انتظار اثر قیمتی از آنها را هم داشته باشیم؛ یعنی وقتی پروژهای به مرحله انتشار روی Testnet میرسد، نشاندهنده پیشرفت نسبی آن است، ولی مشکل اینجاست که این ارتباط به چند نتیجه ناخواسته هم منجر میشود. درواقع برخی از پروژهها گاهی فقط به قصد افزایش قیمت توکن خود، یک نسخه تست نت را منتشر میکنند که در عمل هیچ کاربردی برای پروژه ندارد. متأسفانه بسیاری از مردم هم اعلامیه انتشار تست نت را دیده و تصور میکنند که چیزی ارزشمند منتشرشده و با افزایش خرید باعث بالا رفتن قیمت توکن میشوند.
تست نت مناسب استفاده چه کاربرانی است؟
اساساً هر کاربری که بخواهد پروژه جدیدی را توسعه دهد و آن را آزمایش کند، میتواند از Testnet ها استفاده کند؛ چراکه آنها روشی ساده برای آزمایشکردن محصول در مقیاس نزدیک به مقیاس واقعی، بدون کارمزد و بدون خطر تداخل با مین نتها هستند.
همچنین، همانطور که پیشازاین نیز اشاره داشتیم، اکثر شبکههای اصلی، از نوعی خدمات تست نت نیز برخوردار هستند. توسعهدهندگان پروژهها باید با توجه به نیازهای خود، تست نت مناسبتر برای خودشان را انتخاب کنند؛ بهعنوان نمونه شبکه بلاک چین Symbol دارای یک مین نت و یک Testnet است که از نظر ساختاری، کاملاً به مین نت شباهت دارد، اما اتریوم تعداد زیادی تست نت دارد که شبیهترین آنها به خود مین نت اتریوم Ropsten است. بهعلاوه، اگر توسعهدهندهای بخواهد بلاک چین خودش را بسازد و آن را آزمایش کند، نیازمند تست نت است.
به بیانی دیگر، درمورد Testnet هایی که قبل از شبکه اصلی آغاز به کار میکنند، باز هم هدف اصلی آزمایشکردن است، اما تمرکز آن بیشتر روی خود سیستم است؛ زیرا قبل از این هرگز عملیاتی نشده است و البته چون جدید است، هنوز هیچ برنامهای بر روی آن اجرا نمیشود.
در این حالت وضعیت خیلی یکطرفهتر است. بیشتر کسانی که روی منبع کدها کار میکنند توسعهدهندگان بلاک چین هستند و هدف آنها این است که پلتفرم را به مرحلهای برسانند که سازندگان نرمافزار تمایل داشته باشند روی آن شبکه کار کنند.
نخستین چیزی که توسعهدهندگان نرمافزار باید در مورد آن اطمینان حاصل کنند، اثبات این نکته است که پلتفرم بهاندازه کافی امن است و این دستورالعمل اصلی هرگونه آزمایش شبکه در این مرحله است. بعد از اینکه توسعهدهندگان به این نتیجه رسیدند که شبکه امن است، حالا باید درمورد روش استفاده از این پلتفرم آموزش ببینند.
به بیان دیگر تست نت بایستی بهعنوان یک ابزار آموزشی در نظر گرفته شود که به توسعهدهندگان یک دید عمیقتری داده شود که چگونه میتوانند همزمان هم از شبکه استفاده کنند و هم امنیت شبکه را مداوم آزمایش کنند. درنهایت اینکه همچنان که آنها شبکه را تست میکنند و میآموزند که چطور از آن استفاده کنند، به قسمتهایی از شبکه برمیخورند که نیاز به بهبود دارد. کتابخانههای خاصی را ممکن است نیاز داشته باشند یا اسناد مهمی برای کمک به درک سیستم باید تهیه شوند. این اطلاعات بینهایت ارزشمند بازخوردهایی هستند که توسعهدهندگان پلتفرم بایستی از آنها برای بهبود شبکه استفاده کنند، قبل از اینکه اجرای شبکه اصلی نهایی شود.
دیدگاهتان را بنویسید