اتریوم چیست و چگونه کار می کند؟
اتریوم که در حال حاضر پس از بیت کوین پرارزشترین پلتفرم رمز ارز جهان از لحاظ حجم بازار شناخته میشود، از محبوبیت بسزایی در جامعه رمز ارزها برخوردار است. در دنیای امروزی و با افزایش پذیرش ارزهای دیجیتال در بین مردم، دیگر بیت کوین تنها رمز ارز شناخته شده نیست و بسیاری از افراد در جهان و در کشور خودمان ایران، مشتاقند تا اطلاعات خود را در خصوص سایر رمز ارزهایی که پس از بیت کوین به منصه ظهور وارد شدند افزایش دهند. در این مقاله قصد داریم نگاه جامع و کاملی به اتریوم داشته باشیم و هدف از تأسیس آن، چگونگی کارکرد آن، و تمامی جزئیات فنی مربوط به بلاک چین این رمز ارز محبوب را مورد بررسی قرار دهیم؛ بنابراین تا پایان این مقاله با ما همراه باشید.
اتریوم چیست؟ شاید ساده ترین پاسخی که بتوان به این پرسش داد، این باشد که اتریوم که پس از بیت کوین به عنوان بزرگترین و پرارزشترین پلتفرم رمز ارز دنیا (از لحاظ حجم بازار) شناخته میشود، در تاریخ ۳۰ جولای ۲۰۱۵، به طور رسمی توسط یک برنامهنویس ۱۹ ساله روسی-کانادایی به نام ویتالیک بوترین (Vitalik Buterin) راهاندازی شد. اغلب افراد اتریوم را نیز مانند بیت کوین ، یک پول الکترونیکی و یک پلتفرم مختص رمز ارز میدانند؛ اما حقیقت این است که هدف اتریوم از ابتدا، ایجاد امکانی برای پیادهسازی قراردادهای هوشمند و توسعه اپلیکیشنهای غیرمتمرکز بود. اتریوم در وبسایت رسمی خود، اینگونه معرفی شده است:
«اتریوم یک پلتفرم جهانی و منبعباز برای (پیادهسازی) اپلیکیشنهای غیرمتمرکز است.»
این پلتفرم همچنین رمز ارز مخصوص خود را داراست که از آن در جهت دستیابی به اهداف خود (اجرای قرارداد هوشمند و اپلیکیشن غیرمتمرکز) استفاده میکند. رمز ارز مخصوص بلاک چین اتریوم ، اتر (Ether) نام دارد؛ اما افراد اغلب از کلمه اتریوم برای اشاره به این رمز ارز استفاده میکنند. با این حال که هدف اصلی و نهایی اتریوم ، تبدیل شدن به یک نسخه جدید از ارز رمزنگاری شده نبود؛ اما اتر در حال حاضر رتبه دوم را در میان رمز ارز ها از لحاظ حجم بازار داراست. برای درک بهتر چیستی و چگونگی کارکرد اتریوم ، مفهوم قرارداد هوشمند و اپلیکیشن غیرمتمرکز، تفاوتهای بیت کوین و اتریوم و آینده این رمز ارز ، در این مقاله با ما همراه باشید.
پیشنهاداتی برای مطالعه:
فهرست محتوا
-
- بخش اول: تعریف اتریوم به زبان ساده
- بخش دوم: تولد و تاریخچه اتریوم
- بخش سوم: مقایسه بیت کوین و اتریوم
- بخش چهارم: بیت کوین بخریم یا اتریوم ؟
- بخش پنجم: بهترین کیف پول های اتریوم
- بخش ششم: اتریوم چگونه کار میکند؟ (تعریف اتریوم به زبان تخصصی)
- بخش هفتم: قرارداد هوشمند چیست؟
- بخش هشتم: انواع حساب ها در بلاک چین اتریوم
- بخش نهم: آشنایی با انواع تراکنشها در شبکه اتریوم
- بخش دهم: زبان برنامه نویسی اتریوم
- بخش یازدهم: چگونگی کدنویسی و اجرای قراردادهای هوشمند در بلاک چین اتریوم
- بخش دوازدهم: ماشین مجازی اتریوم (EVM) چیست؟
- بخش سیزدهم: گس (Gas) چیست و چگونه تعیین میشود؟
- بخش چهاردهم: اتر چیست؟
- بخش پانزدهم: دستاوردها و کاربردهای اتریوم
- بخش شانزدهم: اتریوم ؛ یک «ماشین وضعیت» یا state machine
- بخش هفدهم: نگاهی دقیقتر به ساختار درختی دادهها در شبکه اتریوم
- بخش هجدهم: درخت مرکل پاتریشیا چیست؟
- بخش نوزدهم: مزایای طراحی منحصر به فرد اتریوم
- بخش بیستم: تراکنش ها در شبکه اتریوم
- بخش بیست و یکم: بلاک ها در بلاک چین اتریوم
- بخش بیست و دوم: اجماع و استخراج در شبکه اتریوم
- بخش بیست و سوم: نقشه راه و فورک های اتریوم
- بخش بیست و چهارم: آینده اتریوم
- جمعبندی
بخش اول: تعریف اتریوم به زبان ساده
همانطور که گفتیم، اتریوم در حال حاضر و پس از بیت کوین ، دومین پلتفرم رمز ارز پرارزش دنیاست. برای درک بهتر ماهیت اتریوم ، بد نیست ابتدا نگاهی به ظهور بیت کوین و تاریخچه آن داشته باشیم.
تاریخچهای کوتاه از بیت کوین
بیت کوین در سال ۲۰۰۹ و به عنوان یک «پول نقد الکترونیکی همتا به همتا»، توسط شخص یا اشخاص ناشناسی تحت عنوان مستعار ساتوشی ناکاموتو عرضه شد. تا پیش از ظهور بیت کوین ، تمامی پرداختهای الکترونیکی توسط واسطههایی مانند بانکها یا سیستمهای پرداختی مانند پیپال انجام میشد. همین امر باعث میشد که انجام تراکنشها توسط افراد جامعه، تحت کنترل و مدیریت دولتها و قدرتها قرار گرفته و بدون حضور آنها، انجام هیچ تراکنش الکترونیکی عملاً ممکن نباشد.
چنین مشکلی در سیستمهای قدیمیتر پرداخت که به صورت حضوری و با پول نقد فیزیکی انجام میشد وجود نداشت. این پرداختها به صورت رو در رو انجام میشدند و در آنها، پول به شکل فیزیکی و بدون نیاز به واسطه، بین طرفین معامله رد و بدل میشد؛ اما در مورد تراکنشهای الکترونیکی، هنوز ساختاری وجود نداشت که از طریق آن بتوان این نوع پرداختها را نیز بدون حضور واسطه و به صورت شخص به شخص یا همتا به همتا به انجام رساند. بیت کوین با بهرهگیری از فناوری انقلابی بلاک چین، این تمرکزگرایی سیستمهای مالی حاکم را از بین برد و انجام تراکنشهای الکترونیکی را به یک فرآیند کاملاً غیرمتمرکز و همتا به همتا تبدیل کرد.

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

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

احتمالاً میگویید: خب راه چاره چیست یا جایگزین این پلتفرمهای متمرکز چیست؟ تمام مقدمهای که گفتیم برای پاسخ به همین سوال بود؛ امروزه نهادهای متمرکز دور تا دور ما را احاطه کردهاند و هر یک به طریقی کنترل بخشی از اطلاعات، داراییها و اختیارات ما را برعهده گرفتهاند و در ازای آن به طرق مختلف از شما کارمزد میگیرند (یا به صورت مستقیم و یا از طریق جلب زمان و توجه شما). اتریوم برای حل این مشکل به وجود آمد.
دنیایی را تصور کنید که در آن، کنترل داراییها (پول) دیجیتال شما، درست مانند پول نقد در اختیار خودتان باشد (نه بانک)؛ برای رفتن به محل کار، بجای درخواست از اسنپ، خودتان مستقیماً به راننده تاکسی متصل شوید و بدون پرداخت کارمزد، قیمت سفر را هم خودتان تعیین کنید (نه یک نهاد واسطه)؛ اطلاعات هویتی شما بجای ذخیره شدن روی سرورهای گوگل، در اختیار خودتان باشد؛ هرگاه معاملهای انجام میدهید (مثلاً معاملات ملکی)، سند آن مستقیماً بین خودتان یعنی خریدار و فروشنده تنظیم شود و از طرفی این سند مورد قبول همه باشد؛ هر گاه وامی دریافت میکنید، آن را مستقیماً از وام دهنده دریافت کنید (و نه از بانک)؛ یا وقتی قرار است در یک رای گیری (انتخابات) مشارکت داشته باشید، دیگر لازم نیست به سازمان یا نهادی برای حفاظت از آراء اعتماد کنید؛ بلکه رای خود را به صورت ایمن و غیر قابل تغییر و دستکاری ثبت خواهید کرد. تمام این موارد و صدها کاربرد دیگر، زمانی یک رویای دست نیافتنی تلقی میشدند؛ اما امروزه با کمک بلاک چین اتریوم و فناوری قراردادهای هوشمند، قابل دستیابی هستند.
برای حل مشکلات سیستمهای سنتی، به چند فاکتور اساسی نیاز داریم که بلاک چین و قراردادهای هوشمند درصدد دستیابی به آن هستند:
- غیر متمرکز بودن: به این معنی که حاکمیت یک شبکه، بجای یک شخص یا نهاد خاص، در اختیار تمام کاربران و مشارکت کنندگان در این شبکه باشد و همه افراد در تصمیمگیری برای شبکه مشارکت داشته باشند. با تمرکززدایی از سیستمها، امکان جعل، سانسور، دستکاری و فساد به طرز چشمگیری کاهش خواهد یافت.
- توزیع شدگی: به این معنی که ذخیره سازی اطلاعات و همه پردازشهای کامپیوتری، بجای یک سرور، روی تمامی سرورهای موجود در شبکه انجام شود. این ویژگی باعث میشود که هیچ نقطه شکستی (SPoF یا نقطه تکین شکست) در شبکه وجود نداشته باشد تا با نفوذ به آن بتوان به کل شبکه حمله کرد.
- همتا به همتا یا مستقیم بودن: انجام هر عملیاتی در شبکه (مانند انجام تراکنش یا تبادل داده) به صورت مستقیم بین اعضا انجام شود و هیچ واسطهای در کار نباشد. در چنین شرایطی طبیعتاً کارمزدهای خدمات انجام شده پایینتر خواهد بود.
- امنیت: به این معنی که تمامی دادهها، اطلاعات و تراکنشها در بستری امن و غیر قابل نفوذ و کلاهبرداری انجام شوند. شبکههای بلاک چینی با بهرهگیری از تکنولوژی رمزنگاری، به دنبال تأمین امنیت سیستمها هستند.
- شفافیت: سیستم غیرشفاف، عملاً بستری برای فساد است. شبکههای بلاک چینی و قراردادهای هوشمند پیادهسازی شده روی بلاک چین ، عموماً منبع باز (open source) هستند؛ علاوه بر این در تمامی بلاک چین های عمومی نظیر بیت کوین و اتریوم ، تراکنش ها و عملیات اجرا شده در شبکه کاملاً شفاف و قابل مشاهده هستند.
- حفظ حریم خصوصی: با گسترش استفاده از اینترنت و پلتفرمهای دیجیتال، حفاظت از حریم خصوصی به یکی از نگرانیهای اصلی کاربران تبدیل شده است. شبکههای بلاک چینی با استفاده از رمزنگاری نامتقارن، هویت واقعی افراد را در آدرسهای دیجیتالی (کاملا تصادفی و بی معنی) خلاصه میکنند. بنابراین حریم خصوصی افراد در شبکه بلاک چین کاملاً در اختیار خود آنها بوده و تنها در صورت لزوم (در موارد قانونی) میتوانند هویت خود را افشا کنند.
- عملکرد بیوقفه: یکی از ایرادات اساسی بسیاری از سیستمهای سنتی، ایجاد وقفه در ارائه خدمات است (مثلاً بانکها تنها در ساعات خاصی از شبانه روز قادر به خدمت رسانی هستند). این در حالیست که عملکرد شبکههای بلاک چینی و قراردادهای هوشمند موجود در آنها، تنها به کد برنامهنویسی شدهای وابسته است که به صورت بیست و چهار ساعته در دسترس است؛ بنابراین اپلیکیشنهای بلاک چینی هیچگاه خاموش یا تعطیل نمیشوند.
همه ویژگیهای بالا، مواردی هستند که قراردادهای هوشمند را به عنوان یک جایگزین قوی برای سیستمهای سنتی، مطرح میکنند. پس به طور خلاصه، اتریوم نقش یک «کامپیوتر جهانی» را بازی میکند که باعث تمرکز زدایی و حتی به باور برخی باعث دموکراتیزه کردن مدل کلاینت – سرور رایج در جهان میشود. با ورود اتریوم، سرورها و ابرها جای خود را به پدیده جدیدی به نام گره (node) میدهند و این گرهها توسط افراد داوطلب از سراسر جهان اداره میشوند که مجموعه آنها همان «کامپیوتر جهانی» را شکل میدهد. ایده پشت اتریوم این است که افراد از هر کجای جهان بتوانند در شبکه مشارکت کرده و بر مبنای این زیرساخت، بتوانند برای ارائه خدمات با یکدیگر رقابت نمایند.
درباره تمرکززدایی از سیستمها بیشتر بخوانید:
- تمرکززدایی چیست؟
- چرا تمرکززدایی مهم است؟
- چرا تمرکززدایی تا این حد سخت است؟
- آیا تمرکززدایی همان بلاک چین است؟
- تمرکززدایی، چیزی فراتر از بلاک چین و اپلیکیشنهای غیرمتمرکز
- انقلاب سیستمهای مالی غیرمتمرکز و همتا به همتا
بخش دوم: تولد و تاریخچه اتریوم
پس از عرضه بیت کوین و انقلابی که در عرصه مالی به پا کرد، برنامهنویسان و رمزنگاران بسیاری به سمت آن جذب شده و شروع به بیان نظرات و پیشنهادات خود در رابطه با این ارز دیجیتال و همچنین ارائه طرحهای مشابه خود نمودند. ویتالیک بوترین که یک نوجوان اصالتاً روسی ساکن کانادا بود، یکی از همین افراد بود که در وبلاگی، به انتشار مطالبی در رابطه با بیت کوین میپرداخت. نوشتههای ویتالیک، نظر میهای الیسی (Mihai Alisie) را به خود جلب کرد و همین امر باعث شد تا او پیشنهاد تأسیس یک مجله مختص بیت کوین را به ویتالیک ارائه کند. در نهایت ویتالیک بوترین و میهای الیسی نشریهای تحت عنوان مجله بیت کوین (Bitcoin Magazine) را راهاندازی کردند که به عنوان اولین نشریه رسمی در حوزه بیت کوین و رمز ارز ها شناخته میشود.

زمانی که ویتالیک به عنوان سردبیر در مجله بیت کوین فعالیت میکرد و با طرحهای افراد در خصوص رمز ارزهای جدید سرو کار داشت، متوجه موضوعی شد. او پی برد که برای عرضه هر رمز ارز جدیدی، نیاز به راهاندازی یک بلاک چین جدید است که همین مسئله، مانع بزرگی برای تولید رمز ارزهای جدید محسوب میشد (چرا که راهاندازی یک بلاک چین منحصر بفرد، کاری به شدت تخصصی و پرهزینه است). برخی نیز برای حل این مشکل، به فکر ایجاد بلاک چین های چندمنظوره افتاده بودند. ویتالیک بوترین در اینباره گفته بود:
به گمانم آنها (جامعه طرفداران بیت کوین) برای حل مسئله کاربردپذیری بلاک چین، رویکرد اشتباهی را برگزیدهاند. هدف آنها ساخت اپلیکیشن های مجزا بود و به این منظور، به دنبال یک بلاک چین با کاربردهای متنوع بودند؛ چیزی شبیه به چاقوی همه کاره سوییسی!
اما ایده بوترین با دیگران تفاوت داشت؛ او با خود فکر میکرد: چه میشد اگر بلاک چینی داشتیم که همه میتوانستند اپلیکیشنهای خود را (با کاربردهای گوناگون) بر روی آن ایجاد کنند؛ همانند اینترنتی که در اختیار همه است و هر کس میتواند وبسایت خود را بر روی آن ایجاد کند… همین ایده، کلید تأسیس پلتفرمی به نام اتریوم بود.
در اواخر سال ۲۰۱۳، ویتالیک بوترین وایت پیپری را تحت عنوان «پلتفرمی برای نسل جدید قراردادهای هوشمند و اپلیکیشنهای غیرمتمرکز» منتشر کرد. او در این وایت پیپر، برخی از معایب و محدودیتهای بیت کوین را بر شمرد و همچنین ویژگیهای طرح خود برای رفع این محدودیتها را نیز بازگو کرد. در مرکزیت تمامی این محدودیتها، موضوع عدم برخورداری بیت کوین از یک زبان برنامهنویسی همهمنظوره بود؛ یک زبان برنامهنویسی که به همگان این امکان را بدهد تا رمز ارز ها، وبسایتها، و نرمافزارهای غیرمتمرکز خود را بر روی بلاک چین بیت کوین به اجرا بگذارند.
زبان برنامهنویسی بیت کوین ، یک زبان بسیار ساده و تکمنظوره است که فقط و فقط برای انجام عملیات ابتدایی مانند انجام تراکنش ها و دریافت و انتقال بیت کوین طراحی شده است و انجام عملیات دیگری توسط آن اساساً ممکن نیست (اگرچه برخی از ماکسیمالیستهای بیت کوین مخالف سرسخت این نظریه هستند). البته لازم به ذکر است که هدف بیت کوین از ابتدا، دستیابی به یک پول دیجیتال ایمن، غیرقابل سانسور و غیرمتمرکز بود و از همین رو، استفاده از چنین زبانی برای بیت کوین کاملاً منطقی به نظر میرسد. زبان برنامهنویسی بیت کوین با وجود تمامی محدودیتها برای پیادهسازی عملیات پیچیده دیگر، امنیت این رمز ارز را بیش از هر زبان دیگری تأمین میکند و از آن در برابر باگهای احتمالی محافظت مینماید (در ارتباط با زبان برنامهنویسی بیت کوین و اتریوم و تفاوتهای آنها از منظر تخصصیتر، در بخش دهم این مقاله مفصل صحبت خواهیم کرد).
اما همانطور که پیشتر اشاره کردیم، چشمانداز نهایی اتریوم با بیت کوین متفاوت است. ایجاد یک رمز ارز جدید (اتر)، چیزی نبود که بلندپروازیهای بوترین را اغنا کند؛ او قصد کرده بود تا تمرکزگرایی را از تمام فرآیندهای دیجیتالی و اینترنتی بزداید و همچنین این امکان را در اختیار سایرین نیز قرار دهد تا رمز ارزها، وبسایتها، اپلیکیشنها، پلتفرمها و سازمانهایی را تأسیس کنند که به صورت کاملاً غیرمتمرکز و با تصمیم جمعی اداره میشوند. با انتشار این وایت پیپر مشخص شد که اتریوم رویای تبدیل شدن به یک کامپیوتر عظیم جهانی را در سر میپروراند. کامپیوتری که از به هم پیوستن کامپیوترهای کوچک از سراسر دنیا تشکیل شده بود. از این رو اگر بیت کوین را مانند یک اپلیکیشن ساده پرداخت در نظر بگیریم، اتریوم چیزی شبیه به اپ استور خواهد بود!
گوین وود همبنیانگذار اتریوم درباره تفاوت کاربردی اتریوم و بیت کوین گفته است:
بیت کوین ، پیش از آنکه اولین رمز ارز باشد، اولین کاربرد ساده از تکنولوژی بلاک چین است؛ اما بیت کوین تنها کاربرد تکنولوژی بلاک چین نیست. برای درک این موضوع، میتوانیم به مثال سادهای در گذشته رجوع کنیم: سرویس ایمیل، تنها کاربرد اولیه اینترنت بود که باعث محبوب شدن اینترنت شد؛ اما همانطور که میدانید هم اکنون ایمیل، تنها کاربرد اینترنت نیست و کاربردهای بسیار بزرگ دیگری نیز برای آن وجود دارد.
هم چنین جوزف لوبین از بنیانگذاران دیگر اتریوم، در اوایل راه اندازی شبکه اتریوم، آینده آن را اینگونه پیشبینی کرده بود:
اتریوم اینترنتی توزیعشده، غیرمتمرکز و فاقد موجودیت قدرتمند واحدیست که سیستم یا دسترسی به سیستم را تحت کنترل داشته باشد.
ویتالیک تمامی این ایدهها به علاوه بسیاری جزئیات فنی و نکات دیگر از نحوه کار اتریوم را در وایت پیپر اتریوم گنجاند و در جولای سال ۲۰۱۴، عرضه اولیه سکه یا ICO اتریوم را آغاز کرد (عرضه اولیه سکه یا Initial Coin Offering مکانیزمی است که در طی آن، تعداد مشخصی از یک توکن یا رمز ارز جدید پیش فروش میشود تا از این راه، سرمایه اولیه برای راهاندازی رسمی آن تأمین شود. در رابطه با ICO در قسمتهای بعدی این مقاله به طور کامل صحبت خواهیم کرد).
اتریوم طی ۴۲ روز پس از شروع ICO خود، توانست مبلغ ۱۸ میلیون دلار سرمایه جذب کند (در آن زمان، هر اتر چیزی حدود ۴۰ سنت قیمت داشت). سرمایه مورد نیاز برای راهاندازی اتریوم ، در قالب بیت کوین جمعآوری شد. در آن زمان، هر بیت کوین نیز چیزی حدود ۶۵۰ دلار قیمت داشت (هر چند که افت شدید قیمت بیت کوین پس از ICO اتریوم ، این پلتفرم را با ضرر مالی مواجه کرد).
اتریوم در ماه می سال ۲۰۱۵ ابتدا شبکهای آزمایشی به نام المپیک (Olympic) را عرضه کرد و سرانجام در تاریخ ۳۰ ژولای ۲۰۱۵ ، به طور رسمی کار خود را آغاز کرد. ویتالیک بوترین ، میهای الیسی ، گَوین وود (همبنیانگذار Polkadot)، جوزف لوبین (بنیانگذار ConsenSys)، چارلز هاسکینسون (بنیانگذار و مدیر عامل فعلی کاردانو) و آنتونی دی لوریو (بنیانگذار Decentral و Jaxx)، اعضای تیم اولیه توسعه پلتفرم اتریوم بودند.

بخش سوم: مقایسه بیت کوین و اتریوم
تا اینجا درباره اصلیترین تفاوت بیت کوین و اتریوم (که همان هدف پیدایش آنهاست) صحبت کردیم. در ادامه مقاله درباره تفاوتهای ساختاری این دو رمز ارز نیز به طور کامل توضیح خواهیم داد؛ اما بد نیست به طور خلاصه سایر ویژگیهای بیت کوین و اتریوم را نیز با یکدیگر مقایسه کنیم:

