ماشین مجازی اتریوم


راه اندازی شبکه آزمایشی مبتنی بر دانش صفر پالیگان

پالیگان (Polygon / MATIC)، پروتکل مقیاس‌بندی غیرمتمرکز در بلاک چین اتریوم، با عنوان «فصلی جدید برای اتریوم»، در بلاگ رسمی خود از راه‌اندازی شبکه آزمایشی (Public Testnet) ماشین مجازی اتریوم (EVM) مبتنی بر دانش صفر (Zero-Knowledge / ZK) خبر داد.

بر اساس اظهارات رسمی، پالیگان قصد دارد مکانیزم مقیاس‌گذاری اولیه خود در شبکه اتریوم را با استفاده از فناوری رول‌آپ (Roll-up) مبتنی بر دانش صفر جایگزین کند. اولین پروژه‌هایی که این شبکه آزمایشی را اجرا خواهند کرد، پروژه‌های آوه (Aave)، لنز پروتکل (Lens Protocol) و یونی سواپ (Uniswap) هستند.

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

طبق نوشته‌های رسمی، نخستین چالش در توسعه ماشین مجازی اتریوم مبتنی بر دانش صفر، فهمیدن چگونگی استفاده از اثبات دانش صفر (ZK Proof) در محیطی سازگار با EVM است. هرچه فناوری zkEVM در تولید اثبات‌های مبتنی بر دانش صفر بهینه‌تر عمل کند، میزان سازگاری آن با شبکه اتریوم بیشتر خواهد بود.

با آماده‌شدن تیم پالیگان برای اجرای شبکه آزمایشی، سیستم اوپن‌سورس (Open-Source) مبتنی بر دانش صفر این شبکه نزدیک به مراحل پایانی و پیاده‌سازی است و هدف آن‌ها، اجرای این سیستم در ماشین مجازی اتریوم با نهایت توان است.

تیم پالیگان معتقدند دستاورد بزرگی را رقم زده‌اند. ماشین مجازی اتریوم مبتنی بر دانش صفر پالیگان (Polygon zkEVM) در نوع خود اولین نمونه در این جامعه بوده که یک سیستم اثبات مبتنی بر دانش صفر اوپن‌سورس کامل را در شبکه آزمایشی خود راه‌اندازی کرده است.

بنابراین پالیگان نشان داد که سیستم اثبات این شبکه قادر به تولید اثبات‌های مبتنی بر دانش صفر، درون همتای EVM خود است.

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

اثبات دانش صفر چیست؟

اثبات یا پروتکل دانش صفر (Zero-Knowledge) روشی است که در آن یک طرف می‌تواند به طرف دیگر بدون فاش‌کردن اطلاعات بیشتر در مورد صحت یک مسئله، درستی آن مسئله را ثابت کند.

ماشین مجازی اتریوم چیست؟

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

ماشین مجازی اتریوم (EVM)چیست؟

ماشین مجازی اتریوم (EVM) یک ماشین تیورینگ کامل است که بخش اصلی شبکه اتریوم را تشکیل میدهد.

ماشین تیورینگ به ماشینی گفته می‌شود که فارغ از قدرت پردازشی ، حافظه‌ی بی‌نهایت و زمان پردازش بی‌نهایت در اختیار دارد و از الگوریتم محاسباتی «تز چرچ-تیورینگ» و الگوریتم منطقی «بولی» استفاده می‌کند.

این قابلیت به شبکه اتریوم کمک میکند تا بتوان برنامه ها و پلتفرم ها را بصورت غیرمتمرکز بر روی شبکه اتریوم اجرا کرد.

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

ماشین مجازی اتریوم کدهای Solidity(یک نوع زبان برنامه نویسی می باشد) را به کدهای یک بایتی تبدیل و قابل اجرا میکند.

اشتراک این مطلب

https://www.kouroshgerami.ir/wp-content/uploads/2021/12/ماشین1-1.jpg 1280 720 Kourosh Gerami https://www.kouroshgerami.ir/wp-content/uploads/2020/08/Picture4-3.png Kourosh Gerami 2021-12-06 12:02:08 2022-01-13 12:54:59 ماشین مجازی اتریوم (EVM)چیست؟

شاید این موارد نیز مورد علاقه شما باشد

جدیدترین مطالب سایت

