احتمال دارد اسم بلاک چین اتریوم به گوشتان خورده باشد حتی اگر ندانید چیست. نام اتریوم به تازگی در اخبار بسیار شنیده شده و بر روی جلد برخی مجلات نیز آمده است، اما اگر با ماهیت اتریوم آشنا نیستند، مطالعه مقالاتی که درباره آن در مجلات منتشر شدهاند شاید برایتان نامفهوم و بیمعنا باشد.
ارزجو : راستی اتریوم چیست؟ اتریوم اصولاً یک دیتابیس عمومی است که تراکنشهای دیجیتال را به طور دائمی ثبت میکند. نکته مهم اینکه، برای نگهداری و تأمین امنیت این دیتابیس نیازی به هیچگونه ارگان مرکزی نیست. این دیتابیس در عوض به مثابه یک سیستم معاملهای «عاری از اعتماد» فعالیت میکند ــ چارچوبی که در آن افراد میتوانند معاملات همنوع با همنوع را انجام دهند بدون آنکه لازم باشد به یک شخص ثالث یا به یکدیگر اعتماد کنند.
هنوز هم برایتان نامفهوم است؟ این گزارش برای همین نوشته شده است. هدف من تشریح این موضوع است که اتریوم از لحاظ فنی چگونه عمل میکند بدون آنکه نیازی باشد به معادلات یا فرمولهای پیچیده ریاضی رجوع کنم. حتی اگر برنامهنویس نیستید، امیدوارم مطالعه این گزارش بتواند شما را کمی بیشتر با این فناوری آشنا سازد. اگر بعضی از قسمتها جنبه فنی دارند و درک آنها آسان نیست به هیچ وجه دلسرد نشوید. نیازی نیست تک تک جزئیات را متوجه شوید. توصیه میکنیم صرفاً بر روی درک و شناخت کلی موضوعات متمرکز شوید. پس گذارید کار خود را شروع کنیم. قسمت های دوم و سوم این گزارش طی روزهای آینده منتشر خواهد شد.
تعریف بلاک چین
بلاک چین یک ماشین معاملاتی منحصربفرد برخوردار از امنیتِ مبتنی بر رمزنگاری است که کارکردهای گوناگونی را بر روی خود به اشتراک میگذارد. جمله سنگینی بود، درست میگویم؟ بگذارید قسمتهای مختلف این جمله را بررسی کنیم.
- «برخورداری از امنیت مبتنی بر رمزنگاری» بدان معناست که امنیت فرآیند خلق ارز دیجیتال به کمک الگوریتمهای ریاضیاتی پیچیدهای که نفوذ به آنها بسیار سخت و دشوار است تأمین میشود. این الگوریتمها همانند دیواره آتشین هستند و فریب سیستم (مثلاً ایجاد تراکنشهای جعلی، پاک کردن تراکنشها، و غیره) را تقریباً غیرممکن میسازند.
- «ماشین معاملاتی منحصربفرد» به معنای نمونهای از یک دستگاه متعارف است که مسئولیت همه معاملات خلق شده در سیستم را بر عهده دارد. به عبارت دیگر، یک واقعیت واحد جهانی وجود دارد که همگان به آن اعتقاد دارند.
- «کارکردهای گوناگونی را بر روی خود به اشتراک میگذارد» بدان معناست که وضعیت ذخیرهسازی شده بر روی دستگاه با همگان به اشتراک گذاشته میشود.
این پارادایم بلاک چین توسط اتریوم به اجرا گذاشته میشود.
تشریح پارادایم بلاک چین اتریوم
بلاک چین اتریوم اساساً یک ماشین حالت معامله محور است. در علم کامپیوتر، ماشین حالت به چیزی اطلاق میشود که مجموعهای از نهادهها را میخواند و بر اساس آن نهادهها وارد یک حالت جدید میشود.
در ماشین حالت اتریوم، ابتدا وارد «حالت جنسیس» میشویم. این حالت مشابه یک لوح سفید است، قبل از آنکه هرگونه تراکنش بر روی شبکه اتفاق افتد. هنگامی که تراکنشها اجرایی میشوند، انتقال از حالت جنسیس به حالت نهایی اتفاق میافتد. این حالت نهایی در هر مقطع زمانی نمایانگر حالت کنونی اتریوم است.
حالت اتریوم دارای میلیونها تراکنش است. این تراکنشها در قالب «بلوکها» دستهبندی میشوند. هر بلوک حاوی مجموعهای از تراکنشهاست و زنجیروار به بلوک قبلی متصل است.
برای آنکه یک حالت به حالت بعدی تبدیل شود، تراکنش باید معتبر باشد. تراکنش برای آنکه معتبر انگاشته شود باید یک فرآیند تائید اعتبار موسوم به استخراج را پشت سر بگذارد. استخراج هنگامی اتفاق میافتد که گروهی از گرهها (یعنی رایانهها) منابع خود را هزینه میکنند تا یک بلوک از تراکنشهای معتبر خلق کنند.
هر گره موجود بر روی شبکه که خود را به عنوان استخراجگر معرفی میکند میتواند نسبت به خلق و تائید اعتبار بلوک اقدام کند. بسیاری از استخراجگران از سرتاسر دنیا تلاش میکنند تا بلوکها را همزمان خلق و تائید اعتبار کنند. هر استخراجگر هنگام تسلیم بلوک به بلاک چین یک «اثبات» ریاضیاتی ارائه میدهد و این اثبات به مثابه ارائه ضمانت است: اگر اثبات موجود است، پس بلوک باید معتبر باشد.
برای آنکه یک بلوک به بلاک چین اضافه شود، استخراجگر باید اعتبار بلوک مذکور را سریعتر از استخراجگرهای رقیب تائید کند. فرآیند تائید هر بلوک توسط یک استخراجگر به مثابه اثبات ریاضیاتی موسوم به «اثبات کار» است.
یک استخراجگر که اعتبار یک بلوک جدید را تائید میکند مقدار مشخصی ارزش در ازای کار صورت گرفته پاداش دریافت میکند. ارزش چیست؟ بلاک چین اتریوم از یک توکن دیجیتال درونزاد موسوم به «اتر» بهره میگیرد. هر بار که استخراجگر یک بلوک را اثبات میکند، توکنهای اتر جدید خلق و پاداش داده میشوند.
شاید از خود بپرسید: چه تضمینی وجود دارد که همگان از یک زنجیره از بلوکها تبعیت کنند؟ چطور میتوانیم مطمئن شویم که یک زیرمجموعه از استخراجگران تصمیم به خلق زنجیره بلوک مختص خود نمیگیرند؟
قبلاً بلاک چین را به عنوان یک ماشین معاملات منحصربفرد توصیف کردیم که کارکردهای گوناگون را بر روی خود به اشتراک میگذارد. با رجوع به این تعریف میتوانیم بفهمیم که حالت صحیح کنونی در واقع یک حقیقت جهانی واحد است که هر کسی باید آن را بپذیرد.
برخورداری از حالات (یا زنجیرههای) چندگانه موجب نابودی کل سیستم میشود، زیرا نمیتوان بر سر این موضوع توافق کرد که کدامیک از حالات صحیح است. اگر قرار باشد زنجیرهها از یکدیگر منشعب شوند، در آن صورت شاید ۱۰ سکه بر روی یک زنجیره، ۲۰ سکه بر روی یک زنجیره دیگر، و ۴۰ سکه نیز بر روی زنجیره دیگری داشته باشیم. در قالب چنین سناریویی، به هیچ طریق نمیتوان مشخص کرد کدام زنجیره از بقیه «معتبرتر» است.
هرگاه مسیرهای چندگانه شکل میگیرند، یک «فورک» اتفاق میافتد. ما معمولاً از فورکها اجتناب میکنیم، زیرا آنها سیستم را مختل میسازند و مردم را وادار به انتخاب زنجیرهای میکنند که به آن «اعتقاد» دارند.
جهت تعیین معتبرترین مسیر و جلوگیری از شکلگیری زنجیرههای چندگانه، اتریوم از یک مکانیسم موسوم به «پروتکل شبح» (GHOST protocol) بهره میگیرد.
به عبارت سادهتر، پروتکل شبح میگوید ما باید مسیری را انتخاب کنیم که بیشتر محاسبات بر روی آن انجام گرفته است. یک راه جهت تعیین مسیر مذکور استفاده از شماره بلوک جدیدترین بلوک («بلوک لیف») است. این شماره نمایانگر تعداد مجموع بلوکها در مسیر کنونی است (نه تعداد بلوک جنسیس). هر چه که شماره بلوک بالاتر باشد، مسیر مربوطه طولانیتر خواهد بود و در راستای رسیدن به بلوک لیف باید استخراج بیشتری صورت گیرد. این استدلال به ما امکان میدهد تا بر روی نسخه متعارف حالت کنونی توافق کنیم.
اکنون که فهمیدید بلاک چین چیست، بگذارید به مؤلفههای اصلی سیستم اتریوم بپردازیم.
- حسابها
- حالات
- سوخت و حقالعمل
- تراکنشها
- بلوکها
- اجرای تراکنش
- استخراج
- اثبات کار
قبل از هر چیز باید به این نکته اشاره کنم که هر جا از «هش» (hash) سخن میگویم، منظورم هش KECCAK-256 است که توسط اتریوم استفاده میشود.
حسابها
«حالت اشتراکی» جهانی اتریوم متشکل از بسیاری از چیزهای («حسابهای») کوچک است که قادرند از طریق یک چارچوب پیامرسان با یکدیگر تعامل کنند. هر حساب از یک حالت و یک آدرس ۲۰ بایتی برخوردار است. آدرس در اتریوم یک شناسه ۱۲۰ بیتی است که جهت شناسایی حساب استفاده میشود.
دو نوع حساب وجود دارند:
- حسابهای دارای مالکیت بیرونی که توسط رمزهای خصوصی کنترل میشوند و با هیچ کدی مرتبط نیستند.
- حسابهای قراردادی که توسط کد قراردادی مختص خود کنترل میشوند و با یک کد مرتبط هستند.
حساب دارای مالکیت بیرونی و حساب قراردادی
باید بدانید که یک تفاوت اساسی میان حسابهای دارای مالکیت بیرونی و حسابهای قراردادی وجود دارند. حساب دارای مالکیت بیرونی میتواند با ایجاد و امضای یک تراکنش و با استفاده از رمز خصوصی خود برای دیگر حسابهای دارای مالکیت بیرونی یا حسابهای قراردادی پیام ارسال کند. پیام میان دو حساب دارای مالکیت بیرونی به مثابه انتقال ارزش است. اما پیام از طرف یک حساب دارای مالکیت بیرونی به یک حساب قراردادی موجب فعالسازی کد حساب قراردادی میشود و به حساب مذکور امکان میدهد تا اقدامات گوناگون (مثلاً انتقال توکن، نگارش جهت ذخیره داخلی، ضرب توکنهای جدید، انجام برخی محاسبات، ایجاد قراردادهای جدید، و غیره) را به اجرا بگذارد.
حسابهای قراردادی برخلاف حسابهای دارای مالکیت بیرونی نمیتوانند معاملات جدید را آغاز کنند. در عوض، حسابهای قراردادی تنها میتوانند در پاسخ به دیگر تراکنشهایی که (از حسابهای دارای مالکیت بیرونی یا حسابهای قراردادی دیگر) دریافت کردهاند معاملاتی را صورت دهند. در قسمت «معاملات و پیامها» بیشتر با تماسهای میان حسابهای قراردادی آشنا میشویم.
بنابراین، هر اقدامی که بر روی بلاک چین اتریوم انجام میگیرد همیشه توسط تراکنشهایی که توسط حسابهای دارای مالکیت بیرونی ارسال شدهاند آغاز میشوند.
پایان قسمت اول
ادامه دارد…