Vyper، Solidity و Scrypto: زبان‌های قرارداد هوشمند چگونه با هم مقایسه می‌شوند

نگاهی به سه زبان برنامه نویسی مختلف برای شبکه های بلاک چین و نحوه مقایسه آنها.

شبکه اتریوم قراردادهای هوشمند را وارد فضای بلاک چین کرد و مفاهیمی مانند آن را ساخت امور مالی غیرمتمرکز (DeFi) امکان پذیر است. 

قراردادهای هوشمند می توانند به طور خودکار فرآیندها را پس از برآورده شدن شرایط خاص اجرا کنند. همراه با این فناوری جدید، زبان کدنویسی جدیدی به نام Solidity ساخته شد.

با ادامه رشد صنعت بلاک چین و ظهور شبکه های بلاک چین جدید، زبان های برنامه نویسی دیگری به ویژه Vyper و Scrypto وارد فضا می شوند.

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

Solidity چیست؟

Solidity یک زبان برنامه نویسی شی گرا و سطح بالا برای ایجاد قراردادهای هوشمند بر روی بلاک چین اتریوم و سایر شبکه های بلاک چین مانند BNB Smart Chain و Avalanche است. این زبان در سال 2014 توسعه یافت و شباهت هایی با زبان های برنامه نویسی مانند جاوا اسکریپت، سی پلاس پلاس و پایتون دارد.

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

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

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

Vyper چیست؟

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

Vyper همچنین قصد دارد نوشتن کدهای گمراه کننده را تا حد امکان برای هر کسی دشوار کند. سادگی برای خواننده (یعنی یک حسابرس) مهمتر از سادگی برای نویسنده (یعنی توسعه دهنده) است. به این ترتیب، شناسایی کدهای مخرب در یک قرارداد هوشمند یا برنامه غیرمتمرکز (DApp) آسان تر خواهد بود.

Scrypto چیست؟

Scrypto یک زبان قرارداد هوشمند دارایی محور است. این زبان توسط Radix توسعه یافته است، بر اساس Rust است، و بسیاری از ویژگی های Rust را حفظ می کند و در عین حال توابع و نحو خاصی را برای Radix Engine v2 اضافه می کند. از آنجایی که Scrypto دارایی محور است، می تواند با دارایی هایی مانند توکن ها که نوعی منبع در زبان هستند، تعامل داشته باشد. 

در زبان های کدنویسی مانند Solidity، توکن های ERC-20 به عنوان قراردادهای هوشمند در EVM وجود دارند. دارایی‌های درون Scrypto منابعی هستند که در کانتینرها و انبارها وجود دارند. به عبارت ساده، مانند داشتن یک سطل (ظرف) و پر کردن آن با سکه (دارایی) است که می تواند در یک قلک (طاق) ذخیره شود.

اخیر: با بلوغ صنعت، تقاضا برای استعداد در کریپتو کمتر به بازار وابسته است

Scrypto همچنین بر سازگاری با توسعه‌دهندگان تمرکز می‌کند و به آنها اجازه می‌دهد تنها کدهای لازم را در حین تعامل با کانتینرها و منابع برای فعال کردن عملکرد در یک DApp بنویسند. امنیت یکی دیگر از اصولی است که توسعه‌دهندگان می‌توانند به جای دادن مجوزهای عمومی، دستورالعمل‌های خاصی را به یک DApp بدهند.

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

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

این کار به این دلیل کار می‌کند که Solidity از کپسوله‌سازی استفاده می‌کند، به این معنی که هر شیء مستقل است و هر تابع به طور مستقل کار می‌کند. ماژولار بودن زبان برنامه نویسی همچنین به توسعه دهندگان این امکان را می دهد که روی چندین شیء به طور همزمان کار کنند و ساخت، تعمیر و استقرار قراردادهای هوشمند را کارآمدتر می کند.

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

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

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

در حالی که Solidity ممکن است یکی از محبوب ترین و شناخته شده ترین زبان های برنامه نویسی در فضای بلاک چین باشد، برخی از زبان ها منحنی های یادگیری آسان تری برای توسعه دهندگان دارند. علاوه بر این، زبان های برنامه نویسی ساده تر جذب توسعه دهندگان جدید به صنعت را آسان تر می کند.

آدام سیمونز، مدیر ارشد استراتژی در RDX Works - توسعه دهندگان رادیکس - به کوین تلگراف گفت: «داشتن ابزارهای مناسب برای این کار تفاوت بزرگی ایجاد می کند - و در حال حاضر، توسعه دهندگان بلاک چین ابزار مناسبی ندارند. این فقط برای ساده‌تر کردن زبان‌ها نیست، بلکه ساخت ابزارهای توسعه‌دهنده بصری و امن است.» ادامه می‌دهد:

"در اوج خود، DeFi تنها در دو سال به بیش از 200 میلیارد دلار TVL رسید - بنابراین واضح است که سطوح بسیار بالایی از تقاضا وجود دارد. با این حال، با وجود این رشد 200 برابری در سرمایه، تعداد توسعه دهندگان تنها 2 برابر افزایش یافت و در مجموع به 19,000 نفر رسید (از حدود 30 میلیون توسعه دهنده در سراسر جهان).

با وجود سطح بالایی از رشد مشاهده شده در فضای مالی غیرمتمرکز، تعداد توسعه دهندگان مطابق با تقاضا رشد نکردند. سیمونز معتقد است که توسعه دهندگان ممکن است متوجه شده باشند که Solidity برای آنها برای انتقال به توسعه بلاک چین دشوار است:

توسعه دهندگان به دلیل منحنی یادگیری شیب دار Solidity و سطوح بالای خطر در مورد امنیت، برای حضور تمام وقت در Web3 مردد هستند. علیرغم توسعه دهندگان بسیار با استعداد و میلیون ها دلار هزینه شده برای ممیزی های امنیتی، DeFi هنوز هم پول ناشی از هک ها و سوء استفاده ها را از بین می برد. این به تنهایی برای جلوگیری از ورود توسعه دهندگان به فضا کافی است."

«داشتن زبان‌ها و ابزارهای مناسب به توسعه‌دهندگان این امکان را می‌دهد تا کل صنعت را با سرعت بیشتری رشد دهند. همانطور که موتورهای بازی ابزارهایی را در اختیار توسعه دهندگان قرار دادند تا تولید بازی های ویدیویی را در دهه 90 متحول کنند، زبان ها و ابزارهای Web3 مناسب به توسعه دهندگان این امکان را می دهد تا رشد Web3 را تسریع کنند.

Scrypto همچنین بر امنیت، سادگی و کاربر پسند بودن تمرکز دارد. تراکنش های رمزنگاری بر دارایی ها متمرکز هستند. آنها تعریف می کنند که کاربر چگونه می خواهد منابع سیستم را توزیع کند. آنها همچنین ممکن است نشان دهند که چگونه منابع برگشتی باید توسط کاربر یا مؤلفه دیگری در یک تراکنش چند جزئی مدیریت شود.

تراکنش‌های روی اتریوم معمولاً فراخوانی برای یک قرارداد هوشمند هستند (از آنجایی که DAppها و توکن‌های موجود در اتریوم قراردادهای هوشمند هستند). در مقابل، تراکنش‌های Scrypto شامل انتقال دارایی‌ها از یک جزء به جزء دیگر است.

به عنوان مثال، اگر کاربر A بخواهد 10 توکن سفارشی را برای کاربر B ارسال کند، تراکنش آنها نشان می دهد که در تلاش است تا 10 توکن را از خزانه ای که حاوی آنها است خارج کند. این تراکنش همچنین نشان می دهد که آنها آن توکن ها را به روش واریز جزء حساب کاربر B ارسال می کنند. از آنجایی که منابع (در این مورد، نشانه ها) باید در جایی قرار گیرند، یک سطل (کانتینر) برای انتقال نشانه ها از کاربر A به کاربر B استفاده می شود.

در مثال بالا، کاربر به جای تماس با یک قرارداد هوشمند نشانه، یک سطل حاوی منابع (توکن ها) را به روش سپرده کاربر دوم منتقل می کند. تعامل با DApps به طور مشابه عمل می کند، به طوری که کاربران توکن ها را از حساب خود برداشته و آنها را به مؤلفه مربوطه ای که می خواهند با آن تعامل داشته باشند ارسال می کنند. به طور خلاصه، Scrypto رویکردی مبتنی بر دارایی را در پیش می‌گیرد و کاربران دارایی‌های واقعی را ذخیره و ارسال می‌کنند. رویکرد مبتنی بر دارایی همچنین کدنویسی DApps را برای توسعه‌دهندگان آسان‌تر می‌کند، زیرا تعامل با توکن‌ها (منابع)، استخرهای نشانه‌ها (طاق‌ها) و کاربران (کامپوننت‌ها) آسان‌تر است.

برای مثال دیگر، اگر یک DApp مبادله (مانند Uniswap) با Scrypto کدگذاری شود، توسعه دهندگان فقط باید روش معاملاتی را برای مبادله کدگذاری کنند. ابتدا، DEX باید ظرف ورودی توکن A کاربر را شناسایی کند، سپس نرخ ارز را محاسبه کند. سپس، توکن‌های دریافتی واریز می‌شوند و DEX مقدار صحیح توکن B را برای کاربر ارسال می‌کند.

توسعه دهندگان بلاک چین کدام زبان برنامه نویسی را باید انتخاب کنند؟

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

به عنوان مثال، توسعه دهندگانی که با C++، جاوا اسکریپت و پایتون آشنا هستند ممکن است Solidity را جذاب بدانند. توسعه دهندگانی که با پایتون آشنا هستند ممکن است به سمت Vyper جذب شوند، در حالی که توسعه دهندگان آشنا با Rust ممکن است از زبان Scrypto استفاده کنند.

اخیر: توکن های اجتماعی موتور Web3 خواهند بود، از پایگاه های طرفداران گرفته تا ایجاد انگیزه

سیمونز موافق است و به کوین تلگراف می گوید: «با ورود زبان های بیشتر به Web3، احتمالاً دوره زمانی را شاهد خواهیم بود که رویکردهای رقابتی کمی وجود دارد. از آنجایی که این زبان‌ها با توسعه‌دهندگان سازگاری بازار محصول پیدا می‌کنند و مهم‌تر از همه به توسعه‌دهندگان این امکان را می‌دهند تا اپلیکیشن‌های قدرتمند، مفید و ایمن بسازند، احتمالاً شاهد گرایش صنعت به سمت آن‌هایی خواهیم بود که بهترین نتایج را ارائه می‌دهند.

Solidity طبیعتا انتخاب توسعه دهندگانی خواهد بود که می خواهند روی اتریوم و شبکه های بلاک چین مشابه کار کنند. در عین حال، Vyper و Scrypto می توانند توسعه دهندگانی را که سادگی و امنیت اضافی را ترجیح می دهند، جذب کنند. Scrypto همچنین ممکن است به دلیل افزایش سادگی و رویکرد دارایی گرا برای توسعه دهندگان ارجح باشد.

منبع: https://cointelegraph.com/news/vyper-solidity-and-scrypto-how-the-smart-contract-languages-compare