تکنولوژی‌ها

ماشین مجازی اتریوم (EVM) چیست و چه ویژگی‌هایی دارد؟

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

فهرست عناوین

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

برای درک بهتر ماشین مجازی اتریوم بد نیست ابتدا با مفهوم ماشین مجازی و کاربرد آن آشنا شویم. ماشین مجازی (Virtual Machine) ابزاری است که به جای یک کامپیوتر فیزیکی از نرم افزار برای اجرای برنامه‌ها و استقرار اپلیکیشن‌ها استفاده می‌کند. به خاطر همین ویژگی می‌توان یک یا چند ماشین مجازی را روی یک کامپیوتر فیزیکی میزبانی کرد. ماشین‌های مجازی که روی یک کامپیوتر فیزیکی قرار دارند می‌توانند سیستم عامل و عملکرد مستقلی نسبت به سایر ماشین‌ها داشته باشند. بنابراین فناوری ماشین مجازی امکان تقسیم منابع محاسباتی و انجام پردازش‌های مختلف روی سیستم عامل‌های متفاوت را تنها با استفاده از یک کامپیوتر فیزیکی فراهم می‌سازد. در ادامه به بررسی ماشین مجازی اتریوم و ویژگی‌های آن می‌پردازیم.

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

ماشین مجازی اتریوم (Ethereum Virtual Machine یا EVM) یک انجین یا موتور محاسباتی برای بلاک چین اتریوم است که وضعیت شبکه را مدیریت می‌کند، پردازش تراکنش‌ها را انجام می‌دهد و با استفاده از آن می‌توان قابلیت‌های مربوط به قراردادهای هوشمند را روی شبکه اتریوم پیاده‌سازی کرد. ماشین مجازی اتریوم در نرم افزار مورد استفاده برای اجرای نودهای بلاکچین اتریوم به کار گرفته شده است و به همین دلیل یکی از اجزای اصلی اتریوم به حساب می‌آید. این ماشین مجازی امکان نگهداری دفتر کل تراکنش‌های اتریوم و به‌روز رسانی آن را برای نودهای اتریوم فراهم می‌سازد. به عبارت ساده‌تر EVM یک کامپیوتر مجازی است که مجموعه‌ای از آنها در کنار هم وظیفه اجرای قابلیت‌های مختلف شبکه اتریوم را بر عهده دارند و تمام نودهای شبکه با اجرای آن می‌توانند بر سر وضعیت شبکه به اجماع برسند.

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

منظور از تورینگ کامل بودن ماشین مجازی اتریوم چیست؟

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

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

ویژگی‌های ماشین مجازی اتریوم (EVM)

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

ایزوله بودن

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

ﻋﻤﻠﻜرد قطعی

ماشین مجازی اتریوم اجرای قطعی دستورات را تضمین می‌کند، یعنی با فرض ورودی و وضعیت اولیه یکسان، هر نود در شبکه اتریوم هنگام اجرای تراکنش یا قرارداد هوشمند نتیجه کاملاً مشابهی را تولید خواهد کرد. عملکرد قطعی برای رسیدن به اجماع در میان تمام نودها ضروری است. این ویژگی ماشین مجازی اتریوم تضمین می‌کند که تمام مشارکت‌کنندگان روی شبکه درباره وضعیت بلاکچین با هم اتفاق نظر دارند و این موضوع موجب افزایش اطمینان و اعتماد در شبکه می‌شود.

غیرقابل تغییر بودن کدها

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

منظور از گس (Gas) در ماشین مجازی اتریوم چیست؟

گس اتریوم

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

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

ماشین مجازی اتریوم به عنوان یکی از اجزای کلیدی شبکه اتریوم، مزایای مختلفی را برای این شبکه به همراه دارد. از جمله مزایای EVM می‌توان به این موارد اشاره کرد:

قابلیت ساخت NFT

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

کاهش کارمزد تراکنش‌ها

هر عملیات و تراکنشی که روی بلاکچین اتریوم انجام می‌شود هزینه‌بر است و باید کارمزد آن تحت عنوان گس پرداخت شود. ماشین مجازی اتریوم با بهینه‌تر کردن اجرای قراردادهای هوشمند می‌تواند به کاهش کارمزد تراکنش‌ها کمک کند. البته در حال حاضر کارمزد تراکنش‌هایی که با EVM انجام می‌شود بالاست و باید دید که در آینده چه تغییراتی برای بهبود آن انجام خواهد شد.

