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

 

ارزجو : راستی اتریوم چیست؟ اتریوم اصولاً یک دیتابیس عمومی است که تراکنش‌های دیجیتال را به طور دائمی ثبت می‌کند. نکته مهم اینکه، برای نگهداری و تأمین امنیت این دیتابیس نیازی به هیچگونه ارگان مرکزی نیست. این دیتابیس در عوض به مثابه یک سیستم معامله‌ای «عاری از اعتماد» فعالیت می‌کند ــ چارچوبی که در آن افراد می‌توانند معاملات هم‌نوع با هم‌نوع را انجام دهند بدون آنکه لازم باشد به یک شخص ثالث یا به یکدیگر اعتماد کنند.

 

هنوز هم برایتان نامفهوم است؟ این گزارش برای همین نوشته شده است. هدف من تشریح این موضوع است که اتریوم از لحاظ فنی چگونه عمل می‌کند بدون آنکه نیازی باشد به معادلات یا فرمول‌های پیچیده ریاضی رجوع کنم. حتی اگر برنامه‌نویس نیستید، امیدوارم مطالعه این گزارش بتواند شما را کمی بیشتر با این فناوری آشنا سازد. اگر بعضی از قسمت‌ها جنبه فنی دارند و درک آنها آسان نیست به هیچ ‌وجه دلسرد نشوید. نیازی نیست تک تک جزئیات را متوجه شوید. توصیه می‌کنیم صرفاً بر روی درک و شناخت کلی موضوعات متمرکز شوید. پس گذارید کار خود را شروع کنیم.

 

در قسمت دوم این مقاله به به بررسی حساب‌ها و حالت‌های گوناگون آن و مباحثی نظیر تراکنش‌ها و بلوک‌ها پرداخته شد. در قسمت نهایی این مقاله به بررسی مدل‌های اجرا، بلوک‌ها و در نهایت مکانیسم استخراج خواهیم پرداخت.

 

خلق قرارداد

قبلاً گفتیم که در اتریوم دو نوع حساب وجود دارد: حساب‌های قراردادی و حساب‌های دارای مالکیت بیرونی. هنگامی که می‌گوییم یک معامله «خلق کننده قرارداد» است، منظور ما آن است که هدف از معامله خلق یک حساب قراردادی جدید است.

برای خلق یک حساب قراردادی جدید، ما ابتدا با استفاده از یک فرمول ویژه آدرس حساب جدید را اعلام می‌کنیم:

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

هنگامی که یک حساب را آغاز می‌کنیم عملاً می‌توانیم آن را با استفاده از کد آینیت (init code) که به همراه تراکنش فرستاده شده خلق کنیم (درباره کد آینیت رجوع شود به بخش «تراکنش و پیام‌ها» در همین مقاله). آنچه که در جریان اجرای کد آینیت اتفاق می‌افتد متغیر است. بسته به سازنده قرارداد، فضای ذخیره‌سازی حساب ممکن است به‌روزرسانی شود، حساب‌های قراردادی دیگر خلق شوند، دیگر تماس‌های پیامی انجام گیرند، و غیره.

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

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

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

اتریوم

تماس‌های پیامی

اجرای یک تماس پیامی مشابه خلق قرارداد است و فقط چند تفاوت کوچک با آن دارد.

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

اگر تماس پیامی به خاطر تمام شدن سوخت یا نامعتبر بودن تراکنش (سرریز استک (stack overflow)، مقصد نامعتبر جهش، یا دستورالعمل نامعتبر) از حالت اجرا خارج شود، سوخت استفاده شده به تماس‌گیرنده بازگردانده نمی‌شود و وضعیت به حالت قبل از انتقال موجودی برمی‌گردد.

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

مدل اجرا

تا به اینجای کار با مجموعه گام‌هایی آشنا شدیم که در راستای اجرای تراکنش از ابتدا تا انتها باید برداشته شوند. اکنون به این مسئله می‌پردازیم که تراکنش چگونه در درون ماشین مجازی اتریوم انجام می‌گیرد.

آن بخش از پروتکل که معامله را پردازش می‌کند ماشین مجازی اتریوم (EVM) نامیده می‌شود.

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


بعلاوه، ماشین مجازی اتریوم از یک ساختار استک ‌محور برخوردار است. ماشین استک (stack machine) یک رایانه است که برای نگهداری مقادیر موقت از یک استک که زودتر از همه وارد و زودتر از همه خارج می‌شود بهره می‌گیرد.

اندازه هر استک در ماشین مجازی اتریوم ۲۵۶ بیت است و اندازه حداکثری هر استک نیز ۱۰۲۴ بیت است.

