وایپر (vyper) چیست؟ زبان برنامه نویسی قرارداد هوشمند اتریوم

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

وایپر Vyper یک زبان جایگزین برای اتریوم است که توسط ویتالیک بوترین ساخته شد و روی هر آنچه برای انسان قابل خواندن می‌باشد متمرکز است. این نرم افزار زبان انسان را به کدهای کامپیوتری قابل فهم برای ماشین مجازی اتریوم (EVM) ترجمه می‌کند.

وایپر Vyper چیست؟

وایپر Vyper یک زبان برنامه نویسی نسبتا جدید و پایتونیک است و اساسا یک زبان برنامه‌نویسی مشتق‌شده از پایتون است که برای نوشتن قراردادهای هوشمند استفاده می شود. وایپر ماشین مجازی اتریوم (EVM) را هدف قرار می دهد. زبان برنامه نویسی Vyper دارای شیوه بسیار ساده/قابل فهم است. یکی از اصول اصلی Vyper این است که کدنویسی برنامه های گمراه کننده را برای توسعه دهندگان تقریبا غیرممکن می کند.

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

زبان برنامه نویسی Vyper یک زبان برنامه نویسی آزمایشی، ایستا و قراردادی است که شبیه زبان پایتون است. مانند موضوعات در OOP، هر قرارداد شامل متغیرهای حالت، توابع و انواع داده های رایج است. ویژگی‌های خاص قرارداد شامل اعلان ‌کننده‌ های (نوتیفیکیشن) رویداد برای شنوندگان و متغیرهای جهانی سفارشی، ثبات های جهانی است.

برخی از نمونه ‌های قرارداد اتریوم شامل تامین مالی جمعی و رای ‌گیری است.

اهداف Vyper

امنیت: ایجاد قراردادهای هوشمند ایمن در Vyper باید ممکن و طبیعی باشد.

زبان و سادگی کامپایلر (گردآورنده)

قابلیت شنیداری: کد Vyper باید حداکثر برای انسان قابل خواندن باشد. علاوه بر این، نوشتن کدهای گمراه کننده باید تا آنجا که می تواند دشوار باشد. سادگی برای خواننده مهمتر از سادگی برای نویسنده است و سادگی برای خوانندگانی که تجربه قبلی کم با Vyper (و تجربه قبلی کم در برنامه نویسی به طور کلی) دارند اهمیت ویژه ای دارد.

قابلیت حسابرسی

دلیل استفاده از Vyper و ویژگی های آن

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

قراردادهای Suicidal: قراردادهای هوشمند که آدرس های دلخواه می تواند آنها را از بین ببرد.

قراردادهای Greedy: گاهی اوقات، قراردادهای هوشمند می توانند به حالتی برسند که قادر به انتشار اتر نباشند، قراردادهای هوشمند در این مرحله قراردادهای حریص نامیده می شوند.

قراردادهای Prodigal: قراردادهای هوشمندی که می توان برای انتشار اتر به آدرس های دلخواه منعقد کرد.

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

ویژگی های Vyper به شرح زیر است:

  • به شدت ماشینی.
  • پشتیبانی از اعداد صحیح امضا شده و اعداد اعشاری نقطه ثابت.
  • کد کوچک و قابل فهم مانند پایتون.
  • دارای محدوده و بررسی سرریز (Overflow).
  • قابلیت تصمیم گیری: با زبان برنامه نویسی Vyper، محاسبه حد بالای دقیق برای مصرف گس در هر فراخوان تابع امکان پذیر است.
  • پشتیبانی محدود از توابع خالص: هر ثابتی در Vyper نمی تواند حالت را تغییر دهد.


مقایسه Vyper در مقابل Solidity:

Solidity

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

  • احتمال سرریز (overflow) وجود دارد، یعنی مقدار ذخیره شده خیلی زیاد است.
  • طبق نظرسنجی انجام شده در سال 2018، بسیاری از قراردادهای سالیدیتی دارای آسیب ‌پذیری شدیدی بودند که در طول توسعه/آزمایش نادیده گرفته شد.

Vyper

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

زبان برنامه نویسی Vyper سعی می کند با حذف برخی از ویژگی های زبان برنامه نویسی Solidity امکان نوشتن کد ناامن را از بین ببرد. در واقع Vyper یکی از زبان‌ هایی است که به دنبال آسان ‌تر خواندن کد منبع قرارداد هوشمند است.

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


چرا وایپر با سایر زبان‌های برنامه‌نویسی تفاوت دارد؟

وایپر به‌خاطر ویژگی‌ها و کدهایش اغلب با سایر زبان‌های برنامه‌نویسی، خصوصا سالیدیتی و پایتون، مقایسه می‌شود. اما وایپر هویت خاص خود را دارد که آن را از پایتون متمایز می‌کند. این ویژگی‌ها عبارتند از:

  • بدون مادیفایر
  • بدون وراثت کلاس
  • بدون اورلود اپراتور
  • بدون اورلود تابع
  • بدون اسمبلی داخلی
  • بدون حلقه‌های طولی بی‌نهایت
  • بدون فراخوانی بازگشتی
  • بدون نقاط ثابت دودویی

این موارد برخی از ویژگی‌های فنی زبان وایپر هستند که با سایر زبان‌ها مانند OOPS، پایتون و همچنین سالیدیتی متفاوت است.


فرآیند توسعه و به‌کارگیری قرارداد هوشمند در وایپر

مراحل کلی ایجاد یک قرارداد هوشمند در وایپر به‌طور خلاصه عبارتند از:

  • تحلیل موارد مورد نیاز
  • توسعه کد
  • کامپایل‌کردن
  • اجراکردن


مزایا و معایب Vyper

مزایا

  • برای توسعه دهندگان پایتون آسان تر است که با آن شروع کنند.
  • هدف آن شفاف بودن برای اهداف امنیتی و خوانایی است.
  • افزایش ابزارهای توسعه مانند:

Brownie: یک چارچوب توسعه مبتنی بر پایتون برای آزمایش قراردادهای هوشمند.

Etherscan: یک ویرایشگر آنلاین برای جمع آوری قراردادهای شما فراهم می کند.

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

معایب

  • حمایت جامعه کاملاً وجود ندارد.
  • فاقد اصلاح‌کننده‌ها، تماس‌ های بازگشتی و انواع داده ‌های پویا است.
  • هنوز در حال توسعه است. بسیاری از ویژگی ها در Solidity در دسترس هستند اما در Vyper نه.