اتریوم چگونه کار می‌کند(۴) – تراکنش‌ها و پیام‌ها

خانه انجمن ها تالار اتریوم اتریوم چگونه کار می‌کند(۴) – تراکنش‌ها و پیام‌ها

  • این موضوع خالی است.
در حال نمایش 1 نوشته (از کل 1)
  • نویسنده
    نوشته‌ها
  • #250
    Mohmmad10
    مدیر

    قسمت سوم


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


    حساب‌ها و حالت

    اتریوم چگونه کار می‌کند؟ – ۴

    تراکنش‌ها‌و پیام‌ها


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

    در بلاک چین اتریوم دو نوع تراکنش وجود دارد: تراکنش برای فراخوانی پیام (message calls) و تراکنش برای ایجاد قرارداد (یعنی تراکنش‌هایی که قراردادهای جدید اتریوم را ایجاد می‌کنند).

    همه تراکنش‌ها صرف‌نظر از نوع‌شان، دربردارنده اجزای زیر هستند:

    • نانس: شمار تراکنش‌های ارسال‌شده توسط فرستنده؛
    • قیمت سوخت: تعداد وِی (Wei) که فرستنده می‌خواهد برای هر واحد سوخت که برای اجرای تراکنش نیاز است بپردازد؛
    • حد سوخت: بیشترین مقدار سوخت که فرستنده می‌خواهد برای اجرای این تراکنش بپردازد. این مقدار قبل از اینکه محاسبات انجام شود، تنظیم و پرداخت می‌شود.
    • به (to): این بخش شامل آدرسِ گیرنده است. در تراکنشی که برای ایجاد قرارداد انجام می‌شود، آدرس حساب مبتنی بر قرارداد هنوز وجود ندارد و بنابراین مقدار آن خالی است.
    • ارزش یا مقدار (value): مقدار وی که قرار است از فرستنده به گیرنده انتقال یابد. در تراکنش‌های ایجادکننده قرارداد، این مقدار به‌عنوان موجودی اولیه در حساب مبتنی بر قرارداد تازه ایجادشده به کار می‌رود.
    • v, r, s: برای ایجاد امضایی که هویت فرستنده تراکنش را شناسایی می‌کند به کار می‌رود.
    • اینیت (فقط برای تراکنش‌های ایجادکننده قرارداد وجود دارد): قطعه کد ماشین مجازی اتریوم که برای مقداردهی اولیه حساب مبتنی بر قرارداد جدید به کار می‌رود. کد اینیت (init) فقط یک بار اجرا می‌شود و سپس دور انداخته می‌شود. هنگامی‌که اینیت برای اولین بار اجرا می‌شود، کد حساب را ایجاد می‌کند که قطعه کدی است که به‌شکل دائمی با حساب مبتنی بر قرارداد در ارتباط است.
    • داده (فیلد اختیاری که فقط برای تراکنش‌های فراخوانی پیام وجود دارد): داده‌های ورودی (یعنی پارامترهایی) که برای فراخوانی پیام به کار می‌روند. برای مثال، اگر یک قرارداد هوشمند به‌عنوان یک سرویس ثبت‌نام دامنه عمل می‌کند، یک فراخوانی برای آن قرارداد ممکن است شامل فیلدهای ورودی برای وارد کردن دامنه و آدرس IP (آی‌پی) باشد.

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

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

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

    در اینجا نکته مهمی وجود دارد: تراکنش‌ها یا پیام‌های داخلی حاوی حد سوخت نیستند. اگر یادتان باشد گفته بودیم که حد سوخت را حساب با مالکیت خارجی تعیین می‌کند. بنابراین حساب با مالکیت خارجی که آغازگر ارسال تراکنش است، از همان ابتدا باید حد سوخت را به اندازه کافی تعیین کرده باشد تا اگر قرار است علاوه بر اجرای تراکنش در بین کار عملیات فرعی مانند تراکنش‌های داخلی و پیام‌های «قرارداد به قرارداد» اجرا شوند، سوخت کافی موجود باشد. اگر در زنجیره تراکنش‌ها و پیام‌ها اجرای یک پیامِ بخصوص با اتمام سوخت مواجه شود، اجرای آن پیام و نیز هر پیام بعدی که در نتیجه آن ایجاد شده است برگشت می‌خورد. اما اجرای تراکنش‌های اصلی (خارجی) لغو نمی‌شود.


    در قسمت‌های بعدی این مجموعه نیز با ما همراه باشید…


    قسمت پنجم

در حال نمایش 1 نوشته (از کل 1)
  • شما برای پاسخ به این موضوع باید وارد شوید.