ماشین مجازی اتریوم دارای یک حافظه است که آیتم‌ها در آن در قالب آرایه‌های بایتی واژگانی ذخیره‌سازی می‌شوند. حافظه تغییرپذیر است و دائمی نیست.

ماشین مجازی اتریوم همچنین دارای فضای ذخیره‌سازی است. برخلاف حافظه، فضای ذخیره‌سازی غیرمتغیر است و بخشی از حالت سیستم به شمار می‌رود. ماشین مجازی اتریوم کد برنامه را به صورت جداگانه در یک رام (ROM) مجازی که تنها از طریق دستورات مشخص قابل دسترسی است، ذخیره می‌کند. بدین ترتیب، ماشین مجازی اتریوم از لحاظ ذخیره کد برنامه در حافظه یا فضای ذخیره‌سازی با معماری فون نویمان (von Neumann) فرق دارد.

ماشین مجازی اتریوم همچنین زبان مختص خود را داراست که «بایت کد ماشین مجازی اتریوم» نام دارد. هنگامی که یک برنامه‌نویس اقدام به نگارش یک قرارداد هوشمند قابل اجرا بر روی اتریوم می‌کند، کد مذکور معمولاً به یک زبان سطح بالا نظیر سالیدیتی (Solidity) نوشته می‌شود. این کد سپس به بایت کد ماشین مجازی اتریوم تبدیل می‌شد تا برای ماشین مجازی اتریوم قابل فهم باشد.

اکنون به سراغ اجرا می‌رویم.

قبل از اجرای یک محاسبه مشخص، پردازنده اطمینان حاصل می‌کند که اطلاعات زیر در دسترس قرار دارند و معتبر هستند:

  • حالت سیستم
  • سوخت باقیمانده برای محاسبه
  • آدرس حسابی که صاحب کد در حال اجرای آن است
  • آدرس فرستنده تراکنش که توسط فرآیند اجرا ایجاد شده
  • آدرس حسابی که موجب اجرای کد شده (که می‌تواند متفاوت از فرستنده باشد)
  • قیمت سوخت تراکنشی که آغازگر فرآیند اجرا بوده
  • داده‌های ورودی این فرآیند اجرا
  • ارزش (بر حسب «وی») که در قالب بخشی از فرآیند کنونی اجرا به این حساب منتقل شده
  • کد ماشین که قرار است اجرا شود
  • سربرگ بلوک مربوط به بلوک فعلی
  • عمق تماس پیامی یا استک خلق قرارداد

در آغاز فرآیند اجرا، حافظه و استک خالی هستند و شمارشگر برنامه نیز صفر است:

PC: 0 STACK: [] MEM: [], STORAGE: {}

ماشین مجازی اتریوم سپس تراکنش را به صورت بازگشت‌پذیر به اجرا می‌گذارد و حالت سیستم و حالت ماشین را برای هر لوپ محاسبه می‌کند. حالت ماشین همان حالت جهانی اتریوم است. حالت ماشین متشکل از موارد زیر است:

  • سوخت موجود
  • شمارشگر برنامه
  • محتوای حافظه
  • تعداد واژه‌ها در حافظه
  • محتوای استک

آیتم‌های استک به سمت چپ مجموعه افزوده یا از آن قسمت حذف می‌شوند.

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

در انتهای هر لوپ سه احتمال وجود دارد:

  1. ماشین به یک حالت استثنا (سوخت ناکافی، دستورات نامعتبر، آیتم‌های استک ناکافی، سرریز استک بالای ۱۰۲۴، مقصد نامعتبر جهش، و غیره) می‌رسد و در نتیجه باید متوقف شود که در نتیجه هرگونه تغییر کنار گذاشته می‌شود.
  2. توالی پردازش ادامه می‌یابد و به سراغ لوپ بعدی می‌رود
  3. ماشین به صورت کنترل شده متوقف می‌شود (پایان فرآیند اجرا)

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

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

بلوک چگونه نهایی می‌شود

در نهایت، بگذارید ببینیم یک بلوک حاوی معاملات فراوان چگونه نهایی می‌شود.

وقتی می‌گوییم «نهایی» می‌شود، این می‌تواند بسته به جدید بودن یا جدید نبودن بلوک دو معنی متفاوت داشته باشد. اگر بلوک جدید باشد، ما در واقع به فرآیندی اشاره داریم که جهت استخراج این بلوک نیاز است. اگر بلوک از قبل موجود باشد، در آن صورت منظور ما فرآیند تعیین اعتبار بلوک است. در هر صورت، فرآیند «نهایی سازی» بلوک چهار مورد ملزومات را در بر می‌گیرد:

  • تائید اعتبار (یا تعیین) اومرها