بررسی موقعیت معاملاتی در بیتکوین. عبور از ناحیه ۴۶۰۰۰ میتواند موقعیت ورود ایجاد کند (منتظر ایجاد ستاپ هستیم )‌

ارزش معاملات خرد تا به این لحظه نسبتا خوب ثبت شد و در حدود 3500 میلیارد تومان برآورد می‌شود . قیمت دلار صرافی ملی امروز 24،954 تومان اعلام شد.

عدم اعمال حجم مبنا برای برخی نمادهای داری بازارگردان «بالاس» «حسینا» «شاروم» «غپآذر» «فزر» «فولای»

حق تقدم های در حال معامله 🔺نکته: اختلاف قیمت سهم و حق تقدم بیش از ۱۰۰ تومان فرصت خرید ایجاد می‌کند ، اما باید نسبت به ارزندگی سهم اصلی حتما اطمینان حاصل کرد.

نکات اساسی در تریدهای برگشتی و بررسی چند جفت ارز دارای موقعیت معاملاتی لینک ویدیو در اینستاگرام : ” نکات اساسی در ترید های برگشتی “ ❤️فعالیت cafe trade از روز دوشنبه هفته آینده آغاز خواهد شد . 🌼 پیش نیاز پذیرش در کافه ترید ، گذراندن دوره فارکس و تسلط بر پلن معاملاتی است. […]

نگاهی به نرخ تورم پایان سال 1400 در ایران و ماشین مجازی اتریوم ماشین مجازی اتریوم سایر کشورها (بر اساس اعلام مرکز آمار ایران)

سخنرانی پوتین: از تحریم ها نترسید! ایران را ببینید! تحریمش کردند ولی حالا به پایش افتاده‌اند! به پای ما هم خواهند افتاد!

سهامداران عدالت بخوانند/ میزان سود دارندگان سهام عدالت اعلام شد. سهام عدالت در سال ۱۳۹۹ وارد بورس شد. این سهام چندین ماه روند نزولی به خود گرفته بود اما در روزهای پایانی سال ۱۴۰۰ با روند مثبت به کار خود پایان داد. ارزش سبد ۵۳۲ هزار تومانی روز ۲۹ اسفند ۱۴۰۰ به ۱۲ میلیون و […]

صالح‌آبادی، رئیس کل بانک مرکزی: رمز ریال ملی از اوایل امسال راه‌اندازی و این رمز ریال توسط بانک مرکزی منتشر می‌شود. با انتشار رمز ریال، افراد اسکناس ریال خود را تحویل بانک مرکزی می‌دهند و رمز ریال تحویل می‌گیرند که این رمز ریال قابل استفاده برای سرمایه‌گذاری نیست و صرفا جایگزین اسکناس خواهد شد. بانک […]

پالیگان از تکنولوژی جدید خود با نام Polygon-zkEVM رونمایی کرد

پالیگان از تکنولوژی جدید خود با نام zkEVM رونمایی کرد. این تکنولوژی به محصولاتی که از راهکار لایه ۲ گواه دانش صفر (Zero knowledge) استفاده می‌کنند این امکان را می‌دهد تا با ماشین مجازی اتریوم (EVM) انطباق کامل پیدا کنند. به نقل از کوین تلگراف، پالیگان امروز در توییتی از zkEVM رونمایی کرد. در این […]

پالیگان از تکنولوژی جدید خود با نام zkEVM رونمایی کرد. این تکنولوژی به محصولاتی که از راهکار لایه ۲ گواه دانش صفر (Zero knowledge) استفاده می‌کنند این امکان را می‌دهد تا با ماشین مجازی اتریوم (EVM) انطباق کامل پیدا کنند.

به نقل از کوین تلگراف، پالیگان امروز در توییتی از zkEVM رونمایی کرد.

در این رشته توییت آمده است که اکنون هر برنامه غیرمتمرکز و قرارداد هوشمندی که از ماشین مجازی اتریوم (EVM) بهره می‌برده است می‌تواند بر روی رول آپ‌های لایه دوم zk بدون واسطه، از zkEVM استفاده کند. این بدان معنی است که اجرای قراردادهای هوشمند اکنون از امنیت بلاکچین اتریوم استفاده می‌کند و در عین حال از مقیاس پذیری و کارمزد پایین راهکار گواه دانش صفر نیز بهره می‌برد.