اکنون که با تاریخچه اتریوم ، دلایل ظهور آن و نقاط تمایز اساسی آن از بیت کوین آشنا شدیم، قصد داریم از دیدگاه تخصصی به بررسی عملکرد بلاک چین اتریوم پرداخته و روشهای این پلتفرم برای تمرکززدایی از فرآیندها را مورد بررسی قرار دهیم.
درباره تفاوت بیت کوین و اتریوم بیشتر بخوانید:
بخش چهارم: بیت کوین بخریم یا اتریوم ؟
این سوال شاید یکی از متداولترین سوالاتی باشد که در حال حاضر توسط افرادی که در دنیای کریپتو تازهوارد هستند و یا قصد سرمایهگذاری یا معامله را دارند پرسیده میشود. هنگامی که چنین سوالی در ذهن ما مطرح میشود، باید به خود یادآوری کنیم که بیت کوین و اتریوم به ترتیب اولین و دومین رمز ارز پرارزش جهان در بین هزاران رمز ارز و توکن موجود در بازار هستند (منظور ما از اتریوم در این جا، رمز ارز اختصاصی این بلاک چین یعنی اتر است). هردوی این رمز ارز ها به شکل غیرقابلتصوری قدرتمند بوده و ارزش هیچ یک از ارزش دیگری نمیکاهد. در زمانهای مختلف، بارها مشاهده کردهایم که تغییرات قیمت هر یک از این دو رمز ارز بر قیمت دیگری تأثیرگذار است و این رابطه، یکطرفه نیست. با این حال، تفاوتهای اساسی و بنیادینی نیز در بین این دو رمز ارز پرقدرت وجود دارد. اگر این مقاله را تا به این جا به طور کامل مطالعه کرده باشید، در مورد هسته مرکزی این تفاوتها که همان تفاوت اهداف این دو پلتفرم بلاک چین محور است آگاهی دارید.
بیت کوین در حال حاضر، پرارزشترین رمز ارز جهان از لحاظ حجم بازار و همچنین گران قیمتترین رمز ارز دنیاست. اگر نگاهی به سایت کوینمارکتکپ بیندازید، خواهیم دید که تفاوت قیمت بیت کوین و اتریوم به طور چشمگیری زیاد است. در زمان نگارش این مقاله (مرداد ۱۳۹۹) ، قیمت بیت کوین در این سایت بیش از ۱۲ هزار دلار و قیمت اتریوم چیزی حدود ۴۳۰ دلار نمایش داده شده است. همانطور که میبینید، قیمت بیت کوین تقریباً ۲۷ بار از قیمت اتریوم بالاتر است. از طرفی، محدود بون تعداد بیت کوین ها (بر خلاف تعداد اترهای موجود که هنوز سقفی برای آنها تعیین نشده است) یکی از دلایلی است که برخی با استدلال به آن، افزایش چندین برابری قیمت بیت کوین در آینده را پیشبینی میکنند. این که قیمت بیت کوین یا هر رمز ارز دیگری در آینده چه روندی را تجربه خواهد کرد، چیزی نیست که حتی متخصصترین افراد در دنیای کریپتو نیز بتوانند با قطعیت در مورد آن نظر دهند. برای دستیابی به یک نتیجه حتمی در خصوص روند قیمت یک رمز ارز در آینده، فقط باید منتظر بود و اتفاقات را به درستی و با دقت زیاد رصد کرد؛ اما نکتهای که در حال حاضر با قطعیت میتوان به آن اشاره کرد این است که بیت کوین در طول عمر ۱۱ ساله خود، به معنای واقعی کلمه به یک پدیده انقلابی تبدیل شده و خود را حقیقتاً اثبات کرده است. افزایش قیمت بیت کوین از چیزی حدود ۰.۰۰۳ دلار به بیش از ۱۲۰۰۰ دلار در طول ۱۱ سال، نشان از اعتماد مردم به این رمز ارز و درک ارزش و کارایی آن دارد.
ارزش اتریوم اما، فقط منحصر به یک نوع جدید از پول الکترونیک بودن آن نیست؛ هرچند که خود اتر نیز پس از بیت کوین ، توانسته است جایگاه پرارزشترین رمز ارز بازار را به خود اختصاص دهد. نباید این نکته را نادیده گرفت که عمر اتریوم چیزی حدود ۶ سال از بیت کوین کمتر است؛ اما قیمت اتر در همین عمر ۵ ساله، با ۱۰۰۰ برابر افزایش از ۴۰ سنت به ۴۰۰ دلار رسیده است. به علاوه، از ابتدای این مقاله تا کنون به تفصیل از انقلابی که قرارداد هوشمند اتریوم در همه صنایع بخصوص صنعت های مالی متمرکز ایجاد کرده است سخن گفتهایم. با این وجود که در حال حاضر بلاک چین های دیگری نیز امکان پیادهسازی قرارداد هوشمند و اپلیکیشن غیرمتمرکز را در اختیار کاربران قرار دادهاند، اما اتریوم هنوز بلاک چین مرجعی برای انجام این کار و اولویت بسیاری از افراد محسوب میشود. پروژه های دیفای اتریوم روز به روز در حال گسترش هستند و همین امر، ارزش اتریوم را نیز افزایش خواهد داد. در همین راستا و به همین دلایل، برخی بیت کوین را به طلا و اتریوم را به نفت تشبیه میکنند. طلا یک کالای گرانبها و محدود و یک ذخیره ارزش شناخته شده در بین انسانهاست؛ اما نفت نیز ماده باارزشی است که علاوه بر ارزش ذاتی خود، به عنوان سوخت لازم برای انجام بسیاری از فعالیتهای مهم دیگر عمل میکند؛ همان گونه که ارز دیجیتال اتر به عنوان سوخت لازم برای انجام بسیاری از فعالیتها در بلاک چین اتریوم مورد استفاده قرار میگیرد.
در نهایت و به عنوان کلام آخر، هیچ کسی نمیتواند با قطعیت ادعا کند که یک رمز ارز در آینده با چه اتفاقاتی مواجه خواهد شد و یا قیمت آن چه روندی را در پیش خواهد گرفت. آینده هر رمز ارز و هر پلتفرم مبتنی بر بلاک چینی، به وقایعی بستگی دارد که شاید ما در حال حاضر به آنها حتی فکر هم نکنیم. شاید به همین دلیل است که معمولاً متخصصین و صاحبنظران کریپتو ، به ارائه اطلاعات و پیشنهاداتی به کاربران کمتجربهتر بسنده میکنند و تصمیمگیری نهایی را بر عهده خود آنها میگذارند. در نهایت این شمایید که با در نظر گرفتن مواردی از جمله هدف خود از خرید یک رمز ارز (برای مثال سرمایهگذاری بلندمدت یا معامله)، میزان سرمایه خود و حد ریسکی که میتوانید متحمل شوید و همچنین با انجام مطالعات و تحقیقات کافی، باید رمز ارز مورد نظر خود را پیدا کنید و اقدام به خرید آن نمایید.
بخش پنجم: بهترین کیف پول های اتریوم
با وجود نکات ذکر شده اگر قصد خرید اتر را دارید، به کیف پولی احتیاج خواهید داشت که بتوانید داراییهای اتر خود را در آن نگهداری کنید. یک کیف پول رمز ارز در عین شباهتهایی که میتواند با یک کیف پول معمولی داشته باشد، از بسیاری جهات نیز با آن متفاوت است. بنابراین پیش از معرفی بهترین کیف پول های اتریوم ، بد نیست ابتدا نگاهی به انواع کیف پول های رمز ارز داشته باشیم. کیف پول های رمز ارز به طور کلی به دو نوع گرم و سرد تقسیم میشوند.
کیف پول های گرم خود از دو دسته نرم افزاری و تحت وب و کیف پول های سرد نیز از دو دسته کاغذی و سخت افزاری تشکیل میشوند. کیف پول های نرم افزاری به راحتی بر روی موبایل یا دسکتاپ قابل نصب هستند و کار با آنها راحتی زیادی را برای کاربران به ارمغان میآورد. کیف پول های تحت وب نیز همانطور که از اسمشان پیداست، در قالب یک سایت به فعالیت میپردازند و برای استفاده از آنها نیاز است به اینترنت دسترسی داشته باشید.
طرز کار کیف پول های سرد اما به طور کلی با کیف پول های گرم متفاوت است. یک کیف پول سرد از نوع کاغذی ، تکه کاغذی است که اطلاعات مهمی از جمله کلید خصوصی شما در قالب یک کد عددی و همچنین یک کد QR بر روی آن پرینت گرفته میشود. در نهایت برای استفاده از چنین کیف پولی نیز، شما به یک کیف پول نرم افزاری احتیاج خواهید داشت؛ اما با این تفاوت که کلید خصوصی شما در درون نرم افزار ذخیره نمیشود و بنابراین از خطراتی مانند هک و حملههای سایبری در امان خواهد بود. برای هر بار استفاده از یک کیف پول کاغذی ، باید کد کلید خصوصی خود را در درون کیف پول نرم افزاری خود وارد کنید و یا کد QR خود را توسط آن اسکن نمایید. برای اطمینان از امنیت کیف پول کاغذی خود، بهتر است آن را در یک جای امن مانند گاوصندوق نگهداری کنید؛ چرا که در صورت مفقود شدن یا به سرقت رفتن آن، باید موجودی حساب خود را از دست رفته بدانید. و در نهایت، عملکرد کیف پول های سخت افزاری نیز به طور کلی شبیه به انواع کاغذی است؛ با این تفاوت که اطلاعات خصوصی شما در درون سخت افزاری شبیه به یک هارد اکسترنال یا یک فلش ذخیره میشود که میتوانید به راحتی آن را به پورت USB سیستم خود متصل کنید. لازم به ذکر است که کیف پول های گرم معمولاً از نوع رایگان هستند و برای دانلود کردن آنها نیازی به پرداخت هزینه نیست؛ در حالی که برای استفاده از کیف پول های سرد ، باید آنها را خریداری کنید.
درباره کیف پول های ارز دیجیتال بیشتر بخوانید:
حال که با مفاهیم پایه در خصوص کیف پول های رمز ارز آشنا شدیم، قصد داریم تعدادی از بهترین کیف پول های اتریوم را معرفی کنیم و لینک آموزشی مرتبط با هر یک را نیز تا حد امکان در اختیارتان قرار دهیم تا در صورت تمایل، به نقد و بررسی این کیف پول ها و پیدا کردن مناسبترین گزینه بپردازید. شناخته شده ترین کیف پول های اتریوم عبارتند از:
- کیف پول سخت افزاری لجر نانو اس (Ledger Nano S)
- کیف پول سخت افزاری ترزور (Trezor)
- کیف پول تحت وب و همچنین نرم افزاری متامسک (Metamask)
- کیف پول تحت وب صرافیهای معتبری نظیر بایننس (Binance) و کوینبیس (Coinbase)
- کیف پول دسکتاپی اگزودوس (Exodus)
- کیف پول دسکتاپی میست (Mist)
- کیف پول نرم افزاری مای اتر والت (MyEtherWallet)
- کیف پول نرم افزاری جکس (Jaxx)
- کیف پول نرم افزاری تراست والت (Trust Wallet)
- کیف پول نرم افزاری کوینومی (Coinomi)
- کیف پول نرم افزاری اتمیک والت (AtomicWallet)
- کیف پول نرم افزاری گاردا (Gaurda)
- کیف پول نرم افزاری اینفینیتو (Infinito)
- کیف پول نرم افزاری اج (Edge)
- کیف پول نرم افزاری سامورایی (Samourai)
کیف پول های عنوان شده در بالا، تعدادی از کیف پول های مطرح و شناخته شدهای هستند که از رمز ارز اتر پشتیبانی میکنند. هر یک از این کیف پول ها مزایا و معایب خود را دارند و انجام یک بررسی جامع پیش از تصمیمگیری برای انتخاب هر یک ضروریست. برای مثال، یکی از مواردی که از اهمیت بسیار بالایی برخوردار است و پیش از تصمیمگیری برای استفاده از یک کیف پول باید آن را در نظر بگیرید، میزان کارمزدی است که این کیف پول ها برای انجام تراکنش ها از حساب شما کسر میکنند.
بخش ششم: اتریوم چگونه کار میکند؟ (تعریف اتریوم به زبان تخصصی)
در مرکزیت عملکرد اتریوم و روشهای اتخاذ شده توسط این بلاک چین برای دسترسی به اهداف خود، امکانی به عنوان «قرارداد هوشمند» قرار دارد. بنابراین برای توضیح عملکرد اتریوم در بخشهای پیش روی این مقاله، ابتدا یک توصیف ابتدایی و سپس توضیحی تخصصی از قراردادهای هوشمند را ارائه میکنیم؛ و سپس به چگونگی کدنویسی و اجرای این قراردادها در بلاک چین اتریوم میپردازیم. لازم به ذکر است که برای درک بهتر قراردادهای هوشمند و چگونگی کارکرد آنها، به اطلاعات پیشنیاز دیگری مانند «انواع حساب ها در بلاک چین اتریوم» و «زبان برنامه نویسی اتریوم» نیز نیاز خواهید داشت؛ که از همین جهت این اطلاعات را نیز در همین مقاله جای خواهیم داد.
بخش هفتم: قرارداد هوشمند چیست؟
ویتالیک بوترین در جایی از صحبتهای خود، در مقایسه اینترنت و بلاک چین چنین میگوید: بوترین در جایی از صحبتهای خود، در مقایسه اینترنت و بلاک چین چنین میگوید:
اینترنت میخواست جای کسانی که در حاشیه سیستم کارهای روزمره انجام میدهند را بگیرد و بلاکچین میکوشد واسطهگری را در هسته اجرایی سیستم از بین ببرد؛ اینترنت جای تاکسیهای تلفنی را گرفت و بلاکچین میتواند جای اوبر (شرکت تاکسی اینترنتی) را بگیرد.
اما چگونه قرار است این پیشبینی تحقق یابد؟ پاسخ در مفهومی به نام قرارداد هوشمند نهفته است.
مروری بر قراردادهای سنتی
یک قرارداد به صورت کلی، تعهدی بین دو شخص یا گروهی از اشخاص است که بر طبق آن، این افراد موظف به انجام مسئولیتها و یا تبعیت از قوانینی شده و در ازای آن، از منافع مشخصی بهرهمند میشوند. مسلماً یکی از کارهایی که همه ما در طول عمرمان حداقل یک بار آن را انجام دادهایم، بستن یک قرارداد است. امروزه روشی که ما به صورت معمول برای عقد قرارداد استفاده میکنیم، روش سنتی رجوع به یک واسطه معتبر است. برای درک بهتر این موضوع، میتوانید قرارداد خرید یک ملک را در نظر بگیرید.
به صورت معمول، همگی ما برای خرید و یا فروش یک ملک مشخص، به یک بنگاه معاملات ملکی مراجعه میکنیم. این بنگاهها در بین خریدار و فروشنده در نقش یک واسطه معتبر عمل کرده و بر صحت قرارداد بسته شده در بین طرفین معامله نظارت میکنند. بنابراین، بستن یک قرارداد در دنیای امروز ما نیز یک فرآیند متمرکز است که از روش رجوع و اطمینان به واسطه تبعیت میکند؛ پس میتوان ادعا کرد که این فرآیند نیز، از مشکلات سایر فرآیندهایی که به شکل متمرکز انجام میشوند رنج میبرد. هزینههای گزافی که به عنوان حق کمیسیون به این بنگاهها اعطا میشوند، تجمع قدرت در این نهادهای واسطه، بروکراسی اداری که وجود این بنگاهها به آن دامن میزند و … تنها شماری از این مشکلات هستند.
توضیح قرارداد هوشمند به زبان ساده
حال دنیایی را تصور کنید که در آن، تمامی قراردادها به صورت کدهای برنامهنویسی در بین طرفین معامله منعقد میشوند؛ کدهایی که جایگزین واسطهها شده و نیاز به وجود آنها را مرتفع مینمایند. در چنین دنیایی، برای انعقاد قرارداد خرید یک ملک، نیازی به مراجعه به بنگاههای معاملات ملکی نیست؛ بلکه طرفین قرارداد میتوانند از یک قرارداد هوشمند برای این کار استفاده کنند.
در قرارداد هوشمندی که بین این دو شخص منعقد میگردد، مواردی از جمله فروشنده و خریدار ملک، قیمت ملک مورد مورد معامله و هر شرایط و ضوابط موجود دیگری مشخص میشوند؛ که این فرآیند چیزی شبیه به تنظیم متن قرارداد در قراردادهای سنتی و یا اصطلاحاً غیرهوشمند است. سپس به محض این که مبلغ مورد معامله از جانب خریدار پرداخت شد و سایر شرایط نیز (در صورت وجود) از طرف وی برآورده گردید، مالکیت ملک به شکل غیرقابل بازگشتی از مالک قبلی سلب شده و به مالک جدید اهدا میشود.
بوترین قراردادهای هوشمند را به ماشینهای فروش خودکار (وندینگ ماشین) تشبیه میکند: اگر مبلغ صحیح را وارد دستگاه کنید، میتوانید از میان آیتمهای موجود یکی را انتخاب کنید و از شکاف پایین دستگاه، خرید خود را بردارید. اما میتوان قراردادهای هوشمند را به هر الگوریتم درختی مرحلهای دیگری نیز تعمیم داد و نیازی هم به حضور فیزیکی پای وندینگ ماشین نیست!
قرارداد هوشمند یک مکانیزم خودکار، غیرقابل توقف، غیرقابل بازگشت، ایمن و کاملاً الکترونیک است که انجام معاملات به صورت شخص به شخص را ممکن میسازد. این مثال، تعریفی ساده و ابتدایی از قرارداد هوشمند بود؛ اما مسلماً قرارداد هوشمند محدود به همین تعریف نیست و یک فرآیند بسیار پیچیدهتر است. در قسمت بعد ساختار دقیق قراردادهای هوشمند و مکانیزم عملکرد آنها را مورد بحث قرار میدهیم.
درباره قراردادهای هوشمند بیشتر بخوانید:
توضیح قرارداد هوشمند به زبان تخصصی
یک قرارداد هوشمند در بلاک چین اتریوم ، همانطور که در قسمت قبل نیز اشاره کردیم، یک کد برنامهنویسی شده است که شرایط و ضوابط قرارداد را با خود به همراه دارد. اجرای چنین قراردادی، ویژگیهایی را میطلبد که بلاک چین اتریوم بر خلاف بلاک چین بیت کوین ، از آنها برخوردار است. برای درک عملکرد فنی و تخصصی قرارداد هوشمند و اطلاع از چگونگی اجرای یک قرارداد هوشمند در بلاک چین اتریوم ، ضرورت دارد که با مفاهیمی چون انواع حساب ها در بلاک چین اتریوم ، زبان برنامهنویسی اتریوم ، چگونگی کدنویسی قرارداد هوشمند در اتریوم ، ماشین مجازی اتریوم ، رمز ارز اختصاصی اتریوم یعنی اتر و کارمزد گس (Gas) آشنایی داشته باشید. در ادامه به صورت جداگانه به توضیح هر یک از این موارد خواهیم پرداخت.
بخش هشتم: انواع حساب ها در بلاک چین اتریوم
در شبکه اتریوم دو نوع حساب تعریف شده است: حسابهای با مالکیت خارجی و حسابهای مبتنی بر قرارداد هوشمند. هر حساب توسط یک آدرس مشخص میشود و همه حسابها از یک فضای آدرس مشابه استفاده میکنند. با این حال، این حسابها تفاوتهای اساسی و کارکردهای مختلفی دارند که در این قسمت از این مقاله به صورت جامع به آنها خواهیم پرداخت.
حساب های با مالکیت خارجی
حسابهای با مالکیت خارجی یا (Externally Owned Accout) EOA ها، حسابهایی هستند که متعلق به کاربران بوده و توسط آنها کنترل میشوند. به همین جهت، به آنها حساب کاربران (User Account) نیز گفته میشود. این حسابها داراییهای اتر کاربران را در خود نگهداری میکنند و از طریق رمزنگاری نامتقارن و کلید خصوصی (Private Key) محافظت میشوند. به طور کلی، کلید خصوصی (در بلاک چین هر رمز ارزی) کدی است که دسترسی شما به حسابتان را میسر کرده و مانند رمزهای عبور کارتهای بانکیتان عمل میکند؛ بنابراین بدون داشتن کلید خصوصی، توانایی دسترسی به حساب و استفاده از رمز ارزتان را نیز نخواهید داشت. برای انجام هر تراکنشی در بلاک چین اتریوم ، باید از حساب های با مالکیت خارجی استفاده کنید. همچنین هر حسابی در بلاک چین اتریوم (یا بلاک چین هر رمز ارز دیگری)، یک آدرس منحصر بفرد را داراست که برای انجام تراکنشها و دریافت و انتقال اتر از آن استفاده میشود. آدرس حساب در بلاک چین رمز ارز ها، همانند شماره کارت بانکی شماست که برای دریافت پول از سایرین، آن را در اختیار آنها قرار میدهید و یا برای انتقال پول به آنها، از آن استفاده میکنید.
حساب های مبتنی بر قرارداد هوشمند
از سوی دیگر، حساب های مبتنی بر قرارداد هوشمند حسابهایی هستند که کد قرارداد هوشمند، در آنها قرار میگیرد. این حسابها نیز مانند حساب های با مالکیت خارجی ، دارای یک آدرس منحصر بفرد هستند؛ اما تفاوت آنها در این است که در حساب های مبتنی بر قرارداد هوشمند ، چیزی به عنوان کلید خصوصی وجود ندارد و حساب توسط کد قرارداد هوشمند محافظت میشود. برای درک بهتر چگونگی کارکرد حساب مبتنی بر قرارداد هوشمند ، به مثال زیر توجه کنید.
فرض کنید که شما قرارداد هوشمندی را طراحی کردهاید که قرار است در صورت دریافت ۱۰ اتر ، این اترها را به صورت همزمان و مساوی در بین ۵ نفر تقسیم کند. شما این شرایط را در قرارداد هوشمند خود کدنویسی کردهاید و پنج آدرسی که قرار است اترها به آنها ارسال شوند را نیز از قبل مشخص نمودهاید. حال تنها چیزی که باقی میماند، ارسال ۱۰ اتر به حساب این قرارداد هوشمند است. همانطور که اشاره کردیم، هر حساب مبتنی بر قرارداد هوشمند نیز مانند حسابهای کاربری ، از یک آدرس منحصر بفرد برخوردار است. بنابراین برای ارسال ۱۰ اتر به این حساب، کافیست که شما وارد حساب کاربری (یا همان حساب با مالکیت خارجی) خود شده و ۱۰ اتر را به شکل یک تراکنش معمولی، به آدرس حساب قرارداد هوشمند خود ارسال کنید. به محض دریافت این مقدار، این قرارداد به صورت خودکار و غیرقابل توقف، به هر یک از پنج آدرس از پیش تعیین شده مقدار ۲ اتر را ارسال خواهد کرد. این مثال یکی از موارد استفاده ساده اما بسیار کاربردی و محوری قرارداد هوشمند است.
بنابراین میتوان اینگونه جمعبندی کرد که یک حساب مالکیت خارجی میتواند با استفاده از کلید خصوصیاش یک تراکنش انجام دهد، آن را امضا کند و از این طریق، پیامی را به یک حساب مالکیت خارجی یا حساب مبتنی بر قرارداد دیگر ارسال کند. پیام قابل انتقال بین دو حساب با مالکیت خارجی، یک نوع «انتقال ارزش» ساده است. اما پیامی که از یک حساب مالکیت خارجی به حساب مبتنی بر قرارداد فرستاده میشود، فراتر از انتقال ارزش است. این پیام کد آن حساب را فعال کرده و به این ترتیب، حساب مبتنی بر قرارداد میتواند اقدامات مختلفی نظیر انتقال توکنها، نوشتن چیزی روی فضای ذخیرهسازی داخلی، ایجاد توکنهای جدید، انجام یک سری محاسبات و ایجاد قراردادهای جدید را انجام دهد.

