حسابهای اتریوم
آخرین ویرایش: , Invalid DateTime
حساب اتریوم موجودیتی است شامل موجودی اتر (ETH) که میتواند در اتریوم تراکنش ارسال کند. حسابهای کاربری میتوانند توسط کاربر کنترل شوند یا بهعنوان قرارداد هوشمند مورد استفاده قرار بگیرند.
پیشنیازها
برای کمک به بهتر فهمیدن این صفحه، ایتدا خواندن معرفی اتریوم را توصیه می کنیم.
نوع حسابها
اتریوم، دو نوع اکانت دارد:
- حساب مالکیت خارجی (EOA) - توسط هر کسی که کلید خصوصی را دارد کنترل می شود
- حساب قرارداد - یک قرارداد هوشمند مستقر در شبکه که توسط کد کنترل می شود. دربارهی قراردادهای هوشمند بیشتر بدانید
هر دو نوع حساب توانایی این را دارند که:
- میتوانند اتر و توکنها را دریافت کنند، نگه دارند، و ارسال کنند
- با قراردادهای هوشمند بکارگرفتهشده تعامل کنند
تفاوتهای کلیدی
مالکیت خارجی
- ساختن یک حساب هیچ هزینهای ندارد
- میتواند تراکنشها را آغاز کند
- تراکنشهای مابین حسابهایی با مالکیت خارجی تنها میتوانند بهصورت انتقال توکن یا اتر باشند
- از یک جفت کلید رمزنگاری تشکیل شده است: کلیدهای عمومی و خصوصی که فعالیت های حساب را کنترل می کنند
قرارداد
- سا خت یک قرار داد به علت استفاده شما از حافظهی شبکه دارای هزینه است
- تنها میتوانند در پاسخ به دریافت یک تراکنش یک تراکنش بفرستند
- تراکنشهای مابین یک حساب خارجی و یک حساب قراردادی میتوانند کدی راهاندازی کنند که میتواند کارهای مختلفی انجام دهد، از انتقال توکنها گرفته تا ساخت قرارداد جدید
- حساب های قراردادی کلید خصوصی ندارند. در عوض، آنها با منطق کد قرارداد هوشمند کنترل می شوند
بررسی یک حساب
حسابهای اتریوم دارای چهار فیلد هستند:
Nonce
– شمارنده ای که تعداد تراکنش ارسالی از هر حساب مالکیت-خارجی به شبکه یا تعداد قرارداد های ایجاد شده توسط هر حساب قراردادی را نشان میدهد. برای جلوگیری از حمله اجرای مجدد (reply attack) که در آن تراکنش های امضا شده به طور مکرر به شبکه ارسال و اجرا میشوند، با هر Nonce تنها یک تراکنش میتواند اجرا شود.موجودی
- مقدار wei تحت مالکیت این آدرس wei واحد شمارش اتریوم است و هر اتریوم 10 به توان هجده wei است.codeHash
– هش به کد یک حساب موجود در ماشین مجازی اتریوم (EVM) اشاره دارد. حساب قرارداد دارای قطعه کدهای برنامهنویسیشده است که میتوانند عملیاتهای متفاوتی را انجام دهند. این کد EVM در صورتی که حساب پیام تلفنی دریافت کند اجرا خواهد شد. برخلاف مابقی بخشهای حساب، نمیتوان آن را تغییر داد. تمام قطعات کد موجود تحت هش متناسب خود برای بازیابیهای بعدی در دیتابیس قرار گرفتهاند. مقدار این هش به عنوان codeHash شناخته میشود. برای حسابهای مالکیت خارجی، فیلد این codeHash یک رشته خالی هش شده است.storageRoot
- که بهعنوان حافظهی هش نیز شناخته میشود. یک هش 256 بیتی از گره ریشهای از یک درختوارهی هش Merkle Patricia است که محتویات حافظهی حساب را رمزگذاری میکند (نگاشتی میان مقادیر صحیح 256 بیتی)، که بهصورت یک درختوارهی هش بهعنوان نگاشتی از هش 256 بیتی Keccak از کلیدهای اعداد صحیح 256 بیتی بر روی کلیدهایی رمزنگاریشده است، با RLP با مقادیر صحیح 256 بیتی رمزنگاری میشود. این درختوارهی هش محتویات حافظهی حساب را رمزنگاری میکند، و بهصورت پیشفرض خالی است.
(opens in a new tab)
نمودار برگرفته از Ethereum EVM illustrated(opens in a new tab)
حسابهای دارای مالکیت خارجی و جفت کلیدها
هر حساب به وسیلهی دو کلید ساخته می شود: عمومی و خصوصی. به کمک این دو کلید میتوان ثابت کرد که یک تراکنش از طریق فرستنده بوده و از جعل جلوگیری میکند. کلید خصوصی شما همان چیزی است که برای امضای تراکنش از آن استفاده میکنید، پس اختیار شما بر وجوه مرتبط با حسابتان را تأیید میکند. بنابراین در واقع شما رمزارزی نگهداری نمیکنید، شما کلید خصوصی را نگه میدارید - سرمایهی شما همیشه در دفتر کل اتریوم نگهداری میشود.
و با این کار جلوی عاملان بداندیشی که میخواهند اطلاعات تقلبی بفرستند را میگیرد، زیرا شما میتوانید اثبات کنید چه کسی فرستندهی تراکنش بوده است.