رول آپ zk یا دانش صفر راهکار لایه دومی برای شبکه اتریوم محسوب می‌شود که تعداد زیادی از تراکنش‌ها را در یک بلاک جمع‌آوری می‌کند و و هش ریشه (root hash) آن را به همراه گواه رمزنگاری شده (که این گواه از نوع SNARK است) را به قرارداد هوشمندی بر روی شبکه اصلی می‌فرستد. این قضیه باعث می‌شود که هزینه تراکنش در شبکه اتریوم بین تعداد زیادی از افراد تقسیم شود و کاهش قابل توجهی داشته باشد.

بدین ترتیب تمام برنامه‌های غیرمتمرکز سازگار با ماشین مجازی اتریوم می‌توانند از این راهکار استفاده کنند و مقیاس‌پذیری بالاتر و هزینه گس فی پایین‌تری را متحمل شوند. در گذشته یکی از مشکلاتی که رول آپ‌های zk با آن دست و پنجه نرم می‌کردند ارتباط باواسطه با EVM بود که zkEVM این مشکل را حل کرده است. این قضیه می‌تواند گام بلندی برای پالیگان برای تحقق یکی از رویاهای خود یعنی گسترش بی‌حد و مرز در حوزه وب ۳ باشد. پالیگان سال گذشته شبکه هرمز را به عنوان بخشی از برنامه گسترش پالیگان به گواه‌های دانش صفر یا همان ZK خریداری و با خود ادغام کرد.

پالیگان در انتها اشاره کرد که مفتخر است که اولین زنجیره‌ای است که به این تکنولوژی دست پیدا کرده است. البته هنوز zkEVM در مرحله آزمایشی قرار دارد و قرار است تا پایان سال ۲۰۲۲ عرضه رسمی شود.

این تکنولوژی در واقع همان ماشین مجازی اتریوم (EVM) است که این بار در رول آپ‌های مبتنی بر گواه دانش صفر (zk) پیاده‌سازی شده است. این ماشین مجازی موتور محرک اجرای قراردادهای هوشمند و در نتیجه برنامه‌های غیرمتمرکز محسوب می‌شود و از آنجایی که در این رول آپ‌ها مقیاس پذیری بالاتر و هزینه تراکنش پایین‌تر است به بهبود عملکرد برنامه‌های غیرمتمرکز کمک می‌کند.

ارزجو انجام پروژه سالیدیتی و نوشتن قرار داد های هوشمند

انجام پروژه سالیدیتی توسط ارزجو قبول می شود . با روی کارآمدن ارزهای دیجیتال و گسترش آنها افراد زیادی در حال حاضر قصد دارند تا پروژه های خودشان را اجرایی کنند .با ارزجو همراه باشید .

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

زبان سالیدیتی (Solidity) در سال ۲۰۱۴ توسط گوین وود، یوئیچی هیرای، کریستین ریتویسنر و الکساندر برگساسی معرفی شد. سالیدیتی یک زبان برنامه‌نویسی شی‌گرا و سطح بالا است که از زبان‌های برنامه‌نویسی JavaScript ,Python و ++C الهام گرفته شده است. حروف این زبان، مشابه حروفی است که در زبان برنامه‌نویسی جاوا استفاده می‌شود. سالیدتی متغیرها، کلاس‌ها و عملکرد‌های خود را نیز از جاوا برداشت کرده است.

انجام پروژه سالیدیتی

از زبان برنامه‌نویسی سالیدیتی برای ایجاد قراردادهای هوشمند روی بلاکچین اتریوم استفاده می‌شود. قراردادهای هوشمند را می‌توان یک نوآوری بسیار مهم در انجام تراکنش‌های معتبر بدون دخالت اشخاص ثالث دانست.

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

قرارداد هوشمند در سالیدیتی چیست ؟

قرارداد هوشمند یک پروتکل بدون واسط و با اجرای خودکار است که تحت شرایط و ضوابط خاص آن اداره می‌شود و بندهای قرارداد را از طریق بلاکچین ذخیره و اجرا می‌کند.

برای انعقاد قرارداد هوشمند مبتنی بر بلاکچین، طرفین ابتدا و قبل از انعقاد شرایط (به طور جزئی یا کاملاً) که در کد قرارداد هوشمند داخل بلاک چین ذخیره شده است، در مورد توافق نامه مذاکره و با آنها موافقت می‌کنند.