فراهم آوردن امکان ایجاد برنامه غیرمتمرکز برای همه افراد

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

سازگاری با کیف پول‌ اتریومی

وقتی یک کیف پول مبتنی بر اتریوم مثل کیف پول متامسک تراکنشی را ایجاد می‌کند، این تراکنش توسط ماشین مجازی اتریوم دریافت و بررسی می‌شود، سپس EVM عملیات مورد نیاز برای اجرای تراکنش مثل اجرای قرارداد هوشمند یا انتقال ارز دیجیتال را انجام می‌دهد. بنابراین توسعه‌دهندگان هم می‌توانند اپلیکیشن‌هایی بنویسند که مستقیماً با کیف پول‌های اتریومی تراکنش دارند و تراکنش‌های آنها را پردازش می‌کنند.

امکان اجرای قرارداد هوشمند

قراردادهای هوشمند (Smart Contract) در واقع مجموعه دستوراتی هستند که به صورت خودکار و برنامه‌ریزی شده بر بستر بلاکچین اجرا می‌شوند. ماشین مجازی اتریوم وظیفه اجرای این قراردادها را بر عهده دارد و به توسعه‌دهندگان اجازه می‌دهد تا با استفاده از زبان‌هایی مثل سالیدیتی، این قراردادها را توسعه دهند و اجرا کنند.

معایب EVM (ماشین مجازی اتریوم)

ماشین مجازی اتریوم در کنار مزایایی که فراهم کرده است، محدودیت‌ها و معایبی نیز دارد. از جمله معایب EVM می‌توان به این موارد اشاره کرد:

امکان آسیب‌پذیری به دلیل تمرکزگرایی

نودهای اتریوم برای اجرا روی کامپیوترهای مختلف از ماشین مجازی اتریوم کمک می‌گیرند. بخشی از نودهای اتریوم روی سیستم‌های ابری و سرویس‌هایی مثل وب سرویس‌های آمازون (AWS) اجرا می‌شوند، بنابراین اگر اختلالی در این سرویس‌ها رخ دهد یا شرکت‌ها دیگر خدمات خود را به این شکل ارائه نکنند، بخشی از ماشین‌های مجازی اتریوم و اپلیکیشن‌های غیرمتمرکز با مشکل مواجه خواهند شد.

الزام آشنایی با زبان برنامه‌نویسی خاص

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

افزایش میزان گس فی

گس فی یا کارمزد گس به منظور هزینه‌بر کردن عملیات و تراکنش‌های مختلف روی بلاکچین اتریوم ایجاد شده است تا جلوی فعالیت‌های خرابکارانه و اسپم گرفته شود. این موضوع سبب شده تا کارمزد بلاکچین اتریوم در مقایسه با بسیاری از شبکه‌ها بالاتر باشد و توسعه و اجرای اپلیکیشن‌ها روی این شبکه در بسیاری از موارد مقرون به صرفه نباشد. به همین دلیل است که بسیاری از پروژه‌های لایه ۲ اتریومی تمرکز خود را روی افزایش سرعت و ارزان‌تر کردن تراکنش‌ها قرار داده‌اند.

شبکه‌های سازگار با ماشین مجازی اتریوم (EVM Compatible) کدام‌اند؟

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

بایننس اسمارت چین (BSC)

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

پالیگان (Polygon)

پالیگان که پیش از این شبکه Matic نام داشت یک راهکار لایه ۲ اتریومی است که امکان اجرای تراکنش‌ها را با سرعت بیشتر و هزینه کمتر فراهم می‌کند. این بلاکچین با ماشین مجازی اتریوم سازگاری دارد و توسعه‌دهندگان می‌توانند اپلیکیشن‌های مبتنی بر اتریوم را به راحتی روی این شبکه نیز اجرا کنند.

فانتوم (Fantom) 

فانتوم یک پلتفرم بلاکچینی مقیاس‌پذیر با بهره‌وری بالا است که برای بهبود قابلیت‌های بلاکچین اتریوم توسعه داده شده است و ارز بومی آن نیز فانتوم (FTM) نام دارد. این بلاکچین نیز مثل پالیگان با ماشین مجازی اتریوم سازگار است و به توسعه‌دهندگان اجازه می‌دهد تا قراردادهای هوشمند سازگار با اتریوم را روی آن اجرا کنند.