اجزای حساب های اتریوم
هر حساب در شبکه اتریوم شامل موجودی (balance)، نانس (nonce)، کدهش (code hash) و هش دادههای ذخیره شده (storage hash) است. اما قسمت کد و storage برای حسابهای با مالکیت خارجی خالی است؛ در حالی که حسابهای مبتنی بر قرارداد، در قسمت کدهش، بایت کد قرارداد هوشمند (در ادامه مقاله درباره بایت کد توضیح خواهیم داد) و در قسمت هش ذخیره، هش ریشه مرکل کل درخت حالت را ذخیره میکنند.
-
حالت جهانی اتریوم حال که با انواع حسابها در بلاک چین اتریوم و همچنین نحوه کار یک قرارداد هوشمند تا حدودی آشنا شدیم، قصد داریم انواع تراکنشهای شبکه اتریوم را بررسی کرده تا بتوانیم چگونگی ایجاد و ثبت یک قرارداد هوشمند در بلاک چین اتریوم را توضیح دهیم.
بخش نهم: آشنایی با انواع تراکنشها در شبکه اتریوم
تراکنش در واقع دستورالعملیست که حالت حساب بر اساس آن تغییر مییابد. این دستورالعمل به صورت رمزنگاری شده امضا شده و توسط یک حساب با مالکیت خارجی ایجاد و به بلاک چین اعلام میشود.
هر بلاک مجموعه ای از تراکنشها و در واقع مانند دستورالعملیست که به شبکه اطلاع میدهد حالت جهانی (global state) بعدی به چه صورت باشد.
به طور کلی تراکنش ها در شبکه اتریوم سه نوع هستند:
- از یک حساب با مالکیت خارجی (*EOA) به یک حساب با مالکیت خارجی (EOA)
- از یک حساب با مالکیت خارجی (EOA) به یک حساب قرارداد هوشمند (CA*)
- از یک حساب با مالکیت خارجی به یک حساب صفر (Zero account)
*EOA: Externally owned account
*CA: Contract account
هر سه نوع تراکنش در شبکه اتریوم، توسط یک حساب با مالکیت خارجی (انسان) آغاز میشوند. به تعبیر دیگری میتوان گفت تراکنش های اتریوم همچون پلی هستند که اطلاعات دنیای خارجی را به حالت داخلی شبکه اتریوم متصل میکنند. تراکنش های نوع اول میان دو انسان صورت میگیرد؛ تراکنش های نوع دوم میان انسان و یک قرارداد هوشمند؛ و تراکنش نوع سوم توسط یک انسان (حساب با مالکیت خارجی) فرستاده شده و گیرندهای ندارد. این نوع تراکنشها حاوی کد قرارداد هوشمند هستند و در صورت تأیید، قرارداد هوشمند را روی بلاک چین ایجاد میکنند. به محض ثبت شدن این قرارداد در بلاک چین، یک آدرس عمومی به آن اختصاص مییابد و از این پس، قرارداد آماده فعالسازی و استفاده توسط تراکنشهای دیگر خواهد بود.
همچنین قراردادهایی که در بلاک چین اتریوم موجود هستند نیز میتوانند از طریق پیامها (تراکنش های داخلی) با سایر قراردادها صحبت و تعامل داشته باشند. پیامهای رد و بدل شده میان قراردادهای هوشمند را نیز میتوان شبیه به تراکنشها درنظر گرفت؛ با این تفاوت که این تراکنشها توسط اکانتهای با مالکیت خارجی ایجاد نمیشوند بلکه توسط خود قراردادهای هوشمند ایجاد میشوند.
توجه داشته باشید که قرارداد هوشمند هیچگاه به خودی خود کاری انجام نمیدهد و برای فعال شدن، نیازمند ارسال یک تراکنش فعالسازی به آدرس این قرارداد هستیم. نتیجه این تعامل، پس از ماین شدن تراکنش در بلاک چین ثبت میشود.
نکته جالب اینجاست که هر تراکنشی که قرارداد هوشمندی را فعال کرده یا از آن استفاده کند، توسط همه نودهای اتریوم اجرا میشود. در نتیجه به منظور ماین کردن یک تراکنش در یک بلاک، باید محاسبات مربوط به قرارداد استفاده شده در این تراکنش نیز توسط همه نودها اجرا شود.
بلاک چین اتریوم یک شبکه مبتنی بر پیام است. طبق متن وایت پیپر اتریوم، «پیامها» در شبکه اتریوم، به نحوی شبیه به «تراکنشها» در شبکه بیت کوین هستند. اما ۳ تفاوت اساسی وجود دارد. اول اینکه یک پیام در شبکه اتریوم، هم میتواند توسط یک موجودیت خارجی و هم توسط قراردادها ایجاد شود؛ درحالی که یک پیام بیت کوینی فقط توسط یک موجودیت خارجی ایجاد میشود. دوم اینکه پیامها در شبکه اتریوم، صراحتاً میتوانند حاوی دادهها و اطلاعات (data) باشند (که در بیت کوین اینگونه نیست)؛ و سومین تفاوت اینکه اگر گیرنده پیام در شبکه اتریوم یک حساب مربوط به قرارداد هوشمند باشد، میتواند به این پیام پاسخ دهد. این بدان معنیست که پیامها در شبکه اتریوم، میتوانند در بردارنده مفاهیم توابع نیز باشند.
در قسمتهای بعدی این بخش، درباره زبان برنامه نویسی اتریوم و چگونگی ثبت قراردادهای هوشمند در اتریوم صحبت خواهیم کرد.
بخش دهم: زبان برنامه نویسی اتریوم
در قسمتهای قبلی اشاره کردیم که نقطه تمایز اساسی اتریوم از بیت کوین که به این بلاک چین امکان پیادهسازی قرارداد هوشمند را میدهد، زبان برنامه نویسی آن است. زبان برنامه نویسی قراردادهای هوشمند اتریوم، سالیدیتی (solidity) نام دارد که (بر خلاف زبان برنامه نویسی بیت کوین) یک زبان تورینگ کامل (Turing Complete) است. اصطلاح «تورینگ» برگرفته از اسم آلن تورینگ (Alan Turing)، ریاضیدان نابغه قرن بیستم است که وی را به عنوان بنیانگذار علوم کامپیوتر و از پیشگامان هوش مصنوعی میشناسند.
آلن تورینگ ، ریاضیدان نابغه قرن بیستم در اوایل قرن بیستم، ماشینهای محاسباتی مورد استفاده در جوامع علمی، به شدت با انواعی که امروزه میبینیم متفاوت بودند. طراحی این ماشینها طوری بود که فقط و فقط توانایی انجام یک مسئله محاسباتی را داشتند و برای حل مسئلهای دیگر، نیاز بود که ماشین جدیدی طراحی شده و یا ساختار داخلی یک ماشین موجود به طور کامل تغییر کند. آلن تورینگ برای حل این مشکل، طرح ساخت کامپیوتری را ارائه کرد که میتوانست هر برنامهای را اجرا کند و هر مسئله محاسباتی را حل نماید. البته لازم به ذکر است که انجام چنین کاری توسط این کامپیوترها، مستلزم دریافت دستورالعملهای لازم و زمان کافی بود؛ و معیاری برای مدت زمان مورد نیاز این کامپیوترها برای انجام محاسبات وجود نداشت. به بیان بهتر، این کامپیوترها قادر بودند تا هر مسئله محاسباتی را حل نمایند؛ اما مشخص نبود که این کار دقیقاً چقدر طول میکشد.
همین حقیقت، امروزه در خصوص زبانهای برنامه نویسی نیز صدق میکند. یک زبان برنامه نویسی تورینگ کامل، زبانی است که در صورت دریافت دستورالعملهای لازم و در اختیار داشتن زمان کافی، میتواند هرگونه نرمافزاری را توسعه داده و هرگونه مسئلهای را حل کند. همچنین یکی از ویژگیهای اصلی زبان های تورینگ کامل همچون سالیدیتی، خاصیتی به نام حلقه تکرار (loop) است. حلقه تکرار این امکان را در اختیار زبان های برنامه نویسی قرار میدهد تا یک دستورالعمل را به صورت بینهایت تکرار کنند.
طبق این تعریف، زبان برنامه نویسی بیت کوین تورینگ کامل نیست؛ چرا که ماهیت آن به گونهای است که فقط و فقط به انجام یک کار (اجرای تراکنش های بیت کوین) پرداخته و قابلیت انجام کار دیگری را ندارد. همچنین برای n بار انجام شدن یک دستورالعمل در بلاک چین بیت کوین ، نیاز است که کد دستورالعمل را n بار کپی و پیست کنیم. البته استفاده از چنین زبان تکمنظورهای برای بیت کوین ، منافع بسیاری را به همراه دارد. همانطور که پیشتر بیان کردیم، هدف بیت کوین از ابتدا، تبدیل شدن به یک پول الکترونیکی همتا به همتا بود. برای دستیابی به این هدف، بیت کوین به ویژگیهای امنیتی بسیاری احتیاج داشت تا از داراییهای افراد در مقابل هکها و حملات اینترنتی محافظت کند و اطمینان خاطر مردم را از امنیت بیت کوین هایشان فراهم نماید. زبان برنامه نویسی بیت کوین نیز به گونهای است که این ویژگیها را به طور کامل در اختیار آن میگذارد و نگهداری و انتقال بیت کوین ها را به بهترین نحو ممکن انجام میدهد. اما در مورد اتریوم ، قضیه کاملاً متفاوت است. اتریوم برای تبدیل شدن به پلتفرمی برای اجرای قرارداد هوشمند و اپلیکیشن غیرمتمرکز و تمرکززدایی از همه فرآیندهای موجود، احتیاج به یک زبان تورینگ کامل داشت. به همین دلیل، استفاده از زبان های تورینگ کامل در نقشه راه این بلاک چین قرار گرفت.
بخش یازدهم: چگونگی کدنویسی و اجرای قراردادهای هوشمند در بلاک چین اتریوم
برای کدنویسی قراردادهای هوشمند در بلاک چین اتریوم ، از زبان برنامه نویسی مخصوص این بلاک چین به نام سالیدیتی (Solidity) استفاده میشود. البته زبانهای دیگری مانند وایپر (Vyper) و سرپِنت (Serpent) نیز برای برنامه نویسی قراردادهای اتریوم ایجاد شده که زبان سرپِنت غالباً مورد توجه برنامه نویسان پایتون است. اما تحقیقات نشان میدهند که بیش از ۹۰ درصد قراردادهای هوشمند اتریوم توسط زبان سالیدیتی نوشته شدهاند؛ بنابراین برای کدنویسی و اجرای یک قرارداد هوشمند در اتریوم، نیاز خواهید داشت که به این زبان مسلط باشید. البته لازم به ذکر است که محیط های یکپارچه توسعه یا IDE های موجود برای سالیدیتی ، کدنویسی قراردادها توسط این زبان را به فرآیند بسیار سادهتری تبدیل کردهاند.
به طور کلی، IDE ها محیطهایی هستند که به برنامهنویسان و توسعهدهندگان در کدنویسی برنامهها کمک میکنند و امکانات بسیاری را برای توسعه نرمافزارها در اختیار آنها قرار میدهند. یکی از IDE های شناخته شده سالیدیتی ، ریمیکس (Remix) نام دارد. ریمیکس یک IDE تحت وب و آنلاین است؛ بنابراین برای استفاده از آن شما نیاز به نصب هیچگونه نرمافزاری نخواهید داشت. کافیست که به آدرس remix.ethereum.org مراجعه کرده و از امکانات آن بهرهمند شوید.با این حال که استفاده از ریمیکس موجب سهولت کدنویسی قراردادهای هوشمند شده و راحتی زیادی را برای کاربران به ارمغان میآورد، اما به عقیده برخی از توسعهدهندگان، این IDE فقط برای کدنویسی قراردادهای هوشمند ساده و همینطور برای اهدافی مانند یادگیری و آموزش قابل استفاده بوده و برای انجام کارهای پیچیدهتری مانند توسعه نرمافزارهای غیرمتمرکز و همینطور برای برنامهنویسان حرفهای مناسب نیست. برای مثال، یکی از کارهایی که ریمیکس توانایی انجام آن را ندارد، طراحی فرانت اند (Front-End) نرمافزارهاست. بنابراین اگر یک برنامهنویس باتجربه و حرفهای هستید و یا اگر قصد توسعه یک نرمافزار غیرمتمرکز را دارید، بهتر است به یک IDE دیگر به نام ترافل (Truffle) رجوع کنید.
ترافل یک محیط توسعه طراحی شده بر پایه جاوا اسکریپت است و مانند ریمیکس ، یک IDE تحت وب و آنلاین نیست؛ بنابراین برای استفاده از آن، نیاز خواهید داشت تا ابتدا پلتفرم Node.js را نصب کنید. این پلتفرم کدهای نوشته شده توسط زبان جاوا اسکریپ را به اجرا میگذارد و بر روی تمامی سیستم عاملها (ویندوز ، مک و لینوکس) قابل نصب است. پس از نصب Node.js ، تنها کاری که باید انجام دهید نصب ترافل و شروع کدنویسی قرارداد هوشمند خود توسط آن است.
در گذشته برای متصل شدن به بلاک چین اتریوم و اجرای کد یک قرارداد هوشمند ، کاربران مجبور بودند تا کل بلاک چین اتریوم را دانلود کنند و اصطلاحاً تبدیل به یک فول نود شوند؛ اما با گذر زمان، افزونهای به نام متامسک (Metamask) عرضه شد که به تمامی کامپیوترها و مرورگرها، اجازه تعامل مستقیم با بلاک چین اتریوم را میداد. متامسک امروزه به عنوان یک کیف پول اتریوم نیز مورد استفاده قرار میگیرد (که در قسمت کیف پول های اتریوم به آن اشاره خواهیم کرد)؛ اما چیزی که در حال حاضر قصد صحبت در مورد آن را داریم، کاربرد متامسک به عنوان یک افزونه مرورگر است.
متامسک همانطور که اشاره کردیم، افزونهای است که بر روی مرورگرهای گوگل کروم (Google Chrome) ، موزیلا (Mozilla Firefox) ، بریو (Brave) و اپرا (Opera) نصب میشود و به برنامهنویسان و توسعهدهندگان این امکان را میدهد تا بدون تبدیل شدن به یک فول نود و تنها از طریق مرورگرهای خود، به نوشتن قراردادها و قرار دادن آنها بر روی بلاک چین اتریوم بپردازند. بنابراین در صورت تمایل برای کدنویسی و اجرای یک قرارداد هوشمند بر روی بلاک چین اتریوم توسط IDE هایی مانند ریمیکس ، پیش از هر چیزی باید یک افزونه متامسک به مرورگر خود اضافه نمایید. برای نصب این افزونه بر روی مرورگر کروم، میتوانید به این آدرس مراجعه کرده، گزینه Add to Chrome را انتخاب کنید و طبق دستورالعمل پیش بروید.
زبان سالیدیتی یک زبان سطح بالاست؛ بنابراین برای به اجرا در آوردن کد قراردادهای هوشمند نوشته شده توسط آن بر روی بلاک چین اتریوم ، نیاز است که از یک کامپایلر برای تبدیل این کد استفاده شود. کامپایلری که به طور معمول توسط اتریوم برای این کار مورد استفاده قرار میگیرد، سالسی (SolC) نام دارد (لازم به ذکر است که در صورت استفاده از IDE هایی مانند ریمیکس و ترافل، خود این IDE ها وظیفه کامپایل کردن کد ها را نیز انجام میدهند). بنابراین با استفاده از کامپایلر SolC ، کد قرارداد هوشمند نوشته شده توسط سالیدیتی ، به یک بایت کد تبدیل میشود؛ بایت کدی که توسط ماشین مجازی اتریوم (Ethereum Virtual Machine) قابل خوانش و اجراست (در قسمت بعدی این مقاله یعنی «ماشین مجازی اتریوم چیست؟» در خصوص زبانهای برنامهنویسی سطح بالا و سطح پایین وضیح خواهیم داد).
درباره برنامه نویسی به زبان سالیدیتی بیشتر بخوانید:
بخش دوازدهم: ماشین مجازی اتریوم (EVM) چیست؟
EVM یا ماشین مجازی اتریوم، محیطی مجازیست که کدهای سطح بالای مربوط به قراردادهای هوشمند را به یک فرمت قابل اجرا توسط همه ماشین ها تبدیل کرده و تضمین میکند که همه تراکنشها برای همه نودها به یک صورت اجرا شوند.
برای توضیح دقیقتر نحوه کار ماشین مجازی اتریوم، بهتر است نگاهی به انواع زبانهای برنامه نویسی داشته باشیم. به طور کلی زبانهای برنامه نویسی را به سه دسته تقسیم بندی میکنند:
- زبان سطح ماشین (machine-level): در زبان سطح ماشین، کدها به صورت صفر و یک هستند. این زبان برای انسان کاملاً غیرقابل فهم است.
- زبان سطح پایین (low-level): زبانهایی هستند که برای راحتتر شدن کار برنامه نویسان اختراع شدهاند. این زبانها توسط انسان قابل فهم هستند، اما همچنان به زبان ماشین نزدیکترند. به عنوان مثال میتوان زبان اسمبلی (Assembly) را نمونهای از زبانهای سطح پایین دانست.
- زبان سطح بالا (high-level): زبانهایی هستند که نسبت به زبانهای سطح پایین، نزدیکی بیشتری به زبان انسان دارند؛ مانند زبان پایتون (Python) و جاوا (Java). مسئلهای که در مورد تمامی زبان های برنامه نویسی سطح بالا وجود دارد این است که چون کدهای نوشته شده توسط آنها برای ماشین قابل خوانش نیست، این کدها که اصطلاحاً کد منبع (یا source code) نامیده میشوند باید توسط نرمافزاری به نام کامپایلر (compiler) به یک کد باینری (زبان ماشین) تبدیل شوند تا توسط کامپیوترها قابل اجرا باشند. به این ترتیب که کد سطح بالا ابتدا به یک زبان سطح پایینتر مانند C ترجمه میشود؛ سپس زبان C به یک زبان سطح پایینتر مانند اسمبلی ترجمه شده و در نهایت کد اسمبلی به زبان ماشین (صفر و یک) تفسیر میگردد.
زبان برنامه نویسی قراردادهای هوشمند اتریوم یعنی سالیدیتی نیز یک زبان سطح بالا، و بسیار شبیه به زبان جاوا اسکریپت (javascript) است. بنابراین به منظور اجرای کدهای نوشته شده به این زبان، لازم است که این کدهای سطح بالا، ابتدا به زبان سطح ماشین تبدیل شوند. ماشین مجازی اتریوم دقیقاً چنین وظیفهای دارد.
زیان برنامه نویسی سالیدیتی اتریوم هر زبان برنامه نویسی که بین زبانهای سطح بالا و زبان ماشین قرار میگیرد را میتوان نوعی ماشین مجازی در نظر گرفت. به بیان دیگر ماشین مجازی (VM)، برنامه را به یک فرمت قابل اجرا برای همه سیستمها تبدیل میکند تا به راحتی تفسیر و اجرا شوند. شاید این شعار معروف زبان جاوا به گوشتان آشنا باشد: «یک بار بنویس و همه جا اجرا کن». در واقع این جمله اشارهای به استفاده جاوا از ماشین مجازی خاص خود یعنی JVM است که اجرای کدهای جاوا را روی تمامی سیستم ها (لینوکس، ویندوز و مک) امکانپذیر میسازد.
ماشین مجازی اتریوم زمانی که از اجرای غیرمتمرکز و توزیع شده قراردادهای هوشمند صحبت میکنیم، بسیار مهم است که کد این قراردادها نیز همچون جاوا، برای همه نودهای شبکه (با معماریهای گوناگون سیستم) قابل تفسیر و اجرا باشد. به همین دلیل اتریوم از ماشین مجازی خاص خود به نام EVM استفاده میکند. EVM درست قبل از لایه عملیاتی ماشین واقع شده است. زمانی که یک قرارداد هوشمند به زبان سطح بالای سالیدیتی نوشته میشود، ابتدا کد آن به زبان بایت کد (Byte code) که زبان مشترک میان تمامی نودهای اتریوم است تبدیل میشود. سپس این بایت کدها از طریق دستورالعملهای خاص EVM که آپ کد (Op code) نامیده میشوند، به زبان ماشین تبدیل شده و وارد فاز عملیاتی میشوند.
محل قرارگیری لایه ماشین مجازی اتریوم آپ کدهای EVM دستوراتی ساده و قابل فهم برای انسان هستند (مانند ADD برای عمل جمع یا SHA3 برای رمزنگاری با استفاده از الگوریتم Keccak-256 hash) که از آن ها برای محاسبه راحتتر هزینه یا گس (Gas) مورد نیاز برای پردازش کد استفاده میشود. میتوانید همه آپ کدهای EVM را به همراه گس مورد نیاز برای اجرای هریک از آنها، از این آدرس مشاهده نمایید.
در ادامه درباره مفهوم کارمزد یا گس اتریوم ، توضیحات کاملی را ارائه خواهیم داد اما به عنوان یک تعریف ابتدایی، گس ، مکانیزمی برای پرداخت هزینه پردازش تراکنش ها و کد قراردادهای هوشمند در شبکه اتریوم است که از گیر افتادن شبکه در حلقههای بی نهایت (که منابع شبکه را به هدر میدهد) یا انجام حملات محروم سازی سرویس (DoS) بر روی شبکه جلوگیری میکند.
تعریف دقیقتر ماشین مجازی اتریوم و وظایف آن
به طور کلی، ماشین مجازی اتریوم زیرساختی برای اجرای تراکنشها و قراردادهای هوشمند در شبکه اتریوم است که نودهای شبکه را قادر میسازد درباره نحوه اجرای دستورالعملها به توافق برسند. EVM همچنین دو قابلیت اساسی را برای شبکه فراهم میکند:
- جلوگیری از حملات محروم سازی سرویس (DoS) روی شبکه اتریوم با استفاده از مکانیزم گس (Gas)
- ایجاد یک ران تایم (به معنی زمان مورد نیاز برای اجرای برنامه ها) و فضای ایزوله برای اجرای برنامه ها بر روی سیستم میزبان. به بیان دیگر ماشین مجازی اتریوم یک سطح جدایی بین «کدهای اجرایی» و «دستگاه اجرا کننده» ایجاد میکند. این لایه جداکننده ایزوله برای توسعهی قابلیتهای جدید نرمافزاری، جدا بودن نرمافزارها از یکدیگر و همچنین اطمینان از جدا بودن از سیستم میزبان، مورد استفاده قرار میگیرد. این محیط ایزوله از طریق شبکههای تست نت اتریوم مانند تست نت Ropsten و Rinkeby به منظور ایجاد یک محیط آزمایش و توسعه، فراهم میگردد.
این عملکرد چندلایه در ماشین مجازی اتریوم، در حقیقت همان قلب تپنده بلاک چین اتریوم است که اجرای هرگونه برنامهای را بر روی آن ممکن ساخته و بلاک چین اتریوم را به یک ماشین تورینگ کامل (Turing-complete) تبدیل میکند. ماشین تورینگ کاملی که تعمداً با پارامتری به نام گس (Gas) محدود شده است. در ادامه به توضیح مفهوم گس میپردازیم.
درباره EVM بیشتر بخوانید:
بخش سیزدهم: گس (Gas) چیست و چگونه تعیین میشود؟
همانطور که پیشتر گفتیم، برای این که قرارداد هوشمند شما (یا اساساً هر تراکنش دیگری که قصد انجام آن را دارید) در بلاک چین اتریوم به اجرا گذاشته شود، کد آن باید برای تمامی اعتبارسنجها یا فول نودها فرستاده شده و مورد تأیید آنها قرار گیرد. این به این دلیل است که بلاک چین اتریوم بر طبق مکانیزم اجماع گواه اثبات کار عمل میکند که همین مسئله یکی از نقاط شباهت اتریوم و بیت کوین است. در الگوریتمهای اجماع گواه اثبات کار، توان پردازشی بسیار بالایی از فول نودها یا همان ماینرها برای اعتبارسنجی تراکنشها و پردازش قراردادها صرف میشود. از یک سو هرچه تعداد این فول نودها بیشتر باشد، توزیع شدگی و امنیت کل شبکه نیز به همان نسبت افزایش مییابد (چرا که هکرها برای حمله به شبکه، توان پردازشی بسیار بیشتری را احتیاج خواهند داشت) و از سوی دیگر تعدد ماینرها باعث مصرف بیشتر منابع پردازشی (شامل سخت افزار و انرژی و زمان) خواهد شد. بنابراین منطقی است که ماینرها برای تأیید هر تراکنش و یا ماین کردن هر بلاک، مبلغی را به عنوان پاداش و کارمزد دریافت کنند؛ تا هم توان پردازشی مصرف شده جبران شود و هم ماینرهای بیشتری برای عضویت در این شبکه ترغیب شوند.
بخشی از این مشوقها به صورت پاداش استخراج بلاک (که در حال حاضر میزان آن ۲ اتر است) به ماینرها تعلق میگیرد؛ اما اعتبارسنجی و ثبت هر تراکنش یا اجرای هر قرارداد هوشمند نیز به نوبه خود مستلزم پرداخت کارمزد (fee) است.
به بیان ساده، گس (Gas) در شبکه اتریوم، واحدی برای پرداخت کارمزد است؛ اما همانطور که پیشتر گفتیم، گس علاوه بر بحث کارمزد، نقش حیاتی دیگری را نیز در شبکه اتریوم ایفا میکند. در واقع گس، محدودیتی است که بر روی محاسبات انجام شده در شبکه اعمال میشود تا از حملات خرابکارانه و یا وجود حلقههای پایان ناپذیر در کد قراردادهای هوشمند جلوگیری کند. به همین منظور فرستنده تراکنش در شبکه اتریوم، باید میزان گس تراکنش را تعیین کرده و معادل آن در حساب خود موجودی داشته باشد. اما سوال اینجاست که گس چگونه تعیین میشود؟
حد گس، قیمت گس و نحوه تعیین آنها
کسی که تراکنش را ارسال میکند، برای تعیین گس باید دو پارامتر را مشخص کند: حد گس (Gas limit) و قیمت گس (Gas Price). پیش از تعریف حد گس و قیمت گس، لطفاً به این مثال توجه کنید:
فرض کنید خودروی شما برای هر ۱۰ کیلومتر رانندگی، به یک لیتر بنزین احتیاج دارد و قیمت هر لیتر بنزین نیز یک دلار است. شما با داشتن این اطلاعات، میتوانید پیشبینی کنید که به عنوان مثال برای ۵۰ کیلومتر رانندگی، به ۵ لیتر بنزین احتیاج خواهید داشت و هزینه بنزین شما در مجموع ۵ دلار خواهد شد. در این مثال، تعداد لیتر بنزینی که برای سفر خود احتیاج دارید، نماینده مفهوم حد گس، و قیمت هر لیتر بنزین، نماینده قیمت گس است. بنابراین مجموع هزینه پرداختی شما برای سوخت، برابر با حاصلضرب حد گس (تعداد لیتر)، در قیمت گس (قیمت هر لیتر بنزین) خواهد بود.حال به تعاریف زیر توجه کنید:
- حد گس (Gas limit)*: حداکثر واحد گسی است که برای انجام همه محاسبات یک قرارداد یا یک تراکنش مورد نیاز است و میزان آن به پیچیدگی عملیات بستگی دارد. برای هر آپ کد (Op code) یا دستور عملیاتی خاص در EVM، حد گس مشخص شده و میزان آن ثابت خواهد بود.
توجه داشته باشید که در وایت پیپر اتریوم، بجای عبارت gas limit ، از start gas استفاده شده که منظور هر دو عبارت همان حد گس است.
- قیمت گس (Gas Price): مقدار اتری است که برای هر واحد گس هزینه میشود و در حقیقت اولویت انجام تراکنش را برای ماینرها مشخص میکند. لازم به ذکر است که قیمت گس بر خلاف حد گس، ثابت نیست و تعیین مقدار آن کاملاً بر عهده فرستنده تراکنش است (مانند کارمزد بیت کوین)؛ اما با توجه به میزان ترافیک موجود در شبکه، استانداردهایی برای تعیین قیمت گس مشخص شده است که میتوانید از سایت ethgasstation.info مشاهده کنید. به عنوان مثال، در تصویر زیر ۳ قیمت گس پیشنهادی (در تاریخ ۱۲ شهریور ۹۹) با اولویت حداقل (تأیید تراکنش در ۳۰ دقیقه)، استاندارد (تأیید تراکنش در ۵ دقیقه)، و سریع (تأیید تراکنش در ۲ دقیقه) را مشاهده میکنید.
قیمت گس مورد نیاز برای تراکنش های سریع، متوسط و کند همانگونه که در تصویر بالا مشاهده میکنید، میزان گس با Gwei (بخوانید گوِی یا جی وِی) بیان میشود. وِی (wei) واحد خرد شده اتر است (مانند ساتوشی برای بیت کوین) و رابطه آن با اتر به صورت زیر بیان میشود:
چنانچه برای انجام تراکنش اتریوم از کیف پولهایی همچون اگزودوس یا کوینومی استفاده کنید، کیف پول به طور خودکار کارمزد حداقلی یا استاندارد را برای تراکنش تعیین میکند و چنانچه از کیف پولهای مخصوص اتریوم مثل مای اتر والت (myetherwallet) یا متا مسک (metamask) استفاده کنید، میتوانید به صورت دستی قیمت گس را تعیین کنید.
در نهایت مقدار کل کارمزد پرداخت شده (مانند مثال خودرو و بنزین) از حاصلضرب حد گس در قیمت گس به دست میآید:
برای تعیین حد گس نیز دقت داشته باشید که حد گس باید برابر یا بیشتر از حداقل گس مورد نیاز برای انجام محاسبات باشد. به عنوان مثال حد گس لازم برای انجام یک تراکنش ساده، ۲۱۰۰۰ گس است. در صورتی که این تراکنش قرارداد هوشمندی را فعال کند یا خود شامل کد یک قرارداد هوشمند باشد، باید گس مربوط به محاسبات انجام شده نیز در این تراکنش لحاظ شود:
در تصویر زیر نمونه یک تراکنش فعال کننده قرارداد هوشمند را مشاهده میکنید:
تراکنش فعال کننده قرارداد هوشمند در بلاک چین اتریوم چنانچه حد گس از حداقل میزان لازم برای انجام محاسبات کمتر باشد، تراکنش (و پردازشهای مربوط به آن) تا لحظه پایان یافتن گس ادامه مییابد؛ سپس با اتمام گس، تراکنش ناموفق اعلام شده، تمامی مبالغ منتقل شده به حساب فرستنده بازگردانده میشود، و حالت حساب ها نیز به حالت قبلی باز میگردد. اما گس مصرف شده به حساب نود ماینر فرستاده شده و دیگر قابل بازگشت نیست. در صورتی که حد گس از حداقل گس لازم برای انجام محاسبات (actual gas) بیشتر باشد، تراکنش با موفقیت اجرا شده و در نهایت، گس اضافی به حساب فرستنده تراکنش بازگشت داده میشود.
اما باید دقت داشت که انتخاب گس زیاده از حد نیز ممکن است دارای خطراتی باشد؛ به عنوان مثال وقتی تراکنش شما فعال کننده یک قرارداد هوشمند جدید باشد، ممکن است باگی در این قرارداد وجود داشته باشد که میزان اضافی گس شما را نیز مصرف کند. جدای از این موضوع، طبق پروتکل بلاک چین اتریوم، هر بلاک دارای محدودیتی به نام سقف گس بلاک (block gas limit) است که ظرفیت هر بلاک را تعیین میکند. سقف گس بلاک، حداکثر میزان گسی است که تراکنش های موجود در یک بلاک میتوانند داشته باشند. بنابراین اگر به طور مثال کارمزد یک تراکنش از سقف گس بلاک بیشتر باشد، با ارور «Exceeds block gas limit» مواجه شده و تراکنش ناموفق اعلام خواهد شد.
سقف گس بلاک، در هر بلاک اتریوم متفاوت است و میزان آن توسط یک الگوریتم و با رأی ماینرهای شبکه تعیین میشود. با افزایش سقف گس، ماینرها میتوانند تراکنشهای بیشتری را در بلاک قرار داده و کارمزد بیشتری دریافت کنند؛ اما در عوض به پهنای باند اینترنت و تجهیزات سختافزاری بیشتری نیز نیاز خواهند داشت. در حال حاضر (شهریور ماه ۹۹) سقف گس هر بلاک در شبکه مین نت اتریوم ۱۲،۴۷۴،۸۸۰ گس است. در نمودار زیر تغییرات سقف گس بلاک در شبکه اتریوم، از زمان آغاز به کار شبکه تا کنون، نمایش داده شده است:
تغییرات سقف گس بلاک در شبکه اتریوم؛ منبع: etherscan.io در پایان این قسمت، لازم به ذکر است که هزینهی گس تنها محاسبات در شبکهی اتریوم را شامل نمیشود بلکه کاربران برای استفاده از فضای ذخیره سازی نیز هزینه میپردازند. از آنجایی که افزایش حجم ذخیرهسازی تراکنش کاربران در نهایت موجب افزایش حجم پایگاه دادهی شبکهی اتریوم (دفتر کل) در تمامی گرهها میگردد، این عامل کاربران را به کاهش حجم فضای ذخیرهسازی تشویق میکند.
بخش چهاردهم: اتر چیست؟
تا به این جای این مقاله و احتمالاً در دنیای رمز ارز ها بارها و بارها به کلمه اتر (ETH) برخوردهاید؛ و میدانید که اتر نام رمز ارز اصلی شبکه اتریوم است. اتر نیز همانند بیت کوین ، نوعی دارایی رمزنگاری شده و وسیلهای برای پرداختهای آنلاینِ همتا به همتا و غیرمتمرکز محسوب میشود. اما همه کاربردهای اتر در پرداخت و انتقال ارزش خلاصه نمیشود؛ این رمز ارز در واقع سوخت اصلی شبکه اتریوم، و محرک فعالیت بر روی آن است.
شاید شنیده باشید که برای تعریف کارکرد اتر، آن را به سوخت خودروها تشبیه کرده و گاهی نیز آن را نفت دیجیتال مینامند (همانطور که پیشتر به بیت کوین لقب طلای دیجیتال و به لایت کوین لقب نقره دیجیتال داده بودند)؛ اما چرا نفت دیجیتال؟!
اتریوم ، نفت دیجیتال برای یافتن پاسخ، بیایید تصور کنیم اصلاً رمز ارزی به نام اتر در کار نیست و بلاک چین اتریوم از همان روز اول، تنها به منظور فراهم سازی بستری برای اجرای قراردادهای هوشمند و ایجاد توکنهای مربوط به آنها راه اندازی شده است. بسیار خب! فرض کنیم قراردادهای هوشمند نیز راه اندازی شدند و ده ها توکن جدید بر روی این شبکه تعریف شد؛ حال تأمین امنیت شبکه بر عهده کیست؟ چه کسانی وظیفه اعتبارسنجی تراکنشها و جلوگیری از تقلب و کلاهبرداری در شبکه را بر عهده دارند؟ چه کسی (یا کسانی) وظیفه اجرای محاسبات مربوط به قراردادهای هوشمند را بر عهده دارند؟ حتماً پاسختان این است: نودهای شبکه! درست است؛ اما به نظر شما نودهای شبکه با چه انگیزهای تجهیزات سخت افزاری خود را برای اعتبارسنجی تراکنشها و اجرای محاسبات قراردادهای هوشمند به کار میاندازند؟ (قطعاً این فعالیت ها در راه رضای خدا نیست!)
اتریوم به مثابه نفت دیجیتال اتریوم نیز همانند بیت کوین، به مکانیزمی برای حفظ امنیت شبکه خود احتیاج دارد؛ مکانیزم هایی همچون پاداش دهی برای ثبت بلاک ها، پرداخت کارمزد برای اعتبارسنجی تراکنش ها و همچنین پرداخت هزینه اجرای کد قراردادهای هوشمند (Gas). همه اینها مشوقهایی هستند که نودهای شبکه را به مشارکت هرچه بیشتر و افزایش امنیت شبکه سوق میدهند. شاید بگویید هنوز هم نیازی به وجود اتر نیست؛ چرا که میتوان تمامی این هزینه ها و کارمزدها را با استفاده از همان توکنهای تعریف شده بر روی شبکه اتریوم پرداخت کرد. اما این احتمال از اساس مردود است؛ چرا که در حال حاضر بیش از ۲۰۰،۰۰۰ توکن مختلف بر روی این شبکه تعریف شده که هر یک، ارزش و کاربردی متفاوت از دیگری دارد. مسلماً با پرداخت ناهماهنگ و غیرعادلانه به نودها، نمیتوان منافع آنها را تأمین کرد و آنها را به حفاظت از شبکه سوق داد؛ اینطور نیست؟
حالا احتمالاً معنی «سوخت شبکه» و «نفت دیجیتال» را بهتر درک خواهید کرد. شبکه اتریوم برای حفظ امنیت خود و ایجاد انگیزه برای فعالیت روی این پلتفرم، به یک رمز ارز واحد و مورد قبول همه اعضای شبکه نیازمند است؛ یعنی همان اتر (ETH). در ادامه این مقاله درباره نحوه تعیین و پرداخت این کارمزدها به طور مفصل صحبت خواهیم کرد.
در زمان نگارش این مقاله، طبق رتبه بندی سایت کوین مارکت کپ، اتر پس از بیت کوین، در رتبه دومین رمز ارز برتر بازار (از لحاظ حجم بازار) قرار دارد. نکته جالب اینکه اتر بر خلاف بیت کوین، هنوز محدودیت عرضه ندارد؛ اما به احتمال قوی، پس از انجام آپدیت اتریوم ۲.۰ و تغییرات نهایی این شبکه، سقفی برای عرضه کوینهای جدید تعیین خواهد شد.
همانند بیت کوین که به واحدهای کوچکتری به نام ساتوشی تقسیم میشود، هر واحد اتر نیز به واحدهای کوچکتری به نام وِی (wei) قابل تقسیم است. در جدول زیر ارزش نسبی wei و دیگر واحدهای خُرد اتر، قابل مشاهده است:
جدول تبدیل اتر به وی حال که با قراردادهای هوشمند به طور کامل آشنا شدیم و چیستی آنها، چگونگی ایجاد آنها و چگونگی ثبت آنها بر روی بلاک چین اتریوم را دریافتیم، بد نیست نگاهی به دستاوردهایی که این قراردادها برای انسانها به ارمغان آوردند و حوزههایی که توسط این قراردادها دستخوش تمرکززدایی شدند داشته باشیم.
بخش پانزدهم: دستاوردها و کاربردهای اتریوم
تا به این جای کار، با نقاط اصلی تمایز اتریوم از بیت کوین آشنا شدیم و دریافتیم که در مرکزیت تمامی این تفاوتها، چشمانداز بلند مدت اتریوم برای تمرکززدایی از تمامی فرآیندهای اینترنتی و دیجیتالی وجود دارد. همچنین متوجه شدیم که اتریوم برای دستیابی به این هدف، از زبان برنامه نویسی تورینگ کاملی استفاده میکند که به آن امکان اجرا و پیادهسازی مفهومی به نام قرارداد هوشمند را میدهد؛ و همینطور اشاره کردیم که وجود پدیدهای به نام قرارداد هوشمند، کلید بلاک چین اتریوم برای تبدیل شدن به پلتفرمی است که میتواند تمامی فرآیندها را به صورت غیرمتمرکز به اجرا در آورد. در این قسمت از این مقاله قصد داریم نگاهی به دستاوردهای اتریوم در این راستا داشته باشیم و حوزههایی را مورد بررسی قرار دهیم که وجود اتریوم باعث تمرکززدایی از آنها شده است. این دستاوردها را شاید بتوان به چهار دسته کلی عرضه اولیه سکه یا ICO ، اپلیکیشنهای غیرمتمرکز یا dapp ها ، صنعت مالی غیرمتمرکز یا defi و سازمان های خودگردان غیرمتمرکز یا DAO ها تقسیم کرد. در ادامه، به تشریح هر یک از این موارد به صورت جداگانه خواهیم پرداخت.
عرضه اولیه سکه یا (Initial Coin Offering (ICO
در قسمتهای قبل اشاره کردیم که یکی از عواملی که ویتالیک بوترین را به فکر راهاندازی پلتفرمی مانند اتریوم انداخت، عدم وجود یک بلاک چین مرجع برای راهاندازی رمز ارز های جدید بود. تا پیش از ظهور اتریوم ، هر شخص یا سازمانی برای تأسیس یک رمز ارز جدید، نیاز داشت تا بلاک چین منحصر بفرد خود را راهاندازی کند؛ و راهاندازی یک بلاک چین نیز کار کمهزینه و کم دردسری نیست. بنابراین ویتالیک تصمیم گرفت تا پلتفرم خود را طوری طراحی کند که به همگان این امکان را بدهد تا رمز ارز های جدید خود را با بهرهگیری از قرارداد هوشمند ، بر روی آن راهاندازی کنند. این اتفاق، در نهایت به وقوع پیوست و با موفقیت گسترده و چشمگیری نیز روبهرو شد.
در دنیای بلاک چین و رمز ارزها، به رمز ارزی که بر روی یک بلاک چین دیگر پیادهسازی شده و به فعالیت میپردازد، اصطلاحاً توکن (token) میگویند. (برای کسب اطلاعات بیشتر در خصوص تفاوت توکن و کوین، میتوانید به این مقاله مراجعه کنید: تفاوت توکن و کوین چیست؟)در حال حاضر، برای راهاندازی یک رمز ارز جدید دو راه وجود دارد؛ اول اینکه یک بلاک چین مجزا از سایر بلاک چینهای موجود راهاندازی شود و رمز ارز مورد نظر بر روی این بلاک چین تعریف شود. چنین راهکاری مسلماً ریسکهای مالی زیادی را به همراه دارد. چرا که راهاندازی یک بلاک چین مستقل، مستلزم طی مراحل پژوهشی، آزمایشی و اجراییست که خود پروسه زمانبر و پرهزینهای است. ضمن اینکه پس از راهاندازی چنین بلاک چینی، باید به دنبال بازاریابی آن و معرفی آن به جامعه توسعه دهندگان و کاربران بود. در صورتی که این پروژه به اهداف نهایی خود نرسیده و شکست بخورد، تمامی این هزینهها به هدر خواهد رفت.
راهکار دوم، ایجاد یک توکن بر بستر بلاک چینهای موجود فعلیست. در این حالت، شخص یا شرکت سازنده رمز ارز ، میتواند رمز ارز خود را برای مدتی در قالب یک توکن بر روی بلاک چین اتریوم (یا سایر پلتفرمهایی که قابلیت اجرای قراردادهای هوشمند را دارند) پیادهسازی کند و در طول این مدت، سرمایه لازم برای تأسیس بلاک چین خود را با پیشفروش بخشی از توکنها جمعآوری نماید. مسلماً راهکار دوم صرفه مالی قابل توجهی برای سازندگان این رمز ارز به همراه خواهد داشت؛ چرا که با هزینه بسیار کمتر (در مقایسه با حالت اول) و بدون نیاز به بلاک چین مستقل، به جامعه کاربران و توسعه دهندگان بلاک چین میزبان دسترسی یافته و از آن بهره میبرد. ضمناً در صورت عدم موفقیت پروژه در پیشفروش توکنها، صاحبان پروژه پیش از پرداخت ضررهای هنگفت از این موضوع اطلاع یافته و گامهای بعدی را متناسب با نتایج کسب شده برمیدارند.
به عنوان مثال میتوان از پروژه بلاک چین TON (telegram open network) که به منظور ایجاد رمز ارز گرام (Gram) توسط شرکت تلگرام توسعه داده شده بود یاد کرد. این پروژه علی رغم محبوبیت فراوان، تیم فنی قوی و وایت پیپر قابل دفاع، در مراحل کسب مجوز از نهادهای قانون گذار امریکایی (SEC) ناکام ماند و همین موضوع باعث ضرر هنگفت صاحبان پروژه شد.
در دنیای امروز ما، هر شخصی که قصد عرضه رمز ارز جدیدی را داشته باشد اما سرمایه کافی برای راهاندازی یک بلاک چین جدید را در اختیار نداشته باشد، میتواند رمز ارز خود را برای مدتی در قالب یک توکن بر روی بلاک چین اتریوم پیادهسازی کند و در طول این مدت، سرمایه لازم برای تأسیس بلاک چین خود را جمعآوری نماید. این شخص باید وبسایتی را برای توکن خود طراحی کند و وایت پیپری را نیز برای آن آماده نماید. در این وایت پیپر، ساز و کار و نحوه عملکرد این توکن ، نقاط قوت آن و دلایل برتری یا تمایز آن از سایر رمز ارز ها و توکن های موجود در بازار، به طور کامل و فنی ذکر میشود و این وایت پیپر در وبسایت رسمی این توکن قرار میگیرد.
افراد جامعه با مراجعه به این وبسایت و مطالعه این وایت پیپر، میتوانند در صورت خوشبینی به آینده این توکن با توجه به نکات ذکر شده در وایت پیپر، به پیشخرید هر مقدار دلخواهی از آن بپردازند. مبلغ قابل پرداخت برای پیشخرید یک توکن ، یکی از نکاتی است که از پیش توسط شخص یا تیم توسعهدهنده در کد قرارداد هوشمند توکن مشخص میشود؛ اما این مبلغ به طور حتم، بسیار کمتر از قیمت این توکن در صورت تأسیس بلاک چین مستقل و تبدیل شدن به یک رمز ارز است. خریداران میتوانند مبلغ قابل پرداخت را در قالب سایر رمز ارزها مانند بیت کوین و اتریوم و یا در قالب ارزهای رایج کشورها مانند دلار و یورو بپردازند. توسعهدهنده توکن در کد قرارداد هوشمند خود، حجم بازار یا میزان سرمایهای که مایل است توسط ICO به آن دست پیدا کند را نیز مشخص مینماید. پس از جمعآوری این حجم از سرمایه، قرارداد هوشمند به صورت خودکار این توکن را از بلاک چین اتریوم جدا کرده و توسعهدهنده آن میتواند با سرمایه اولیه جذب شده، بلاک چین مستقل خود را راهاندازی کند. همانطور که حتماً متوجه شدهاید، تمامی این فرآیند از طریق یک قرارداد هوشمند انجام میپذیرد؛ قرارداد هوشمندی که با شرایط و مفاد منحصر بفرد خود، بین توسعهدهنده یک توکن و اتریوم منعقد شده است.
درباره ICO ها بیشتر بخوانید:
ملموسترین و بهترین مثال از ICO های موجود در اتریوم ، توکن های ERC-20 هستند. ERC مخفف عبارت Ethereum Request for Comment است و اشاره به پروپوزالهایی دارد که در زمانهای مختلف به اتریوم و در راستای بهبود عملکرد شبکه آن ارائه شده است. عدد ۲۰ نیز نمایانگر شماره یک پروپوزال مشخص است؛ بنابراین ERC-20 به طور کلی به پروپوزال مشخصی اشاره دارد که زمانی به اتریوم ارائه شد و توسط آن مورد استفاده قرار گرفت. این پروپوزال در واقع یک استاندارد است که برای راهاندازی توکن بر روی بلاک چین اتریوم مورد استفاده قرار میگیرد. اکثریت افرادی که قصد راهاندازی توکن های خود بر روی بلاک چین اتریوم را دارند، از این استاندارد تبعیت میکنند.
در حال حاضر، هزاران هزار توکن بر روی بلاک چین اتریوم مشغول به فعالیت هستند که آنها را با نام توکن های ERC-20 میشناسیم (هرچند که بسیاری از این توکنها، نامهای منحصر بفرد خود را نیز دارند). توکن های ERC20 دقیقاً مانند رمز ارز های مستقل مورد خرید و فروش قرار میگیرند، قیمت آنها دچار نوسانات صعودی و نزولی میشود و در کیف پول های رمز ارز مشخصی نگهداری میشوند. لازم به ذکر است که ERC20 تنها استاندارد موجود برای توکنهای اتریوم نیست و به جز آن، استانداردهای دیگری مانند ERC-721 ، ERC-777 ، ERC-1400 ، ERC-1410 ، ERC-1594 ، ERC-1643 و ERC-1644 نیز وجود دارند که هر یک برای اهداف متفاوتی مناسب هستند. برای مثال یکی از تفاوتهای اساسی توکن های ERC20 و توکن های ERC721 در این است که توکن های ERC721 از نوع غیرقابل تعویض یا Non-Fungible هستند.
منظور از غیرقابل تعویض بودن این است که هر یک از این توکن ها (بر خلاف توکن های ERC20 و همچنین رمز ارز هایی مانند بیت کوین و اتریوم) دارای مشخصاتی خاص هستند و با سایر توکن های از نوع خود نیز قابل تعویض نیستند. به طور معمول، توکن هایی که از آنها برای انجام امور مالی استفاده میشود از نوع قابل تعویض هستند و موارد استفاده توکنهای غیرقابل تعویض بیشتر مختص بازیها، آثار هنری، پلتفرمهای ثبت و حفظ مالکیت آثار و هر مورد دیگریست که در آن نیاز باشد تا یک توکن از توکنی دیگر متمایز شود.
شاید جالب باشد که بدانید بسیاری از رمز ارز های موفق و نامآشنایی که امروزه در بازار کریپتو در حال فعالیت هستند نیز ابتدا توکنی بر روی بلاک چین اتریوم بودهاند. رمز ارز ترون (TRON) که در زمان نگارش این مطلب (مرداد ۹۹) در ردهبندی سایت کوینمارکتکپ در جایگاه ۱۵ قرار دارد، یکی از همین نمونههاست. این رمز ارز در تاریخ ۲۵ ژوئن سال ۲۰۱۸ به طور رسمی استقلال خود از اتریوم را اعلام کرد و اولین بلاک (بلاک جنسیس) از بلاک چین مستقل خود را استخراج نمود. ترون به مدیریت جاستین سان (Justin Sun)، در حال حاضر یکی از رقبای اتریوم محسوب میشود.
اپلیکیشن های غیر متمرکز یا Decentralized Apps (dapps)
یکی از دستاوردهای انقلابی پلتفرم اتریوم برای جامعه بشری، امکان توسعه اپلیکیشن های غیر متمرکز یا dapp ها بود. برای توصیف مفهومی به نام اپلیکیشن غیرمتمرکز، بهتر است ابتدا نگاهی به اپلیکیشنهای متمرکز داشته باشیم و ویژگیهای آنها را با هم مورد بررسی قرار دهیم. منظور ما از اپلیکیشن متمرکز، تمامی اپلیکیشن ها و وبسایت هایی هستند که ما امروزه از آنها استفاده میکنیم. وبسایت هایی مانند گوگل ، فیس بوک ، یوتیوب ، اینستاگرام ، آمازون و … همگی از نوع متمرکز هستند. تمامی آنها توسط یک تیم مدیریتی مشخص اداره شده و تصمیمات مورد نیاز این وبسایت ها و اپلیکیشن ها نیز توسط اعضای همین تیم اتخاذ میشوند.
همچنین، تمامی آنها پایگاههای داده متمرکزی دارند که در یک یا نهایتاً چند نقطه از جهان قرار گرفته است. وبسایت ها و اپلیکیشن های متمرکز امروزه به خوبی جای خود را در جوامع بشری پیدا کردهاند و توسط میلیونها نفر در سراسر جهان مورد استفاده قرار میگیرند. زمان نسبتاً زیادی از ظهور این اپلیکیشنها میگذرد، و همین امر نیز باعث شده است تا آنها به مرور زمان کیفیت خدماتی که به مصرفکنندگان خود ارائه میکنند را ارتقا ببخشند. مجموعه این عوامل، باعث شدهاند که انسانها به مشکلاتی که استفاده از این نوع نرمافزارها میتواند برایشان ایجاد کند توجه چندانی نداشته باشند؛ اما این به معنی عاری از اشکال بودن آنها نیست.
در بهترین حالت، استفاده از اپلیکیشنهای متمرکز میتواند سه مشکل اساسی را با خود به همراه داشته باشد: دسترسی تیم مدیریتی این اپلیکیشن ها به اطلاعات کاربران و توانایی استفاده از آنها بدون رضایت کاربران، توانایی دستکاری، سانسور یا فیلتر کردن اطلاعات در صورت تمایل، و مشکلی به نام نقطه تکی شکست.
در خصوص دسترسی تیم مدیریتی این نرمافزارها به اطلاعات کاربران و استفاده از آنها بدون کسب اجازه، به مثالهای بسیاری میتوان اشاره کرد. شاید بارزترین مثال در این زمینه، ماجرای فیس بوک و انتخابات ۲۰۱۶ ایالات متحده امریکا باشد. فیس بوک در جریان این انتخابات، اطلاعات کاربران را به شرکتی خصوصی به نام کمبریج آنالتیکا (Cambridge Analytica) فروخته بود. این شرکت سپس با استفاده از این اطلاعات و با بررسی علایق عموم افراد جامعه، متن سخنرانیهای دونالد ترامپ را تنظیم میکرد؛ و همینطور برای کاربران با علاقهمندیهای مختلف نیز، تبلیغاتی متفاوت در حمایت از ترامپ میفرستاد. این اتفاق، اولین و آخرین باری نیست که از اطلاعات کاربران بدون رضایت آنها و در جهت منافع شخصی استفاده میشود. در طول تاریخ، این اطلاعات بارها و بارها توسط نرمافزارهای مختلف به شرکتهای تبلیغاتی و بازاریابی فروخته شدهاند؛ در حالی که بسیاری از ما حتی از این اتفاقات باخبر نیستیم.
توانایی دستکاری، سانسور یا فیلتر کردن اطلاعات نیز یکی دیگر از مشکلاتیست که استفاده از این نرمافزارها میتواند با خود به همراه داشته باشد. در دنیای امروز، میتوان ادعا کرد که اکثریت جمعیت جهان برای کسب اطلاعات در مورد هر نوع موضوعی، به گوگل مراجعه میکنند. گوگل در حقیقت یک شرکت متمرکز با یک تیم مدیریتی مشخص است که وظیفه اطلاعرسانی به جمعیت کثیری از جهان را بر عهده دارد. بنابراین چه تضمینی وجود خواهد داشت که اطلاعات ارائه شده توسط گوگل ، از فیلتر خاصی عبور نکند و یا در یک برهه زمانی خاص، دسترسی به انواع خاصی از اطلاعات توسط این شرکت جهتدهی و یا حتی منع نشود؟ ذکر این نکات به معنی وقوع هرروزه این اتفاقات و یا به شکلی که توسط عموم افراد جامعه قابل رویت و تشخیص باشد نیست؛ اما سادهانگارانه است که احتمال وقوع آنها را نیز غیرممکن بدانیم.
در نهایت نیز مشکلی به نام نقطه تکی شکست یا(SPOF) Single Point of Failure وجود دارد که مشکل ذاتی تمامی سیستمهای متمرکز و غیرتوزیعشده است. نقطه تکی شکست به قسمتی از یک سیستم گفته میشود که در صورت خرابی و یا از کار افتادگی، کل سیستم را با مشکل مواجه میکند. همانطور که پیشتر نیز اشاره کردیم، پایگاههای دادهی وبسایتها و نرمافزارهای امروزی از نوع متمرکز بوده و در یک یا چند نقطه از جهان قرار دارند. یکی از مشکلات یک پایگاه داده متمرکز این است که میتواند به راحتی مورد حمله یا هک قرار بگیرد و بنابراین از امنیت کمی برخوردار است. حتی اگر مشکل امنیت و خطر وقوع یک حمله اینترنتی را نیز در نظر نگیریم، چنین پایگاه دادهای ممکن است به علل مختلفی از جمله ترافیک شبکه و یا یک اختلال، برای مدت زمان مشخصی کل شبکه را با مشکل مواجه کند و از ارائه خدمات به کاربران خود باز بماند.
تمامی نکات ذکر شده، مشکلاتی هستند که مفهومی به اسم اپلیکیشن غیرمتمرکز در جهت رفع آنها پا به عرصه ظهور گذاشته است. یک اپلیکیشن غیرمتمرکز به زبان ساده، وبسایت یا نرمافزاری است که توسط یک شخص یا گروهی از اشخاص توسعه مییابد و در قالب یک یا چند قرارداد هوشمند ، بر روی شبکه بلاک چین به اجرا گذاشته میشود. پس از شروع به کار یک اپلیکیشن غیرمتمرکز ، خود این توسعهدهندگان نیز کنترلی بر روی چگونگی ادامه کار آن نخواهند داشت و هیچ تصمیمی را به تنهایی در خصوص آن اتخاذ نخواهند کرد؛ بلکه تمامی تصمیمات به شکل دستهجمعی و در صورت توافق اکثریت اعضای شبکه به اجرا گذاشته خواهند شد.
به زبان کمی تخصصیتر، هر نرمافزاری متشکل از یک فرانتاند (FrontEnd) و یک بکاند (BackEnd) است. فرانتاند قسمتی از نرمافزار است که کاربر با آن سر و کار دارد؛ در حالی که بکاند به قسمت پشتصحنه یک نرمافزار گفته میشود که وظیفه انجام محاسبات را بر عهده دارد و کاربر چیزی از آن مشاهده نمیکند. در وبسایت های متمرکز و تحت وب معمولی، فرانتاند توسط یک رابط به بکاند متصل میشود. فرانتاند اپلیکیشن های غیرمتمرکز نیز با انواع متمرکز آنها تفاوتی ندارد. تفاوت این دو، در بکاند و رابطهای آنهاست؛ در اپلیکیشن های غیرمتمرکز ، بلاک چین نقش بکاند و قرارداد هوشمند نقش رابط را بازی میکند. بنابراین، فرانتاند نرمافزار غیرمتمرکز شما توسط رابطی به نام قرارداد هوشمند ، به شبکه بلاک چینی متصل میشود که نقش بکاند نرمافزارتان را ایفا میکند؛ بکاندی که تحت مدیریت یک شخص نیست و تمامی اعضای یک بلاک چین ، در خصوص نقشه راه و نحوه عملکرد آن تصمیمگیری مینمایند. یک اپلیکیشن غیرمتمرکز لزوماً متشکل از یک قرارداد هوشمند نیست و در اکثریت مواقع، از چند قرارداد هوشمند تشکیل میشود که هر یک وظایفی را بر عهده دارند، اما با یکدیگر در تعامل هستند.
یکی از شناختهشدهترین dapp ها در دنیای امروز، پلتفرم شرطبندی مبتنی بر بلاک چین آگر (Augur) است. آگر یک پلتفرم پیشبینی است که با استفاده از بلاک چین و بر مبنای آگاهی جمعی کار میکند. این پلتفرم این امکان را در اختیار کاربران قرار میدهد تا بر روی نتیجه نامعلوم یک اتفاق شرطبندی کنند. در نهایت و پس از مشخص شدن نتیجه این اتفاق، افرادی که پیشبینی درست را انجام داده بودند مبلغی را به عنوان جایزه دریافت کرده و افرادی که پیشبینی آنها درست از آب در نیامده است، مبلغی را تحت عنوان جریمه از دست میدهند. واضح است که هرچه تعداد کمتری از افراد به یک پیشبینی صحیح دست یافته باشند، مبلغی که به عنوان جایزه دریافت میکنند نیز بیشتر است. آگر یکی از نمونههای واضح و آشکار حاکمیتزدایی و خارج کردن کنترل فعالیتهای افراد جامعه از دست دولتهاست؛ چرا که در حالت معمول، بازارهای پیشبینی توسط دولتها به عنوان نوعی از قمار و شرطبندی تلقی میشوند و فعالیت در آنها ممنوع است؛ اما ذات غیرمتمرکز ، غیرقابلسانسور و غیرقابل ردیابی بلاک چین ، این امکان را در اختیار آنها قرار نمیدهد تا به مخالفت با آن پرداخته و یا از ادامه فعالیت آن جلوگیری کنند. برای مشاهده فرانتاند این اپلیکیشن غیرمتمرکز و یا شروع فعالیت در آن، میتوانید به این سایت مراجعه کنید.
یکی دیگر از dapp های معروفی که در حال حاضر مشغول به فعالیت است، اپلیکیشنی به نام storj است. storj نرمافزار غیر متمرکز و منبع بازی است که برای ذخیرهسازی ابری (Cloud Storage) طراحی شده و قصد دارد فرآیند ذخیرهسازی ابری را به فرآیندی سریعتر، کمهزینهتر و ایمنتر تبدیل کند. نرمافزارهای ذخیرهسازی ابری متمرکزی مانند Google Drive ، از تمامی مشکلات ذکر شده در بالا (در خصوص اپلیکیشن های متمرکز) رنج میبرند. این نرمافزارها به شکل بیرویهای از اطلاعات شما نسخه پشتیبان (backup) تهیه میکنند و همین امر باعث اشغال شدن پهنای باند پایگاه داده و اختلال در دسترسی شما به برخی از اطلاعات مورد نیازتان میگردد. همینطور مسئله امنیت اطلاعات و دسترسی توسعهدهندگان این نرمافزارها به اطلاعات و فایلهای شخصی شما نیز مطرح است. storj برای حل این مشکلات، از بلاک چین و روشهای رمزنگارانه منحصر بفرد آن بهره میگیرد. عملکرد این این نرمافزار به این شکل است که هر فایل رمزنگاری شدهای را به قطعات کوچکتر تقسیم میکند و آن را در بین تمامی نودها یا گرههای شبکه بلاک چین توزیع مینماید. استفاده از این روش، از اشغال شدن پهنای باند جلوگیری خواهد کرد و این اطمینان را نیز به شما خواهد داد که اطلاعات شما هرگز مورد حملاتی مانند هک قرار نمیگیرد. همچنین استفاده از روشهای رمزنگارانه مختص بلاک چین ، به هیچ شخص دیگری بجز شما اجازه دسترسی به اطلاعاتتان را نخواهد داد.
برای مشاهده وبسایت رسمی storj و آگاهی از نحوه عملکرد آن، از این لینک استفاده کنید. همچنین در صورت تمایل برای کسب اطلاعات بیشتر و جامعتر در خصوص اپلیکیشن های غیرمتمرکز نیز، میتوانید به این مقاله مراجعه کنید:
صنعت مالی غیرمتمرکز یا (Decentralized Finance (DeFi
defi از نظر لغوی، مخفف عبارت Decentralized Finance یا صنعت مالی غیرمتمرکز است. همانطور که از اسمش پیداست، دیفای در برابر صنعت مالی یا اقتصاد متمرکز (Centralized Finance/CeFi) قرار میگیرد؛ یعنی دقیقاً اقتصادی که امروزه بر جهان حاکم است. defi را شاید بتوان در حال حاضر، بزرگترین دستاورد اتریوم و بزرگترین گام آن در جهت دستیابی به اهدافی دانست که ویتالیک بوترین از ابتدا در سر داشت. هسته مرکزی مفهوم دیفای، خارج کردن کنترل و حاکمیت اقتصاد جهان از دست ابرقدرتها و توزیع این قدرت در بین تمامی اشخاص جامعه و نهادهای خصوصی است. در دنیایی که انسانها میتوانند به پول الکترونیک و غیرمتمرکزی دسترسی داشته باشند که تحت کنترل هیچ دولت و بانکی نیست؛ چرا نباید همین تمرکزگرایی را به سایر حوزههای مالی و اقتصادی بسط داد؟ چرا نباید از اپلیکیشن های غیرمتمرکزی که مبتنی بر بلاک چین هستند، برای کارهایی مانند وامدهی استفاده کرد؟ و چرا نباید هر خدماتی که توسط یک بانک ارائه میشود را توسط بلاک چین ارائه کرد؟ تمامی اینها، اقداماتی هستند که پلتفرم بلاک چینی اتریوم با بهرهگیری از قرارداد هوشمند ، امروزه در حال انجام آنهاست.
پروژههای defi امروزه به محبوبیت گسترده و چشمگیری دست یافتهاند و هرروزه موارد استفاده جدیدی توسط افراد و شرکتهای مختلف از سرتاسر دنیا به آنها اضافه میشود؛ اما در این بین، دو نوع از پروژهها نسبت به سایر انواع از محبوبیت بیشتری برخوردار بوده و به خوبی جای خود را در میان انسانها پیدا کردهاند. این دو نوع، اپلیکیشنهای مربوط به وامدهی و اپلیکیشنهای مربوط به صرافی های غیرمتمرکز هستند. به جهت همین محبوبیت روزافزون و همینطور در راستای توضیح بهتر و عملیتر مفهوم defi ، هر یک از این دو نوع را به صورت جداگانه بررسی خواهیم کرد و نمونههایی از پروژههای موفق در هر دو حوزه را ارائه خواهیم داد.
اپلیکیشن های وامدهی و وامگیری (lending and borrowing) اتریوم به معنای حقیقی کلمه، انقلابی را در صنعت مالی در جهان به پا کردند. امروزه ما در اتریوم با پروژههایی روبهرو هستیم که دقیقاً مانند بانکها اما با شرایط خیلی راحتتر از آنها، به پرداخت وام به کاربران خود میپردازند. دریافت وام از این اپلیکیشنها (بر خلاف بانکها) نیازمند هیچگونه ضامن معتبر و کارمند، فیش حقوقی و یا بروکراسی اداری نیست و همینطور در مدت زمان خیلی کوتاهتری به انجام میرسد. هر شخصی میتواند در ازای سپردهگذاری مقدار مشخصی از سرمایه، n برابر آن را تحت عنوان وام از این پلتفرمها دریافت کند و سپس در هنگام تسویه، مبلغی را به عنوان سود به آنها بپردازد (مقدار n ، متغیری است که در اپلیکیشنهای مختلف متفاوت است و از ابتدا در کد قرارداد هوشمند هر اپلیکیشن مشخص میگردد).
همچنین شخصی که مقدار مشخصی از یک رمز ارز را خریداری کرده و قصد فروش آن را نیز ندارد، میتواند به جای صرفاً نگهداری دارایی خود، آن را در اختیار این پروژهها قرار دهد تا توسط آن به افراد متقاضی، وام ارائه شود. این شخص سپس در ازای سپردهگذاری سرمایه خود، مبلغ مشخصی را تحت عنوان سود دریافت خواهد کرد. این فرآیند تقریباً چیزی شبیه به سپردهگذاری بلند مدت سرمایه در بانکهاست؛ با این تفاوت که سپردهگذاران هیچ تعهدی برای عدم بازپسگیری سپرده خود در یک مدت زمان مشخص ندارند و در هر زمان دلخواه، میتوانند سرمایه خود را از این پلتفرم جدا کنند. چنین پروژههایی، هیچ تفاوتی در بین افراد مختلف جامعه قائل نمیشوند و هر شخصی با هر شغل، حرفه و سنی میتواند از آنها استفاده کند؛ در حالی که در سیستم مالی متمرکز حاکم بر جامعه، برای مثال افراد زیر سنین قانونی توانایی بازگشایی حساب و دریافت خدمات بانکی را نخواهد داشت.
یکی از همین پروژه های دیفای مختص وام دهی که در حال حاضر به شدت نیز با استقبال کاربران مواجه شده است، اپلیکیشن غیرمتمرکزی به نام MakerDAO (میکردائو) است. MakerDAO یک اپلیکیشن مختص وام دهی با دو توکن منحصر بفرد به نامهای DAI و MKR است. در اپلیکیشن MakerDAO ، از توکن DAI برای ارائه وام به کاربران و همچنین تسویه آن استفاده میشود. DAI یک استیبل کوین با پشتوانه دلار امریکاست؛ بنابراین ارزش یک DAI همواره معادل یک دلار است. هر شخصی در صورت تمایل برای دریافت مقدار مشخصی از DAI ، باید ابتدا ۱.۵ برابر مبلغ درخواستی را در قالب اتر (و یا رمز ارز دیگری به نام BAT) در این اپلیکیشن سپردهگذاری کند. سپس هنگامی که میزان DAI دریافت شده به علاوه میزان سود از پیش تعیین شده توسط این شخص پرداخت شد و اصطلاحاً وام تسویه گردید، میزان اتر (یا BAT) سپردهگذاری شده نیز آزاد شده و به حساب شخص بازگردانده میشود (در خصوص کارایی توکن MKR در قسمت «سازمان خودگردان غیرمتمرکز یا DAO» همین مقاله توضیح خواهیم داد). MakerDAO در زمان نگارش این مقاله (۲۷ مرداد ۱۳۹۹) اولین پروژه defi از لحاظ حجم بازار و میزان سرمایه قفل شده توسط کاربران است. در صورت تمایل برای مشاهده تمامی پروژه های defi به علاوه رتبهبندی و حجم بازار آنها، میتوانید به این سایت مراجعه کنید: defipulse.com .
همانطور که پیشتر اشاره کردیم، یکی دیگر از انواع پروژه های defi که با استقبال کاربران مواجه شده است، اپلیکیشن های غیرمتمرکز تبدیل ارز دیجیتال و یا اصطلاحاً صرافی های غیرمتمرکز هستند. دلیل این نامگذاری این است که این اپلیکیشنها نیز دقیقاً مانند صرافی های متمرکز ، وظیفه تبدیل ارزهای دیجیتال را بر عهده دارند؛ اما تفاوت این صرافی های غیر متمرکز یا اصطلاحاً DEX ها (Decentralized Exchanges) با انواع متمرکز آنها در این است که این صرافی ها قراردادهای هوشمندی بر پایه بلاک چین هستند، نه سازمانهایی متمرکز با یک تیم مدیریتی مشخص و از پیش تعیین شده. استفاده از چنین صرافیهایی به دلیل حذف واسطه، کارمزد انجام تراکنش های تبدیل را به طور چشمگیری کاهش میدهد و نیاز به اعتماد به یک شخص سوم را مرتفع مینماید.
یکی از همین صرافی های غیرمتمرکز که مختص بلاک چین اتریوم است و امکانات خوبی را نیز در اختیار کاربران خود قرار میدهد، صرافی غیرمتمرکز یونی سواپ (Uniswap) است. یونی سواپ امکان تبدیل توکنهای ERC-20 به یکدیگر و به اتر را فراهم میکند و نسبت به سایر صرافی های غیرمتمرکز، میزان گس کمتری را نیز از کاربران خود دریافت مینماید.
اپلیکیشن غیرمتمرکز یونی سواپ متشکل از دو قرارداد هوشمند بر روی اتریوم و یک فرانتاند مختص کاربران است که کار با آن را به فرآیند بسیار راحتی تبدیل کرده است. در صورت تمایل برای دسترسی به فرانتاند این اپلیکیشن، به این سایت مراجعه کنید. یونی سواپ در زمان نگارش این مقاله (۲۷ مرداد ۹۹)، در ردهبندی پروژههای دیفای سایت defipulse.com از لحاظ حجم بازار، در جایگاه ۱۰ قرار دارد.
پروژه های دیفای در دنیای امروز ما، بیش از آن چه که تصور کنید با یک سیر صعودی و تصاعدی از استقبال کاربران مواجه شدهاند. تا همین زمان که در ماه آگوست سال ۲۰۲۰ به سر میبریم، طبق اطلاعات سایت دیفای پالس ، ۶.۶۳ میلیارد دلار سرمایه توسط افراد از جای جای جهان در این پروژهها قفل شده است؛ در حالی که این مقدار تا ماه های می و ژوئن ۲۰۲۰ (دو الی سه ماه پیش) ، چیزی حدود ۱ میلیارد دلار بود. پیشبینیها حاکی از آن است که این روند صعودی ادامه خواهد داشت و به همین علت است که بسیاری از متخصصین و افراد فعال در حوزه بلاک چین و کریپتو ، سال ۲۰۲۰ را سال دیفای میخوانند. لازم به ذکر است که defi یک مفهوم جدید است و مانند هر نوآوری دیگری، ممکن است مشکلات خاص خود را داشته باشد. محبوبیت ناگهانی defi ممکن است باعث روی آوردن بسیاری از افراد با پروژههای نه چندان منطقی به این نوآوری شود و به همین دلیل است که به عقیده برخی، بخشی از سرمایه قفل شده در آن میتواند تنها یک حباب باشد. تمامی پروژه های دیفای ، پروژه های موفقی نیستند و ممکن است بسیاری از آنها دیر یا زود با شکست مواجه شوند؛ اما مسئلهای که وجود دارد این است که گذشت زمان و مقبولیت گستردهتر این پروژه ها در بین افراد جامعه، این کاستیها و مشکلات را نیز تا حد زیادی برطرف خواهد کرد، حبابها و پروژههای غیرواقعی را از پروژههای کاربردی تمییز خواهد داد و باعث حرکت بیش از پیش جامعه به سمت اهدافی خواهد شد که ویتالیک بوترین در هنگام راهاندازی اتریوم برای خود متصور بود.
درباره DeFi بیشتر بخوانید:
سازمان های خودگردان غیر متمرکز یا (Decentralized Autonomous Organizations (DAO
یک سازمان خودگردان غیر متمرکز یا DAO (دائو) ، سازمانی است که در برابر سازمان های متمرکز امروزی با رهبریت و مدیریت شخص یا اشخاص از پیش تعیین شده قرار میگیرد. سازمانهایی که ما امروزه در جامعه مشاهده میکنیم، به طور معمول از اشخاصی تحت عنوان رییس و مدیرعامل و تیمهایی با نام هیئت مدیره و … تشکیل شدهاند که مقام هر یک از آنها طبق سلسله مراتب خاصی، بر دیگری برتری دارد. تصمیمات این سازمانها نیز مشخصاً توسط همین اعضا اتخاذ میشوند؛ در حالیکه نتایج این تصمیمات ممکن است به طور مستقیم و غیرمستقیم بر زندگی بسیاری از افراد جامعه تأثیرگذار باشد. در نقطه مقابل این امر، سازمان های خودگردان غیرمتمرکزی قرار دارند که به لطف پلتفرم اتریوم و قرارداد هوشمند آن، پا به عرصه ظهور گذاشتهاند.
یک سازمان خودگردان غیرمتمرکز یا DAO به صورت خلاصه و مفید، سازمانی است که در قالب یک قرارداد هوشمند کار میکند. شخصی که قصد راهاندازی چنین سازمانی را دارد، ابتدا باید شرایط و ضوابط و نحوه کار آن را در قالب یک قرارداد هوشمند کدنویسی کند. پس از این که این مرحله به انجام رسید، نوبت به جذب سرمایه اولیه برای تأسیس این سازمان میرسد. جذب سرمایه اولیه مرحله بسیار مهمی به شمار میرود، چرا که هم بودجه مورد نیاز برای تأسیس سازمان را فراهم میکند و هم سهامدارانی که در تصمیمگیری برای عملکرد و آینده آن سهیم هستند را مشخص مینماید. هر شخصی که برای تأسیس چنین سازمانی سرمایهگذاری کند، به سهامداری بدل میشود که به اندازه سهام خود، در تصمیمگیریهای آن حق رأی دارد. پس از این که بودجه اولیه برای راهاندازی این سازمان جمعآوری شد و سهامداران آن مشخص گردید، با یک سازمان خودگردان غیرمتمرکز یا DAO روبهرو هستیم که در آن، هیچ رییس یا مدیرعامل مشخصی وجود ندارد و تمامی تصمیمات در صورت موافقت اکثریت اعضا اتخاذ میشوند. همچنین، تصمیمات این سازمان در صورت استفاده از یک بلاک چین عمومی مانند اتریوم ، به صورت عمومی منتشر شده و برای همگان قابل رویت میباشد.
طبق تعاریف ذکر شده، بسیاری از پروژه های defi عنوان شده در بالا نیز خود نمونههایی از DAO ها در دنیای واقعی هستند. برای مثال، پلتفرم وامدهی MakerDAO یکی از بزرگترین پروژههای DAO حال حاضر دنیاست. همانطور که در قسمت مربوط به دیفای ذکر کردیم، MakerDAO از دو توکن منحصر بفرد خود به نامهای DAI و Maker (MKR) پشتیبانی میکند. توکن DAI توکنی است که از آن برای دریافت و بازپسدهی وام ها در این اپلیکیشن استفاده میشود؛ اما توکن Maker با نماد اختصاری MKR ، توکنی است که به کاربران اجازه سهامدار شدن و مشارکت در تصمیمگیریهای این شبکه را میدهد. بنابراین با خرید مقدار مشخصی از توکن MKR ، هر شخصی میتواند تبدیل به یکی از اعضای این شبکه شده و به تصمیمگیری در مورد شیوه کار و آینده آن بپردازد.
درباره DAO بیشتر بخوانید:
تا به این جای این مقاله سعی کردیم به اتریوم و دستاوردهای آن از منظر کاربردی بنگریم و توصیفاتی را ارائه کنیم که نشان میدهند اتریوم چگونه و از چه طرقی به اهداف خود دست یافت؛ این اهداف را در چه زمینهها و حوزههایی پیادهسازی کرد؛ در کدام یک از این حوزهها با شکست مواجه شد و در کدام حوزهها به موفقیت دست پیدا کرد. اگر این مقاله را تا به این جا به طور کامل مطالعه کرده باشید، از هر آنچه که برای کسب یک دید کلی از اتریوم نیاز داشتید (و البته خیلی بیشتر از آن) آگاهی دارید؛ اما با این وجود، بلاک چین اتریوم به حدی پیچیده و پیشرفته است که هنوز بسیاری نکات فنی باقی مانده است که میتوان در مورد آنها صحبت کرد. اگر احساس میکنید اطلاعاتی که تا کنون مطالعه کردید برای آگاهی شما از اتریوم کفایت میکند و به دنبال جزئیات فنی نیستید، میتوانید در همین نقطه مطالعه را متوقف کرده و به بخشهای بعدی مراجعه نکنید؛ اما اگر مایلید اطلاعات بیشتری را در خصوص این پلتفرم بلاک چینی کسب کنید و یا هنوز هم سوالات بیجوابی را در مورد آن در ذهن دارید، در قسمتهای بعدی با ما همراه باشید.
بخش شانزدهم: اتریوم ؛ یک «ماشین وضعیت» یا state machine
به شبکه اتریوم اصطلاحاً «ماشین وضعیت (حالت) مبتنی بر تراکنش» نیز میگوییم؛ زیرا پروتکل اتریوم مسئول رسیدگی به وضعیت داخلی و محاسبات در شبکه است. این ماشین همچنین باید اطلاعات حساب مرتبط با آدرس ها، موجودیها، قیمت فعلی gas و اطلاعات بلاک را مدیریت کند. شبکه اتریوم باید وضعیت مولفههای متعدد را برای یک تراکنش موفق پیگیری کند.
اتریوم ، یک ماشین وضعیت هر وضعیت (حالت) اتریوم متأثر از تعدادی تراکنش است که در بلاک ها ثبت میشوند. هر بلاک با استفاده از روشهای رمزنگاری و هش، به صورت زنجیروار به بلاک های قبلی متصل میشود.
بلاک ها در بلاک چین اتریوم داده ها در شبکه اتریوم چگونه ذخیره میشوند؟
حال قصد داریم چگونگی ذخیره شدن حالتها و تراکنش در شبکه اتریوم و تفاوت آن با شبکه بیت کوین را بررسی کنیم. در این قسمت، لایه ذخیره داده اتریوم را به طور کامل بررسی کرده، و مفهوم «حالت (state)» در بلاک چین را معرفی میکنیم. همچنین در این قسمت، نگاهی به ساختمان داده درخت مرکل پاتریشیا (Patricia Trie) و چگونگی پیاده سازی آن در شبکه اتریوم خواهیم داشت.
چه اطلاعاتی در لایه Storage ذخیره میشوند؟
قبل از هر چیز باید بدانیم که برای کارکرد صحیح یک سیستم مبتنی بر بلاک چین، نیازمند ذخیره چه نوع اطلاعاتی هستیم؟ بیایید یک مثال ساده را بررسی کنیم؛ آلیس میخواهد با انجام یک تراکنش، ۱۰ دلار به باب انتقال دهد.
انجام تراکنش در ماشین وضعیتی مانند اتریوم همانطور که در تصویر بالا میبینید، در این مثال خاص، حالت یا وضعیت (state) سیستم، با اجرای یک تراکنش و اعمال تغییرات مربوطه در موجودی حساب باب و آلیس، تغییر خواهد کرد.
در اینجا باید تراز حساب (موجودی حساب) و سایر جزئیات مربوط به حساب اشخاص مختلف را پایش کنیم که آن را «حالت» مینامیم. همچنین میبایست جزئیات اتفاقاتی که میان آنها رخ داده و در بلاک چین ثبت شده است را نیز پایش کنیم که همان «تراکنش ها» هستند. پلتفرمهای مختلف، این پایش را به روشهای گوناگونی انجام میدهند. در ادامه نگاهی به پلتفرم بیت کوین و اتریوم خواهیم انداخت تا ببینیم، هر یک به چه روشی این اطلاعات را ثبت میکنند.
ثبت حالت ها در شبکه بیت کوین
حالت ها در شبکه بیت کوین از طریق UTXO ها (خروجیهای تراکنش خرج نشده) نمایش داده میشوند. انتقال ارزش در شبکه بیت کوین از طریق تراکنشها انجام میشود (درست همانند مبادله پول نقد). به طور خاص، هر کاربر بیت کوین میتواند با ایجاد یک تراکنش و قرار دادن یک یا چند UTXO در ورودی (input) این تراکنش، UTXOهای خود (یا پول های نقد خود) را خرج کند.
این روش استفاده از UTXO ها ، باعث تمایز عملکرد شبکه بیت کوین و اتریوم میگردد. برای درک بهتر این تفاوت، لازم است چند مورد از ویژگیهای UTXOهای بیت کوین را بررسی کنیم.
اولاً UTXOهای بیت کوین را نمیتوان نصفه و نیمه خرج کرد. اگر یک کاربر بیت کوین یک UTXO به ارزش یک بیت کوین داشته باشد و بخواهد نیمی از آن (یعنی ۰.۵ بیت کوین) را انتقال دهد، باید UTXO یک بیت کوینی خود را به صورت یکجا در ورودی تراکنش قرار داده و نیم بیت کوین باقیمانده را به در یک خروجی دیگر تراکنش (اصطلاحاً return change) به آدرس خودش انتقال دهد. یعنی در واقع UTXO یک بیت کوینی را به طور کامل خرج کرده و یک UTXO جدید نیم بیت کوینی برای خودش ایجاد میکند. اگر کاربر این مبلغ باقیمانده را به حساب خود نفرستد، شبکه آن را به عنوان کارمزد ماینر درنظر خواهد گرفت و بنابراین آن را به آدرس نودی که این تراکنش را ثبت کرده انتقال میدهد.
تراکنش ها در شبکه بیت کوین دوماً، اگر در سطح بنیادی به موضوع نگاه کنیم، شبکه بیت کوین هیچوقت موجودی حساب کاربران را ذخیره و پایش نمیکند. در شبکه بیت کوین، هر کاربر کلیدهای خصوصی مربوط به UTXOها را ذخیره میکند. البته کیف پولهای دیجیتالی بیت کوین کلیدهای خصوصی و UTXOهای متناظر با آنها را در حساب کاربران به گونهای مدیریت و سازماندهی میکنند که بنظر میآید بلاک چین بیت کوین به طور خودکار موجودی حساب کاربران را ذخیره میکند؛ اما اینگونه نیست.
نمایش نحوه مدیریت UTXOها و کلیدهای خصوصی در والت های بیت کوین سیستم مبتنی بر UTXO در شبکه بیت کوین به خوبی کار میکند. بخشی از این عملکرد مدیون کیف پولهاییست که قادرند اغلب پارامترهای قابل سنجش مربوط به تراکنشها و آدرسها را برای کاربران سازماندهی کرده و کار با این سیستم را سادهتر کنند. این سازماندهی ها شامل موارد زیر هستند (دقت کنید که لزوماً محدود به این موارد نیستند):
- مدیریت UTXO ها
- ذخیره کلیدها
- تنظیم کارمزد تراکنشها
- ایجاد آدرسهای جدید برای تراکنشهای بازگشتی (return change)
- تجمیع UTXO ها (برای نمایش تراز یا موجودی در دسترس، در حال انتظار و مجموع آنها)
همانطور که پیشتر اشاره کردیم، برای درک بهتر، مدل UTXO را میتوان به اسکناس نقدی تشبیه کرد. هر حساب بیت کوین، با جمع مقادیر اسکناسهای (همان UTXO ها) موجود در کیف پول (که مرتبط با یک آدرس خاص هستند)، میزان پول موجود در حساب را پایش میکند. وقتی که میخواهیم پولی را خرج کنیم، یک یا چند اسکناس (UTXO های موجود) را برمیگزینیم؛ به گونهای که مبلغ پرداختی را پوشش داده و احتمالاً بخشی از آن به عنوان باقیمانده (UTXO جدید) به ما برگردد. هر اسکناس (UTXO) را تنها یک بار میتوان خرج کرد؛ چرا که به محض خرج شدن در یک تراکنش، آن UTXO از استخر UTXOهای موجود در حساب حذف میگردد.
پس به طور خلاصه:
- بلاک چین بیت کوین تراز حسابها را ذخیره نمیکند.
- کیف پول های بیت کوین کلیدهای مربوط به UTXO ها را ذخیره میکنند.
- اگر یک UTXO در تراکنشی استفاده شود، کل UTXO خرج خواهد شد (که در برخی از موارد، بخشی آن تحت عنوان change، و در غالب یک UTXO کاملاً جدید به صاحب حساب بازمیگردد).
ثبت حالت ها در شبکه اتریوم
برخلاف هرآنچه که در مورد بیت کوین گفتیم، حالت جهانی اتریوم (Ethereum world state) قادر است تراز (موجودی) همه حسابها را مدیریت کند (درست مانند یک کارت بانکی). دقت داشته باشید که «حالت» اتریوم یک مفهوم انتزاعی نیست؛ بلکه بخشی از پروتکل لایه اصلی اتریوم است. همانطور که در یلوپیپر (yellow paper) اتریوم اشاره شده، اتریوم یک ماشین «حالت» مبتنی بر تراکنش است؛ فناوری که در آن، تمامی انواع ماشینهای حالت مبتنی بر تراکنش، قابل پیاده سازی هستند.
بیایید حالت شبکه را از ابتدا مورد بررسی قرار دهیم. اتریوم نیز همانند همه بلاک چین های دیگر، زندگی خود را با بلاک جنسیس (genesis block) یا اصطلاحاً «بلاک پیدایش» آغاز میکند. از این نقطه (یعنی حالت اولیه در بلاک صفر) به بعد، کنشهایی همچون قراردادها، تراکنشها و استخراج بلاکها، به طور مداوم حالت بلاک چین اتریوم را تغییر میدهند. یک نمونه از این موارد در شبکه اتریوم، «موجودی حساب» است که در ساختاری به نام «درخت حالت» ذخیره شده و هربار که تراکنشی مرتبط با آن حساب انجام شود، مقدار آن تغییر میکند.
توجه داشته باشید که دادههایی نظیر موجودی حساب ها ، مستقیماً در بلاکهای بلاک چین اتریوم ذخیره نمیشوند. بلکه تنها هش های ریشه (root node hash) درخت تراکنش ، درخت حالت ، و درخت رسید به طور مستقیم در بلاک چین ذخیره میگردند. این مدل ذخیره سازی را به صورت شماتیک در تصویر زیر مشاهده میکنید:
درخت پاتریشیا اتریوم از این نمودار همچنین درمییابیم که هش ریشه درخت ذخیره (storage trie) – که حاوی تمامی دادههای مربوط به قراردادهای هوشمند است – در درخت حالت ذخیره شده که هش ریشه درخت حالت نیز به نوبه خود در بلاک چین ذخیره میگردد. (اگر از پیچیدگی این مبحث دچار سردرگمی شدهاید، کاملاً حق دارید؛ در ادامه به توضیح اجزا و ساختار درختی ذخیره اطلاعات در شبکه اتریوم میپردازیم و امیدواریم که این سردرگمی تا حدودی رفع شود).
دادههای ذخیره شده در شبکه اتریوم را میتوان به دو دسته کاملاً جدا از هم تقسیم کرد: دادههای دائمی و دادههای موقتی. نمونهای از دادههای دائمی شبکه، همان تراکنشها هستند. به محض این که یک تراکنش به طور کامل مورد تأیید قرار گرفت، در درخت تراکنشها ثبت شده و دیگر تغییر نمیکند. نمونهای از دادههای موقتی نیز موجودی حساب مرتبط با یک آدرس خاص در شبکه اتریوم است. موجودی یک حساب در درخت حالت ذخیره شده و هرگاه که تراکنشی مرتبط با آدرس این حساب انجام شود، موجودی حساب نیز تغییر میکند؛ از این رو موجودی حساب، یک پارامتر موقتی درنظر گرفته میشود.
با این اوصاف منطقیست که دادههای دائمی (نظیر تراکنشهای تأیید شده) و دادههای موقتی (نظیر موجودی حسابها) در دو بخش کاملاً جداگانه ذخیره شوند. از این رو اتریوم به منظور مدیریت دادهها از ساختمان داده درختی استفاده میکند.
همانطور که پیشتر اشاره کردیم، پایش حسابها در شبکه اتریوم، درست همانند چیزیست که در بانکهای سنتی اتفاق میافتد. بانک همیشه میزان پول موجود در کارت بانکی شما را پایش میکند و هرگاه که بخواهید از کارتتان تراکنشی انجام دهید، بانک پیش از تأیید تراکنش شما، ابتدا تراز حساب شما را کنترل کرده و اطمینان حاصل میکند که موجودی حسابتان بیش از مبلغ تراکنش باشد. پس به طور کلی مدل تراکنشها و ثبت حالت ها در شبکه بیت کوین و اتریوم به صورت زیر است.
مقایسه تراکنش ها در بیت کوین و اتریوم
درباره نحوه انجام تراکنشها در اتریوم بیشتر بخوانید:
مقایسهای بین مدل مبتنی بر UTXO و مدل مبتنی بر موجودی حساب
همانند سایر نظریات علوم کامپیوتر، هر یک از این مدلها نیز مزایا و معایبی دارند. مزیتهای مدل مبتنی بر UTXO شامل موارد زیر است:
- مقیاس پذیری: از آنجا که در این رویکرد امکان پردازش چندین UTXO به طور همزمان وجود دارد، این مدل، تراکنشهای موازی را ممکن ساخته و مشوق نوآوریهای مربوط به افزایش مقیاسپذیری شبکه است.
- حریم خصوصی: اگرچه که بیت کوین سیستم کاملاً ناشناسی نبوده و ردیابی تراکنشهای آن امکانپذیر است، اما در روش UTXO، مادامی که کاربر برای هر تراکنش جدید از آدرسهای جدید استفاده میکند، از حریم خصوصی مضاعفی بهرهمند خواهد شد.
مزیتهای مدل مبتنی بر تراز حساب نیز شامل موارد زیر است:
- سادگی: اتریوم برای سادگی کار توسعه دهندگان قراردادهای هوشمند پیچیده (مخصوصاً آنهایی که نیازمند اطلاعات حالت سیستم هستند، یا آنهایی که با چندین طرف قرارداد درگیر هستند)، از یک مدل شهودیتر (یعنی مدل موجودی حساب) استفاده میکند. به عنوان مثال قراردادهای هوشمندی همچون پلتفرمهای وام دهی غیرمتمرکز، که بسته به حالت های مختلف موجودی حساب، عملکردهای متفاوتی را به نمایش میگذارند، از این دسته هستند. مدل مبتنی بر UTXO، تمامی اطلاعات حالت حساب را در تراکنشها نگهداری میکند که این ویژگی، طراحی قراردادهای هوشمند را دشوار میسازد.
- کارایی: مدل مبتنی بر موجودی حساب، علاوه بر سادگی، کارآمدتر نیز هست. چرا که در هنگام اعتبارسنجی هر تراکنش، تنها باید محرز شود که موجودی حساب فرستنده بیش از مبلغ تراکنش است.
یکی از اشکالات اساسی مدل مبتنی بر موجودی حساب، قرار گرفتن در معرض حملات خرج مجدد دارایی (double spending) است. برای مقابله با این حملات میتوان از یک عدد نانس (nonce) متغیر استفاده کرد. در شبکه اتریوم، هر حسابی دارای یک متغیر عمومی و قابل مشاهده به نام نانس است که هربار تراکنشی انجام میشود، مقدار آن یک واحد افزایش مییابد. این اقدام از انجام چندباره یک تراکنش تکراری جلوگیری خواهد نمود. دقت داشته باشید این عدد نانس، با عدد نانس مورد استفاده در الگوریتم اجماع اثبات کار بیت کوین و اتریوم (که یک متغیر تصادفی است) تفاوت دارد.
بخش هفدهم: نگاهی دقیقتر به ساختار درختی دادهها در شبکه اتریوم
اجازه دهید درختهای حالت (state tree)، تراکنش(transaction tree)، و ذخیره (storage tree) را به طور دقیقتر بررسی کنیم.
درخت حالت؛ یکی و تنها یکی
در شبکه اتریوم یک (و فقط یک) درخت حالت جهانی وجود دارد که دادههای آن به صورت لحظهای در حال آپدیت شدن هستند.
درخت حالت اتریوم این درخت حالت به ازای هر حساب موجود در شبکه اتریوم، حاوی یک جفت «کلید-ارزش» است یا به عبارت بهتر، نگاشتی از «ارزش» به «کلید» ایجاد میکند. اصطلاح «کلید (key)» در اینجا به یک شناسه ۱۶۰ بیتی (آدرس یک حساب اتریوم) اطلاق میگردد. «ارزش (value)» نیز در درخت حالت جهانی اتریوم شامل جزئیات حساب های شبکه است که از طریق رمزنگاری دادههای زیر به روش RLP (مسیر پیشوند بازگشتی یا Recursive-Length Prefix) ایجاد میشود:
- نانس (nonce): اگر حساب از نوع مالکیت خارجی باشد، نانس نشاندهنده تعداد تراکنشهای ارسالشده از آدرس آن حساب است و اگر این حساب مبتنی بر قرارداد باشد، نانس تعداد قراردادهای ایجاد شده توسط این حساب را نشان خواهد داد.
- موجودی حساب (balance): نشان دهنده تعداد وی (Wei) موجود در این آدرس حساب است. هر اتر برابر با ۱۰ به توان ۱۸ وی است.
- ریشه ذخیره (storageRoot): نشان دهنده هش ۲۵۶ بیتی ریشه درخت ذخیره (Storage tree که در ادامه آن را به طور کامل توضیح خواهیم داد) است. این درخت، هش تمامی دادههای مربوط به قراردادهای هوشمند در حسابهای مبتنی بر قرارداد را در بر دارد. در حسابهای مالکیت خارجی، بخش مربوط به «storageRoot» خالی است.
- کدهش (codeHash): هشِ بایت کد ماشین مجازی اتریوم (EMV)* که متعلق به حسابهای مبتنی بر قرارداد است. در حسابهای مبتنی بر قرارداد، کد مخصوص آنها درهمنگاری شده و بهعنوان کدهش ذخیره میشود. در حسابهای مالکیت خارجی، بخش مربوط به «codeHash» خالی است.
*درباره بایت کد و ماشین مجازی اتریوم در بخش مربوط به قراردادهای هوشمند توضیح خواهیم داد.
ریشه درخت حالت (هش کلی درخت حالت در هر نقطه از زمان) به عنوان یک اشارهگر امن و یکتا برای درخت حالت به کار میرود؛ ریشه درخت حالت، به صورت رمزنگاری شده، به تمامی دادههای داخلی درخت حالت مرتبط است.
کاربرد ریشه درخت حالت در اتریوم درخت ذخیره (Storage trie )
یک درخت ذخیره، همان جاییست که تمامی دادههای مربوط به قراردادهای هوشمند در آن زندگی میکنند. هر حساب اتریوم، درخت ذخیره مختص به خود را دارد. هش ۲۵۶ بیتی ریشه درخت ذخیره به عنوان storageRoot، در قسمت value هر حساب اتریوم، در درخت حالت جهانی ثبت میشود (همانند شکل پایین).
درخت ذخیره اتریوم درخت تراکنش
حال اجازه دهید مسیری که به درون درخت حالت پیمودهایم را به عقب برگردیم و به سراغ درخت تراکنش در بلاک اتریوم برویم.
درخت تراکنش اتریوم هر بلاک در بلاک چین اتریوم، دارای درخت تراکنش مخصوص به خود است. هر بلاک حاوی تراکنشهای بسیاریست که ترتیب قرارگیری آنها در بلاک، توسط نود ماینری که بلاک را ایجاد کرده تعیین میشود. مسیر منتهی به یک تراکنش خاص در درخت تراکنش، با اندیس گذاری محل قرارگیری تراکنشها در بلاک قابل تعیین است.
بلاک های استخراج شده هیچگاه آپدیت نمیشوند و محل قرارگیری تراکنش در بلاک نیز هیچگاه تغییر نمیکند. بنابراین از لحظهای که یک تراکنش در درخت تراکنش بلاک ثبت شد، میتوانید بارها و بارها از همان مسیر قبلی به تراکنش برسید و آن را بازیابی کنید.
بازیابی تراکنش ها توسط درخت تراکنش اتریوم
بخش هجدهم: درخت مرکل پاتریشیا چیست؟
بلاک چین اتریوم تا حد زیادی مشابه بلاک چین بیت کوین است؛ اگرچه تفاوتهایی نیز میان آنها وجود دارد. تفاوت اصلی معماری بلاک چین بیت کوین و اتریوم در این است که بلاک های اتریوم برخلاف بیت کوین، شامل یک کپی از لیست تراکنشها و جدیدترین فاز (یا حالت) سیستم هستند. با توجه به مطالبی که پیشتر درباره ثبت حالتها در شبکه اتریوم گفتیم، این تفاوت اکنون کاملاً قابل درک است. در حقیقت میتوان همین تفاوت اساسی را عامل تمایز شبکه اتریوم از بیت کوین دانست؛ چرا که همینتفاوت به ظاهر کوچک، اتریوم را به شبکهای مناسب برای اجرای قراردادهای هوشمند تبدیل میکند.
شاید در نگاه اول، ذخیره تمامی حالت ها و تراکنشها در هر بلاک، شدیداً ناکارآمد به نظر برسد؛ چرا که برای این کار، فضای ذخیره سازی عظیمی صرف خواهد شد و در این صورت نودهای شبکه، مجبور به صرف هزینههای اضافی برای فراهم کردن فضای ذخیرهسازی خواهند شد. اما در حقیقت کارایی این سیستم با بیت کوین قابل رقابت است. دلیل این امر آن است که بیت کوین و اتریوم برای ذخیره سازی دادهها، هر یک از ساختار درختی خاص خود استفاده میکنند. استفاده از ساختار درختی در بلاک چین، باعث میشود تا نودهای شبکه مجبور به ذخیره سازی کلیه اطلاعات نباشند، و تنها با ذخیره سازی بخش کوچکی از این درخت، بتوانند شاخه ها و برگها (اطلاعات نهایی) را بازیابی کنند.
برای درک بهتر، اجازه دهید ساختار درختی بلاک چین بیت کوین و اتریوم را با دقت بیشتری بررسی کرده و آنها را با یکدیگر مقایسه کنیم.
درخت مرکل؛ ساختار درختی دادهها در شبکه بیت کوین
همانطور که پیشتر گفتیم، تفاوت اصلی معماری شبکه بیت کوین و اتریوم، در نحوه ذخیره سازی اطلاعات و نوع اطلاعات ذخیره شده است. شبکه بیت کوین بر مبنای UTXOها یا خروجی های تراکنش خرج نشده کار میکند؛ بنابراین ذخیره تراکنشهای تأیید شده در بلاک های بیت کوین، امری حیاتیست. اما از آنجا که هر نود اعتبارسنج برای بررسی سوابق یک تراکنش (یعنی UTXO هایی که به عنوان ورودی تراکنشهای جدید مورد استفاده قرار میگیرند) باید به اطلاعات همه تراکنشهای قبلی دسترسی داشته باشد، دانلود و ذخیره تمامی اطلاعات از بلاک جنسیس تا آخرین بلاک ثبت شده، برای آنها الزامیست.
این در حالیست که همه نودهای شبکه، ماینر (یا استخراج کننده) نیستند؛ برخی کلاینتهای شبکه همچون موسسات تجاری، صرافیها، یا سرویس دهندگان کیف پول، برای تأمین امنیت تراکنشهای مشتریان خود و جلوگیری از کلاهبرداریهای دابل اسپندینگ، ملزم به اجرای یک نود اعتبار سنج هستند. در چنین حالتی، دیگر نیازی به ذخیره سازی همه اطلاعات بلاک چین (از ابتدا تا کنون) نیست؛ چرا که با استفاده از روش «SPV یا تأیید تسهیل شده پرداخت» در این شبکه، نودها میتوانند تنها سربرگ بلاکها را ذخیره کرده و از این طریق اطلاعات تراکنشهای مورد نیاز خود را بازیابی کنند. اما روش SPV چگونه کار می کند؟
لازمه اصلی استفاده از روش SPV، ذخیره تراکنشهای هر بلاک در یک ساختار درختی با نام درخت مرکل (Merkle tree) است. ایجاد یک ساختار درختی از تراکنشها، نیازمند استفاده از توابع هش کریپتوگرافیک است.
به طور خلاصه، یک درخت مرکل متشکل از ساختارهای درختی باینری (دودویی) از دادهها است؛ به این صورت که هر درخت از مجموعهای از برگها، گرههای میانی، و گره ریشه تشکیل شده که هر گره، حاوی هش گرههای زیرشاخه خود است. اجزای درخت مرکل عبارتند از:
- تعداد زیادی برگ در انتهای درخت که حاوی هش دادههای اولیه یا همان تراکنشها هستند.
- مجموعهای از گرههای میانی که هر گره، حاصل درهم سازی (هش) دو نود فرزند خود است.
- یک گره ریشه یکتا که از درهم سازی دو گره فرزند خودش تشکیل شده و نشان دهنده رأس درخت است.
این رایجترین نمونه درخت مرکل است که با نام درخت مرکل باینری (Binary) شناخته میشود. در بلاک چین بیت کوین، ریشه درخت مرکل به عنوان نماینده تمامی تراکنشهای یک بلاک، در هدر (سربرگ) بلاک ذخیره میشود. حال در روش SPV، برای اعتبارسنجی یک تراکنش، کافیست که هش همان تراکنش به همراه هش ریشه در اختیار نود اعتبارسنج باشد (که هست!)؛ سپس نود اعتبارسنج با ارسال درخواستی به فول نودهای شبکه، از آنها یک «مسیر مرکل (merkle path)» درخواست میکند. مسیر مرکل، در حقیقت مسیر سادهای از درخت است که از تراکنش مورد نظر، به ریشه مرکل میرسد. بدین ترتیب، شاخههای غیرضروری درخت مرکل هرس شده، و تأیید پرداختها سادهسازی خواهد شد. به تصویر زیر که در وایت پیپر بیت کوین نیز آمده دقت کنید:
مسیر مرکل یا همان Merkle Path به عنوان مثال در تصویر بالا، یک نود اعتبارسنج برای بررسی صحت تراکنش ۳، نیازی به ذخیره همه تراکنشهای همه بلاکها ندارد، بلکه به سادگی سربرگ تمامی بلاک های زنجیره اصلی بیت کوین را ذخیره میکند و برای اعتبارسنجی تراکنش ۳، طی درخواستی، Hash2 و Hash01 را از فول نودهای مجاور خود دریافت میکند. حال او مسیر بهینه مرکل را در اختیار دارد و کافیست هش تراکنش ۳ (Hash3) را بدست آورده و با درهم نگاری Hash2 و Hash3 به Hash23 برسد. سپس با درهمنگاری Hash01 و Hash23، به Root Hash میرسد و با تطبیق دادن این مقدار با هش ریشهای که خود از ابتدا در اختیار داشت، صحت و درستی تراکنش ۳ را بررسی میکند. چنانچه تراکنش ۳ جعلی باشد، مقدار Root Hash کاملاً متفاوت از مقدار ثبت شده در سربرگ بلاک خواهد بود.
حال که با نحوه کارکرد درخت مرکل ساده بیت کوین آشنا شدیم، میتوانیم ساختار درختی ذخیره اطلاعات در شبکه اتریوم را بررسی کنیم.
درباره درخت مرکل بیشتر بخوانید:
درخت مرکل پاتریشیا ؛ ساختار درختی دادهها در شبکه اتریوم
مشکل اساسی در بلاک چین اتریوم اینجاست که برای ثبت حالتها نمیتوان همچون شبکه بیت کوین از ساختار ساده درخت مرکل باینری استفاده کرد. اینجاست که مفهومی به نام «درخت مرکل پاتریشیا (patricia merkle tree)» وارد بازی میشود.
واژه Patricia مخفف این عبارت است: « Practical algorithm to retrieve information coded in alphanumeric »؛ به معنی «الگوریتمی عملی برای بازیابی اطلاعاتی که به صورت حرفی/عددی کدگذاری شدهاند.»این درخت برای هر مقداری که در آن ذخیره میشود به یک کلید نیاز دارد. با شروع از گره ریشه درخت، این کلید به شما میگوید که مسیر کدام کلید فرزند را باید برای رسیدن به ارزش موردنظر که در برگها ذخیره شده است دنبال کنید. به این مسیر، اصطلاحاً مسیر پیشوند بازگشتی یا RLP (Recursive Length Prefix) میگوییم. RLP در درخت مرکل پاتریشیا، در واقع همان وظیفه «مسیر مرکل» در درخت مرکل بیت کوین را انجام میدهد؛ با این تفاوت که ساختار درختی در شبکه اتریوم، بهینهسازی شده است. به عنوان مثال یک درخت مرکل باینری متشکل از آدرسهای ۸ بیتی را در نظر بگیرید که در آن ۲۵۶ حالت ممکن برای آدرسها وجود دارد. برای جستجوی یک آدرس خاص در این درخت، میبایست همه ۲۵۶ آدرس موجود در برگ ها را بررسی کنیم؛ اما RLP به ما این امکان را میدهد که به طور مثال، اگر ۷ بیت از این آدرس را میدانیم، بتوانیم شاخه یا مسیر مربوط به این ۷ بیت مشترک را پیدا کنیم، و در نهایت فقط باید ۲ سلول (برگ) را جستجو کنیم.
در مورد اتریوم، نگاشت کلید/ارزش برای درخت حالت، نگاشتی از آدرسها به حسابهای متناظر با آنهاست که شامل موجودی، نانس، هش کد و ریشه ذخیره برای هر حساب است (که ریشه ذخیره خودش یک درخت است). برای یادآوری نحوه نگاشت کلید/ارزش، بخش مربوط به «درخت حالت» در همین مقاله را دوباره مرور کنید. تصویر زیر، نگاشت کلید/ارزش را در یک درخت مرکل پاتریشیا نمایش میدهد.
درخت مرکل پاتریشیا از این ساختار درختی برای ذخیره حالت جهانی، حالت حساب، تراکنشها و رسیدها در شبکه اتریوم استفاده میشود.
کاربردهای درخت مرکل پاتریشیا در بلاک چین اتریوم درست همانند ساختار درختی تراکنشهای شبکه بیت کوین، در اینجا نیز هر نودی که میخواهد بخشی از دادهها را تأیید کند، نیازمند به استفاده از مفهوم «اثبات مرکل (Merkle Proof)» است. اثبات مرکل از بخشهای زیر تشکیل شده است:
- بخشی از دادهها به همراه هشهایشان که باید تأیید شوند.
- هش ریشه درخت که در سربرگ بلاک ذخیره شده و در اختیار همه نودهاست.
- مسیر مرکل (شامل همه درهمنگاریهای موجود در طول مسیر از قطعه مورد نظر به سمت ریشه)
هر نودی که بخواهد اثبات مرکل را انجام دهد، میتواند تأیید کند که تمام درهمنگاریهای موجود در مسیر ریشه، به درستی انجام میشود؛ بنابراین قطعه مورد نظر واقعاً در جایگاه درست خودش قرار دارد. ازآنجا که سربرگ بلاک حاوی هش ریشه هر سه درخت حالت، تراکنشها و رسیدهاست، هر نود میتواند بخش کوچکی از حالت اتریوم را اعتبارسنجی کند و لزومی ندارد که کل حالتهای اتریوم (که احتمالاً حجمی عظیم و نامحدود دارد) را ذخیره کند.
درباره درخت مرکل پاتریشیا بیشتر بخوانید:
بخش نوزدهم: مزایای طراحی منحصر به فرد اتریوم
در قسمت قبل نشان دادیم که اتریوم توانایی ثبت و مدیریت حالتهای شبکه خود را دارد؛ این طراحی هوشمندانه دارای مزایای بسیاریست که در اینجا به چند مورد اشاره میکنیم:
موبیلیتی
با توجه به فراگیر شدن دستگاههای موبایل و اینترنت اشیاء (IoT)، آینده تجارت الکترونیک در گرو امنیت، استحکام و سرعت اپلیکیشنهای موبایلی است. دستگاههای موبایل روز به روز در حال پیشرفت هستند؛ اما از سوی دیگر، افزایش مداوم سایز بلاک چینها نیز اجتناب ناپذیر است. باید قبول کنیم که ذخیره کل دادههای بلاک چین بر روی موبایلهای امروزی عملی نیست.
ویژگی موبیلیتی اتریوم سرعت بیشتر، بدون به خطر انداختن امنیت
طراحی حالت جهانی اتریوم و استفاده آن از درخت مرکل پاتریشیا، سرعت شبکه را افزایش داده و این قابلیت در فضای فعلی رمزارزها فرصتهای بینظیری را خلق کرده است. هر تابعی (همچون ثبت داده، آپدیت آن و حذف آن) که در ساختار درختی اتریوم مورد استفاده قرار میگیرد، از هشهای کریپتوگرافیک قطعی بهره میگیرد. علاوه بر این، میتوان از هش یکتای ریشه یک درخت، به عنوان گواهی برای عدم دستکاری دادهها استفاده کرد.
به عنوان مثال، با ایجاد هر تغییری در دادههای درخت حالت در هر سطحی (نظیر افزایش موجودی حساب در دیتابیس)، هش ریشه درخت مرکل به کلی تغییر خواهد کرد. این قابلیت کریپتوگرافیک، لایت نودها (همچون دستگاههایی که قادر به ذخیره کل بلاک چین نیستند) را قادر میسازد تا به سرعت و با اطمینان، به جستجوی دادههای بلاک چین بپردازند؛ به عنوان مثال: آیا حساب « ۰۰xa54 … ۴۸۵b0» موجودی لازم برای انجام یک تراکنش در بلاک شماره «۵۰۴۴۸۶۶» را دارد یا خیر؟
اعمال محدودیت در انجام تراکنش
یکی از ایدههای جالبی که در وایت پیپر اتریوم ذکر شده، مفهوم حساب پسانداز است. برای مثال در این سناریو، دو کاربر (احتمالاً یک زن و شوهر یا دو شریک تجاری) میتوانند برای خود حق برداشت روزانه یک درصد از کل موجودی حساب را تعریف کنند. با اینکه این ایده در در بخش «کاربردهای آینده» در وایت پیپر اتریوم آمده است، اما جذابیت های بسیار زیادی دارد؛ چرا که به صورت تئوری میتوان آن را به عنوان بخشی از پروتکل لایه اصلی اتریوم پیادهسازی کرد.
اگر بحثی که پیشتر درباره UTXO های بیت کوین مطرح کردیم را به یاد آورید، احتمالاً خواهید دانست که UTXOهای بیت کوین نسبت به دادههای بلاک چین کور و کر هستند و بلاک چین بیت کوین، در واقع هیچگاه موجودی حسابها را ذخیره نمیکند. به همین دلیل، تقریباً بعید است که بتوان هرگونه راهکار مربوط به اعمال محدودیت روزانه در انجام تراکنش را در شبکه بیت کوین پیادهسازی نمود.
اعتماد مصرف کننده
با ادامه کار در این عرصه، شاهد توسعه هرچه بیشتر لایت کلاینت ها خواهیم بود. به طور خاص، اپلیکیشنهای موبایلی سریع، قوی، و امنی که قادرند با تکنولوژی بلاک چین در تعامل باشند. پیادهسازی موفق بلاک چین در فضای تجارت الکترونیک، نیازمند تقویت سرعت، امنیت، و قابلیت استفاده است. همواره میتوان با توسعه قابلیتهای کاربردی برتر، ایمنی، و عملکرد بهتر از طریق طراحی هوشمندانه، اعتماد مصرف کننده و نیز پذیرش عمومی این فناوری را افزایش داد.
توسعه لایت کلاینت ها در شبکه اتریوم
بخش بیستم: تراکنش ها در شبکه اتریوم
پیشتر درباره تراکنشهای بلاک چین اتریوم، مقدماتی را گفتیم. اکنون قصد داریم به مرور جزئیات تراکنشهای اتریوم بپردازیم.
اجزای تراکنش در شبکه اتریوم
همانطور که پیشتر (در بخش مربوط به قراردادهای هوشمند) اشاره کردیم، اتریوم یک ماشین حالت مبتنی بر تراکنش است. تراکنشها دستورالعملهایی هستند که توسط یک حساب با مالکیت خارجی تنظیم و به وسیله کلید خصوصی امضا میشوند و در نهایت حالت حساب (و به تبع آن، حالت جهانی اتریوم) را به یک حالت دیگر انتقال میدهند.
همچنین پیشتر تراکنشها را بسته به نوع حساب فرستنده و گیرنده به سه دسته تقسیم کردیم:
- از یک حساب با مالکیت خارجی (EOA) به یک حساب با مالکیت خارجی (EOA)
- از یک حساب با مالکیت خارجی (EOA) به یک حساب قرارداد هوشمند (CA) برای فعالسازی کد قرارداد
- از یک حساب با مالکیت خارجی به یک حساب صفر (Zero account) به منظور ایجاد یک قرارداد
در تصویر زیر، شماتیک کلی تراکنشها و نحوه تعامل حسابها در شبکه اتریوم را مشاهده میکنید:
شماتیک تراکنش ها و نحوه تعامل حساب ها در شبکه اتریوم علاوه بر این موارد، قراردادها نیز میتوانند با ارسال تراکنشهای داخلی یا پیام ها به یکدیگر، با هم تعامل داشته باشند. اما همانگونه که در تصویر بالا میبینید، تراکنشهای داخلی، هیچگاه به خودی خود اتفاق نمیافتند (M2)، بلکه ابتدا یک تراکنش فعال کننده قرارداد، از سوی یک حساب با مالکیت خارجی مورد نیاز است(T2 و سپس M1). هنگامیکه یک قرارداد، تراکنشی داخلی را به قرارداد دیگری میفرستد، کد مرتبط با آن که در حساب قرارداد گیرنده موجود است، اجرا میشود.
تراکنش فعال کننده کد قرارداد هوشمند در اتریوم تراکنشها یا پیامهای داخلی دارای حد گس نیستند. چرا که تعیین حد سوخت، همیشه بر عهده حسابهای مالکیت خارجیست. بنابراین حساب با مالکیت خارجی که آغازگر تراکنش است، از ابتدا باید حد سوخت را به اندازه کافی تعیین کند تا هزینه ارسال تراکنشهای داخلی (در صورت وجود) را نیز پوشش دهد. اگر در زنجیره تراکنشها و پیامها اجرای یک تراکنش خاص با ارور اتمام گس مواجه شود، اجرای آن تراکنش و نیز هر تراکنش بعدی که در نتیجه آن ایجاد شده، لغو میگردد؛ اما اجرای تراکنشهای اصلی (آغاز شده از حساب خارجی) لغو نمیشود.هر سه نوع تراکنش های مذکور، دربردارنده اجزای زیر هستند:- نانس: عددیست که تعداد تراکنشهای ارسالشده توسط فرستنده را نشان میدهد.
- آدرس گیرنده (to): شامل آدرس گیرنده تراکنش است. در تراکنشی که برای ایجاد قرارداد انجام میشود، آدرس گیرنده خالی گذاشته میشود؛ چرا که هنوز حساب قرارداد مورد نظر ایجاد نشده و آدرسی ندارد (zero account).
- مقدار (value): شامل مقدار اتری است که فرستنده قصد دارد به گیرنده انتقال دهد. در تراکنشهای ایجادکننده قرارداد، این مقدار بهعنوان موجودی اولیه در حساب مبتنی بر قرارداد به کار میرود.
- امضا (signature): امضای دیجیتال تراکنش که با استفاده از کلید خصوصی فرستنده ثبت میشود.
- قیمت گس (Gas price): تعداد وِی (Wei) که به عنوان هزینه اجرای تراکنش، برای هر واحد گس در نظر گرفته میشود.
- حد گس (Gas limit or Start gas): حداکثر واحد گس که توسط فرستنده برای اجرای تراکنش درنظر گرفته میشود. حد گس با توجه به محاسبات مورد نیاز تراکنش، محاسبه و ثبت میشود.
- کد (فقط در تراکنشهای ایجاد کننده قرارداد): شامل کد اصلی قرارداد هوشمند به علاوه یک کد آغازگر (Init). Init قسمتی از کد EVM است که برای مقداردهی آغازین به حساب مبتنی بر قرارداد به کار میرود و پس از یک بار اجرا، از حافظه پاک میشود. پس از اولین اجرای Init، کد حساب قرارداد ایجاد شده و به صورت دائمی در قرارداد ثبت میگردد.
- داده (Data) (فقط برای تراکنشهای فعال کننده قرارداد): شامل دادههای ورودی که برای فعالسازی کد قرارداد هوشمند مورد نیاز است. به عنوان مثال اگر قرارداد هوشمند مربوط به یک پلتفرم پیشبینی یا شرطبندی مسابقات باشد، داده های مربوط به پیشبینی نتایج، از طریق فیلد Data وارد میشود. توجه داشته باشید که ورود این قسمت اختیاری بوده و مورد نیاز همه قراردادها نیست.
تراکنش معمولی، تراکنش ایجادکننده قرارداد هوشمند و تراکنش فعال کننده قرارداد هوشمند در اتریوم اعتبارسنجی تراکنشها در اتریوم
وقتی تراکنشی به شبکه اعلام میشود، نودهای ماینر باید یک اعتبارسنجی اولیه یا اصطلاحاً تست صحت ذاتی (intrinsic validity test) انجام دهند که صلاحیت تراکنش را برای اجرا تأیید میکند. این تست شامل مراحل زیر است:
- این تراکنش باید از طریق مکانیزم مسیر پیشوند بازگشتی (RPL) در درخت حالت اعمال شود؛ بنابراین باید حالت قبلی مربوط به این حساب در درخت مرکل پیدا شود.
- امضای روی تراکنش باید صحیح باشد (کلید خصوصی استفاده شده برای امضا، با کلید عمومی حساب تطابق داشته باشد).
- نانس تراکنش باید صحیح باشد (یعنی با نانس فعلی حساب فرستنده مطابقت داشته باشد).
- حد گس (gas limit) بزرگتر یا مساوی گس ذاتی تراکنش* (intrinsic gas) باشد.
*گس ذاتی تراکنش (intrinsic gas)، مقدار گسی است که برای انجام تراکنش (پیش از اجرای کد) مورد نیاز است. این مقدار شامل کارمزد ثابت تراکنش (یا transaction fee که در حال حاضر ۲۱۰۰۰ گس است) به علاوه کارمزدی برای هر بایت داده (یا کد) موجود در تراکنش است (برای صفربایت ۴ گس و برای غیر صفربایت ۶۸ گس مورد نیاز است).
- موجودی حساب فرستنده از هزینه تراکنش مورد نظر بیشتر باشد.
حال که با تست صحت ذاتی تراکنش آشنا شدیم، میتوانیم مراحل کلی انجام تراکنش در اتریوم را بررسی کنیم.
مراحل کلی انجام یک تراکنش در اتریوم
- ۱- تراکنش توسط فرستنده ایجاد شده و برای اجرا به EVM ارسال میگردد.
- ۲- تراکنش باید تست صحت ذاتی را پشت سر گذارد.
- ۳- در صورت موفقیت در تست صحت ذاتی، intrinsic gas از حساب فرستنده کم شده و نانس حساب فرستنده به میزان یک واحد افزایش مییابد.
- ۴- تراکنش به تابع انتقال یا تابع گذار (transition function) انتقال مییابد که شامل پارامترهایی همچون حالت ماشین، حالت سیستم و … است.
- ۵- تابع گذار یا انتقال در هر مرحله از محاسبات (یا پس از اجرای هر حلقه محاسباتی) به صورت مکرر فراخوانی شده و تغییر مییابد (به عنوان مثال میزان گس مصرف شده از گس باقیمانده کم میشود). در این مرحله تابع گذار سه انتخاب دارد:
-
- اگر گس باقیمانده کمتر از گس مورد نیاز برای ادامه محاسبات است، عملیات را خاتمه بده و حالت ها را به حالت های پیشین بازگردان.
- اگر باز هم محاسباتِ انجام نشده باقی مانده و مقدار گس برای انجام آنها کافیست، به مرحله ۴ برو.
- در غیر این صورت (یعنی در صورت اتمام محاسبات) به مرحله بعدی برو.
- ۶- حالت نهایی سیستم، حالت های فرعی و میزان گس باقیمانده مشخص شده و خروجی نهایی ثبت میگردد.
- ۷- رسید تراکنش، با استفاده از نتایج اجرای تراکنش ایجاد میشود؛ لاگ های اجرا (Log events) ایجاد میشوند و میزان گس مصرف شده مشخص میگردد.
توضیح مختصری درباره لاگ های اتریوم
از طریق ثبت لاگ ها در شبکه اتریوم، میتوان تراکنشها و پیامهای مختلف را پیگیری کرد. یک قرارداد میتواند با تعیین رویدادهایی که باید ثبت شوند، یک لاگ ایجاد کند. لاگ شامل موارد زیر است:
- آدرس حساب ایجاد کننده لاگ
- همه رویدادهایی که توسط این تراکنش انجام شدهاند
- هر داده مرتبط با این رویدادها
لاگها در یک فیلتر بلوم ذخیره میشوند که به روشی کارآمد میتواند حجم عظیمی از دادههای لاگ را ذخیره کند. در واقع لاگهای ذخیرهشده در سربرگ بلاک، از اطلاعات لاگ هایی که در رسید تک تک تراکنش ها موجود است ایجاد میشوند. همانطور که در دنیای واقعی با خرید از فروشگاه رسید دریافت میکنید، اتریوم نیز برای هر تراکنش یک رسید صادر میکند. هر رسید حاوی اطلاعات معینی درباره تراکنش است و موارد زیر را دربرمیگیرد:
- شماره بلاک
- هش بلاک
- هش تراکنش
- گس مصرف شده در تراکنش فعلی
- کل گس مصرف شده در بلاک فعلی پس از انجام تراکنشها
- لاگهای ایجادشده در طی تراکنش فعلی
توضیح بیشتر درباره تراکنشهای ناموفق
به طور کلی میتوان تراکنشهای ناموفق در شبکه اتریوم را به دو دسته تقسیم کرد؛ تراکنشهایی که در تست صحت ذاتی (intrinsic validity test) شکست میخورند، و تراکنشهایی که در هنگام اجرای کد مردود میشوند. دلیل این امر آن است که کارمزد تراکنش (transaction cost)، از کارمزد اجرای کد (execution cost) جداست؛ اگر کارمزد تراکنش (۲۱۰۰۰ گس) کافی نباشد، تراکنش در همان مرحله اول مردود میشود و در صورتی که کارمزد تراکنش کافی باشد اما کارمزد اجرای کد کافی نباشد، تراکنش در مرحله اجرای کد با شکست مواجه میشود، سپس مبالغ انتقال یافته برگشت داده میشود، و گس مصرف شده، به حساب نود ماینر منتقل میشود. تصویر زیر بخشی از یلوپیپر اتریوم است که در آن، بخشهای مربوط به هزینه تراکنش و هزینه اجرای کد، مشخص شدهاند.
تراکنش های ناموفق اتریوم
بخش بیست و یکم: بلاک ها در بلاک چین اتریوم
بلاک چین اتریوم نیز همانند بیت کوین، شامل بلاک هاییست که با استفاده از تکنیکهای رمزنگاری، به صورت زنجیروار به یکدیگر متصل شدهاند و محتویات آنها غیرقابل تغییر است. هر بلاک در شبکه اتریوم شامل بستهای از تراکنشهاست که پس از ساخت آخرین بلاک، مراحل اعتبارسنجی و تأیید را پشت سر گذاشتهاند (درست مثل بیت کوین)؛ اما علاوه بر این، بلاک های اتریوم تغییرات حالت حساب های شبکه (بر اثر تراکنشهای انجام شده از/به این حسابها) را نیز ثبت میکند. این حالتها در قسمتی تحت عنوان ریشه حالت (که در بخش پنجم مقاله به طور کامل آن را توضیح دادیم)، در سربرگ بلاک ذخیره میشوند. تصویر زیر، نحوه تغییرات ریشه حالت و درخت مرکل پاتریشیا در سربرگ بلاک را به صورت شماتیک نشان میدهد:
شماتیک هدر یا همان سربرگ بلاک در بلاک چین اتریوم در تصویر بالا، نودهای شبکه برای تغییر موجودی یک حساب خاص از مقدار ۱۰ به ۱۵، ابتدا حالت حساب مورد نظر را از طریق مسیر پیشوند بازگشتی (RLP) مشخص میکنند؛ سپس با فراخوانی مسیر مرکل (merkle path) به اعتبارسنجی حالت پیشین پرداخته و درنهایت آن را به حالت جدید تغییر میدهند.
دلیل اینکه در بلاک چین اتریوم علاوه بر تراکنشها، حالت حساب ها نیز ذخیره میشوند، این است که تمامی نودهای شبکه به منظور ارزیابی و اعتبارسنجی تراکنشهای بعدی، باید در دفتر کل خود، آخرین بروزرسانی حالتها را ذخیره کنند. به همین منظور تمامی نودها (که بخشی از فرایند ایجاد بلاک و ثبت تراکنشها به شمار میروند)، موظفند تراکنشهای موجود در آخرین بلاک زنجیره اصلی را به همراه محاسباتشان اجرا، و حالت حساب ها را به روز رسانی کنند تا همگی به نتایج یکسان برسند.
به طور کلی هر بلاک در بلاک چین اتریوم از مؤلفههای زیر تشکیل شده است:
- سربرگ بلاک
- تراکنشها
سربرگ بلاک چیست؟
سربرگ هر بلاک شامل اطلاعات مهمیست که باعث اتصال زنجیروار بلاک ها به یکدیگر، رعایت ترتیب بلاک ها، و تغییرناپذیری آنها میشود. اطلاعات موجود در سربرگ هر بلاک، از طریق یک الگوریتم درهمنگاری هش (Ethash) ، به صورت یک رشته کد رمزنگاری شده در سربرگ بلاک بعد از خود وارد میشود و همین موضوع موجب دشواری جعل بلاک ها میگردد. در تصویر زیر اجزای تشکیل دهنده سربرگ بلاک را مشاهده میکنید که در ادامه آنها را توضیح خواهیم داد:
اجزای سربرگ بلاک در بلاک چین اتریوم سربرگ بلاک اتریوم شامل اجزای زیر است:
- هش پدر (parentHash): هش سربرگ بلاک پدر (که باعث اتصال زنجیروار بلاک ها و تغییرناپذیری آنها میگردد).
- ذینفع (beneficiary): آدرس حسابی که پاداش ساخت بلاک و کارمزد تراکنشهای موجود در این بلاک را دریافت میکند.
- حد گس (gasLimit): سقف محدودیت گس برای این بلاک (درباره سقف گس بلاک در قسمت مربوط به گس به طور کامل توضیح دادیم).
- هش اومر (ommersHash): هش سربرگ بلاک های اومر که از ۶ بلاک قبل (از آخرین بلاک) تا کنون تولید شدهاند (درباره بلاکهای اومر در ادامه توضیح خواهیم داد).
- بلوم لاگها (logsBloom): نوعی ساختمان داده حاوی لاگهای تراکنشهاست که تمامی اطلاعات مربوط به تراکنشها و پیامها را ذخیره میکند (در قسمت تراکنش ها، درباره لاگهای اتریوم توضیح دادیم).
- شماره (number): شماره بلاک فعلی (بلاکها در توالی یکدیگر شماره گذاری میشوند؛ شماره اولین بلاک یا genesis block صفر است و با ایجاد هر بلاک جدید، یک واحد به number افزود میشود).
- گس مورد استفاده: (gasUsed): مجموع تمامی واحدهای گس استفاده شده توسط تراکنشهای این بلاک.
- برچسب زمانی (timestamp): پارامتری از جنس زمان، که نشان دهنده زمان دقیق به ثبت رسیدن این بلاک است. برچسب زمانی در حقیقت نوعی ثانیه شمار است که زمان به ثبت رسیدن بلاک را از تاریخ مبدأ ۱۹۷۰-۰۱-۰۱ ۰۰:۰۰:۰۰ UTC محاسبه میکند.
- نانس (nonce): یک هش ۶۴ کاراکتری که در ترکیب با میکس هش، درستی محاسبات اثبات کار (PoW) را اثبات میکند (توجه داشته باشید که نانس مورد استفاده در سربرگ بلاک اتریوم، با نانس حسابهای اتریوم کاملاً تفاوت دارد).
- میکسهش: (mixHash): یک هش ۲۵۶ کاراکتری که در ترکیب با نانس، درستی محاسبات اثبات کار (PoW) را اثبات میکند (نحوه محاسبه میکس هش و نانس در شبکه اتریوم، قدری با بیت کوین متفاوت بوده و توضیح آن خارج از حوصله این مقاله است؛ اما نکته جالب این است که همین تفاوت سبب سادهتر شدن کار نودها شده و علاوه بر فول نودها، به لایت نودهای شبکه نیز اجازه فعالیت در شبکه و اعتبارسنجی تراکنشها را میدهد).
- داده اضافی (extraData) : دادههای اضافی دلخواه، با حجم کمتر از ۳۲ بایت؛ معمولاً ماینرها در این قسمت، خود یا استخر استخراج خود را معرفی میکنند.
- ریشه حالت (stateRoot) : هش ریشه درخت پاتریشیای حالت (مفهوم آن در بخش پنجم این مقاله به طور کامل توضیح داده شده است).
- ریشه تراکنشها (transactionsRoot): هش ریشه درخت پاتریشیای تراکنشها (مفهوم آن در بخش پنجم این مقاله به طور کامل توضیح داده شده است).
- ریشه رسیدها (receiptsRoot): هش ریشه درخت پاتریشیای رسیدها (مفهوم آن در بخش پنجم این مقاله به طور کامل توضیح داده شده است).
بلاک اومر (Ommer) چیست؟
قبل از اینکه به مفهوم بلاکهای اومر بپردازیم، اجازه دهید یادآوری کوچکی از بلاکهای اصطلاحاً «یتیم» (Orphan) در بلاک چین بیت کوین داشته باشیم؛ اگر با نحوه کار بلاک چین بیت کوین آشنایی داشته باشید، حتماً میدانید که در شبکه بیت کوین، بلاک ها به طور متوسط هر ۱۰ دقیقه یکبار ساخته میشوند و با این حال، برخی اوقات ممکن است دو یا چند بلاک صحیح به صورت همزمان (یا با فاصله زمانی بسیار کوتاه) استخراج شوند؛ به طوری که تشخیص زنجیره صحیح و اصلی، برای نودها اندکی سخت میشود. همانطور که گفتیم، شبکه بیت کوین این بلاک ها را «یتیم» میداند و پس از اتفاق نظر نودها روی زنجیره اصلی، این بلاکها را از زنجیره حذف کرده و تراکنشهای تأیید نشده موجود در آنها را دوباره به استخر تراکنشهای در انتظار تأیید باز میگرداند. به این عملیات اصطلاحاً سازماندهی مجدد زنجیره یا re_org گفته میشود. آخرین نکته از این یادآوری این است که ماینرهای شبکه بیت کوین، در ازای استخراج بلاک های اورفان، هیچ پاداش و یا کارمزدی دریافت نمیکنند.
برگردیم به بحث خودمان یعنی شبکه اتریوم و بلاکهای اومر. بلاک های اومر در شبکه اتریوم، مترادف همان بلاک های «عمو (Uncle)» هستند؛ یعنی بلاک های صحیحی که پدرشان عضوی از ازنجیره اصلیست اما خود خارج از زنجیره قرار دارند.
بلاک اومر در اتریوم داستان از این قرار است که زمان ساخت بلاک در شبکه اتریوم (حدود ۱۴ ثانیه)، به طرز چشمگیری نسبت به بیت کوین (حدود ۱۰ دقیقه) کوتاهتر است. بنابراین احتمال ایجاد بلاکهای صحیح به صورت همزمان (یا با فاصله زمانی بسیار اندک) در این شبکه بسیار بیشتر از بیت کوین است. همانند شبکه بیت کوین، در اینجا هم نودهای شبکه تصمیم میگیرند که هش کدام بلاک را در بلاک خود وارد کنند و اصطلاحاً بلاک خود را بر روی کدام بلاک بسازند. این اجماع میان نودها، زنجیره اصلی را تشکیل داده و بلاکهایی که در این زنجیره قرار نمیگیرند را به عنوان بلاکهای اومر معرفی میکند.
از مقایسه نحوه اسم گذاری این بلاک ها در شبکه اتریوم و بیت کوین («اومر یا عمو» در برابر «یتیم») اینطور برمیآید که اتریوم برای این بلاکها ارج و قرب بیشتری قائل است. جالب اینکه در واقعیت هم همینطور است. طبق پروتکل اتریوم، ماینرها در هنگام ساخت بلاک جدید موظفند بلاک های اومر را تا ۶ نسل قبل از آخرین بلاک زنجیره اصلی شناسایی کرده و هش آنها را در سربرگ بلاک خود وارد کنند. این هش همان پارامتری است که در توضیح سربرگ بلاک به آن اشاره کردیم: ommersHash
به کارگیری پروتکل GHOST توسط بلاک عمو یا همان اومر در اتریوم هدف از وارد کردن هش بلاک های اومر در بلاک های زنجیره اصلی، پاداش دهی به نودهای ماینری است که بلاکهای اومر را ساختهاند. این پاداش در مقایسه با پاداش ساخت بلاکهای اصلی کمتر است؛ اما همین پاداش اندک نیز انگیزه و مشوقی برای فعالیت ماینرها در راستای حفظ امنیت شبکه اتریوم است.
اکنون که تراکنشها و بلاکهای اتریوم و اجزای آنها را به خوبی میشناسید، زمان آن است که به سراغ نودهای شبکه برویم. در بخش بعدی درباره فعالیت اصلی نودهای شبکه، یعنی استخراج در شبکه اتریوم صحبت خواهیم کرد.
بخش بیست و دوم: اجماع و استخراج در شبکه اتریوم
استخراج یا ماینینگ اتریوم، اصطلاحاً به معنی کسب پاداش توسط نودهای ماینر، از شبکه اتریوم است؛ اما سوال اصلی درباره استخراج این است که ماینرها چه مسیری را برای ساخت بلاک ها در شبکه اتریوم طی میکنند و چگونه بر روی بلاکهای ساخته شده، توافق نظر پیدا میکنند؟
پیش از پرداختن به موضوع اجماع در شبکه اتریوم، در خاطر داشته باشید که اتریوم در حال طی مراحل آزمایشی برای مهاجرت به پروتکل اثبات سهام است (در بخش نقشه راه اتریوم بیشتر در اینباره توضیح دادهایم). بنابراین هرآنچه که در این مقاله درباره اثبات کار گفته شده، تنها تا زمان آپدیت نهایی اتریوم ۲.۰ معتبر است.اجماع و توافق جمعی در اتریوم
هسته مرکزی فرایند ماینینگ، اجماع یا توافق میان نودهاست که از طریق یک الگوریتم ریاضی تأمین میشود: الگوریتم گواه اثبات کار (PoW). استفاده از این الگوریتم به ماینرها کمک میکند تا همواره بر روی یک زنجیره مرجع از بلاکها (و تراکنشها) توافق کنند تا بدین طریق، امکان خطا یا جعل تراکنشها و بلاکها در بلاک چین به حداقل برسد.
گواه اثبات کار چیست؟
الگوریتم گواه اثبات کار ، در واقع روشی است که امنیت شبکه توزیع شده اتریوم را با مکانیزم ساده پاداش و جزا تأمین میکند. گواه اثبات کار به بیان خیلی ساده، یعنی هر فعالیتی در شبکه (چه فعالیت درست و سازنده و چه فعالیت خرابکارانه)، نیازمند اثبات انجام کاری از جنس محاسبات و پردازش کامپیوتری است. در صورت انجام کار سازنده، نودها پاداش میگیرند، و در صورت انجام کار در جهت حمله به سیستم، میزان کار آنها باید بر میزان کار نودهای درستکار غلبه کند و همین امر باعث پر هزینه شدن حمله به شبکه میشود.
این تعریف ساده در شبکه بیت کوین، اتریوم و همه بلاک چین هایی که از الگوریتم اثبات کار برای ایمنسازی شبکه خود استفاده میکنند، صدق میکند. بنابراین اجازه دهید از تعاریف سطحی عبور کرده و به جزئیات عملکرد روش اثبات کار در بلاک چین اتریوم بپردازیم.
هر نود ماینر در شبکه اتریوم، با رعایت اصول توضیح داده شده در مورد تراکنشها و بلاکها ، با قراردادن تعدادی تراکنش در یک بلاک و ایجاد بلاک کاندید، وارد پروسه اثبات کار میشود. فرایند اثبات کار شامل گرفتن دادهها از سربرگ بلاک (به عنوان ورودی) و هش کردن مکرر آن ورودی با استفاده از یک الگوریتم هش رمزنگاری است. این فرایند، هر بار یک خروجی رمزنگاری شده با طول (تعداد کاراکتر) ثابت ایجاد میکند که نماینده ارزش هش است. برای اثبات انجام کار، این فرایند تا جایی ادامه مییابد که خروجی هش، از یک مقدار آستانه (قابل تنظیم توسط پروتکل اتریوم) کمتر شود. در این صورت، هش نهایی به عنوان گواه اثبات کار به سایر نودها اعلام شده و نودی که زودتر به این نتیجه دست یابد، مجاز به ثبت بلاک و دریافت پاداش شبکه است.
درباره مفهوم هش بیشتر بخوانید:
اما طبق تعریف تابع هش، میدانیم که در ازای هر ورودی ثابت، (هر چند بار که عمل هشینگ را انجام دهیم) تنها یک خروجی یکتا بدست میآید. بنابراین با هر بار هش کردن دادههای ثابت موجود در سربرگ بلاک، به یک نتیجه یکتا میرسیم. اینجاست که نقش پارامتر متغیر نانس (nonce) پررنگ میشود. نانس عددی متغییر است که از ترکیب آن با میکس هش (mixhash)، هربار یک ورودی جدید برای تابع هش ایجاد میشود. بنابراین ماینرها با تغییر مداوم عدد نانس، گستره عظیمی از ورودیها را در تابع هش قرار میدهند تا درنهایت به جواب مورد نظر که مقدار آن از آستانه تعین شده کمتر است، دست یابند. در بلاک چین اتریوم، الگوریتم مورد استفاده برای این فرآیند، Ethash نام دارد.
Ethash چیست؟
Ethash یک الگوریتم گواه اثبات کار است که در واقع نسخه اصلاح شدهای از الگوریتم اولیه دگر-هاشیموتو (Dagger-Hashimoto) است. الگوریتم Ethash ، ماینرهای شبکه را ملزم میدارد که عملیات هشینگ دادههای سربرگ بلاک را تا جایی که مقدار هش خروجی کمتر از یک آستانه مشخص شود، ادامه دهند. این مفهوم به عنوان سختی (difficulty) شناخته میشود. مکانیزم سختی به این صورت است که شبکه، آستانه هش مورد قبول را به منظور کنترل نرخ تولید بلاک ها (یا کنترل زمان ساخت بلاک)، افزایش یا کاهش دهد.
اگر نرخ ساخت بلاکها از حد مشخصی فراتر رفته و زمان میانگین ساخت بلاکها کوتاهتر از ۱۴ ثانیه شود، سختی شبکه به صورت خودکار افزایش یافته و آستانه هش مورد قبول را کاهش میدهد. این امر باعث میشود تعداد حالتهای هش مورد پذیرش برای اثبات انجام کار کاهش یافته و طبیعتاً میزان کار (پردازش) مورد نیاز توسط ماینرها افزایش یابد. از سوی دیگر، اگر نرخ ساخت بلاک ها کاهش یافته و زمان میانگین ساخت بلاک ها از ۱۴ ثانیه فراتر رود، سختی شبکه به طور خودکار کاهش یافته و آستانه هش مورد قبول را افزایش میدهد؛ این کار باعث میشود که تعداد حالتهای هش مورد پذیرش برای اثبات انجام کار، افزایش یافته و طبعاً میزان کار (پردازش) مورد نیاز توسط ماینرها کاهش یابد. طبق پروتکل اتریوم، سختی شبکه همواره به صورت پویا بازتنظیم میشود تا زمان میانگین برای ساخت هر بلاک ۱۴ ثانیه باشد.
از بحث اجماع و توافق جمعی در شبکه اتریوم، هنوز یک سوال باقیست؛ اینکه نودهای شبکه چگونه روی یک زنجیره از بلاکهای معتبر به توافق میرسند؟
انتخاب زنجیره مرجع در شبکه اتریوم
بیایید یک بار دیگر هدفمان را از صحبت درباره الگوریتم اجماع مرور کنیم؛ هدف ما از ابتدا ایجاد بلاک چینی بود که در آن، حالت جهانی شبکه در یک توالی منطقی از بلاک ها ثبت شود؛ زنجیرهای واحد که مورد قبول همه اعضا و کاربران شبکه باشد. چرا که در صورت تعدد زنجیرهها، انتخاب معتبرترین زنجیره، خود محل بحث و جدل است.
بنابراین تعبیر ما از امنیت، حفاظت از زنجیره اصلی و صحیح در مقابل هرگونه دستکاری، جعل و تغییر است. وقتی از تغییر و دستکاری در بلاک چین صحبت میکنیم، منظورمان ابداً ایجاد تغییر در بلاکهای ثبت شده پیشین نیست. چرا که اگر به ذات توزیع شده بلاک چین توجه داشته باشیم، خواهیم دید که هر بلاک جدید به هزاران نود در سراسر دنیا ارسال شده و تغییر دفتر کل تمامی نودها به منظور تغییر یا دستکاری یک تراکنش، عملاً امری غیرمنطقی و محال به نظر میرسد. حقیقت این است که دستکاری در شبکه بلاک چین، تنها با ساخت بلاک های جعلی (متناظر با بلاک های اصلی) و اعلام آن به نودهای دیگر اتفاق میافتد.
هر بار که تعمداً یا به صورت اتفاقی، دو یا چند بلاک به صورت همزمان و با شماره (block number) یکسان تولید شوند، مسیرهای گوناگونی در شبکه تولید میشود که آنها را فورک (fork) مینامیم. شبکه برای تضمین امنیت خود، ناگزیر است که از فورکها اجتناب ورزد؛ چرا که فورکها جامعه نودها، کاربران و توسعه دهندگان بلاک چین را به چند دسته تقسیم میکنند که هر کدام یک زنجیره را به عنوان زنجیره صحیح قبول دارند (همانند هاردفورکی که در جریان هک DAO و جدایی اتریوم از اتریوم کلاسیک اتفاق افتاد و انتقادات بسیاری را متوجه اتریوم ساخت).
شبکه اتریوم برای مقابله با اثرات جانبی بلاک تایم سریع خود (۱۴ ثانیه) که منجر به ایجاد فورکهای گاه و بیگاه میشود، از مکانیزمی تحت عنوان «پروتکل شبح یا GHOST protocol» استفاده میکند (که البته هیچ ارتباطی به فیلم مأموریت غیرممکن – پروتکل شبح نداشته و مخفف عبارت Greedy Heaviest Observed Subtree به معنی سنگینترین زیرشاخه مشاهده شده در شبکه است).
پروتکل GHOST در موارد ایجاد فورک در زنجیره، نودها را ملزم به انتخاب زنجیرهای میکند که بیشترین میزان پردازش را به خود اختصاص داده و از سایر زنجیرهها سنگینتر است. مفهوم سنگینی در اینجا به تعداد بلاکهای ماین شده در هر زنجیره اشاره دارد؛ بنابراین سنگینترین زنجیره لزوماً مترادف با بلندترین زنجیره نیست؛ چرا که بر خلاف پروتکل بیت کوین ، در بلاک چین اتریوم، بلاکهای اومر نیز در محاسبه سنگینترین زنجیره به حساب میآیند. برای درک بهتر، تصویر زیر را مشاهده کنید.
چگونگی انتخاب زنجیره مرجع در بلاک چین اتریوم حال در چنین شرایطی حمله به شبکه چگونه خواهد بود؟ تنها یک راه برای خرابکاری در شبکه وجود دارد: اینکه نود مهاجم، بلاکی شامل تراکنشهای کلاهبردارانه را جعل کرده و سپس توان پردازشی خود را به کار گیرد تا برای چندین بلاک پس از آن، نانس و هش صحیح بلاک را سریعتر از نودهای دیگر به شبکه اعلام کند تا بتواند سنگینترین زنجیره مورد قبول پروتکل GHOST را بر روی بلاک جعلی خود بسازد (مانند آخرین زنجیره در شکل بالا). با توجه به ساز و کار الگوریتم اثبات کار اتریوم، میدانیم که شانس نود مهاجم برای این کار، عملاً صفر است؛ مگر اینکه اکثریت توان پردازشی شبکه در اختیار او باشد که در این صورت به عنوان حمله ۵۱ درصدی (۵۱% attack) شناخته میشود. لازم به ذکر است که در بلاک چین های مبتنی بر اثبات کار، هرچقدر که توزیع شدگی منابع پردازشی و میزان مشارکت نودها در شبکه بیشتر باشد، هزینه لازم برای این حمله به طور تصاعدی افزایش مییابد.
احتمال وقوع حملات خرابکارانه در اتریوم پاداش استخراج درشبکه اتریوم چیست؟
ماینری که مراحل بالا را با موفقیت طی کرده و زودتر از سایر نودها به هش مورد نظر دست یابد، اجازه دارد بلاک کاندید خود را به بلاک چین اضافه کرده و پاداش دریافت کند؛ این پاداش شامل موارد زیر است:
- پاداش ثابت بلاک (static block reward): در حال حاضر میزان این پاداش ۲ اتر است.
- کل گس مصرف شده در بلاک: شامل کل مقدار گسی که با اجرای تراکنشهای موجود در بلاک مصرف شده است. این هزینه گس به عنوان بخشی از فرایند اثبات کار، به حساب نود ماینر منتقل میشود.
- پاداش اضافی برای درج اومرها در بلاک: ماینرها با قراردادن هش بلاک های اومر (که در قسمت بلاک های اتریوم توضیح داده شد) در سربرگ بلاک خود، بخشی از پاداش ثابت بلاک را دریافت میکنند.
Ethash و مقاومت در برابر ASIC
پروتکل اتریوم به منظور تضمین امنیت شبکه در دراز مدت، به یک ویژگی اساسی احتیاج دارد: اینکه مشارکتِ سازنده در شبکه، برای همه امکان پذیر باشد؛ به این معنی که برای ماینینگ در شبکه اتریوم و استفاده از الگوریتم گواه اثبات کار، نیازی به تهیه تجهیزات پردازشی خاص و گرانقیمت نباشد تا هر کس به نسبت توان پردازشی سختافزار خود، بتواند در شبکه مشارکت کرده و از سود آن بهرهمند شود.
در چنین شرایطی، از تمرکزگرایی در شبکه نیز جلوگیری خواهد شد؛ چرا که امکان در اختیار گرفتن بخش زیادی از توان پردازشی شبکه (با تجهیزات سختافزاری خاص و پیشرفته) و کسب قدرت و نفوذ در بلاک چین توسط بازیگران خاص، بسیار محدود میشود.
این مشکل تا حدی در بلاک چین بیت کوین وجود دارد؛ شبکه بیت کوین در مدل اجماع مبتنی بر اثبات کار خود، از الگوریتم درهمنگاری SHA-256 استفاده میکند که فقط وابسته به محاسبات است. به این معنی که با افزایش سرعت پردازندهها، به راحتی میتوان سرعت دستیابی به نانس و هش صحیح را افزایش داد. این ویژگی در شبکه بیت کوین، به مرور باعث شکل گیری دستگاههای اِیسیک (ASIC) – مدارهای مجتمع با کاربرد خاص – شد. بدین ترتیب امروزه دیگر امکان مشارکت در شبکه بیت کوین برای بازیگران معمولی با تجهیزاتی از جنس CPUهای کامپیوترهای عمومی و یا GPUها (کارتهای گرافیک) امکانپذیر نیست؛ چرا که اساساً این سختافزارها توان رقابت با ASIC ها را ندارند. اتریوم برای پیشگیری از این مشکل، استفاده از Ethash را انتخاب کرده است.
Ethash بر اساس یک مجموعه بزرگ از دادههای تصادفی تحت عنوان DAG (Directed Acyclic Graph) یا «گراف مدور جهتدار» شکل گرفته است؛ به این معنی که محاسبات اثبات کار، مستلزم انتخاب دادههای ورودی، از زیرمجموعههای یک منبع ثابت وابسته به نانس و سربرگ بلاک است. این منبع ثابت همان دگ (DAG) است. بدون اینکه وارد جزئیات پیچیده این مکانیزم شویم، به صورت کلی به توضیح کارکرد آن میپردازیم.
نودهای شبکه با اسکن سربرگ هر بلاک (تا آخرین بلاک ساخته شده فعلی)، میتوانند یک عبارت بازیابی (Seed) را برای آن بلاک محاسبه کنند که به صورت دورهای، پس از هر ۳۰،۰۰۰ بلاک تغییر میکند. این عبارت بازیابی برای اولین دوره، از درهمنگاری یک رشته ۳۲ بایتی با مقدار صفر بدست میآید. در دورههای بعدی، این عبارت بازیابی از درهمنگاریِ حاصلِ درهمنگاری عبارت بازیابی قبلی بدست میآید. با استفاده از این عبارت بازیابی، نودها میتوانند یک حافظه کَش شبه تصادفی (pseudorandom cache) را محاسبه کنند که توسط لایت نودها (که در بخش ۳ توضیح دادیم) ذخیره میشود.
با استفاده از این حافظه کش، نودها میتوانند یک مجموعه داده (از مرتبه گیگابایت) تولید کنند؛ با این ویژگی که هر آیتم موجود در این مجموعه داده، بستگی اندکی به تعدادی از دادههای موجود در حافظه کش دارد. این مجموعه داده، هم توسط فول نودها و هم توسط لایت نودها ذخیره میشود. پس از هر دوره (۳۰،۰۰۰ بلاک یا به طور دقیقتر هر ۱۰۰ ساعت)، با تغییر عبارت بازیابی، این مجموعه داده نیز آپدیت میشود و سایز آن به صورت خطی با زمان افزایش مییابد. در حال حاضر حجم مجموعه داده DAG، ۳.۴۹ گیگابایت است.
برای ماینینگ یا استخراج اتریوم، فایل DAG باید در حافظه GPUی نودها لود شود. سپس ماینرها باید دادههای تصادفی را از DAG استخراج کرده، تعدادی از تراکنشهای تصادفی را از هر بلاک محاسبه کنند، و سپس هش نتیجه را به عنوان نانس ورودی در Ethash استفاده کنند (و این آزمون و خطا را آنقدر ادامه دهند تا نانس مورد استفاده، به خروجی صحیح بیانجامد). این به معنی آن است که ماینرها مستلزم ذخیره کل فایل DAG هستند تا بتوانند از آن، دادههای تصادفی را استخراج، و تراکنشهای تصادفی را محاسبه کنند. بنابراین اگر GPUی مورد استفاده فاقد حافظه VRAM کافی باشد، ماینینگ اتریوم امکانپذیر نخواهد بود.
با این اوصاف میتوان گفت که ماینینگ در شبکه اتریوم محدود به حافظه (memory-hard or memory-bound) است؛ به این معنی که در این شبکه، زمان مورد نیاز برای حل یک مسأله محاسباتی، اساساً با توجه به میزان حافظه مورد نیاز برای نگهداری دادهها تعیین میشود. به بیان دیگر، بخش قابل توجهی از تلاش و انرژی ماینر، بجای واکاوی دادهها از فایل DAG، صرف خواندن DAG میشود. این کار به منظور مقاومسازی Ethash در برابر ASICها صورت میگیرد؛ چرا که حافظه عظیم مورد نیاز در استخراج اتریوم، باعث میشود که ماینرهای بزرگ مقیاس (ASIC ها) از افزودن ترابایتها حافظه به دستگاههای خود سود اندکی ببرند. زیرا ماینرهای کوچکتر نیز به سادگی میتوانند با خرید تعداد زیادی از دستگاههای نگهدارنده حافظه، همان سودآوری را داشته باشند (با توجه به این که هزینه انرژی برای چیپهای ASIC و هر حافظه فیزیکی دیگری تقریباً یکسان است). این کار نهایتاً خطر متمرکزسازی را کاهش میدهد.
همانطور که پیشتر نیز اشاره کردیم، مدل اثبات کار بیت کوین، کاملاً در تضاد با مدل اثبات کار اتریوم است. در شبکه بیت کوین، روش اثبات کار محدود به محاسبات (compute-bound) است؛ به این معنی که زمان مورد نیاز برای انجام یک مسأله محاسباتی در این شبکه، اساساً با توجه به سرعت محاسبات پردازنده مرکزی کامپیوتر تعیین میشود. با توجه به این حقیقت که الگوریتم استخراج بیت کوین تنها نیازمند به یک محاسبه ساده SHA-256 است، امروزه شاهد ظهور چیپهای ASIC هستیم که تنها با هدف محاسبه تریلیونها هش SHA-256 در ثانیه طراحی شدهاند. این امر باعث شده است که CPUهای چند منظوره و GPUها عملاً از عرصه رقابت حذف شوند و قدرت ماینینگ در اختیار گروه اندکی از ماینرها قرار گیرد.
بخش بیست و سوم: نقشه راه و فورک های اتریوم
همانطور که پیشتر نیز اشاره کردیم، اتریوم ابتدا در ماه می سال ۲۰۱۵ نسخهای آزمایشی از شبکه خود را تحت عنوان المپیک (Olympic) روانه بازار کرد و سپس پس از گذشت دو ماه، در جولای ۲۰۱۵ اولین شبکه اصلی و رسمی خود را با نام فرانتیر (Frontier) عرضه نمود. پس از عرضه این شبکه رسمی، خرید و فروش اتریوم ، استخراج یا ماینینگ اتریوم ، امکان استفاده از قراردادهای هوشمند و امکان اجرای اپلیکیشنهای غیرمتمرکز عملاً در اختیار کاربران قرار گرفت.
اتریوم در طول عمر ۵ سالهاش، با فورک های زیادی روبهرو شده که برخی از آنها برنامهریزی شده و برخی ناخواسته و اجباری بودهاند. اگر تا حدودی با دنیای بلاک چین و رمز ارز ها آشنایی داشته باشید، احتمالاً نام فورک به گوشتان خورده است. فورک یا انشعاب در شبکه بلاک چین ، یک بهروزرسانی است که زنجیره بلوکی را از یک بلاک مشخص به بعد، به دو انشعاب مختلف تقسیم میکند. فورک ها به دو دسته سافت (نرم) و هارد (سخت) تقسیم میشوند. یک سافت فورک ، در واقع فورکی است که باعث ایجاد یک بلاک چین جدید نمیشود و تنها یک بهروزرسانی را در این شبکه ایجاد میکند؛ در حالی که بهروزرسانی انجام شده در طی یک هارد فورک ، باعث به وجود آمدن شبکه بلاک چینی جدیدی میشود که دیگر از شبکه پیشین پشتیبانی نمیکند.
درباره فورک ها بیشتر بخوانید:
در این قسمت از این مقاله قصد داریم نگاهی به فورک های اتریوم داشته باشیم و زمان و دلیل وقوع آنها را با هم بررسی کنیم. این فورک ها که اکثریت آنها از نوع از پیش برنامهریزی شده هستند، نقشه راه اتریوم از ابتدا تا کنون و همچنین برنامههای آینده آن را برای ما نمایان خواهند کرد.
فورک هوماستد (Homestead)
نسخه بعدی ارائه شده توسط اتریوم ، هارد فورکی به نام هوماستد (Homestead) بود که در تاریخ ۱۰ مارس ۲۰۱۶ و بر روی بلاک شماره ۱.۱۵۰.۰۰۰ اتریوم پیادهسازی شد. این هارد فورک ثبات بیشتری را به شبکه اتریوم اضافه کرد و امنیت آن را تا حد زیادی تضمین نمود.
فورک دائو (DAO) و تولد اتریوم کلاسیک
در تاریخ ۱۷ ژوئن سال ۲۰۱۶ ، اتفاق غیرمنتظرهای در شبکه اتریوم رخ داد که این شبکه را مجبور به انجام هارد فورکی پیشبینی نشده کرد. در آن زمان، DAO یا همان سازمان خودگردان غیرمتمرکزی به نام The DAO که توسط یک تیم استارتاپ آلمانی به نام Slock.it پشتیبانی میشد، بر روی بلاک چین اتریوم فعالیت میکرد. این دائو در طول دوره جمعآوری سرمایه اولیه خود (که همانطور که میدانید ساز و کار همه دائو هاست)، موفق شده بود چیزی حدود ۱۵۰ میلیون دلار سرمایه در قالب اتر جذب کند و به موفقترین پروژه جهان از لحاظ سرمایه اولیه جذب شده تبدیل شود؛ اما یک باگ فنی در برنامهنویسی کد قرارداد هوشمند آن، همه چیز را تغییر داد و اتفاق ناخوشایندی را رقم زد. دقیقاً در زمانی که برنامهنویسان در تلاش برای رفع این مشکل فنی بودند، یک هکر از آن آگاه شد و شبکه The DAO را مورد تهاجم قرار داد. این هکر موفق شد در طی این حمله، مبلغ ۵۰ میلیون دلار را از قرارداد هوشمند این دائو به سرقت ببرد. این اتفاق لطمه بزرگی را به شهرت اتریوم و سایر دائو ها وارد کرد و باعث شد قیمت هر اتر از ۲۰ دلار ، به ۱۳ دلار تنزل پیدا کند. این حمله در دنیای رمز ارز ها، به هک دائو (The DAO Hack) معروف است.
در حالی که این اتفاق فقط و فقط به دلیل باگ فنی موجود در کد قرارداد هوشمند این دائو بود و مطلقاً ارتباطی به شبکه اتریوم نداشت، اما تیم توسعهدهندگان اتریوم برای جلوگیری از این لطمه، تصمیم به مداخله گرفتند. آنها تصمیم گرفتند تا با انجام یک هارد فورک ، سرمایههای به سرقت رفته را به یک قرارداد هوشمند بر روی یک بلاک چین جدید انتقال دهند و آنها را به صاحبان خود بازگردانند. در حالی که برخی از اعضای جامعه اتریوم با این تصمیم موافق نبودند و آن را در تناقض با ویژگیهای ذاتی و اساسی بلاک چین مانند غیرقابل بازگشت بودن تراکنش های انجام شده میدانستند، اما شرایط سخت و فشار زیادی که بر روی اتریوم وجود داشت باعث شد تا اکثریت اعضای شبکه آن به انجام این هاردفورک رأی بدهند؛ تا در نهایت هارد فورکی به نام هارد فورک دائو بر روی بلاک شماره ۱.۹۲۰.۰۰۰ اتریوم به وقوع بپیوندد. هارد فورک دائو ، شبکه اتریوم را به دو بلاک چین مختلف تقسیم کرد. یکی از این دو بلاک چین اتریوم فعلیست و دیگری، بلاک چینی به نام اتریوم کلاسیک. اعضایی از شبکه اتریوم که با انجام این هارد فورک موافق نبودند، به فعالیت در همان زنجیره قدیمی که اکنون اتریوم کلاسیک نامیده میشود ادامه دادند. اتریوم کلاسیک هنوز هم به عنوان یک بلاک چین مستقل و جداگانه به کار خود ادامه میدهد. در زمان نگارش این مقاله (مرداد ۹۹)، رمز ارز این بلاک چین با نماد اختصاری ETC در ردهبندی سایت کوینمارکتکپ در جایگاه ۲۵ قرار دارد.
سیفالدین آموس نویسنده کتاب «استاندارد بیتکوین» با اشاره به این اتفاق تاریخی میگوید:
این حقیقت که اتریوم میتواند (به حالت پیشین) بازگردانده شود، به این معناست که همه بلاکچینهای کوچکتر از بیتکوین، در اصل دیتابیسهایی متمرکز هستند و کنترل آنها در دست ادارهکنندگانشان است.
فورک تنجرین ویسل (Tangerine Whistle)
فورک دیگری که پس از هارد فورک دائو در شبکه اتریوم رخ داد، فورک پیشبینی نشده اما کوچکی به نام تنجرین ویسل (Tangerine Whistle) بود. این فورک که در تاریخ ۱۸ اکتبر ۲۰۱۶ و بر روی بلاک شماره ۲.۴۶۳.۰۰۰ اتریوم رخ داد، توانست با افزایش هزینه برخی از فعالیتها از انجام حملات محرومیت از سرویس یا دیداس (ddos) تا حدی جلوگیری کند.
فورک اسپیوریوس دراگون (Spurious Dragon)
اسپیوریوس دراگون (Spurious Dragon) نیز فورک پیشبینی نشدهای بود که در تاریخ ۲۲ نوامبر سال ۲۰۱۶ و بر روی بلاک شماره ۲.۶۷۵.۰۰۰ رخ داد. این فورک شامل چهار پروپوزال میشد که در جهت رفع برخی از مشکلات فنی اتریوم ارائه شده بودند. فورک اسپیوریوس دراگون مقاومت شبکه اتریوم را در برابر حملات دیداس به شدت تقویت کرد و امکان انجام آنها را عملاً برطرف نمود.
فورک متروپلیس (Metropolis)
هارد فورک متروپلیس (Metropolis) خود به دو هارد فورک بیزانتیوم (Byzantium) و کنستانتینپول (Constantinepole) تقسیم میشود. این فورک مانند دو فورک پیشین از نوع پیشبینی نشده نبود و از ابتدا در نقشه راه اتریوم قرار داشت. هارد فورک بیزانتیوم در اکتبر سال ۲۰۱۷ انجام شد. این فورک شامل ۹ پروپوزال برای بهبود عملکرد شبکه اتریوم بود و در مرکزیت آنها، تقویت حریم خصوصی کاربران و افزایش سرعت و مقیاسپذیری اتریوم وجود داشت. این فورک همچنین راه را برای فورک دیگر متروپلیس به نام کنستانتینپول (یا قسطنطنیه) هموار کرد.
کنستانتینپول یا همان قسطنطنیه را میتوان یکی از مهمترین فورک های اتریوم دانست. هدف این هارد فورک که در فوریه سال ۲۰۱۹ به انجام رسید، آمادهسازی برای انتقال الگوریتم اجماع اتریوم از گواه اثبات کار به گواه اثبات سهام بود. همانطور که میدانید و پیشتر نیز اشاره کردیم، اتریوم در حال حاضر مانند بیت کوین و بسیاری رمز ارز های دیگر بر طبق مدل گواه اثبات کار یا Proof of Work (PoW) عمل میکند؛ به این معنی که ماینرهای این شبکه توان پردازشی خود را برای حل محاسبات اتریوم و در نتیجه اعتبارسنجی و تأیید (یا عدم تأیید) تراکنش ها مصرف میکنند و در نهایت در ازای ماین کردن هر بلاک، مبلغی را در قالب اتر به عنوان پاداش استخراج بلاک دریافت مینمایند.
اتریوم اما قصد دارد استفاده از این الگوریتم اجماع را متوقف کرده و به الگوریتم اجماع دیگری به نام گواه اثبات سهام یا Proof of Stake (PoS) روی بیاورد. در بلاک چین هایی که از الگوریتم اجماع گواه اثبات سهام استفاده میکنند، مفهومی به نام ماین کردن یا استخراج بلاک ها به طور کلی وجود ندارد. در چنین شبکههایی، هر شخصی که قصد تبدیل شدن به یک فول نود و اعتبارسنجی تراکنش ها را داشته باشد، ابتدا باید مقداری سهام اولیه را در شبکه سپردهگذاری و قفل کند. هر شخصی سپس با توجه به میزان دارایی قفل شده ، توانایی مشارکت در تصمیمگیریهای شبکه را خواهد داشت (برای کسب اطلاعات بیشتر در خصوص این دو الگوریتم اجماع، به این دو مقاله مراجعه کنید: الگوریتم اثبات کار چیست؟ الگوریتم اثبات سهام چیست؟).
فورک قسطنطنیه در همین راستا، پاداش استخراج بلاک ها را از ۳ به ۲ کاهش داد. این فورک اما اتفاقی به نام بمب سختی اتریوم را به تعویق انداخت. بمب سختی اتریوم ، برنامهای بود که توسعهدهندگان این شبکه برای زمینهسازی حرکت به سمت اثبات سهام در ذهن داشتند. بمب سختی اتریوم ، سختی انجام محاسبات شبکه اتریوم را برای ماینرها به قدری افزایش میداد که انجام ماینینگ برای آنها عملاً به صرفه نباشد و آنها را به استفاده از الگوریتم اثبات سهام ترغیب نماید. در خصوص بمب سختی اتریوم و حرکت اتریوم به سمت استفاده از الگوریتم اجماع گواه اثبات سهام ، در قسمت بعدی یعنی فورک سرنیتی (Serenity) که آخرین هارد فورک اتریوم است مفصلتر صحبت خواهیم کرد.
فورک سرنیتی (Serenity) یا همان اتریوم ۲.۰
همانطور که در قسمت قبل اشاره کردیم، آخرین هارد فورک شبکه اتریوم سرنیتی نام دارد. سرنیتی همچنین اتریوم ۲.۰ نیز خوانده میشود؛ چرا که پیادهسازی آن، این شبکه را از اتریوم فعلی (اتریوم ۱.۰) به اتریوم ۲.۰ تبدیل میکند. مسئله عنوان شده در بالا در خصوص جایگزینی مدل گواه اثبات کار با گواه اثبات سهام، یکی از اتفاقاتی است که پس از راهاندازی اتریوم ۲.۰ به وقوع خواهد پیوست. در قسمت قبل همچنین به مسئلهای تحت عنوان بمب سختی اتریوم اشاره کردیم. با وقوع هارد فورک قسطنطنیه، پیادهسازی بمب سختی اتریوم به تعویق افتاد؛ اما پس از عرضه اتریوم ۲.۰ ، بمب سختی اتریوم نیز به وقوع خواهد پیوست.
دلیل وقوع چنین اتفاقی این است که پس از عرضه اتریوم ۲.۰ ، با دو نسخه از اتریوم روبهرو خواهیم بود: اتریوم فعلی یا اتریوم ۱.۰ که بر مبنای الگوریتم اجماع گواه اثبات کار به فعالیت خود ادامه میدهد، و اتریوم ۲.۰ که از الگوریتم گواه اثبات سهام استفاده میکند. در چنین شرایطی، ممکن است که برخی از اعضای جامعه اتریوم تمایل داشته باشند تا همچنان از شبکه قدیمی استفاده کنند؛ اما این اتفاقی نیست که مورد نظر توسعهدهندگان اتریوم باشد. این توسعهدهندگان قصد دارند از اتفاقی که پس از فورک دائو رخ داد و موجب ظهور اتریوم کلاسیک شد جلوگیری کنند. به همین دلیل، از مفهومی به نام بمب سختی استفاده خواهند کرد و سختی انجام محاسبات را در اتریوم ۱.۰ به قدری افزایش خواهند داد که ادامه کار در آن عملاً غیرممکن باشد. برای رجوع به اتفاقی که برای اتریوم ۱.۰ و پس از شروع به کار اتریوم ۲.۰ رخ خواهد داد، از عبارت عصر یخبندان (Ice Age) اتریوم نیز استفاده میشود.
استفاده از مدل گواه اثبات سهام ، یکی از بزرگترین تغییراتی است که پیادهسازی اتریوم ۲.۰ با خود به همراه خواهد داشت؛ اما این تغییرات به همین جا ختم نشده و بهروزرسانیهای زیرساختی دیگری نیز همراه با این نسخه به جامعه اتریوم عرضه خواهد شد. در قسمت بعدی یعنی آینده اتریوم ، تمامی این تغییرات و بهروزرسانیها را با یکدیگر بررسی خواهیم کرد.
بخش بیست و چهارم: آینده اتریوم
آینده اتریوم به زبان ساده، اتریوم ۲.۰ یا همان هارد فورک سرنیتی است. تغییراتی که این هارد فورک در شبکه اتریوم ایجاد میکند به قدری چشمگیر است که میتوان ادعا کرد با یک شبکه جدید مواجه خواهیم شد. اتریوم ۲.۰ به طور خلاصه، از چهار جهت با اتریوم فعلی متفاوت خواهد بود. این چهار مورد عبارتند از:
- استفاده از الگوریتم اجماع گواه اثبات سهام به جای گواه اثبات کار
- اضافه شدن قابلیت شاردینگ (Sharding) در جهت افزایش مقیاسپذیری شبکه
- استفاده از یک ماشین مجازی اتریوم (EVM) جدید و متفاوت
- استفاده از یک رمز ارز جدید به نام اتر ۲ (Ether 2)
استفاده از الگوریتم اجماع گواه اثبات سهام به جای گواه اثبات کار
در رابطه با تغییر الگوریتم اجماع اتریوم مفصلاً صحبت کردیم. الگوریتم گواه اثبات سهامی که در اتریوم ۲.۰ به کار گرفته میشود کسپر (Casper) نام دارد و عملکرد آن به این شکل است که برای تبدیل شدن به یک فول نود و اعتبارسنجی تراکنش ها، دیگر نیازی به خرید دستگاه ماینر نیست. فول نود ها که در مدلهای گواه اثبات سهام فورجر (Forger) یا استیکر (Staker) نامیده میشوند، میتوانند با دانلود کردن نرمافزاری بر روی سیستمهای خود و همچنین با قفل کردن یا اصطلاحاً استیک کردن حداقل ۳۲ اتر ، کار اعتبارسنجی را آغاز کنند. شیوه کار این الگوریتم به این شکل است که فورجرهایی که رأی خود را به ساخت بلاک های اشتباه بدهند، مبلغی از سرمایه استیک شده خود را از دست خواهند داد؛ در حالی که فورجرهایی که رأی آنها به ساخت بلاک های صحیح باشد، در ازای این کار پاداشی را دریافت خواهند کرد. همین امر آنها را به درستکاری و تلاش برای حفظ امنیت شبکه ترغیب میکند. همچنین با افزایش میزان دارایی استیک شده، حق رأی نیز افزایش مییابد. به طور کلی عملکرد این نسخه به این شکل خواهد بود که در صورتی که سرمایه استیک شده توسط شما (برای مثال) ۱ درصد کل سرمایه شبکه را تشکیل دهد، در اعتبارسنجی ۱ درصد از تراکنش های موجود در شبکه نیز مشارکت خواهید داشت. میزان پاداش دریافتی در قبال فورج کردن هر بلاک صحیح در اتریوم ۲.۰ ، بین ۴ تا ۱۰ درصد سرمایه استیک شده پیشبینی شده است.
تصمیم تیم توسعهدهندگان اتریوم برای استفاده از این مدل اجماع را میتوان به دو دلیل ربط داد. اولین دلیل، افزایش مقیاسپذیری شبکه است. مقیاسپذیری در دنیای کریپتو، به قابلیت یک رمز ارز برای استفاده در سطح گسترده گفته میشود و به طور مشخصتر، به تعداد تراکنش هایی اطلاق میشود که در واحد ثانیه میتوان توسط یک رمز ارز انجام داد. با این که استفاده از الگوریتم گواه اثبات کار امنیت یک شبکه بلاک چینی را تا حد زیادی تضمین میکند، اما فرآیند طولانی و سختی است که باعث کاهش مقیاسپذیری رمز ارز ها میشود. اتریوم در دنیای کنونی و با افزایش تصاعدی و هرروزه تعداد رقبایی که مقیاسپذیری بیشتری را به کاربران هدیه میکنند، نیاز داشت تا اقدامی را در جهت رفع این مشکل انجام دهد. برای مثال همانطور که در قسمتهای قبل اشاره کردیم، رمز ارز ترون (TRX) که امروزه بر روی بلاک چین مستقل خود فعالیت میکند، ابتدا توکنی بر روی بلاک چین اتریوم بود؛ اما اکنون به یکی از رقبای جدی اتریوم تبدیل شده است. در وبسایت رسمی این رمز ارز ، نموداری را میبینیم که بیت کوین ، اتریوم و ترون را از جهت مقیاسپذیری مورد مقایسه قرار داده است. بر طبق این نمودار، اتریوم قادر است در هر ثانیه چیزی حدود ۲۵ تراکنش را به ثبت برساند؛ در حالی که این مقدار در مورد ترون برابر با ۲۰۰۰ است.
دومین دلیل برای اتخاذ این تصمیم توسط این تیم، افزایش تمرکززدایی و جذب کاربران از طیفهای متنوعتر به شبکه اتریوم است. همانطور که میدانید، در حال حاضر برای تبدیل شدن به یک فول نود در بلاک چین اتریوم نیاز به خرید دستگاه ماینر است. ماینرها دستگاههای گرانقیمتی هستند که نگهداری از آنها شرایط خاصی را میطلبد. این دستگاهها جای زیادی را اشغال میکنند، صدای زیادی را تولید میکنند و نگهداری از آنها مستلزم استفاده از دستگاههای خنک کننده است. همین مشکلات ممکن است بسیاری از افراد را از تصمیم خود برای تبدیل شدن به یک فول نود منصرف کند؛ اما الگوریتم اجماع گواه اثبات کار چنین مشکلاتی را نخواهد داشت. هر شخصی میتواند در صورت تمایل، با استفاده از یک لپتاپ و استیک کردن مقداری سرمایه، به یک اعتبارسنج در این شبکه تبدیل شود. لازم به ذکر است که سیستمی که از آن برای اعتبارسنجی تراکنش ها در اتریوم استفاده میکنید، باید همیشه روشن و آنلاین باشد؛ در غیر این صورت جریمه خواهید شد.
اضافه شدن قابلیت شاردینگ (Sharding) در جهت افزایش مقیاسپذیری شبکه
پیش از هر چیزی، بهتر است ابتدا نگاهی به مفهوم و چیستی شاردینگ داشته باشیم. شاردینگ در بلاک چین ، یک راهکار است که برای افزایش مقیاسپذیری به کار گرفته میشود. عملکرد شاردینگ به این شکل است که اعتبارسنجها را به دستههای کوچکتری تقسیم میکند و هر تراکنشی را برای اعتبارسنجی ، به جای کل اعتبارسنجها برای همین دستههای کوچکتر میفرستد. به این ترتیب با گروههای مختلفی از فول نودها مواجه هستیم که به طور همزمان، در حال اعتبارسنجی تراکنشهای شبکه هستند. این امر باعث میشود تا تعداد تراکنشهایی که کل شبکه در واحد زمان قادر به انجام آنهاست افزایش یابد و در نتیجه مقیاسپذیری آن تقویت شود.
لازم به ذکر است که به عقیده برخی، استفاده از تکنیک شاردینگ مغایر با اصول اولیه بلاک چین برای تمرکززدایی است و شبکه را به سوی نوعی از متمرکز بودن سوق میدهد. این تکنیک همچنین امنیت شبکه را نیز کاهش خواهد داد؛ چرا که هر چه تعداد اعضایی که تراکنشی را اعتبارسنجی میکنند بیشتر باشد، احتمال تبانی و وقوع حملاتی مانند حمله ۵۱ درصدی نیز کاهش خواهد یافت. البته این ادعا غلط نیست، و متأسفانه بلاک چین در حال حاضر در هر صورت از یکی از مشکلات مقیاسپذیری کم و یا غیرمتمرکز بودن و عدم امنیت رنج میبرد. ویتالیک بوترین این مشکل را سهگانه مقیاسپذیری بلاک چین میخواند. در صورت تمایل برای کسب اطلاعات بیشتر در خصوص این سهگانه، به این مقاله رجوع کنید:
استفاده از یک ماشین مجازی اتریوم (EVM) جدید و متفاوت
در خصوص چیستی EVM و نقش آن در بلاک چین اتریوم در قسمت «ماشین مجازی اتریوم چیست» مفصلاً صحبت کردیم. مسئلهای که در این جا وجود دارد این است که ماشین مجازی فعلی اتریوم به گونهای طراحی شده است که تراکنش ها را یکی پس از دیگری به اجرا میگذارد و قابلیت اجرای چند تراکنش به صورت همزمان را ندارد. بنابراین پس از وقوع هارد فورک سرنیتی و اضافه شدن قابلیت شاردینگ به بلاک چین اتریوم ، استفاده از این ماشین مجازی دیگر ممکن نیست و نیاز به وجود یک EVM جدید احساس میشود که از این قابلیت پشتیبانی کند. ماشین مجازی جدید اتریوم ایواسم (eWASM) نام دارد و مخفف عبارت Ethereum WebAssembly است.
استفاده از یک رمز ارز جدید به نام اتر ۲ (Ether 2)
رمز ارز اتریوم ۲.۰ ، اتر ۲ نام دارد. اتر ۲ نیز دقیقاً مانند اتر ۱ به عنوان سوخت لازم برای انجام فعالیتها در شبکه اتریوم ۲.۰ مورد استفاده قرار خواهد گرفت و پاداشهای فورجرها برای اعتبارسنجی تراکنشها، در قالب اتر ۲ پرداخت خواهد شد. دارندگان اتر ۱ میتوانند پس از هارد فورک سرنیتی ، اترهای خود را به اتر ۲ تبدیل کنند.
و کلام آخر این که بهروزرسانیهای ذکر شده در خصوص اتریوم ۲.۰ همگی به صورت همزمان اتفاق نمیافتند. هارد فورک سرنیتی در چهار مرحله یا اصطلاحاً چهار فاز به وقوع خواهد پیوست. فاز صفر این هارد فورک که زنجیره بیکن (Beacon Chain) نام دارد، مدتی پیش آغاز شده است و در زمان نگارش این مقاله (مرداد ۹۹)، منتظر انجام آخرین آزمایش آن هستیم. در این فاز، بلاک چینی در موازات بلاک چین فعلی راهاندازی شده است که از اتر ۲ و مدل اثبات سهام پشتیبانی میکند؛ اما در این زمان اتریوم ۱.۰ همچنان به کار خود ادامه میدهد. در فاز یک ، تکنیک شاردینگ به این بلاک چین افزوده خواهد شد. فاز دوم مربوط به اضافه شدن ایواسم است و در نهایت در فاز سوم ، شاهد تقویت مستمر این بلاک چین و پیدا کردن و رفع ایرادات آن به صورت مداوم و ادامهدار خواهیم بود. در خصوص زمان شروع فازهای مختلف هارد فورک سرنیتی ، اخبار زیادی وجود دارد. در ابتدا قرار بود فاز یک این هارد فورک تا انتهای سال ۲۰۲۰ کار خود را آغاز کند؛ اما تیم توسعه اتریوم از احتمال به تعویق افتادن آن تا سال ۲۰۲۱ خبر دادند. برای اطلاع از زمان دقیق وقوع اتفاقات این چنینی، بهتر است اطلاعرسانیهای رسمی تیم توسعه این بلاک چین را از خبرگزاریهای معتبر دنبال کنیم و منتظر اخبار جدید از طرف این گروه باشیم.
جمعبندی
دنیای امروز پر از وایتپیپرها، ایدههای جدید، مفاهیم پیچیده و ادعاهای بلندپروازانه است. پروژههایی که اکنون وارد میدان رقابت با اتریوم شدهاند، بهطور شگفتآوری پشتوانه مالی و تبلیغاتی نیرومندی دارند؛ مانند نئو در چین، EOS دن لریمر که برگرفته از بلاکچین اجتماعی استیمیت و صرافی غیرمتمرکز بیتشیرز است؛ ترون که ابتدا کار خود را به عنوان یک ICO روی پلتفرم اتریوم آغاز کرد و اکنون خود ارائه دهنده بستری برای قراردادهای هوشمند است؛ و کاردانو که به دست کارشناس زبردست و پیشین بیتشیرز و اتریوم، چارلز هاسکینسون ایجاد شده است. ویژگی برجسته اتریوم ادعاها یا تکنولوژی آن نیست؛ بلکه اجرای تقریباً بینقص آن از سوی بنیانگذار بیتجربهایست که برنامههای چندجانبهای را دنبال میکند.
شبکه اتریوم، اگرچه در عرصه مقیاس پذیری فاصله قابل توجهی با رقبای جدید خود دارد، اما به لطف «اولین» بودن در عرصه قراردادهای هوشمند بلاک چینی، امروزه بیش از ۲۰۰،۰۰۰ توسعه دهنده فعال، بیش از ۲۰۰،۰۰۰ قرارداد هوشمند ثبت شده، بیش از ۱۷۰۰ اپلیکیشن غیرمتمرکز و دهها هزار آدرس فعال روزانه (در زمان نگارش این مقاله) دارد. شاید بررسی آماری شبکه اتریوم نیز خالی از لطف نباشد:
۱تعداد Dappهای فعال روزانه در شبکه اتریوم؛ منبع: dapp.com۱تعداد کاربران فعال روزانه در شبکه اتریوم؛ منبع: dapp.com۱تعداد تراکنشهای روزانه شبکه اتریوم؛ منبع: dapp.com۱حجم تراکنشهای روزانه شبکه اتریوم (به دلار)؛ منبع: dapp.comبا این وصف میتوان پیشبینی کرد که آینده و بقای اتریوم، در گرو عمل به تعهدات مقیاس پذیری در آپدیت اتریوم ۲.۰ و اجرای موفق این وعدههاست. صد البته باید منتظر قدمهای بعدی رقبا نیز بود …
منابع
https://hackernoon.com/getting-deep-into-ethereum-how-data-is-stored-in-ethereum-e3f669d96033
https://hackernoon.com/getting-deep-into-evm-how-ethereum-works-backstage-ac7efa1f0015
https://medium.com/cybermiles/diving-into-ethereums-world-state-c893102030ed
https://www.youtube.com/watch?v=QlawpoK4g5A
https://www.youtube.com/watch?v=OYfy1-5nB64
https://blockgeeks.com/guides/ethereum/
https://vomtom.at/what-exactly-is-the-gas-limit-and-the-gas-price-in-ethereum/
https://www.youtube.com/watch?v=yFb2nuUUDX0
https://www.youtube.com/watch?v=Fhrs7WuZPB4
https://www.youtube.com/watch?v=C3N_WsJkuQk
https://www.youtube.com/watch?v=aV8C77xAaQA
https://www.simplilearn.com/tutorials/blockchain-tutorial/what-is-ethereum
https://luxsci.com/blog/understanding-blockchains-part-3-ethereum-moving-beyond-bitcoin.html
http://returnvalues.academy/blockchain/ethereum/ethereum
https://www.mycryptopedia.com/ethash-explained/
پست قبلی