Skip to content

Commit

Permalink
Merge pull request #335 from kehiy/main
Browse files Browse the repository at this point in the history
feat: transactions and messages: adding transactions (chapter12/ethereum)
  • Loading branch information
Ja7ad authored Jan 13, 2024
2 parents ff95b9c + 85a8c38 commit 73a32b6
Show file tree
Hide file tree
Showing 12 changed files with 76 additions and 2 deletions.
4 changes: 4 additions & 0 deletions content/chapter 12/ethereum/12.3.4-accounts.md
Original file line number Diff line number Diff line change
Expand Up @@ -85,3 +85,7 @@ https://ethereum.stackexchange.com/questions/764/do-contracts-also-have-a-nonce
## 12.3.4.3.2 CA

ادرس حساب های کانترکت از هش ادرس حساب مالک (حساب شخصی که تراکنش استقرار کانترکت را ایجاد میکند.) و عدد نانس همان حساب بدست می اید که طول ان ۴۲ کاراکتر بر مبنای ۱۶ است.

# 12.3.4.4 ادرس صفر

آدرس صفر در شبکه اتریوم یک ادرس است که همراه با ایجاد اولین بلاک ایجاد میشود. این آدرس یک حساب شخصی یا کانترکت نیست و هیچ کلید خصوصی و مالکی هم ندارد. همچنین هیچ خروجی یا تراکنشی از این آدرس به بیرون وجود ندارد.
74 changes: 72 additions & 2 deletions content/chapter 12/ethereum/12.3.5-transactions-messages.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,76 @@
---
title: 12.3.5 تراکنش ها و پیغام ها
title: 12.3.5 تراکنش ها و پیام ها
slug: ethereum-transactions-and-messages
weight: 25505
---
تراکنش ها و پیغام ها

# 12.3.5.1 تراکنش ها در بلاکچین اتریوم

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


در اتریوم تراکنش ها بصورت اتمیک هستند. یعنی ما نمیتوانیم یک تراکنش را به قسمت های دیگری تقسیم و بصورت جدا اجرا و اراعه کنیم. همچنین وضعیت یک تراکنش در اتریوم تنها دو حالت میتوانند داشته باشند. یا انجام شده اند و تغییری برروی ورلد استیت ایجاد کرده اند یا انجام نشده و اثری بر شبکه ندارند.

{{<img url="#" image="../../../assets/img/content/chapter12/ethereum/atomic-transaction.png" alt="atomic">}}

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

{{<img url="#" image="../../../assets/img/content/chapter12/ethereum/ordered-transaction.png" alt="ordered">}}

## 12.3.5.1.1 فیلد های یک تراکنش در اتریوم

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

همانطور که میدانید بیتکوین از lock-time برای مقابله از این حمله استفاده میکند.

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

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

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

در نهایت فیلد دیتا که یک فیلد اختیاری است (در استقرار و صدا زدن قرارداد های هوشمند کاربرد دارد) شامل اطلاعاتی میشود که کانترکت مورد نظر میتواند انهارا بخواند. برای مثال اگر شما بخواهید یک رکورد ENS برای ایپی ادرس خود ثبت کنید در این قسمت از تراکنش خود ایپی و نام ENS خود را در صدا زدن کانترکت ENS قرار میدهید.

همچنین تراکنش هایی که برای ایجاد یک قرارداد هوشمند جدید اجرا میشوند هم بایت کد های قرارداد هوشمند در این فیلد قرار میگیرد.

اضافه کردن دیتا در این بخش مقدار gas را افزایش خواهد داد.

{{<img url="#" image="../../../assets/img/content/chapter12/ethereum/transaction-fields.png" alt="fields">}}

## 12.3.5.1.2 انواع تراکنش در اتریوم

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

{{<img url="#" image="../../../assets/img/content/chapter12/ethereum/types-of-transaction.png" alt="types">}}

این تراکنش ها در فیلد دیتا یک بایت کد معتبر EVM ای را شامل میشوند.
ارسال کننده یا ادرس مقصد این تراکنش ها همیشه یک EOA میباشد که در نهایت مالک ان قرار داد به شمار می اید.

مقصد این تراکنش ها ادرس صفر است.

{{<img url="#" image="../../../assets/img/content/chapter12/ethereum/creating-contracts.png" alt="contracts">}}


دسته دوم تراکنش ها در اتریوم تراکنش های message call است.

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

{{<img url="#" image="../../../assets/img/content/chapter12/ethereum/transaction-updating-contracts.png" alt="message-calls">}}


# 12.3.5.1 پیام ها در بلاکچین اتریوم

<!-- TODO -->

#### مثال و درک بهتر

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

[Ethereum Block explorer](https://etherscan.io/)

#### ارجاعات

1- [Messages and Transactions on Ethereum](https://cryptocurrency.medium.com/messages-and-transactions-on-ethereum-3c4dadfe7986)
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.

0 comments on commit 73a32b6

Please sign in to comment.