1. صفحه اصلی
  2. مقالات ارز دیجیتال
  3. بلاکچین
  4. زبان برنامه نویسی Vyper چیست؟
زبان برنامه نویسی Vyper چیست؟
زبان برنامه نویسی Vyper چیست؟

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

درباره قراردادهای هوشمند

مفهوم قرارداد هوشمند در زبان برنامه نویسی Vyper

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

طبق اسناد اتریوم:

«قرارداد هوشمند» برنامه ای است که بر روی بلاک چین اتریوم اجرا می شود. این برنامه مجموعه ای از کد (توابع آن) و داده ها (وضعیت آن) است که در یک آدرس خاص در بلاک چین اتریوم قرار دارد.

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

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

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:

زبان برنامه نویسی Vyper در مقابل سالیدیتی

Solidity

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

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

Vyper

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

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

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

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

مزایا

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

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

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

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

معایب

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

در این باره بیشتر بخوانید