اتریوم مبدع یکی از محبوب ترین ارزهای رمزنگاری شده است – و با این حال، بسیار بیشتر از این است. به لطف الگوریتمها، ارز رمزنگاری را میتوان بهطور کاملاً مستقل مدیریت کرد. اما «قراردادهای هوشمند» چگونه کار میکنند و در کجای این مسیر قرار داریم؟
قراردادهای هوشمند در اتریوم چگونه کار می کنند؟
برای درک اصل قراردادهای هوشمند در اتریوم، ابتدا لازم است یک گشت و گذار کوتاه در دنیای زبان های برنامه نویسی داشته باشیم. زبان های برنامه نویسی رایج اساسا به دو گروه تقسیم می شوند: زبان های تفسیری و زبان های کامپایل شده. در گروه اول برنامه ها به زبان سطح بالا نوشته می شوند و سپس توسط مترجم اجرا می شوند. دو نمونه محبوب پایتون و جاوا اسکریپت هستند. زبان های تفسیر شده در بسیاری از حوزه های برنامه (مانند وب) رایج هستند زیرا به شما اجازه می دهند فوراً شروع کنید. آنها همچنین بسیار جهانی هستند و می توانند در پلتفرم های مختلف بدون نیاز به ابزار اضافی استفاده شوند.
برعکس، زبان های کامپایل شده ای وجود دارد که کامپایلر ابتدا متن برنامه را به زبان دیگری تبدیل می کند – اغلب کد ماشین باینری. این کد باینری وابسته به پلتفرم است و مستقیماً روی یک پردازنده اجرا می شود. کامپایلر می تواند (و باید) کد سفارشی را برای مجموعه دستورات پردازنده تولید کند، به عنوان مثال برای CPU های سازگار با ARM یا اینتل. نمایندگان شناخته شده این نوع C و Rust هستند.
با این حال، واقعیت، مثل همیشه، پیچیدهتر از آن چیزی است که این مقولههای ساده نشان میدهند. برای مدتی اشکال ترکیبی مانند جاوا وجود داشته است. این به این دلیل است که کامپایلر جاوا کد جاوا را مستقیماً به کد ماشین “واقعی” ترجمه نمی کند، بلکه به یک فرمت میانی خاص تبدیل می کند. این قالب میانی، به نوبه خود، سپس توسط یک مفسر – ماشین مجازی جاوا – بر روی معماری بتن پردازنده اجرا می شود.
قراردادهای هوشمند اتریوم نیز به روشی مشابه کار می کنند. تمام گره هایی که تراکنش ها را تایید می کنند و ارز جدید را در اتریوم استخراج می کنند دارای نمونه ای از ماشین مجازی اتریوم (EVM) هستند. کاغذ زرد، مشخصات فنی اتریوم، دستورالعملهایی را که از EVM پشتیبانی میکنند و نحوه اجرای آنها را با جزئیات تعریف میکند.
این یک توسعه اختصاصی است که دارای ویژگی های بسیاری است:
تعامل با دنیای خارج ممکن نیست: تمام تصمیمات الگوریتمی باید از زنجیره بلوکی و تراکنش های آن ناشی شود.
حساب بر اساس مقادیر 256 بیتی است تا مدیریت آدرس ها و مقادیر بزرگتر را آسان تر کند.
عملیات ویژه مانند توابع هش برای افزایش عملکرد یکپارچه شده است.
به همه دستورالعمل ها یک تابع هزینه (سوخت) اختصاص داده می شود که تقریباً با زمان اجرای مورد نیاز و مقدار حافظه مورد نیاز مطابقت دارد. اصطلاح اندازه گیری معمولاً در انگلیسی استفاده می شود.
برنامه نویسی در EVM
مانند اکوسیستم جاوا، چندین زبان برنامه نویسی وجود دارد که کامپایلرهای EVM برای آنها موجود است. رایج ترین زبان Solidity است که به طور سطحی (از نظر نحوی) یادآور جاوا اسکریپت است. در اواخر سال 2020، اسناد اتریوم دو زبان دیگر را فهرست میکند: Vyper که مبتنی بر پایتون است و Yul Plus، یک توسعه کاملاً مستقل.
وجه اشتراک همه این زبان ها این است که آنها مختص به دامنه هستند، زیرا بر خلاف زبان های همه منظوره، جایگاهی با ویژگی های خاص و به ویژه یک موتور اجرایی ویژه را اشغال می کنند: EVM. البته، این زبانهای مخصوص دامنه (DSL) اساساً ایده خوبی برای کاهش پیچیدگی برنامهها هستند.
اما در مورد EVM، به نظر می رسد که این امر چندان منطقی نیست. از این گذشته، می تواند – صرف نظر از عدم وجود امکانات برای تعامل با دنیای خارج از بلاک چین – الگوریتم های دلخواه را اجرا کند، بنابراین (به بیان ساده) تورینگ کامل است.
چرا از یک زبان موجود و زمان اجرا استفاده نمی کنید؟
در صورت لزوم، ویژگیها باید حذف شوند، اما میتوان به تجربه طولانیتر، ابزارهای پایدارتر و – آنچه بسیار مهمتر است – پایگاه گستردهتری از برنامهنویسان تکیه کرد. در واقع، رایج است که امروزه محبوبیت یک زبان برنامهنویسی نه تنها با این واقعیت تعیین میشود که میتوان در آن به شیوهای مختصر، ایمن یا پویا برنامهنویسی کرد، بلکه با سهولت دسترسی به کتابخانهها و بستههای متعدد موجود نیز مشخص میشود. این تغییر در زمانها بهویژه توسط جاوا اسکریپت نشان داده میشود، جاوا اسکریپت که اغلب بهخاطر معنایی خامش مورد انتقاد قرار میگیرد، اما باید محبوبترین زبان برنامهنویسی حداکثر از زمان میلیونمین بسته NPM در نظر گرفته شود.
وب اسمبلی، یک زبان میانی جهانی
افرادی که پشت مشخصات اتریوم بودند به این نتیجه رسیدند که برخی از مشکلات را می توان با کنار گذاشتن توسعه سفارشی به نفع یک زبان جهانی حل کرد. چقدر این توسعه در وب برای ایجاد جایگزینی برای جاوا اسکریپت سگ بزرگ در حال انجام است: Webassembly (WASM). این زبان هم یک زبان میانی جهانی و هم یک قالب باینری است که با مشخصاتی برای مفسران ترکیب شده است. همانطور که از نامش پیداست، این استاندارد باز در ابتدا برای وب طراحی شده بود. در این میان، سایر زمینه های کاربردی (به عنوان مثال برنامه های کاربردی گوشی های هوشمند) مورد بررسی قرار گرفته است.
توسعه WASM توسط غول های صنعتی مانند مایکروسافت، گوگل و اپل هدایت می شود. ویژگی این زبان این است که از ابتدا برای قابل حمل بودن طراحی شده است. این امر با این واقعیت قابل تشخیص است که بسیاری از زبان های برنامه نویسی موجود مانند Rust، C++ یا Go می توانند برای مونتاژ وب کامپایل شوند.