در واقع قراردادهای هوشمند امکان انجام معاملات قابل اعتماد بدون تعامل اشخاص ثالث را فراهم می‌کند. این یک روش غیرمتمرکز است، به این معنی که واسطه‌ها در لحظه تأیید معاملات مورد نیاز نیستند. قراردادهای هوشمند بر اساس قوانینی که برنامه ریزی شده است، در صورت تحقق شرایط و ضوابط از پیش تعیین شده، به طور خودکار اجرا می‌شوند.

قرارداد هوشمند یک پروتکل بدون واسط و با اجرای خودکار است که تحت شرایط و ضوابط خاص آن اداره می‌شود و بندهای قرارداد را از طریق بلاکچین ذخیره و اجرا می‌کند.

برای انعقاد قرارداد هوشمند مبتنی بر بلاکچین، طرفین ابتدا و قبل از انعقاد شرایط (به طور جزئی یا کاملاً) که در کد قرارداد هوشمند داخل ماشین مجازی اتریوم بلاک چین ذخیره شده است، در مورد توافق نامه مذاکره و با آنها موافقت می‌کنند.

در واقع قراردادهای هوشمند امکان انجام معاملات قابل اعتماد بدون تعامل اشخاص ثالث را فراهم می‌کند. این یک روش غیرمتمرکز است، به این معنی که واسطه‌ها در لحظه تأیید معاملات مورد نیاز نیستند. قراردادهای هوشمند بر اساس قوانینی که برنامه ریزی شده است، در صورت تحقق شرایط و ضوابط از پیش تعیین شده، به طور خودکار اجرا می‌شوند.

اما اعمال قرارداد‌های هوشمند و ایده سابو تا سال ۲۰۰۹ طول کشید. بعد از اختراع بیت کوین و ظهور فناوری بلاک چین بود که محیط مناسب برای قرارداد‌های هوشمند ایجاد شد. امروزه همه قرارداد‌های هوشمند را در ارتباط با ارز‌های دیجیتال می‌شناسند اما در واقع، این مفهوم مدت‌ها بود که مورد توجه دانشمندان کامپیوتر بود و پروتکل‌های ارز دیجیتال اساسا قرارداد‌هایی هوشمند با امنیت و رمزگذاری غیر متمرکز هستند.

از آنجایی که یکی از کاربرد های اصلی زبان برنامه نویسی سالیدیتی نوشتن قرارداد های هوشمند میباشد . ارزجو پروژه های برنامه نویسی به زبان سالیدیتی را انجام می دهد .

تاریخچه قرار داد های هوشمند

این ایده ابتدا توسط دانشمند کامپیوتر و رمز نگاری، نیک سابو در سال ۱۹۹۴ مطرح شد. او اصول اصلی کار را تعریف کرد، اما در آن زمان فضای مناسب برای تحقق ایده‌ها وجود نداشت. با ظهور فناوری بلاک چین (زنجیره بلوکی)، ایدهٔ قراردادهای هوشمند عملیاتی شد. بیت کوین به عنوان اولین ارز دیجیتال غیرمتمرکز جهان پایه‌گذار نوعی قرارداد در بلاک چین بود اما پروتکل بیت کوین فقط با هدف ایجاد یک ارز خصوصی توسعه یافته بود و نمی‌توانست تمام نیازها و فرایندها را انجام دهد. اتیریم امکان ایجاد قراردادهای هوشمند را برای تمام پروژه‌ها عملی کرد و گام نوینی در جهت هوشمند سازی جهان برداشت.

ماشین مجازی اتریوم

اتریوم اولین پلتفرمی بود که ماشین مجازی را معرفی کرد. در اصل یک ماشین پردازش قرارداد هوشمند است که روی اتریوم کار می کند. در اینجا یک قرارداد هوشمند می تواند از یک رمز ساده ERC20 گرفته تا مجموعه کد پیچیده تری باشد که اساس یک برنامه غیرمتمرکز را ماشین مجازی اتریوم می سازد.