آوالانچ (Avalanche)

شبکه آوالانچ پلتفرمی برای ساخت اپلیکیشن‌های غیرمتمرکز و شبکه‌های بلاکچینی سفارشی است و ارز آن نیز آواکس (AVAX) نام دارد. این شبکه از ماشین مجازی اتریوم پشتیبانی می‌کند و امکان اجرای قراردادهای هوشمند مبتنی بر اتریوم را در اختیار توسعه‌دهندگان قرار می‌دهد.

آربیتروم (Arbitrum)

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

کاربرد ‌EVM در قراردادهای هوشمند

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

قرارداد هوشمند

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

قراردادهای هوشمند با زبان‌های سطح بالایی مثل سالیدیتی نوشته می‌شوند و بعد از اینکه کدهای آنها به بایت کد (Byte code) تبدیل شد، EVM امکان خواندن دستورات و اجرای آنها را خواهد داشت. ماشین مجازی اتریوم تضمین می‌کند که کدها به همان صورتی که نوشته شده‌اند و مطابق با قواعد شبکه اتریوم اجرا شوند و تمام نودها در صورت دریافت ورودی یکسان، خروجی یکسانی داشته باشند.

ماشین مجازی اتریوم براساس کدام زبان برنامه‌نویسی نوشته شده است؟ 

توسعه‌دهندگان اتریوم کدهای قراردادهای هوشمند خود را با زبان برنامه‌نویسی سالیدیتی (Solidity) یا سایر زبان‌های سطح بالا مثل Vyper ،Yul و غیره می‌نویسند. سپس این کدها به بایت کد تبدیل می‌شود تا ماشین مجازی اتریوم بتواند دستورات آنها را بخواند و اجرا کند. در فرآیند ترجمه کدهای سالیدیتی به بایت کد، ابتدا دستورالعمل‌های نوشته شده به Opcode تبدیل می‌شوند. سپس با تبدیل شدن خط به خط کدها، ماشین مجازی اتریوم متوجه می‌شود که دقیقاً چطور باید تراکنش را اجرا کند. 

چه آینده‌ای در انتظار ماشین مجازی اتریوم (EVM) است؟

ماشین مجازی اتریوم از زمان شروع به کار بلاکچین اتریوم تاکنون به‌روزرسانی‌های مختلفی را دریافت کرده است و احتمالاً در آینده نیز بهینه‌سازی‌های مختلفی روی آن انجام خواهد شد. انتظار می‌رود در آینده تمرکز به‌روزرسانی‌ها روی مقیاس‌پذیری و بهره‌وری EVM باشد و امکانات بیشتری برای تعامل با سایر بلاکچین‌ها فراهم شود. یکی از چالش‌های مهم ماشین مجازی اتریوم بالا بودن گس فی و ازدحام شبکه است که باید در آینده برای آن چاره‌ای اندیشیده شود. توسعه فناوری در حوزه‌هایی مثل دیفای (DeFi)، سازمان‌های خودگردان غیرمتمرکز (DAO)، توکن‌های غیرمثلی و غیره می‌تواند نقش مهمی در وضعیت آتی اکوسیستم EVM و به‌روزرسانی‌های آن داشته باشد.

سخن پایانی

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

سوالات متداول

ماشین مجازی اتریوم چطور کار می‌کند؟

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

گس فی چیست؟

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

ماشین مجازی اتریوم چطور امنیت شبکه را ارتقا می‌دهد؟

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

ماشین مجازی اتریوم از چه زبان‌های برنامه‌نویسی پشتیبانی می‌کند؟

ماشین مجازی اتریوم می‌تواند کدهای کامپایل شده از زبان‌هایی مثل سالیدیتی، وایپر یا Yul را بخواند و اجرا کند. به عبارت دیگر توسعه‌دهندگان می‌توانند قراردادهای هوشمند خود را با این زبان‌ها توسعه دهند و اجرای آن را به ماشین مجازی اتریوم بسپارند.

محمدعلی معصومی

مترجم و نویسنده محتوا

نوشته های مشابه

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

17 − پنج =