مقدمه
در این مقاله از مجله بید ارز، قصد داریم تا شما را با داستانی جذاب از جنس تکنولوژی و فلسفه بلاکچین همراه کنیم. در این داستان سفری را در تاریخ آغاز میکنیم. تاریخ نوپای دنیایی که مفاهیمی مانند قرارداد هوشمند، فورک، هش ریت و غیره را برای ما بهارمغان آورد و باعث شد که واسطهگرایی دستخوش انقلابی بزرگ قرار بگیرد.
اگر برنامهنویس، دوستدار تکنولوژی یا از علاقهمندان به دنیای رمز ارزها هستید به شما پیشنهاد میکنیم تا در این سفر که به بررسی زبان برنامه نویسی وایپر و مقایسه آن با زبان برنامه نویسی مشهور سالیدیتی میپردازیم، همراه این داستان باشید.
زبان برنامه نویسی وایپر، سالیدیتی و سرچشمهای به نام اتریوم
نام اتریوم قطعا برای بسیاری از مردم آشناست، حتی آن دسته که به فعالیت در حوزه داراییهای دیجیتال تمایل ندارند. علت این آشنایی اغلب بهدلیل جایگاه رمز ارز ETH در بازار است. جایگاهی که به لطف اهداف بزرگ و تیم قدرتمند توسعهدهنده آن، پس از بیتکوین به دست آورده است.
برخلاف باور رایج، اتریوم صرفا یک ارز دیجیتال نیست، بلکه یک پلتفرم با ویژگیهای منحصربهفرد است.
ارز دیجیتال Ethereum در روزهایی به دنیا معرفی شد که بیتکوین یکهتاز بود. اما ویتالیک بوترین، بنیانگذار اتریوم، که خود از فعالان عرصه رمز ارزها و نویسنده مجله بیتکوین بود برای بهبود وضعیت شبکه Bitcoin و پرکردن خلاهای آن، در جولای 2016 تصمیم به اجرایی کردن ایده اتریوم گرفت.
بهبیان ساده، اتریوم از نظر سازوکار کلی خود در بررسی و تایید تراکنشها، عملکردی مشابه بیتکوین دارد. بدین معنی که برای به سرانجام رسیدن تراکنش، نُدهای شبکه اتریوم تراکنش را تایید و بلاک جدید ایجاد کنند. اما تفاوت اصلی اتریوم با سایر پلتفرمها در مفهومی به نام قرار داد هوشمند خلاصه میشود. درست در دل این تمایز، نقش تعیینکننده زبان برنامه نویسی مشخص میشود.
قرارداد هوشمند چیست؟
بهتر است در ادامه این مسیر، به مفهوم قرارداد (Smart Contract) هوشمند و اهمیت آن اشاره کنیم. بهبیان ساده، قرارداد هوشمند یک کد دیجیتالی است که برای تبادل داراییها مانند سهام، ملک، پول و غیره استفاده میشود. نکته قابل تامل در مورد Smart Contract، حذف واسطه است. درواقع فلسفه بلاکچین از بین بردن نقش واسطهها و افزایش شفافیت است. قرارداد هوشمند نیز بر همین اساس شکل گرفته است و بهواسطه آن میتوان تمام تبادلاتی که از آن یاد کردیم را بدون دخالت نفر سوم به سرانجام رساند.
لازم به توضیح است که مفهوم قرارداد هوشمند به ارائه آن توسط اتریوم برنمیگردد. بلکه مفهومیست کهحدود دو دهه قبل توسط نیک زابو (Nick Szabo) مشهور به جادوگر قرارداد هوشمند ارائه شد.
نیک زابو یک محقق حوزه کامپیوتر است که عمده تحقیقات خود را روی رمز ارزها و قراردادهای هوشمند انجام داده است. او یک تعریف بسیار ساده از قرارداد هوشمند دارد که مفهوم آن را به بهترین شکل ممکن میرساند:
“مجموعهای از وعدهها و پیمانها که به حالت دیجیتال درآمدهاند”
حال که با مفهوم قرارداد هوشمند آشنا شدیم، سفر خود را به سوی زبانهای برنامهنویسی قراردادهای هوشمند ادامه میدهیم تا به بررسی زبان Vyper برسیم و مقایسهای با رقیب اصلیاش یعنی سالیدیتی (Solidity) انجام دهیم.
زبان برنامه نویسی Vyper چیست؟
در یک توضیح ساده و ابتدایی، باید گفت که وایپر یک زبان برنامه نویسیِ قراردادهای هوشمند است که از متدهای پایتون پیروی میکند. تمرکز Vyper بر اجرا روی ماشین مجازی اتریوم (EVM) است که درست همانند یک ابرکامپیوتر در مقیاس جهانی به موازات بلاکچین اتریوم عملیاتی میشود.
درباره ماشین مجازی اتریوم
اصطلاح ماشین مجازی اتریوم یا Ethereum Virtual Machine از جمله مهمترین مفاهیم حال حاضر دنیای داراییهای دیجیتال است. EVM امکان اجرایی شدن پروژههای متعددی را در کنار قراردادهای هوشمند فراهم میکند. در واقع دور از انصاف نیست که بگوییم اتریوم عملکرد فوق العادهاش نسبت به سایر پلتفرمهای مدعی را مدیون ماشین مجازی خود است. EVM توسط گوین وود (Gavin Wood) در زمان تصدی در اتریوم با استفاده از زبان ++C و LLVM project Compilr طراحی شد.
ماشین مجازی Ethereum علاوهبر کنترل آنچه که نُدها بر بستر بلاکچین اتریوم انجام میدهند یا نمیدهند، قوانین و چهارچوبهای مورد نیاز برای تغییر از یک بلاک به بلاک دیگر را نیز تعیین و به ازای هر ورودی، یک خروجی منحصربهفرد براساس یک تابع ریاضی ساده تولید میکند. این دقیقا همان اتفاقیست که باعث اجرایی شدن سازوکار قراردادهای هوشمند اتریوم میشود.
نیمنگاهی به سالیدیتی (Solidity)
در مقطع از مقاله، به سراغ سالیدیتی خواهیم رفت که وجه اشتراک زیاد با زبان برنامنویسی Vyper دارد.
سالیدیتی یک زبان برنامهنویسی است که بهطور خاص توسط تیم اتریوم با هدف طراحی و ایجاد قراردادهای هوشمند و برنامههای غیرمتمرکز (DApps) روی این پلتفرم ایجاد شده است. همچنین، سالیدیتی همانند یک ابزار برای ایجاد کد روی ماشین مجازی اتریوم (EVM) عمل میکند.
Solidity وجه اشتراک زیادی بازبانهای برنامه نویسی جاوا اسکریپت، پایتون و ++C دارد و همانند ++C از کدهای ایستا اسفاده میکند.
زبان برنامه نویسی وایپر چه تفاوتی با سالیدیتی دارد؟
همانطور که پیشتر هم اشاره شد، قراردادهای هوشمند با تکیه بر زبانهای برنامه نویسی مخصوص اتریوم طراحی و اجرا میشوند. اما زمان آن رسیده که تفاوتهای اساسی بین دو زبان رایج و کاربردی که در این زمینه استفاده میشوند یعنی Vyper و Solidity را درک کنیم.
در واقع آنچه که زبان Vyper را از سالیدیتی متمایز میکند، مزیتهای آن است. طراحی Vyper رویکردی مینیمال و کاربردی در فرآیند خواندن و نوشتن قراردادهای هوشمند دارد. همچنین، Vyper تاکید بسیاری روی صراحت، سادگی و بازبینی سینتکسها (Syntax) دارد. (سینتکس: در علم برنامهنویسی، به شیوه صحیح قرارگرفتن کلمات درکنار یکدیگر باهدف ایجاد جملات استاندارد در یک زبان برنامهنویسی گفته میشود)
برنامهنویسان با استفاده از این زبان میتوانند به علت محدود بودن نقاط آسیبپذیر، به سطح امنیتی بیشتری دست پیدا کنند. این در حالی است که برخی از ویژگیها و انعطافپذیری سالیدیتی با ورود وایپر زیر سوال رفتهاند. برای مثال، قراردهای هوشمندی که باگ و طراحی مخربی دارند در سالیدیتی یک نگرانی جدی محسوب میشوند. در نقطه مقابل، طراحی منحصربهفرد Vyper طوری است که از الگوهای مخرب طراحی جلوگیری میکند. بدین معنی که تضمینی برای عدم دریافت این الگوهای مشکوک وجود ندارد، اما Vyper این امکان را دارد تا جلوی تایید شدن اکثر آنها را بگیرد.
چرا زبان برنامه نویسی وایپر مهم است؟
قطعا مشهور شدن یک زبان برنامهنویسی در فضایی که سالیدیتی برای مدتها پرچمدار بود نشان از ویژگیهای بیسابقه آن دارد. در اولین مزیت Vyper باید بهسادگی آن اشاره کنیم. یعنی، یادگیری آن برای کسانی که به این حوزه علاقهمند هستند نسبت به سالیدیتی به مراتب راحتتر است.
دومین دلیل جذابیت این زبان برنامه نویسی به شباهتهای سینتکسی آن با پایتون برمیگردد. در واقع الهام گرفتن از پایتون باعث سادگی و انعطافپذیری بیشتر در یادگیری وایپر میشود، زیرا داشتن پیش زمینه پایتون، کار را برای یادگیری میکند.
همچنین، باید به این نکته هم توجه داشت که پروژههای موفق بسیاری مانند Uniswap، Curve و Yearn توسط وایپر اجرایی شدند، بنابراین؛ کارآمدی این زبان هم مورد تایید قرار میگیرد.
وایپر چه مزیتهای مهمی دارد؟
صحبت از Vyper بدون بیان مزیتهای آن قطعا ناتمام میماند. در ادامه مطلب به مزیتهایی میپردازیم که باعث تمایز وایپر از سایر زبانهای برنامه نویسی قراردادهای هوشمند میرسیم.
سادگی
نخستین جنبه وایپر، تمرکز روی سادگی زبان و کامپایلر (Compiler) است. بههبارت دیگر، هدف زبان برنامه نویسی و کامپایبر باید همواره در راستای سادگی باشد.
(کامپایلر: نرم افزاری که کدهای نوشته شده برنامهنویسان را برای درک CPU، به صفر و یک تبدیل میکند)
امنیت
توجه به امنیت در دنیای بلاکچین و به تبع آن داراییهای دیجیتال از اهداف اصلی این صنعت است. در واقع یکی از نتایج حذف واسطهها که از پایههای اساسی فلسفه بلاکچین است، افزایش امنیت در ابعاد مختلف است. پیرو همین اصل، توجه به امنیت در راستای بهبود آن از ویژگی های اصلی وایپر است. همین باعث شد است که این زبان گزینه بسیار مناسبی برای بهکارگیری در قراردادهای هوشمند باشد.
قابلیت بازبینی
اصطلاح قابلیت بازبینی (Auditability) که در حوزه زبانهای برنامهنویسی کاربردی در صنعت داراییهای دیجیتال، به بازبینی کدها برای تشخیص نقاط ضعف و قوت نسبت داده میشود. با توجه به اهمیت مفهوم امنیت در این حوزه، قابلیت بازبینی میتواند در جلوگیری از حملات هکری بسیار موثر باشد.
زبان برنامهنویسی وایپر نیز در رابطه با قابل درک بودن کدها برای انسان، سرآمد است. به بیان دیگر، Vyper سعی داشته که کدها برای کاربری حتی بدون تجربه قبلی قابل خواندن و بازبینی باشد.
سخن پایانی
در این که قراردادهای هوشمند در کنار سایر نوآوریهای موجود در دنیای مبتنی بر بلاکچین باعث تحولات بنیادین شدهاند شکی نیست. اما موضوع مهم این است که این روند روبهرشد تا چه زمانی و با استفاده از چه ابزارهایی ادامه پیدا خواهد کرد. برای ادامه این روند، قطعا به ارتقا دانش در ابعاد مختلف، از جمله زبان برنامهنویسی نیاز داریم. با توجه به پتانسیلهایی که Vyper دارد، این را به خوبی نشان داده است که میتواند یک رقیب جدی برای سالیدیتی باشد. این زبان بهخصوص در امنیت و امکان یادگیری مدعیست و همین باعث شده است که روزبه روز بر محبوبیت آن افزوده شود.