ماشین مجازی اتریوم(EVM) یک لایه انتزاعی بین کد قرارداد هوشمند و دستگاهی که شبکه اتریومی را اجرا می کند، را می سازد. قراردادهای هوشمند اتریوم در Solidity (یک زبان برنامه نویسی که توسط یکی از اعضای موسس اتریوم ، دکتر Gavin Wood ساخته شده است) رمزگذاری می شوند.

ماشین مجازی اتریوم کد Solidity را مستقیماً اجرا نمی کند. در واقع ، هنگامی که یک توسعه دهنده آماده عقد قرارداد هوشمند خود است ، کد ها وارد Opcodes می شوند. Opcodes مجموعه ای از 140 دستورالعمل منحصر به فرد است که ماشین مجازی اتریوم (EVM) از آنها برای انجام کارهای خاص بر اساس دستورالعمل های رمزگذاری شده در قراردادهای هوشمند، استفاده می کند.

ماشین مجازی اتریوم (EVM) یک سیستم به اصطلاح “Turing Complete” است، این اصطلاح به احترام به آلن تورینگ (Alan Turing) ، خالق آزمایش و ماشین تورینگ، نام گذاری شده است. و بدان معناست که این سیستم قدرت محاسبه ماشین تورینگ را دارد و قادر به انجام مقایسه ، خواندن / نوشتن، محاسبات لامبدا ، توابع بازگشتی و … می باشد. این سیستم به شما امکان می دهد تا از قراردادهای هوشمند استفاده کنید و از تغییرناپذیری آنها را اطمینان حاصل کنید.

چطوری در ارزجو سفارش پروژه سالیدیتی بدهم ؟

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

هزینه انجام پروژه سالیدیتی در ارزجو چگونه محاسبه میشود ؟

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

چطور به ارزجو در انجام پروژه های سالیدیتی اعتماد کنیم ؟

انجام پروژه سالیدیتی

تیم ارزجو متشکل از یک گروه سه ملیتی ایرانی کانادایی هندی می باشد که در زمینه برنامه نویسی قرارداد های هوشمند و ساخت بلاکچین های جدید تجربه چندین ساله دارند . متخصصین این تیم از فارغ التحصیلان بهترین دانشگاه ها در سطح بین المللی می باشند . تیم مجرب ارزجو در این مسیر به شما کمک می کند .

کنکاش در قرارداد اتریوم ABI و EVM Bytevode

قرارداد ABI

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

با مطالعه این مقاله می توانید درک صحیحی از مفاهیم زیر داشته باشید:

  • درک قرارداد ABI و بایت کد EVM و روابط آن.
  • نحوه تولید قرارداد بایت کد ABI و EVM با خط فرمان “solc”.

بایت کد و ABI

از آنجایی که اتریوم از EVM (ماشین مجازی اتریوم) به عنوان یک جزء اصلی شبکه استفاده می کند، کد قرارداد هوشمند نوشته شده به زبان های سطح بالا باید در بایت کد EVM کامپایل شده تا اجرا شود. EMV Bytecode یک کد اجرایی در EVM است و Contract ABI یک رابط برای تعامل با بایت کد EVM است. به عنوان مثال، اگر می خواهید تابعی را در یک قرارداد هوشمند ماشین مجازی اتریوم با کد جاوا اسکریپت خود فراخوانی کنید، ABI به عنوان یک واسطه بین کد جاوا اسکریپت و بایت کد EVM برای تعامل با یکدیگر ایفای نقش می کند. نمودار زیر معماری قرارداد ABI، بایت کد EVM و اجزای خارجی (DApp و شبکه) را نشان می دهد. سمت چپ نشان دهندۀ یک فرآیند کامپایل است و سمت راست تعامل بین بایت کد و ABI را نشان می دهد.

معماری قرارداد ABI، بایت کد EVM و اجزای خارجی

بایت کد EVM (بایت کد)

بایت کد EVM یک زبان برنامه نویسی سطح پایین است که از یک زبان برنامه نویسی سطح بالا مانند solidity کامپایل شده است. EVM یک ماشین مجازی است که بین سیستم عامل و لایه برنامه قرار می گیرد تا وابستگی سیستم عامل را کاهش دهد. خوشبختانه EVM، قرارداد هوشمند اتریوم را می توان تقریباً روی هر کامپیوتری اجرا کرد. اگر شما یک توسعه دهنده جاوا هستید، می توانید JVM (ماشین مجازی جاوا) را به عنوان مکانیزم مشابه در نظر بگیرید. بایت کد EVM مانند زیر است. برای انسان قابل خواندن نیست اما برای دستگاه قابل خواندن است.

