اتریوم چیست ؟ به بیان ساده، اتریوم (Ethereum) یک نرمافزار متنباز مبتنی بر بلاکچین است که برای توسعهدهندگان نرمافزاری امکان ساخت و توسعه اپهای غیرمتمرکز را فراهم میکند.
پس یعنی اتریوم یک ارز دیجیتال نیست؟ اتریوم پلتفرم قدرتمندی جهت هوشمندسازی فرآیندها و محیطی برای اجرای برنامه های غیرمتمرکز و خودکار است که یک ارز دیجیتال را نیز برای انجام پرداختهای درون این شبکه راهاندازی کرده است. ارز دیجیتال تنها یکی از خدمات این پلتفرم قدرتمند است.
اتریوم چیست؟
اتریوم رسماً در تاریخ ۳۰ جولای ۲۰۱۵ به علاقمندان این حوزه معرفی شد. از آنجاکه اتریوم از نظر میزان ارزش، پس از بیتکوین در جایگاه دوم ردهبندی بازار رمزارزها قرار دارد، بسیاری این دو رمزارز را همواره با یکدیگر مقایسه میکنند. اتریوم همانند بیتکوین، یک شبکه غیرمتمرکز عمومی بر بستر بلاکچین است ولی بین این دو تفاوتهای فنی اساسی وجود دارد.
مهمترین تمایز بین بیتکوین و اتریوم که باید ذکر شود، کاربرد و توانایی است. بیتکوین فقط یک اپلیکیشن خاص از بلاکچین را عرضه میکند، یک سیستم مالی دیجیتال نقطه به نقطه که اجازه پرداختهای آنلاین با بیتکوین را فراهم میکند. بلاکچین بیتکوین برای ردیابی مالکیت ارز دیجیتال استفاده میشود اما بلاکچین اتریوم روی اجرای کد نوشته شده هر اپلیکیشن توزیع شدهای تمرکز دارد.
ماشین مجازی اتریوم چیست؟
فضای مورد استفاده برنامه ها از فضای بلاک چین اتریوم ماشین مجازی اتریوم نامیده می شود. ماشینهای مجازی اتریوم، یک ماشین تیورینگ کامل است که بخش اصلی پلتفرم اتریوم را تشکیل میدهد و می توان روی آن، پلتفرم ها و برنامه های را بصورت غیر متمرکز اجرا کرد. ماشین مجازی اتریوم وظیفه تایید اعتبار تراکنشهای انجام شده در بلاک چین اتریوم را از طریق کنترل وضعیت حساب ، وضعیت جهانی، وضعیت ذخیرهسازی ، اطلاعات بلاک و اطلاعات فضای رانتایم به عهده دارد. ماشینهای مجازی اتریوم ، این امکان را فراهم می کنند که برای همه برنامههای خود از بلاک چین اتریوم استفاده کنید به جای اینکه برای هر برنامه ، یک بلاک چین مستقل ایجاد کنید. در ادامه به بررسی ماشین مجازی اتریم Evm می پردازیم.
ماشین مجازی اتریوم تنها شبه تورینگ کامل است، چرا که محاسبات انجام شده توسط ماشین با gas محدود میشود، که به عنوان محدودیتی برای تعداد محاسباتی است که میتواند انجام گیرد. پس میتوانیم آن را از لحاظ روشهای محاسباتی به هر کامپیوتری در دنیای واقعی تشبیه کنیم. تنها تفاوت آنها، تفاوت در قدرت پردازش است.حال می بینیم که ماشین تیورینگ کامل چه معنایی دارد.
ماشین تیورینگ کامل چیست؟
تعریفی از ویکی پدیا ارائه می دهیم:
Turing Complete یا ماشین تیورینگ کامل، به ماشینی گفته میشود که فارغ از قدرت پردازشی ، حافظهی بینهایت و زمان پردازش بینهایت در اختیار دارد و از الگوریتم محاسباتی «تز چرچ-تیورینگ» و الگوریتم منطقی «بولی» استفاده میکند. در واقع هر دو کامپیوتری که بر اساس تز چرچ-تیورینگ کار میکنند، Turing Complete نامیده میشوند.
همخوانی با تورینگ
ماشین مجازی اتریوم با تورینگ همخوانی کامل داشته یا به اصطلاح Turing complete است. این بدان معناست که سیستم قادر است مراحل منطقی یک عملکرد محاسباتی را به خوبی بر عهده بگیرد. زبان برنامهنویسی جاوا اسکریپت(JavaScript) که غالباً به عنوان زبان برنامهنویسی اینترنت شناخته میشود، با تورینگ همخوانی دارد.
ماشینهای مجازی اتریوم با موفقیت در زبانهای برنامهنویسی مختلف از جمله سیپلاسپلاس(++C)، جاوا، جاوا اسکریپت، پایتون(Python)، روبی و بسیاری دیگر اجرا شده است.
ماشین مجازی یکی از موارد ضروری شبکهی اتریوم محسوب میشود که برای رسیدن به اجماع در سیستم اتریوم قابل استفاده است. وجود ماشین مجازی به کاربران اجازه میدهد تا بدون نیاز به اعتمادسازی، کدهای مورد نظر خود را در یک اکوسیستم بسته اجرا کنند. در این حالت خروجی کدها تضمین شده و قطعی خواهد بود؛ مانند اجرای قراردادهای هوشمند.
gas و بایتکد EVM در اتریوم
gas را میتوان معادل کارمزد در نظر گرفت. هر معاملهای که در شبکه اتریوم انجام میشود، نیاز به کارمزدی دارد که به صورت gas پرداخت می شود. مفهوم gas اتریوم را میتوان به دو قسمت تقسیم کرد:
gasو قیمت gas
gas : به عنوان ابزاری عمل میکند که به وسیله آن کارمزدهای اجرای محاسباتی خاص را میسنجیم.
قیمتgas : این مقدار اتری است که یک فرد مایل در ازای هر واحد gas مایل به پرداخت آن است. قیمت gas اغلب با ((Wei)) اندازهگیری میشود و Wei کوچکترین واحد اتر بوده که در آن ۱۰ به توان ۱۸ Wei نشاندهنده یک اتر است. بنابراین، برای اینکه فردی بتواند یک معامله را در شبکه اتریوم اجرا کند، فرستنده باید حد مجاز gas و قیمت gas در معامله را تعیین کند.
اگر فرستنده gas لازم برای انجام یک معامله را نداشته باشد، گفته میشود که «gas وی تمام شده» و نامعتبر است. gas میتواند تعداد محاسباتی را که توسط ماشین مجازی اتریوم در چند روز انجام میشود را محدود کند. این محاسبات عبارتند از: بلاکهایی که در بلاک چین اتریوم استخراج میشوند شامل یک محدودیت gas هستند، بنابراین مقدار gas مورد استفاده در تمام معاملات مشمول یک بلاک نمیتواند از یک مقدار معین تجاوز کند. قیمت gas به میزان gas متصل است، صرف نظر از اینکه آیا محدودیت gas برداشته شده و ماشین به طور نظری قادر به حل هرگونه مساله دریافت شده باشد، برخی از معاملات ممکن است بسیار پیچیده و از نظر اقتصادی غیرعملی باشند.
ماشین مجازی اتریوم دارای زبان برنامه نویسی خاص خود است، که به نام بایتکد EVM شناخته میشود. وقتی کد در زبانهای برنامه نویسی سطح بالاتر مانند زبان متمرکز بر قرارداد اتریوم Solidity نوشته شود، میتوان آن کد را در بایتکد EVM کامپایل کرد، تا ماشین مجازی اتریوم بتواند آنچه را نوشته شده است، درک کند.
دستهبندی و ذخیره سازی
تعداد زیادی زبان برنامهنویسی سطح بالا وجود دارند که به کاربران اجازه میدهند که آرگومانها (arguments) را به شیوهای مستقیم به توابع انتقال دهند. از طرف دیگر، زبانهای برنامهنویسی سطح پایین از دسته بندی به عنوان ابزاری برای انتقال ارزش به توابع استفاده میکنند. ماشین مجازی اتریوم از یک پشته ثبت 256 بیتی (bit) استفاده میکند. در اینجاست که ۱۶ گزینه اخیر در دسترس قرار میگیرند و یا به صورت همزمان دستکاری میشوند. در نهایت، پشته قادر است تنها حدود ۱۰۲۴ گزینه را نگه دارد.
این محدودیتها منجر به کدهای عملکردی پیچیدهای میشود که از حافظه قرارداد استفاده میکنند. این استفاده همیشگی نیست و وقتی که اجرای قرارداد خاتمه مییابد، محتوای حافظه ذخیره نمیشود. پشته قابل مقایسه با آرگومانهای عملکردی است اما حافظه قابل مقایسه با متغیرهای تاییدکننده است.
تنها روش برای ذخیره سازی دائمی دادهها و دسترسی به اجرای قرارداد در آینده، استفاده از Storage است. ذخیره سازی قرارداد یا Contract Storage اساسا یک پایگاه داده عمومی است که در آنجا مقادیر برای خواندن خارجی موجود هستند. البته نوشتن در Storage به نسبت نوشتن در حافظه نسبتا گرانتر است.
قرارداد هوشمند چیست ؟
قرارداد هوشمند (Smart contract) یک کد رایانه ای است که مبادله پول، محتوا، دارایی، سهام یا هر چیز با ارزش دیگری را تسهیل می کند.
در شبکه بلاک چین قرارداد هوشمند مانند یک نرم افزار خود به خود اجرا شونده است ، که در صورت برآورده شدن شرایط خاص ، بطور خودکار اجرا می شود.
قراردادهای هوشمند در شبکه بلاک چین دقیقاً مطابق برنامه ریزی انجام شده بدون هیچ گونه سانسور ، خرابی ، کلاهبرداری یا دخالت شخص ثالث اجرا می شوند.
همه بلاک چین ها توانایی پردازش کد را دارند، اما اکثر آنها به شدت محدود هستند. اتریوم متفاوت است.
به جای ارائه مجموعه ای از عملیات محدود، اتریوم به توسعه دهندگان اجازه می دهد تا عملیات مورد نظر خود را ایجاد کنند. بنابراین توسعه دهندگان می توانند هزاران برنامه مختلف فراتر از هرچه تاکنون دیده ایم ایجاد کنند.
استقرار قرارداد هوشمند
وقتی که قرارداد هوشمند مستقر شود، ایجاد یک تراکنش معمولی بدون حضور آدرس ممکن میشود. مقدار معینی بایت کد به عنوان داده ورودی داخل میشود. این بایت کد خاص به عنوان سازنده عمل میکند که متغیرهای اولیه را برای انبارش مینویسد. این نوشتن قبل از کپی کردن بایت کد آنی به کد قرارداد انجام میشود. در این میان، ایجاد بایت کد تنها یکبار انجام میشود، این در حالی است که بایت کد آنی در هر فراخوانی قرارداد خاصی اجرا میشود.
بایت کد بالا را میتوان به سه قسمت تجزیه کرد:
۱. سازنده: 60806040526001600055348015601457600080fd5b5060358060226000396000f3fe
۲. زمان اجرا: 6080604052600080fdfe
۳. متادیتا:
A165627a7a723058204e048d6cab20eb0d9f95671510277b55a61a582250e04db7f6587a1bebc134d20029
در نهایت، سالیدیتی یک هش swarm از فایل متادیتا ایجاد میکند که در نهایت اضافه خواهد شد. Swarm یک پلتفرم ذخیره سازی توزیعی است که به عنوان سرویس انتشار محتوا عمل میکند. به زبان ساده میتوان گفت که آن یک سیستم ذخیره سازی فایل غیر متمرکز است. اگرچه هش Swarm در بایت کد زمان اجرا است، اما ماشین مجازی اتریوم آن را به عنوان کد عملکردی تشخیص نمیدهد. دلیل این امر این است که موقعیت آن کاملا غیر قابل دسترس است. سالیدیتی معمولا از این چیدمان خاص استفاده میکند:
0xa1 0x65 ‘b’ ‘z’ ‘z’ ‘r’ ‘0’ 0x58 0x20 [32 bytes swarm hash] 0x00 0x29
در این مورد خاص، میتوان هش Swarm را به صورت زیر مشتق کرد:
4e048d6cab20eb0d9f95671510277b55a61a582250e04db7f6587a1bebc134d2
فایل متادیتا متشکل از اطلاعات متعددی در ارتباط با قرارداد است. متاسفانه آن چیزی بیش از یک شکست آزمایشی نیست. علاوه بر این، قراردادهای زیادی وجود ندارند که به طور عمومی متاداده خود را به داخل شبکه Swarm آپلود کنند.
نتیجهگیری
ماشین مجازی اتریوم مولفه مهمی برای توسعه قراردادهای هوشمند است. درک آن برای افرادی که میخواهند در حوزه اتریوم و قرارداد هوشمند فعالیت داشته باشند، ضروری است. ساخت و توسعه قرارداد هوشمند نیازمند درک کامل و درست ماشین مجازی اتریوم است.