یلو پیپر اتریوم (Ethereum Yellow Paper)
اتریوم دومین رمزارز بازار کریپتوکارنسی و یکی از محبوبترین ها در بین آن هاست. در این مطلب در خصوص یلو پیپر اتریوم (Ethereum Yellow Paper) صحبت خواهیم کرد. باید در نظر داشته باشید که اصطلاحات مربوط به یلو پیپر اتریوم که در این مطلب آمده، بسیار فنی و برگرفته از یلو پیپر اتریوم است؛ اما به طور کلی باید گفت یلوپیپرها برای توصیف مشخصات فنی یک فناوری به کار می رود. در حوزه بلاک چین نیز یلوپیپرها اغلب برای توضیح فناوری هایی است که هنوز به نتیجه نهایی نرسیده و در واقع یک سند بسیار فنی است که این سند هنوز به طور رسمی پذیرفته نشده است.
توسعه دهندگان، اتریوم را به عنوان یک ماشین حالت برجسته میکنند. در علوم کامپیوتر، ماشین حالت به چیزی اطلاق میشود که یک سری ورودیها را میخواند و بر اساس آن ورودیها به حالت جدید (یعنی رایانهها) منتقل میشود. از این رو اتریوم به عنوان یک کامپیوتر غیرمتمرکز جدید توضیح داده می شود که هر کسی می تواند در آن شرکت کند.
یکی از اهداف کلیدی اتریوم تسهیل تراکنشها بین افراد است که در غیر این صورت هیچ ابزاری برای اعتماد به یکدیگر ندارند.
پارادایم بلاک چین
اتریوم به عنوان یک کل می تواند به عنوان یک ماشین حالت مبتنی بر تراکنش در نظر گرفته شود که با یک حالت پیدایش شروع می شود و به صورت تدریجی تراکنش ها را اجرا می کند تا آن را به حالت فعلی تبدیل کند.
از نظر فرمولی، این موضوع را می توان به صورت زیر نشان داد:
σt+1 ≡Υ(σt, T) که در آن
σt = وضعیت فعلی
T = تراکنش
Υ = تابع انتقال حالت اتریوم
این منجر به σt+1 می شود که حالت جهانی بعدی نامیده می شود.
اساساً می توان آن را به عنوان یک ماشین انتقال حالت دید، که در آن تراکنش “T” کمان بین وضعیت فعلی و وضعیت جهانی بعدی است.
تراکنش ها در بلوکها جمعبندی میشوند: بلوکها در یلو پیپر اتریوم با استفاده از هش رمزنگاری بهعنوان وسیله مرجع به هم زنجیر میشوند. این بلوک ها به عنوان یک مجله عمل می کنند و مجموعه ای از تراکنش ها را همراه با بلوک های قبلی و یک شناسه برای وضعیت نهایی ثبت می کنند.
B = بلوکی است که شامل (…, (T0, T1,…)…) یعنی یک سری تراکنش است.
تراکنش ها با انگیزه هایی برای استخراج گره ها مشخص می شوند. این انگیزه به عنوان یک تابع انتقال حالت انجام می شود و به یک حساب نامزد شده (به عنوان مثال ماینر) ارزش اضافه می کند.
ماینرها در ماینینگ شرکت می کنند که فرآیند تقویت یک سری از تراکنش ها (یک بلوک) بر روی هر بلوک رقیب بالقوه دیگر از طریق یک اثبات امن رمزنگاری به نام اثبات کار (POW) است. این را می توان به طور رسمی به ;
B ≡ (…, (T0, T1, …), …)
Π(σ، B) ≡ Ω(B، Υ(Υ(σ، T0)، T1)…)
جایی که:
Ω = تابع انتقال حالت نهایی سازی بلوک است (عملی که به یک طرف نامزد شده پاداش می دهد)
B = بلوکی است که شامل یک سری تراکنش بین برخی از اجزای دیگر است.
Π = تابع انتقال حالت در سطح بلوک است.
این مبنایی است که پارادایم بلاک چین را شکل می دهد، مدلی که نه تنها ستون فقرات اتریوم بلکه تمام سیستم های تراکنش مبتنی بر اجماع غیرمتمرکز تا به امروز است.
ارزش: موضوع دیگری که در یلو پیپر اتریوم صحبت شده است، ارزش است. شبکه راهی برای محاسبات و انتقال ارزش به واحد پول خود طراحی کرده است که ETH نام دارد. این مقدار را می توان به واحدها تقسیم کرد که Wei کوچکترین و اتر (ETH) بالاترین است.
تاریخچه ای از تراکنش ها در بلوک، از ریشه (بلوک پیدایش) تا برگ (بلوک حاوی آخرین تراکنش) از طریق ساختار درختی به نام زنجیره بلوک وجود دارد.
بلاک چین باید منبعی از حقیقت را حفظ کند که همه باید آن را بپذیرند، در غیر این صورت، هیچ کس به سیستم اعتماد نخواهد کرد و هدف آن را شکست می دهد. یک زنجیره متعارف وجود دارد که همه آن را به عنوان زنجیره اصلی میپذیرند، زنجیره صحیح که شامل تراکنشهای یکسان یا سازگار است.
از داشتن چندین حالت (یا زنجیره، مسیر) باید اجتناب شود زیرا تشخیص اینکه کدام حالت صحیح و معتبر است تقریباً غیرممکن می شود. در سناریویی که در مورد اینکه کدام زنجیره صحیح است اختلاف نظر وجود دارد، یک فورک رخ می دهد. ما معمولاً می خواهیم از فورک ها اجتناب کنیم زیرا آنها سیستم را مختل می کنند.
هنگامی که یک فورک اتفاق می افتد، برای ایجاد اجماع در مورد اینکه بلوک متعارف کدام است (یعنی بلوک صحیح یا واقعی)، از طرحی به نام پروتکل GHOST استفاده می شود که مخفف Greedy Heaviest Observed Subtree است. این پروتکل می گوید ما باید مسیری را انتخاب کنیم که بیشترین محاسبات روی آن انجام شده است.
کنوانسیون ها
تعدادی قرارداد تایپی برای نماد رسمی مورد استفاده در یلو پیپر اتریوم وجود دارد که برخی از آنها عبارتند از:
حالت جهانی: σ
حالت ماشین: μ
تابع انتقال حالت اتریوم: Υ
تابع هزینه: C مانند تابع هزینه CSSTORE برای عملیات ذخیره سازی SSTORE.
تابع هش Keccak (گاهی اوقات SHA-3): یک تابع رمزنگاری همه کاره است که برای احراز هویت، رمزگذاری و تولید اعداد شبه تصادفی استفاده می شود. قبل از اینکه بتوان Keccak 256 هش ساختارهای داده را محاسبه کرد، باید آنها را با استفاده از رمزگذاری پیشوند طول بازگشتی (RLP) به رشته های بیت تبدیل کرد.
Tuples: یک لیست ترتیبی محدود از عناصر است. معمولاً Tn را به عنوان یک لیست متوالی از n عنصر در یلو پیپر اتریوم را نشان می دهند، که در آن n یک عدد صحیح غیر منفی است. همچنین می تواند یک چندتایی خالی وجود داشته باشد که با 0-tuple مشخص می شود.
Tn همچنین برای نشان دادن Transaction nonce یعنی لیست تراکنش ها استفاده می شود.
δ تعداد موارد مورد نیاز در پشته برای یک عملیات معین در یلو پیپر اتریوم است.
اسکالرها و بایت با اندازه ثابت: اعداد صحیح غیر منفی N فرض میشوند. مجموعه تمام دنبالههای بایت B است. اگر چنین مجموعهای از دنبالهها به طول خاصی محدود شود، با یک زیرنویس نشان داده میشود (یعنی B32). نشان دهنده مجموعه ای از دنباله های بایت به طول 32).
بلوک ها، حالت ها و تراکنش ها
حالت جهانی (وضعیت) نقشه برداری بین آدرس ها (شناسههای 160 بیتی) و وضعیتهای حساب (یک ساختار دادهای که به صورت سریال RLP یعنی پیشوند طول بازگشتی ساخته شده) است که در یلو پیپر اتریوم مشخص شده است.
فرض بر این است که پیاده سازی این نگاشت را در درخت مرکل پاتریشیا اصلاح شده حفظ می کند.
Merkle Patricia Tree (در غیر این صورت درخت هش باینری نامیده می شود) یکی از ساختارهای داده کلیدی برای لایه ذخیره سازی اتریوم است. اساساً این یک نگاشت کلید-مقدار است. این به ما امکان می دهد یکپارچگی داده ها را تأیید کنیم.
میتوان هش ریشه Merkle را با تابع Hash محاسبه کرد، به این ترتیب که اگر هر کلید-مقداری بروزرسانی میشد، هش ریشه Merkle tree متفاوت بود. هش های ردیف پایین به عنوان “برگ”، هش میانی به عنوان “شاخه” و هش در بالا به عنوان “ریشه” نامیده می شود.
هش 0-0 و 0-1 به ترتیب مقادیر هش بلوک های داده L1 و L2 هستند و هش 0 هش ترکیب هش های 0-0 و 0-1 است.
حالت حساب
دو نوع حساب در یلو پیپر اتریوم وجود دارد. حساب های متعلق به خارجی (یعنی کیف پول) و حساب های قراردادی.
حسابهای دارای مالکیت خارجی (EOA) میتوانند برای اجرای یک تراکنش/کد با استفاده از کلید خصوصی آن به سایر EOA یا یک حساب قراردادی (CA) پیام ارسال کنند. پیامهای ارسال شده بین دو EOA صرفاً یک انتقال ارزش هستند (یعنی ارسال اتر به یکدیگر)؛ اما پیامی که از یک EOA به یک حساب قرارداد ارسال میشود، کد را در CA فعال میکند. (مانند ایجاد قراردادهای جدید، توکنهای ضرب شده، توکنهای انتقال و غیره)
همچنین، حسابهای قراردادی نمیتوانند به تنهایی تراکنشها را آغاز کنند، باید توسط یک EOA آغاز شود. در عوض، CA تراکنش های آغاز شده توسط EOAs را اخراج می کند.
حالت حساب σ[a] در یلو پیپر اتریوم وجود دارد که از چهار فیلد زیر تشکیل شده است.
نانس: در مورد یک حساب تحت مالکیت خارجی، این عدد، تعداد تراکنشهای ارسال شده از آدرس مبدأ، یا در مورد حسابهای دارای کد مرتبط (یعنی حساب قرارداد)، تعداد قراردادهای ایجاد شده توسط این حساب را فهرست میکند.
تعادل: تعداد Wei متعلق به این آدرس.
storageRoot: هش گره ریشه امتحان ذخیره سازی حساب. این به طور پیش فرض خالی است.
codeHash: هش کد EVM این حساب، برای حساب های قراردادی، اما برای EOA ها، این یک رشته خالی خواهد بود.
تراکنش یک دستورالعمل تک رمزنگاری امضا شده در یلو پیپر اتریوم است که توسط یک بازیگر خارجی در محدوده اتریوم ساخته شده است، بازیگری که فرض می شود انسان است اما از ابزارهای نرم افزاری در ساخت و انتشار دستورالعمل استفاده می کند. در اتریوم، به یاد داشته باشید که گفتیم، تراکنشها چیزی هستند که وضعیت را از حالت فعلی به حالت بعدی تغییر میدهند.
دو نوع تراکنش در یلو پیپر اتریوم وجود دارد: تراکنشهایی که منجر به تماسهای پیامی میشوند و آنهایی که منجر به ایجاد حسابهای جدید با کد مرتبط میشوند. (در غیر این صورت به عنوان ایجاد قرارداد شناخته میشود)
بلوک
بلوک در یلو پیپر اتریوم مجموعهای از اطلاعات مرتبط است که شامل هدر بلوک و بدنه بلوک است. (یعنی اطلاعاتی در مورد مجموعه تراکنشهای موجود در بلوک و مجموعهای از هدرهای بلوک دیگر برای Ommers بلوک فعلی)
Ommer بلوکی است که والد آن برابر با والد بلوک فعلی است.
هنگام ماینینگ، ماینرهای زیادی وجود دارند که سعی می کنند مجموعه ای از تراکنش ها را همزمان استخراج کنند. از آنجایی که زمان استخراج بلوک بسیار کوتاه است (حدود 15 ثانیه در مورد اتریوم)، این احتمال وجود دارد که بیش از یک بلوک در یک بازه زمانی بسیار کوتاه استخراج شود. بلوک استخراج شده ابتدا به زنجیره اصلی اضافه می شود، اما تلاش ماینری که بلوک دیگر را استخراج کرده است، نادیده گرفته نمی شود. این بلوکهای دیگر «بلوکهای یتیم» نامیده میشوند.
هدف Ommers کمک به ماینرها برای گنجاندن این بلوک های یتیم در زنجیره اصلی است. Ommerهایی که ماینرها شامل می شوند باید “معتبر” باشند، به این معنی که در نسل ششم یا کوچکتر از بلوک فعلی باشند. پس از شش فرزند، دیگر نمی توان به بلاک یتیم کهنه اشاره کرد.
ماینرها برای بلوک های Ommer پاداش های کمتری نسبت به بلوک های کامل دریافت می کنند.
هدر بلوک در یلو پیپر اتریوم شامل موارد زیر است:
- parentHash: هش هدر بلوک والد.
- ommersHash: هش لیست Ommers بلوک فعلی.
- ذینفع: آدرس حسابی که هزینه استخراج این بلوک را دریافت می کند.
- stateRoot: هش گره ریشه ای از حالت trye، پس از اجرا و نهایی شدن تراکنش ها.
- transactionsRoot: هش گره ریشه tree، که شامل تمام تراکنش های فهرست شده در بلوک است
- receiptsRoot: هر زمان که یک تراکنش انجام شود، یک رسید تراکنش ایجاد می شود. این هش گره ریشه آزمون رسید تراکنش است.
- logsBloom: یک فیلتر شکوفه (ساختار داده) در یلو پیپر اتریوم است که از اطلاعات گزارش تولید شده در تراکنش های موجود در بلوک تشکیل شده است.
- دشواری: سطح سختی این بلوک، این معیاری است که نشان می دهد استخراج بلوک چقدر سخت بوده است. سطح دشواری همیشه بر اساس زمان استخراج بلوک قبلی در حال تغییر است.
- تعداد: تعداد بلوک های اجدادی. شروع از صفر، با بلوک پیدایش و افزایش یک بلوک با هر بلوک بعدی.
- gasLimit: حد فعلی مصرف گس در هر بلوک
- gasUsed: مجموع گس مورد استفاده در معاملات در بلوک یلو پیپر اتریوم است.
- timestamp: مهر زمانی یونیکس شروع این بلوک.
- extraData: این مورد اطلاعات اضافی مربوط به این بلوک است. هنگامی که یک ماینر در حال ایجاد بلوک است، می تواند هر چیزی را در این زمینه اضافه کند.
- mixHash: هشی که همراه با عدد نانس ثابت می کند که مقدار کافی محاسبات روی این بلوک انجام شده است. برای تأیید اینکه یک بلوک به درستی استخراج شده است استفاده می شود.
- nonce: یک هش، هنگامی که با mixhash ترکیب می شود ثابت می کند که مقدار کافی از محاسبات روی این بلوک در یلو پیپر اتریوم انجام شده است.
هر هدر بلوک یلو پیپر اتریوم شامل سه ساختار آزمایشی برای:
- state (stateRoot) که عبارت state trye است: جایی است که تمام اطلاعات مربوط به حساب ها در آن ذخیره می شود و شما می توانید با پرس و جو اطلاعات را بازیابی کنید.
- تراکنش ها (transactionsRoot) که یک تراکنش است: تراکنش ها را در یلو پیپر اتریوم ثبت می کند.
- دریافتها (receiptsRoot)، که آزمایش دریافت تراکنش است: دریافتها (نتیجه) تراکنشها را ثبت میکند. رسید نتیجه تراکنش است که با موفقیت انجام شده است.
اعتبار کل نگر: ما میتوانیم اعتبار یک بلوک در یلو پیپر اتریوم را تنها در صورتی تأیید کنیم که شرایط متعددی را برآورده کند: باید از نظر داخلی با هشهای بلوک Ommer و تراکنش و تراکنشهای داده شده سازگار باشد. Hr of Parent، Hr، Ho، Ht، He، Hb.
برای مقایسه شبکه هارمونی و اتریوم، مقاله مربوطه را مطالعه فرمایید.
گس و پرداخت
تمام محاسبات قابل برنامه ریزی در اتریوم مشمول هزینه (گس) می شود. گس برای شبکه اتریوم ضروری است. این هزینه به عنوان سوخت شبکه اتریوم است که به آن اجازه می دهد تا کار کند. (به همان ترتیبی که یک ماشین برای کار کردن به سوخت بنزین نیاز دارد).
در اجرای یک عملیات در یلو پیپر اتریوم، هزینه گس یک نمایش محاسباتی از انجام عملیات (اندازه گیری شده در زمان) و مقدار ذخیره دائمی مورد نیاز آن عملیات (هنگام نوشتن در انبار) است.
gasLimit: هر تراکنش دارای مقدار مشخصی گس است. حداکثر مقدار گسی است که فرستنده حاضر است برای انجام معامله بپردازد.
gasPrice: این مقداری است که فرستنده تراکنش حاضر است به ازای هر واحد گس بپردازد.
Out of gas یا بدون گس: این مورد زمانی اتفاق می افتد که گس لازم برای انجام معامله وجود نداشته باشد.
ماینینگ: ماینینگ فرآیند ایجاد بلوکی از تراکنشها برای اضافه شدن به بلاک چین اتریوم است. ماینینگ فرآیندی پرهزینه است و اگر ماینرها در ازای ماینینگ چیزی دریافت نمی کردند، هیچ کس آن را انجام نمی داد. بنابراین، یک ماینر از تمام تراکنش های موجود در بلوک کارمزد دریافت می کند. ماینرها تمایل دارند حداقل کارمزد خود را تعیین و تبلیغ کنند، بنابراین می توانند بلوک های استخراجی را که حداقل کارمزد آنها را برآورده نمی کنند رد کنند.
اجرای تراکنش
اجرای یک تراکنش پیچیدهترین بخش پروتکل اتریوم است: تابع حالت، Y را تعریف میکند. فرض بر این است که هر تراکنش اجرا شده ابتدا آزمایشهای اولیه اعتبار ذاتی را پشت سر میگذارد. این شامل؛
- تراکنش یک RLP خوب شکل گرفته است، بدون بایت های بعدی.
- امضای معامله معتبر است.
- nonce تراکنش معتبر است (معادل nonce فعلی حساب فرستنده).
- حد گس کمتر از گس ذاتی مورد استفاده در معامله نیست.
- موجودی حساب فرستنده حداقل شامل هزینه مورد نیاز در پرداخت پیشپرداخت.
همچنین قاعده ای وجود دارد که به عنوان بخشی از آزمون های اعتبار ذاتی ذکر نشده است. بیان میکند که «اگر با گنجاندن آن، سقف گس کل معاملات در بلوک از حد گس بلوک تجاوز نکند، تراکنش نباید در یک بلوک گنجانده شود».
این یک نمونه راهبردی عالی توسط Preethi Kasirenddy است.
- هزینه از پیش تعریف شده گس برای اجرای معامله.
- کارمزد گس برای داده ارسال شده همراه با تراکنش (4 گس برای هر بایت داده یا کد برابر با صفر و گس برای هر بایت داده یا کد غیر صفر است.)
- اگر معامله قرارداد آفرین باشد 32000 گس اضافی.
- موجودی حساب فرستنده باید حداقل شامل هزینه گس ” upfront یا اولیه” مورد استفاده برای اجرا باشد. برای محاسبه گس اولیه، قیمت گس معامله در gasLimit معامله ضرب می شود تا حداکثر هزینه گس تعیین شود. سپس به کل ارزشی که از فرستنده به گیرنده منتقل می شود اضافه می شود.
اگر تراکنش در یلو پیپر اتریوم، تمام شرایط بالا برای اعتبار را برآورده کند، به مرحله بعدی می رویم.
ابتدا، هزینه اولیه اجرا از موجودی فرستنده کسر می شود و عدم وجود حساب فرستنده را یک واحد افزایش می دهد تا تراکنش جاری را محاسبه کند. در این مرحله، میتوانیم گس باقیمانده را به عنوان حد کل گس برای معامله منهای گس ذاتی استفاده شده محاسبه کنیم.
در مرحله بعد، تراکنش شروع به اجرا می کند. در طول اجرای یک تراکنش، اتریوم “حالت فرعی” را پیگیری می کند. این حالت فرعی راهی برای ثبت اطلاعات جمعآوریشده در طول تراکنش است که بلافاصله پس از تکمیل تراکنش بر اساس آن عمل میشود. به طور خاص، شامل:
- مجموعه خود تخریبی: مجموعه ای از حساب ها (در صورت وجود) که پس از تکمیل تراکنش کنار گذاشته می شوند.
- Log series: نقاط بازرسی بایگانی شده و قابل نمایه سازی اجرای کد ماشین مجازی.
- موجودی بازپرداخت: مبلغی که باید پس از انجام معامله به حساب فرستنده بازپرداخت شود. ذخیره سازی در اتریوم هزینه دارد، اتریوم با استفاده از شمارنده بازپرداخت این موضوع را پیگیری می کند. شمارنده بازپرداخت از صفر شروع می شود و هر بار که قرارداد چیزی را در فضای ذخیره حذف می کند، افزایش می یابد.
سپس، محاسبات مختلف مورد نیاز تراکنش یلو پیپر اتریوم، پردازش میشوند.
برای اطلاع از تاثیر مرج اتریوم بر NFT ها بر روی لینک کلیک کنید.
هنگامی که تمام مراحل مورد نیاز تراکنش پردازش شد و با فرض عدم وجود حالت نامعتبر، وضعیت با تعیین مقدار گس استفاده نشده برای بازپرداخت به فرستنده نهایی می شود. علاوه بر گس استفاده نشده، مقداری کمک هزینه از “موجودی بازپرداخت” که در بالا توضیح داده شد به فرستنده بازپرداخت می شود.
پس از بازپرداخت به فرستنده:
- اتر مربوط به گس به ماینر داده می شود.
- گس مورد استفاده در تراکنش به شمارنده گس بلوک اضافه می شود. (که کل گس مصرف شده توسط تمام تراکنش های بلوک را ردیابی می کند و هنگام اعتبارسنجی یک بلوک مفید است.)
- تمام حساب های موجود در مجموعه خود تخریبی (در صورت وجود) حذف می شوند.
در نهایت، ما با وضعیت جدید و مجموعهای از گزارشهای ایجاد شده توسط تراکنش باقی میمانیم.
ایجاد قرارداد
به یاد داشته باشید که ما دو نوع حساب در یلو پیپر اتریوم داریم، EOAs و CA. هدف از تراکنش در حساب قرارداد ایجاد قراردادهای جدید است. تعدادی پارامتر ذاتی هنگام ایجاد حساب کاربری استفاده می شود.
- فرستنده
- تراکنش اصلی
- گس موجود
- قیمت گس
- endowment
- آرایش بایت با طول دلخواه
- کد اولیه EVM
- عمق والد پیام-تماس/قرارداد-ایجاد
- salt برای آدرس حساب جدید و در نهایت اجازه ایجاد تغییرات در حالت.
اجرای کد باعث تخلیه گس می شود و گس نباید قبل از کامل شدن اجرا به زیر صفر برسد. اگر گس قبل از اجرا به زیر صفر برسد، تراکنش قبل از اینکه کد به حالت توقف طبیعی برسد به دلیل وضعیت خارج از گس (OOG) خارج می شود. اگر اجرا به شکلی استثنایی متوقف شود (بهعنوان مثال به دلیل اتمام منبع گس، جریان زیر دسته، مقصد پرش نامعتبر یا دستورالعمل نامعتبر)، پس از آن هیچ گسی به تماسگیرنده (یعنی فرستنده) بازپرداخت نمیشود و وضعیت به نقطه مورد نظر برمیگردد. بلافاصله قبل از انتقال تعادل.
در شرایطی که همه چیز خوب پیش می رود و کد اجرا می شود (یعنی قراردادها ایجاد می شوند)، هر گس استفاده نشده باقیمانده به فرستنده اصلی تراکنش بازپرداخت می شود و حالت تغییر یافته مجاز است ادامه یابد.
توجه داشته باشید که مقصود این است که نتیجه یا یک قرارداد جدید با موفقیت ایجاد شده با وقف آن باشد یا هیچ قرارداد جدیدی بدون انتقال ارزش باشد.
پیام تماس
برای اجرای یک تماس پیام، پارامترهای مختلفی مانند ایجاد قرارداد با چند استثنا در یلو پیپر اتریوم مورد نیاز است.
- فرستنده
- مبتکر معامله
- گیرندگان
- حسابی که قرار است کد آن اجرا شود، معمولاً همان گیرنده
- گس موجود
- ارزش و قیمت گس همراه با یک آرایه بایتی دلخواه
- داده های ورودی تماس
- عمق فعلی دسته ایجاد پیام-تماس/قرارداد
- اجازه ایجاد تغییرات در حالت
مدل اجرا
مدل اجرا در یلو پیپر اتریوم به چگونگی اجرای یک تراکنش در ماشین مجازی (VM) می پردازد. مشخص می کند که چگونه وضعیت سیستم با توجه به یک سری دستورالعمل بایت کد و تعداد کمی از داده های محیطی تغییر می کند. این از طریق یک مدل رسمی از یک ماشین حالت مجازی که به عنوان ماشین مجازی اتریوم (EVM) شناخته می شود، مشخص می شود.
اصول اولیه: EVM یک معماری ساده مبتنی بر دسته در یلو پیپر اتریوم است. ماشین مجازی اتریوم محیط زمان اجرا برای قراردادهای هوشمند در اتریوم است. کد EVM بر روی ماشین مجازی اتریوم (EVM) اجرا می شود. EVM یک ماشین مجازی کامل تورینگ است که با دیگر ماشینهای کامل تورینگ تفاوت دارد و ذاتاً توسط گس متصل است. یعنی تمام محاسبات انجام شده در یلو پیپر اتریوم محدود به مقدار گس ارائه شده یا موجود است.
اندازه کلمه دستگاه (و در نتیجه اندازه اقلام دسته) 256 بیت است. مدل حافظه یک آرایش بایتی ساده با آدرس کلمه است. حداکثر اندازه پشته 1024 است. همچنین یک مدل ذخیره سازی که به جای بایت، یک کلمه است. برخلاف حافظه که فرار است، ذخیره سازی غیر فرار است و به عنوان بخشی از وضعیت سیستم حفظ می شود و هر دو به خوبی در ابتدا به عنوان صفر تعریف شده اند.
مانند مورد استثناء out-of-gas، ماشین تغییرات حالت را دست نخورده باقی نمی گذارد. در عوض، دستگاه فوراً متوقف می شود و موضوع را به عامل اجرا (یا پردازنده تراکنش یا به صورت بازگشتی، محیط اجرا) گزارش می دهد که به طور جداگانه با آن برخورد خواهد کرد.
بررسی اجمالی هزینه ها: کارمزدها (بر حسب گس) تحت سه شرایط متمایز دریافت می شوند که هر سه به عنوان پیش نیازهای اجرای یک عملیات هستند. اولین و رایج ترین کارمزد ذاتی برای محاسبه عملیات در یلو پیپر اتریوم است. دومین مورد، گس ممکن است به منظور شکل دادن به پرداخت برای یک تماس پیام فرعی یا ایجاد قرارداد کسر شود. این بخشی از پرداخت برای CREATE، CREATE2، CALL و CALL CODE است. در نهایت، ممکن است به دلیل افزایش استفاده از حافظه، گس پرداخت شود.
برای ایجاد انگیزه برای به حداقل رساندن استفاده از ذخیره سازی (که مستقیماً با یک پایگاه داده بزرگتر در همه گره ها مطابقت دارد)، هزینه اجرا برای عملیاتی که یک ورودی در ذخیره سازی را پاک می کند، نه تنها لغو نمی شود، بلکه بازپرداخت واجد شرایط نیز داده می شود. در واقع، این بازپرداخت به طور موثر از قبل پرداخت می شود زیرا استفاده اولیه از یک مکان ذخیره سازی به طور قابل توجهی بیشتر از استفاده معمولی هزینه دارد.
بلوک نهایی
نهایی شدن بلوک در یلو پیپر اتریوم می تواند به معنای دو چیز متفاوت باشد: اگر بلوک جدید باشد یا یک بلوک موجود باشد. اگر یک بلوک جدید باشد، به معنای فرآیند مورد نیاز برای استخراج بلوک است. اگر بلوک موجود باشد، به معنای فرآیند اعتبارسنجی بلوک است.
فرآیند نهایی کردن یک بلوک در یلو پیپر اتریوم شامل چهار مرحله است:
- اعتبارسنجی، (یا، در صورت استخراج، تعیین) ommers.
BH و PH به ترتیب بلوکها و بلوک اصلی هدر H مربوطه هستند. (یعنی هر بلوک Ommer باید معتبر باشد و در نسل ششم بلوک فعلی باشد)
- اعتبارسنجی (یا در صورت استخراج، تعیین) تراکنش ها؛
گس مورد استفاده باید صادقانه با تراکنش های فهرست شده مطابقت داشته باشد. مجموع گس مصرفی در بلوک باید برابر با گس انباشته شده طبق معامله نهایی باشد.
- اعمال پاداش؛
اعمال پاداش برای یک بلوک شامل افزایش مانده حساب های آدرس ذینفع بلوک و هر Ommer به میزان معینی است. همچنین برای هر Ommer، به ذینفع بلوک فعلی 1/32 اضافی از پاداش بلوک فعلی تعلق می گیرد.
- تایید وضعیت (یا در صورت استخراج، محاسبه یک حالت معتبر) و مسدود کردن nonce.
تابع انتقال بلوک که یک بلوک ناقص B را به یک بلوک کامل B1 نگاشت می کند. اطمینان حاصل کنید که تمام تراکنش ها و تغییرات حالت حاصل اعمال می شوند و بلوک جدید را به عنوان وضعیت پس از اعمال پاداش بلوک تعریف کنید.
اثبات کار استخراج: استخراج (PoW) به عنوان یک غیر رمزنگاری امن وجود دارد که فراتر از شک منطقی ثابت میکند که مقدار خاصی از محاسبات برای تعیین مقدار توکن n صرف شده است. از آنجایی که استخراج بلوکهای جدید با یک پاداش همراه است، اثبات کار نه تنها به عنوان روشی برای اطمینان از اینکه بلاک چین در آینده متعارف باقی خواهد ماند بلکه به عنوان یک مکانیسم توزیع ثروت نیز عمل میکند.
به هر دو دلیل، دو هدف مهم از عملکرد اثبات کار وجود دارد.
- اولاً، باید تا حد امکان برای افراد زیادی در دسترس باشد. شرکت برای همه آزاد است، استفاده از سخت افزارهای تخصصی و غیر معمول باید به حداقل برسد.
- ثانیاً، نباید برای یک طرف واحد (یعنی ماینر) سودهای فوق خطی به دست آورد.
ماینینگ PoW هم به عنوان مکانیزم امنیتی و هم به عنوان مکانیزم توزیع ثروت عمل می کند.
در یلو پیپر اتریوم، موضوعاتی مانند اجرای قراردادها و مسیرهای آینده اکوسیستم اتریوم نیز وجود دارد.