در یک نگاهی عمیق تر، هنگام کامپایل در Remix IDE، چهار فیلد مانند زیر را مشاهده می کنید. آن ها جزئیات بیشتری از بایت کد مانند لینک مرجع، کدهای عملیاتی و نقشه منبع را نشان می دهند. “object” یک بایت کد EVM است.

  1. لینک مرجع (linkReference): آدرس مستقر شده آدرس سایر قراردادهای هوشمند که قرارداد هوشمند فعلی به آن ها وابسته است.
  2. شی (object): بایت کد قرارداد هوشمند فعلی
  3. کدهای عملیاتی (opcodes): کدهای عملیاتی که دستورالعمل های سطح پایین قابل خواندن توسط انسان هستند.
  4. sourceMap: منبع نقشه برای تطبیق هر دستورالعمل قرارداد با بخشی از کد منبع است که از آن تولید شده است.

قرارداد ABI

در علوم کامپیوتر، ABI (Application Binary Interface) یک رابط بین دو ماژول برنامه، اغلب بین یک سیستم عامل و برنامه های کاربر است. در اتریوم، Contract ABI رابطی است که یک طرح استاندارد از نحوه فراخوانی توابع در یک قرارداد هوشمند و بازگرداندن داده ها را تعریف می کند. Contract ABI برای استفاده خارجی طراحی شده است تا تعامل برنامه به قرارداد و قرارداد با قرارداد را امکان پذیر کند. برای مثال، اگر می‌خواهید یک تابع قرارداد هوشمند را از DApp خود فراخوانی کنید، از طریق Contract ABI تماس می‌گیرید. قرارداد ABI با فرمت JSON مانند زیر نشان داده شده است.

قرارداد ABI نام تابع و انواع داده های آرگومان را تعریف می کند. برای رمزگذاری فراخوانی های قراردادی برای EVM و خواندن داده ها از تراکنش ها استفاده می شود. مشخصات واضحی در مورد نحوه رمزگذاری و رمزگشایی Contract ABI وجود دارد. من از تابع زیر برای توصیف مثال رمزگذاری استفاده خواهم کرد.

ابتدا تابع ” withdraw” با keccak256 کدگذاری می شود و 4 بایت اول به عنوان انتخابگر (selector) استفاده می شود. انتخابگر علامتی است که برای شناسایی تابعی که باید فراخوانی شود؛ استفاده می شود.

در مرحله بعد، آرگومان به صورت هگزادسیمال کدگذاری می شود و به تابع رمزگذاری شده « withdraw» با 32 بایت padding اضافه می شود.

داده ها تابع withdraw را فراخوانی می کنند و 0.01 را به عنوان آرگومان درخواست می کنند. اگر می‌خواهید جزئیات مربوط به مشخصات کدگذاری/رمزگشایی ABI را بدانید، لطفاً به مشخصات قرارداد ABI مراجعه کنید (https://docs.soliditylang.org/en/latest/abi-spec.html).

با یک نگاه عملی تر، در تعامل با قرارداد، می توانید از web3.js مانند زیر استفاده کنید. اول ایجاد یک قرارداد با Contract ABI، و بعد ایجاد یک نمونه با بایت کد EVM. این کد با موفقیت در کامپایل توسط Solidity REMIX تولید می شود.

دستورات با “solc”

نگاهی به چگونگی تولید بایت کد ABI و EVM با دستور solc بیندازیم. دستور Solc یکی از پرکاربردترین کامپایلرها است. آن را با مدیر بسته npm نصب کنیم.

ما از این کد منبع نمونه استفاده خواهیم کرد. نام فایل SampleToken.sol است.

خروجی EVM Bytecode

خروجی قرارداد ABI

اگر می خواهید در یک دایرکتوری خاص خروجی بگیرید، می توانید با گزینه “-o” تنظیمات خود را انجام دهید. (شما نمی توانید نام فایل خروجی را تنظیم کنید).

وقتی مجدد کامپایل را انجام دادید، حتما گزینه « — overwrite » را تنظیم کنید.



اشتراک گذاری

دیدگاه شما

اولین دیدگاه را شما ارسال نمایید.