بالاخره اتریوم چطور کار می‌کند؟ (بخش ۱)

این یک ترجمه آزاد از مقاله‌ای به زبان انگلیسی است. لینک مقاله اصلی در انتهای پست ذکر شده است.معرفیبه احتمال قوی درباره زنجیره‌بلوک اتریوم چیزهایی شنیده‌اید، حتی اگر ندانید که اتریوم چیست. اتریوم اخیرا زیاد در اخبار بوده، از جمله روی جلد بعضی از مجله‌های بزرگ، اما اگر شما پیش‌زمینه‌ای از این که اتریوم دقیقاً چیست نداشته باشید، مطالعه و درک این مطالب سخت خواهد بود. حالا اتریوم چیست؟ در اصل، یک پایگاه داده عمومی که رکوردهای تراکنش‌های دیجیتال را به طور دائمی نگهداری می‌کند. این پایگاه داده به هیچ متصدی مرکزی برای نگهداری و تأمین امنیت نیاز ندارد. در عوض اتریوم به عنوان یک سیستم تراکنشی «بدون اعتماد» عمل می‌کند - یک فریم‌ورک که در آن افراد می‌توانند تراکنش‌های نظیر-به-نظیر (peer-to-peer) ایجاد کنند بدون آن که به اعتماد به شخص ثالث یا حتی یکدیگر نیاز داشته باشند.هنوز سردرگم هستید؟ این پست از همین‌جا وارد می‌شود. هدف من این است که در سطح فنی توضیح دهم که اتریوم چطور عمل می‌کند، بدون ریاضیات پیچیده یا فرمول‌های ترسناک. حتی اگر یک برنامه‌نویس نیستید، امیدوارم که پس از خواندن این پست چیز بیشتری از این تکنولوژی نصیب شما شود. اگر بخش‌هایی از پست زیادی فنی یا سخت فهم است، مشکلی نیست!‌ واقعاً نیازی نیست که همه جزئیات کوچک را درک کنید. من توصیه می‌کنم که روی درک مطالب در سطح کلی تمرکز کنید.بسیاری از مطالبی که در این پست پوشش داده شده یک دسته‌بندی از مفاهیمی است که در Yellow Paper اتریوم طرح شده‌اند. من برای آسان‌تر کردن درک اتریوم، توضیحات و دیاگرام‌های خودم را اضافه کردم. خوانندگانی که شجاعت کافی برای چالش فنی را دارند می‌توانند Yellow Paper اتریوم را هم بخوانند.شروع کنیم!تعریف بلاکچینیک بلاکچین یک "ماشین سینگلتون تراکنشی امن شده با رمزنگاری با حالت مشترک"(۱) است. خیلی پرطمطراق است، نه؟ بگذارید خردش کنیم:امن شده با رمزنگاری به این معنی است که تولید ارز دیجیتال با الگوریتم‌های پیچیده ریاضی امن شده است که شکستن آنها بسیار دشوار است. این الگوریتم‌ها را نوعی فایروال در نظر بگیرید. این الگوریتم‌ها تقلب کردن در سیستم را تقریباً غیرممکن می‌کنند (مثل ایجاد تراکنش‌های جعلی، پاک کردن تراکنش‌ها و ...).ماشین سینگلتون تراکنشی به این معنی است که فقط یک instance استاندارد از ماشین وجود دارد که کار ایجاد همه تراکنش‌ها در سیستم را انجام می‌دهد. به بیان دیگر، فقط یک حقیقت سراسری در سیستم وجود دارد که همه به آن اعتقاد دارند.با حالت مشترک به این معنی است که حالت ذخیره شده روی این ماشین به اشتراک گذاشته شده و به روی همه باز است (همه به آن دسترسی دارند).اتریوم این پارادایم بلاکچین را پیاده‌سازی کرده است.توضیح پارادایم بلاکچین اتریومبلاکچین اتریوم در اصل یک ماشین حالت بر پایه تراکنش است. در علوم کامپیوتر، یک ماشین حالت به چیزی اشاره دارد که یک سری از ورودی‌ها را می‌خواند و بر اساس آن‌ها به یک حالت جدید گذار می‌کند.با ماشین حالت اتریوم، ما با یک حالت آغازین (Genesis State) شروع می‌کنیم. مثل یک لوح سفید، پیش از این که تراکنشی در شبکه رخ داده باشد. وقتی تراکنش‌ها اجرا می‌شوند، حالت آغازین به حالتی نهایی (Final State) گذار می‌کند. در هر لحظه از زمان این حالت نهایی، حالت فعلی (Current State) اتریوم است.حالت اتریوم حاوی میلیون‌ها تراکنش (Transaction) است. این تراکنش‌ها در بلوک‌ها (Block) گروه‌بندی می‌شوند. یک بلوک حاوی دنباله‌ای از تراکنش‌هاست و هر بلاک به بلاک قبل از خود زنجیر (Chained) شده است.برای انجام یک گذار از یک حالت به حالت بعدی، تراکنش می‌بایست معتبر (Valid) باشد. برای آن که یک تراکنش معتبر محسوب شود، باید یک فرایند اعتبارسنجی که ماینینگ خوانده می‌شود را بگذراند. در ماینینگ یک گروه از گره‌ها (Node) (همان کامپیوترها) منابع پردازشی خود را برای ایجاد یک بلوک از تراکنش‌های معتبر صرف می‌کنند.هر گرهی روی شبکه که خود را یک ماینر (Miner) معرفی می‌کند می‌تواند برای ایجاد و اعتبارسنجی یک بلاک تلاش کند. ماینرهای بسیاری در سراسر جهان همزمان برای ایجاد و اعتبارسنجی بلوک‌ها تلاش می‌کنند. هر ماینر وقتی یک بلوک را به زنجیره‌بلوک پیشنهاد می‌کند یک اثبات‌‌ (Proof) ریاضی [همراه آن] ارائه می‌کند، و این اثبات به عنوان یک تضمین عمل می‌کند: اگر اثبات وجود داشته باشد (صحیح باشد)، بلوک معتبر است.برای این که یک بلوک به زنجیره‌بلوک اضافه شود، ماینر می‌بایست آن را سریع‌تر از سایر ماینرهای رقیب اثبات کند. فرایند اعتبارسنجی هر بلوک با استفاده از اثبات ریاضی که ماینر ارائه می‌کند با نام الگوریتم «اثبات کار» (Proof of Work) شناخته می‌شود.ماینری که یک بلوک جدید را اعتبارسنجی می‌کند مقدار مشخصی ارزش به عنوان پاداش (Reward) دریافت می‌کند. این ارزش چیست؟ بلاکچین اتریوم برای این کار از یک توکن دیجیتال داخلی با نام اتر (Ether) استفاده می‌کند. هر زمان که یک ماینر یک بلاک را ثبت می‌کند، مقداری توکن اتر جدید خلق و به آن ماینر اعطا می‌شود.ممکن است این سوال برایتان پیش بیاید که چه چیز تضمین می‌کند که همه فقط یک زنجیره از بلوک‌ها معتبر بدانند؟ چطور می‌توان مطمئن شد که یک گروه از ماینرها تصمیم نگیرند که زنجیره بلوک‌های خود را (درون شبکه بلاکچین مفروض ما) بسازند؟قبل‌تر ما بلاکچین را یک ماشین سینگلتون تراکنشی با حالت مشترک تعریف کردیم. با استفاده از این تعریف، می‌توانیم بفهمیم که حالت کنونی صحیح (Correct Current State) همان حقیقت سراسری واحدی است که هر کسی در شبکه باید آن را بپذیرد. داشتن چند حالت (یا زنجیره) کل سیستم را نابود می‌کند، چون در آن صورت نمی‌توان روی حالت صحیح توافق کرد. اگر زنجیره‌ها منشعب (واگرا) می‌شدند، این امکان وجود داشت که شما روی یک زنجیره ۱۰ واحد ارز، روی زنجیره دیگر ۲۰ واحد ارز و روی زنجیره دیگری ۴۰ واحد ارز داشته باشید. در این حالت هیچ راهی برای تعیین این که کدام زنجیره معتبر است وجود ندارد.هر وقت چند مسیر (برای زنجیره) خلق می‌شود، یک فورک (Fork) رخ می‌دهد. معمولاً ما از رخ دادن فورک‌ها اجتناب می‌کنیم، به این دلیل که فورک‌ها سیستم را مختل می‌کنند و افراد را مجبور می‌کنند که زنجیره‌ای را که به درستی آن باور دارند انتخاب کنند.برای تعیین مسیر معتبرتر و پیشگیری از ایجاد چند زنجیره، اتریوم از مکانیسمی به نام GHOST Protocol استفاده می‌کند (۲).به بیان ساده این پروتکل می‌گوید که ما باید مسیری را انتخاب کنیم که بیشترین پردازش روی آن انجام گرفته است. یک راه برای تعیین این مسیر استفاده از شماره بلوک آخرین بلوک (بلوک برگ یا Leaf Block) هر زنجیره است، که مجموع تعداد بلوک‌ها در آن مسیر را نشان می‌دهد (بدون محاسبه Genesis Block). هر چه شماره بلوک بیشتر باشد، مسیر طولانی‌تر و تلاش برای ماینینگ روی آن مسیر بیشتر بوده است. استفاده از این منطق به ما امکان توافق همگانی روی نسخه استاندارد حالت کنونی (canonical version of the current state) را می‌دهد.حالا که یک دورنمای کلی از این که بلاکچین چیست دریافت کردید، بیایید در اجزاء اصلی سیستم اتریوم دقیق شویم:Accounts (حساب‌ها)State (حالت)gas and fees (گس و کارمزد تراکنش)Transactions (تراکنش‌ها)Blocks (بلوک‌ها)transaction execution‌ (اجرای تراکنش)Mining (ماینینگ)proof of work (اثبات کار)حساب‌هاحالت مشترک (shared-state) اتریوم از تعداد زیادی از شیء‌های (Object) کوچک (حساب‌ها) تشکیل شده که قابلیت برهم‌کنش با یکدیگر را از طریق یک فریم‌ورک message-passing دارند. هر حساب یک حالت مرتبط با خود و یک آدرس ۲۰ بایتی دارد. یک آدرس در اتریوم یک شناسه ۱۶۰ بیتی است که برای شناسایی هر حساب به کار می‌رود.دو نوع حساب وجود دارد:حساب دارای مالک بیرون از شبکه (Externally Owned Account): توسط کلیدهای خصوصی (Private Key) کنترل می‌شوند و کدی به آن‌ها مرتبط نیست.حساب قرارداد هوشمند (Contract Account): که توسط کد قرارداد هوشمند خود کنترل می‌شوند و کدی مرتبط با خود دارند.حساب‌های دارای مالک بیرونی در مقابل حساب‌های قرارداد هوشمنددرک یک تفاوت اساسی بین حساب‌های دارای مالک بیرونی و حساب‌های قرارداد هوشمند مهم است. یک حساب دارای مالک بیرونی می‌تواند با ایجاد و امضای یک تراکنش با استفاده از کلید خصوصی خود، به دیگر حساب‌های مشابه خود یا حساب‌های قرارداد هوشمند پیام بفرستد. یک پیام بین دو حساب دارای مالک بیرونی یک انتقال ارزش ساده است. اما پیامی که از حساب دارای مالک بیرونی به یک حساب قرارداد هوشمند ارسال می‌شود، کد حساب قرارداد هوشمند را فعال می‌کند، و به آن اجازه انجام اعمال مختلف را می‌دهد (برای مثال انتقال توکن‌ها، نوشتن روی حافظه داخلی، ضرب توکن‌های جدید، انجام محاسبات، ایجاد قراردادهای هوشمند جدید و …).برخلاف حساب‌های دارای مالک بیرونی، حساب‌های قرارداد نمی‌توانند خودشان تراکنش‌های جدید ایجاد کنند. به جای آن، حساب‌های قرارداد تنها می‌توانند در پاسخ به تراکنش‌هایی که دریافت می‌کنند (از هر نوع حسابی) تراکنش‌های دیگری ارسال کنند. درباره فراخوانی‌های قرارداد-به-قرارداد در بخش «تراکنش‌ها و پیام‌ها» بیشتر می‌آموزیم.بنابر این، هر عملی در زنجیره‌بلوک اتریوم همواره از طریق یک تراکنش که از سمت یک حساب با مالک بیرونی ایجاد شده آغاز می‌شود.(ادامه دارد...)منبع: https://medium.com/@preethikasireddy/how-does-ethereum-work-anyway-22d1df506369پانویس‌ها:(1) Cryptographically Secure Transactional Singleton Machine with Shared-State(2) Greedy Heaviest Observed Subtree