12.3.5.1 تراکنش ها در بلاکچین اتریوم #
تراکنش ها در شبکه اتریوم دارای خصوصیاتی متفاوت از تراکنش ها در بیتکوین هستند. علل اصلی این تفاوت ها روش متفاوت اتریوم برای جلوگیری از برخی از حملات و همچنین نیاز به مناسب بودن برای اجرا کانترکت ها در ازای تراکنش ها می باشد.
در اتریوم تراکنش ها بصورت اتمیک هستند. یعنی ما نمیتوانیم یک تراکنش را به قسمت های دیگری تقسیم و بصورت جدا اجرا و اراعه کنیم. همچنین وضعیت یک تراکنش در اتریوم تنها دو حالت میتوانند داشته باشند. یا انجام شده اند و تغییری برروی ورلد استیت ایجاد کرده اند یا انجام نشده و اثری بر شبکه ندارند.
در شبکه اتریوم تراکنش ها بصورت ترتیبی و اجرا شوند و هیچ دو تراکنشی بصورت همزمان اجرا و پردازش نمیشوند. همچنین تراکنش ها در اتریوم قابلیت همپوشانی ندارند.
12.3.5.1.1 فیلد های یک تراکنش در اتریوم #
اولین مقدار در یک تراکنش اتریومی نانس است. که در بخش حساب ها به ان پرداختیم. نانس یک عدد است که نشان میدهد چندمین تراکنشی است که توسط این حساب ایجاد میشود و تراکنش هایی با اطلاعات یکسان را متمایز میسازد که روشی جایگزین برای مقابله با reply attack.
همانطور که میدانید بیتکوین از lock-time برای مقابله از این حمله استفاده میکند.
دومین مقدار هر تراکنش قیمت gas میباشد. در اصل مبلغی است که ایجاد کننده تراکنش حاضر است در ازای هر gas بپردازد.
سومین بخش محدودیت تعداد مراحل محساباتی است که برای اجرا تراکنش توسط ارسال کننده مشخص میشود. علت استفاده از این فیلد مدل Anti-DOS اتریوم میباشد. برتی مثال جلوگیری از ایجاد حلقه های بینهایت و یا هدر دادن منابع پردازشی.
فیلد بعدی نشان دهنده آدرس مقصد تراکنش است. و بعد از آن مبلغ اتری که با این تراکنش جابه جا میشود.
در نهایت فیلد دیتا که یک فیلد اختیاری است (در استقرار و صدا زدن قرارداد های هوشمند کاربرد دارد) شامل اطلاعاتی میشود که کانترکت مورد نظر میتواند انهارا بخواند. برای مثال اگر شما بخواهید یک رکورد ENS برای ایپی ادرس خود ثبت کنید در این قسمت از تراکنش خود ایپی و نام ENS خود را در صدا زدن کانترکت ENS قرار میدهید.
همچنین تراکنش هایی که برای ایجاد یک قرارداد هوشمند جدید اجرا میشوند هم بایت کد های قرارداد هوشمند در این فیلد قرار میگیرد.
اضافه کردن دیتا در این بخش مقدار gas را افزایش خواهد داد.
12.3.5.1.2 انواع تراکنش در اتریوم #
تراکنش هادر شبکه اتریوم به دو دسته تقسیم می شوند. دسته اول تراکنش هایی هستند که باعث ایجاد و یا همان استقرار یک قرارداد هوشمند جدید بر روی شبکه میشوند. دربخش های قبل به این مدل از تراکنش ها بصورت خلاصه پرداخته ایم.
این تراکنش ها در فیلد دیتا یک بایت کد معتبر EVM ای را شامل میشوند. ارسال کننده یا ادرس مقصد این تراکنش ها همیشه یک EOA میباشد که در نهایت مالک ان قرار داد به شمار می اید.
مقصد این تراکنش ها ادرس صفر است.
دسته دوم تراکنش ها در اتریوم تراکنش های message call است.
در این تراکنش ها معمولا یا یک تابع در یک قرار داد هوشمند صدا زده میشود و یا یک جابه جایی اتر بین دو حساب شخصی صورت میگیرد.
12.3.5.1 پیام ها در بلاکچین اتریوم #
مثال و درک بهتر #
در نهایت برای درک بهتر مفهایم تراکنش و پیام ها در شبکه اتریوم (یا هر مفهوم دیگری در هر شبکه دیگیری) بررسی کردن بلاک اکسپلورر آن شبکه و دیدن این موارد در حالت بصری کمک خیلی خوبی به درک این مساعل میکند. همچنین میتوانید با ایجاد یک حساب اتریوم در تست نت های اتریوم این موارد را بصورت عملی تست کنید. (در بخش های اینده به این مورد خواهیم پرداخت)