هر بلوک اومر در درون سربرگ بلوک باید یک سربرگ معتبر باشد و در محدوده شش نسل بلوک فعلی قرار داشته باشد.

  • تائید اعتبار (یا تعیین) تراکنش‌ها

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

  • در نظر گرفتن پاداش (تنها در صورت استخراج)

در ازای استخراج بلوک، ۵ اتر به آدرس ذینفع اعطا می‌شود. (بر اساس طرح اتریوم موسوم به EIP-649، این پاداش به زودی به ۳ اتریوم کاهش می‌باید). بعلاوه، در ازای هر اتر، رقمی برابر با یک سی و دوم از پاداش بلوک فعلی به ذینفع اعطا می‌شود. در نهایت، ذینفع بلوک اومر نیز مبلغی پاداش می‌گیرد (یک فرمول مشخص برای محاسبه این پاداش وجود دارد).

  • راستی آزمایی (یا محاسبه) حالت و نانس

در قالب این فرآیند اطمینان حاصل می‌شود که همه تراکنش‌ها و تغییرات حالت حاصله اعمال می‌شوند و سپس، بعد از آنکه پاداش بلوک در مورد حالت نهایی تراکنش اعمال شد، بلوک جدید به‌ عنوان حالت تعریف می‌شود. راستی آزمایی از طریق تطبیق این حالت نهایی با درخت حالت ذخیره شده در سربرگ انجام می‌گیرد.

اثبات کار استخراج

در بخش «بلوک‌ها»، مفهوم دشواری بلوک به طور خلاصه شرح داده شد. الگوریتمی که به دشواری بلوک معنا و مفهوم می‌بخشد اثبات کار (Proof of Work) نامیده می‌شود.

الگوریتم اثبات کار اتریوم «ات‌هش» (Ethash) نام دارد (که سابقاً با عنوان «خنجر هاشیوموتو» شناخته می‌شد).

این الگوریتم به شکل زیر تعریف شده است:

در اینجا m نمایانگر میکس هش، n نمایانگر نانس، Hn سربرگ بلوک جدید (به‌ جز مؤلفه‌های نانس و میکس هش که باید محاسبه شوند)، Hn به معنای نانس بلوک سربرگ، و d نمایانگر دی‌ای‌جی (DAG) (گراف جهت‌دار چرخشی) است که یک مجموعه داده بزرگ محسوب می‌شود.

در بخش «بلوک‌ها» از آیتم‌های متنوع موجود در سربرگ بلوک سخن گفتیم. دو مورد از این مؤلفه‌ها «میکس هش» و «نانس» نام داشتند. همانطور که قبلاً گفتیم:

  • میکس هش یک هش است که در ترکیب با نانس اثبات می‌کند که بلوک محاسبات کافی را انجام داده است
  • نانس یک هش است که در ترکیب با میکس هش اثبات می‌کند که بلوک محاسبات کافی را انجام داده است

کارکرد اثبات کار جهت ارزیابی این دو آیتم استفاده می‌شود.

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

یک «مقدار پایه» (seed) برای هر بلوک محاسبه می‌شود. این مقدار پایه در هر «برهه» (epoch) متفاوت است. هر برهه متشکل از ۳۰۰۰۰ بلوک است. در مورد برهه اول، مقدار پایه در واقع هش یک مجموعه ۳۲ بایتی از صفرهاست. برای برهه‌های بعدی، مقدار پایه برابر با هش مقدار پایه قبلی است. با استفاده از این مقدار پایه، بک گره می‌تواند یک «حافظه پنهان» شبه تصادفی را محاسبه کند.

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

با استفاده از حافظه پنهان، یک گره می‌تواند «مجموعه داده» دی‌ای‌جی را خلق کند. در قالب این فرآیند، هر آیتم موجود در مجموعه داده به تعداد کمی آیتم‌های موجود در حافظه پنهان که به صورت شبه تصادفی انتخاب شده‌اند بستگی دارد. برای تبدیل شدن به یک استخراج‌گر، شما باید کل این مجموعه داده را خلق کنید؛ همه کلاینت‌ها و استخراج‌گران باید این مجموعه داده را ذخیره کنند، و مجموعه داده باید با گذشت زمان به صورت خطی رشد کند.

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

استخراج به مثابه یک مکانیسم امنیتی

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

