پرش به محتوای اصلی

حساب‌های اتریوم

آخرین ویرایش: , Invalid DateTime

حساب اتریوم موجودیتی است شامل موجودی اتر (ETH) که می‌تواند در اتریوم تراکنش ارسال کند. حساب‌های کاربری می‌توانند توسط کاربر کنترل شوند یا به‌عنوان قرارداد هوشمند مورد استفاده قرار بگیرند.

پیش‌نیازها

کارکردن با حساب‌های کاربری برای افراد مبتدی ساده است. برای کمک به فهمیدن این صفحه، بهتر است مقدمه‌ای بر اتریوم را مطالعه کنید.

نوع حساب‌ها

اتریوم، دو نوع اکانت دارد:

  • مالکیت خارجی - توسط فرد خارجی‌ای که کلید خصوصی را داشته باشد کنترل می‌شود
  • قراردادها - یک قرارداد هوشمند که توسط شبکه بکارگرفته می‌شود و توسط کد کنترل می‌شود. درباره‌ی قراردادهای هوشمند بیشتر بدانید

هر دو نوع حساب توانایی این را دارند که:

  • می‌توانند اتر و توکن‌ها را دریافت کنند، نگه دارند، و ارسال کنند
  • با قراردادهای هوشمند بکارگرفته‌شده تعامل کنند

تفاوت‌های کلیدی

مالکیت خارجی

  • ساختن یک حساب هیچ هزینه‌ای ندارد
  • می‌تواند تراکنش‌ها را آغاز کند
  • تراکنش‌های مابین حساب‌هایی با مالکیت خارجی تنها می‌توانند به‌صورت انتقال توکن یا اتر باشند

قرارداد

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

بررسی یک حساب

حساب‌های اتریوم دارای چهار فیلد هستند:

  • 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)

حساب‌های دارای مالکیت خارجی و جفت کلیدها

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

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

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

ساختن حساب

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

یک کلید خصوصی از 64 کاراکتر هگز تشکیل شده است که می‌تواند به وسیله‌ی یک گذرواژه رمزنگاری شود.

مثال:

fffffffffffffffffffffffffffffffebaaedce6af48a03bbfd25e8cd036415f

کلید عمومی با استفاده از الگوریتم امضای دیجیتال منحنی بیضوی(opens in a new tab) از کلید خصوصی ساخته می‌شود. شما با حذف 20 بایت انتهایی هش keccak-256 کلید عمومی خود و افزودن 0X در ابتدای آن یک آدرس عمومی برای حسابتان خواهید داشت.

این مثالی برای ساخت یک حساب در کنسول به وسیله‌ی personal_newAccount از کتابخانه‌ی GETH است

1> personal.newAccount()
2Passphrase:
3Repeat passphrase:
4"0x5e97870f263700f46aa00d967821199b9bc5a120"
5
6> personal.newAccount("h4ck3r")
7"0x3d80b31a78c30fc628f20b2c89d7ddbf6e53cedc"
8

مستندات GETH(opens in a new tab)

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

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

حساب‌های قرارداد

حساب‌های قرارداد نیز دارای یک آدرس حاوی 42 کاراکتر هگز هستند:

مثال:

0x06012c8cf97bead5deae237070f9587f8e7a266d

آدرس قرارداد معمولا وقتی داده می‌شود که قرارداد توسط زنجیره‌ی بلوکی اتریوم گسترش داده می‌شود. آدرس از طریق سازنده‌ی آدرس و عدد تراکنش آن آدرس («Nonce») می‌آید.

یادداشتی درباره‌ی کیف پول‌ها

حساب با کیف پول متفاوت است. یک حساب یک جفت‌کلید برای یک حساب اتریوم تحت مالکیت کاربر است. یک کیف پول یک رابط یا برنامه‌ی کاربردی است که به شما اجازه می‌دهد با حساب اتریومتان ارتباط برقرار کنید.

یک نسخه‌ی آزمایشی تصویری

آستین را مشاهده کنید که توابع هش و جفت کلیدها را توضیح می‌‌دهد.

بیشتر بخوانید

آیا منبعی اجتماعی می‌شناسید که به شما کمک کرده باشد؟ این صفحه را ویرایش و آن را اضافه کنید!

آیا این مقاله مفید بود؟