منظور از امنیت بلوک چیست؟ پاسخ ساده است: ما می‌خواهیم یک بلاک چین ایجاد کنیم که مورد اعتماد همگان است. همانگونه که قبلاً گفتیم، اگر بیش از یک زنجیره موجود باشد، کاربران اعتماد خود را از دست می‌دهند، زیرا قادر نخواهند بود به شکل منطقی مشخص سازند که کدام زنجیره «معتبر» است. برای آنکه کاربران حالت ذخیره شده بر روی بلاک چین را بپذیرند، ما نیازمند یک بلاک چین استاندارد واحد هستیم که مردم به آن اعتماد دارند.

این دقیقاً همان کاری است که الگوریتم اثبات کار انجام می‌دهد: این الگوریتم اطمینان می‌دهد که یک بلاک چین مشخص در آینده نیز شکل متعارف و استاندارد خود را حفظ می‌کند و در نتیجه مهاجمان به آسانی نمی‌توانند بلاک‌های جدیدی را ایجاد کنند که بخش مشخصی از پیشینه را تغییر می‌دهند (مثلاً از طریق پاک کردن تراکنش‌ها یا ایجاد تراکنش‌های جعلی) یا حاوی کارکرد فورک (تغییر پروتکل) هستند. برای آنکه بلوک‌های فرد مهاجم تائید اعتبار شوند، وی نیازمند آن است که مشکل نانس را زودتر از بقیه کاربران شبکه حل کند تا بدبین ترتیب شبکه به این باور برسد که زنجیره وی سنگین‌ترین زنجیره است (بر مبنای اصول پروتکل شبح که قبلاً درباره آن صحبت کردیم.) این امر غیرممکن است، مگر آنکه مهاجم بیش از نیمی از توان استخراج شبکه را در اختیار داشته باشد، سناریویی که به حمله اکثریت ۵۱ درصدی معروف است.

استخراج در قالب مکانیسم تولید ثروت

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

  • پاداش بلوک ثابت متشکل از ۵ اتر برای بلوک «برنده» (که به زودی به ۳ اتر کاهش می‌یابد)
  • هزینه سوختی که در درون بلوک توسط تراکنش‌های موجود در آن مصرف شده است
  • یک پاداش اضافه برای گنجانیدن اومرها به‌ عنوان بخشی از بلوک

جهت کسب اطمینان از اینکه استفاده از مکانیسم اجماعی اثبات کار در راستای تأمین امنیت و توزیع ثروت در بلند مدت پایرجاست، اتریوم در تلاش است تا این دو ویژگی را به وجود بیاورد:

  • دسترسی بیشترین تعداد ممکن از مردم به شبکه. به عبارت دیگر، افراد در راستای اجرای الگوریتم نباید نیازی به سخت‌افزارهای تخصصی یا غیرمعمول داشته باشند. هدف آن است که مدل توزیع ثروت تا حد امکان قابل دسترس و باز باشد تا هر کسی بتواند هر مقدار توان محاسباتی در ازای اتر فراهم سازد.
  • کاهش احتمال اینکه یک گره واحد (یا مجموعه کوچکی از گره‌ها) به سود و منفعت غیرمعقولی دست پیدا کند. دستیابی یک گره به سود و منفعت غیرمعقول بدان معناست که گره مذکور نفوذ زیادی بر فرآیند تعیین بلاک چین استاندارد دارد. این امر دردسر آفرین است از آن جهت که امنیت شبکه را کاهش می‌دهد.

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

جهت کاستن از این مشکل، اتریوم ترجیح داده الگوریتم اثبات کار خود (ات‌هش) را حافظه محور کند. این بدان معناست که الگوریتم به گونه‌ای مهندسی شده که محاسبه نانس نیازمند حافظه و پهنای باند فراوانی باشد. لازمه برخورداری از حافظه فراوان موجب می‌شود تا کامپیوتر به آسانی نتواند از حافظه خود به صورت موازی بهره گرفته و چند نانس را همزمان کشف کند. لازمه پهنای باند فراوان نیز موجب می‌شود حتی ابرکامپیوترهای بسیار سریع نیز نتوانند چند نانس را همزمان کشف کنند. این امر از خطر متمرکزسازی می‌کاهد و یک بستر برابرتر برای گره‌هایی که مشغول راستی آزمایی هستند فراهم می‌آورد.

ذکر این نکته ضروری است که اتریوم در حال گذار از مکانیسم اجماعی اثبات کار به سمت مکانیسم موسوم به «ثبات سهام» است. این مکانیسم فی نفسه یک موضوع دیگر است که باید در یک مقاله جداگانه به آن پرداخت.

 

جمع‌بندی

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