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

مقدمه‌ای بر وایت پیپر اتریوم

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

در حال حاضر می‌توان با مراجعه به آدرس ethereum.org/en/whitepaper نسخه بروزرسانی شده سپیدنامه اتریوم را مشاهده کرد. نسخه اولیه و دستکاری نشده این وایت پپیر هم از طریق این لینک و در قالب فایل PDF قابل دریافت است. در ضمن توجه داشته باشید که این مقاله بر اساس نسخه جدید نوشته شده و ترجمه مستقیم چند قسمت از وایت پیپر اتریوم است.

تعریف اتریوم بر مبنای وایت پیپر آن

پلتفرم اتریوم

هدف اتریوم، ساخت پروتکلی جایگزین برای توسعه اپلیکیشن غیر متمرکز است که ویژگی‌های خاص آن برای طیف گسترده‌ای از Dappها مفید خواهد بود. این بستر به طور ویژه به زمان مورد نیاز برای توسعه، سطح امنیت اپلیکیشن‌های کوچک و کمتر استفاده شده، و هم‌چنین توانایی اپلیکیشن‌های مختلف برای تعامل به شیوه‌ای کارآمد اهمیت می‌دهد. اتریوم برای تحقق اهداف خود، بلاک چینی با یک زبان برنامه‌نویسی تورینگ کامل (Turing-Complete) ایجاد کرده به همه افراد اجازه می‌دهد قراردادهای هوشمند و اپلیکیشن‌های غیر متمرکز خود را بسازند و قوانین دلخواه برای مالکیت، ساختار تراکنش و تابع تغییر وضعیت (State Transition Function) تعیین نمایند.

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

حساب‌های اتریومی

در وایت پیپر اتریوم نوشته شده که وضعیت (State) شامل یک سری اشیا به نام «حساب» است که هر کدام یک آدرس 20 بایتی دارند و تغییر وضعیت (State Transition) هم به معنای انتقال مستقیم ارزش و اطلاعات میان دو حساب مختلف است. به طور کلی، هر حساب اتریومی موارد زیر را شامل می‌شود:

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

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

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

پیام‌ها و تراکنش‌های اتریومی

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

  • آدرس گیرنده پیام
  • امضای فرستنده پیام
  • مقدار انتقال
  • فیلد داده اختیاری
  • مقدار STARTGAS: حداکثر تعداد مراحل محاسباتی مجاز برای اجرای تراکنش
  • مقدار GASPRICE: کارمزد پرداخت شده توسط فرستنده برای هر مرحله محاسباتی

3 مورد اول استاندارد هستند و به طور کلی انتظار می‌رود در هر ارز دیجیتالی وجود داشته باشند. فلید داده اختیاری به طور پیش فرض کاربردی ندارد، اما ماشین مجازی اتریوم یک آپ‌کد (Opcode) دارد که قرارداد هوشمند می‌تواند از طریق آن به این داده دسترسی پیدا کند. برای درک کاربرد فیلد داده اختیاری، یک اسمارت کانترکت را در نظر بگیرید که به عنوان یک سرویس ثبت دامنه بلاک چینی فعالیت می‌کند. این کانترکت ممکن است داده‌های دریافتی خود را با دو فیلد درک کند: فیلد اول دامنه و فیلد دوم آدرس آی‌پی. بنابراین این قرارداد اطلاعات مربوطه را از پیام‌های دریافتی استخراج کرده و در جایگاه مناسب ذخیره می‌کند.

مقادیر STARTGAS و GASPRICE برای مدل «مقابله با حملات محروم‌سازی از سرویس» (DoS) اتریوم ضروری هستند. در Ethereum، هر تراکنش باید حدی برای مراحل محاسباتی خود تعیین کند تا از به وجود آمدن چرخه‌های پردازشی بی‌پایان، چه به صورت تصادفی و چه به صورت عمدی، جلوگیری شود. هر مرحله محاسباتی معمولا به 1 واحد گس (GAS) اتریوم نیاز دارد، اما برخی فرآیندهای دیگر که به محاسبات بیشتری نیاز دارند، یا به فضای ذخیره‌سازی بیشتر احتیاج دارند، ممکن است به مقدار بیشتری GAS نیاز داشته باشند. علاوه بر این، برای هر بایت از اطلاعات تراکنش، 5 واحد گس به عنوان کارمزد دریافت می‌شود.

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

بررسی کاربردهای ذکر شده در وایت پیپر اتریوم

شبکه اتریوم

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

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

مثال‌هایی از کاربرد اتریوم در سناریوهای واقعی

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

  • کیف پول‌های پس انداز: فرض کنید آلیس می‌خواهد دارایی خود را امن نگه دارد، اما نگران است که کلید خصوصی‌اش را گم می‌کند یا کسی آن را به سرقت می‌برد. در این حالت وی قراردادی با باب می‌بندد که بندهای آن به شرح زیر هستند:
    1. آلیس در هر 24 ساعت تنها قادر به برداشت حداکثر 1 درصد از دارایی خود خواهد بود.
    2. باب روزانه قادر به برداشت حداکثر 1 درصد از دارایی آلیس است، اما آلیس می‌تواند با انجام یک تراکنش با کلید خصوصی خود این توانایی را از او سلب نماید.
    3. آلیس و باب در کنار یکدیگر قادر به برداشت هر مبلغی خواهند بود.
    4. اگر آلیس به بیش از 1 درصد در روز نیاز داشته باشد، می‌تواند از باب کمک بگیرد. در ضمن اگر کلید آلیس هک شود، وی می‌تواند به باب مراجعه کرده تا با یک دیگر دارایی‌ها را به یک حساب جدید منتقل نمایند. اگر هم آلیس کلیدش را گم کرده باشد، دارایی‌ها به تدریج توسط باب قابل برداشت خواهند بود. اگر باب قصد سرقت دارایی را داشته باشد، آلیس می‌تواند قابلیت برداشت دارایی را از او سلب کند.
  • بیمه محصولات کشاورزی: برای این کار می‌توان یک قرارداد مشتقه ایجاد کرد که به جای شاخص قیمت، از خوراک داده‌های مربوط به وضعیت آب و هوا استفاده می‌کند. برای مثال کشاورزی در ایالت آیووا می‌تواند قرارداد مشتقه‌ای بر پایه میزان بارش خریداری کند تا در صورتی که با خشکسالی مواجه شد، به صورت اتوماتیک پول دریافت کند و اگر هم باران کافی وجود داشت، به خاطر تاثیر مثبت آن روی محصولش خوشحال شود! چنین قراردادی می‌تواند احتمال وقوع حوادث طبیعی را هم شامل شود.
  • خوارک داده غیر متمرکز: برای تمرکز زدایی خوراک داده می‌توان از پروتکلی به نام شلینگ کوین (SchellingCoin) استفاده کرد که به این شیوه عمل می‌کند: افراد مختلف اطلاعاتی (مثلا قیمت جفت ارز ETH/USD) را فراهم کرده و کسانی که پاسخشان مشابه 25 تا 75 درصد از کل پاسخ‌ها باشد، پاداشی در قالب یک توکن دریافت خواهند کرد. بنابراین همه افراد انگیزه لازم برای فراهم کردن پاسخی که به پاسخ سایرین نزدیک است را خواهند داشت. تنها پاسخی هم که تعداد زیادی از کاربران می‌توانند روی آن به توافق برسند، همان ارزش پیش‌فرض یا حقیقت است. در چنین حالتی یک پروتکل غیر متمرکز به وجود می‌آید که حداقل از لحاظ تئوری می‌توانند اطلاعاتی چون قیمت اتریوم به دلار، دمای شهر برلین و حتی پاسخ یک مسئله بسیار دشوار را فراهم کند.

رمز ارز اتریوم

  • اسکرو (Escrow) به شیوه هوشمند و چندامضایی: در شبکه بیت کوین می‌توان قراردادهای تراکنش چندامضایی ایجاد کرد که برای مثال 5 کلید خصوصی قادر به خرج کردن دارایی باشند. اما در اتریوم می‌توان این قراردادها را با جزئیات بیشتری ایجاد کرد. برای مثال 4 از 5 کلید می‌توانند همه دارایی را خرج کنند یا 3 از 5 کلید روزانه حداکثر قابلیت برداشت 10 درصد از کل دارایی را دارند و دو کلید دیگر صرفا قادر به برداشت 0.5 درصد در هر 24 ساعت هستند. علاوه بر این، قابلیت چند امضایی اتریوم ساختاری ناهمگام دارد؛ یعنی دو کاربر می‌توانند امضاهای خود را در زمان‌های مختلف در بلاک چین ثبت نمایند و تراکنش پس از دریافت آخرین امضا به صورت اتومانیک انجام می‌شود.
  • رایانش ابری: با استفاده از فناوری ماشین مجازی اتریوم یا EVM می‌توان یک محیط محاسباتی قابل تایید ایجاد کرد که به کاربران اجازه می‌دهد درخواست‌های محاسباتی خود را به یک دیگر واگذار کرده و در صورت نیاز، اثبات انجام شدن صحیح محاسبات را هم بخواهند. بدین ترتیب یک بازار رایانش ابری ایجاد می‌شود که هر کاربر می‌تواند با رایانه خانگی، لپ تاپ و سرورهای تخصصی در آن شرکت کند. قابلیت تایید محاسبات و ارائه مبلغی به عنوان وثیقه نیز امنیت این بازار را تامین خواهد کرد و عملا تقلب سودآور را غیر ممکن می‌کند. البته چنین سیستمی شاید برای تمام وظایف مناسب نباشد؛ به خصوص وظایفی که به سطح بالایی از ارتباط بین پردازشی (IPC) نیاز ندارند و نمی‌توان آن‌ها را در یک شبکه بزرگ نودهای ابری اجرا کرد. در مقابل برخی وظایف برای انوع شبکه‌ها مناسب هستند و برای نمونه می‌توان به پروژه‌های ستی در خانه (SETI@home) و فولدینگ ات هم (Folding@home) اشاره کرد. به عبارتی دیگر، الگوریتم‌های عادی را می‌توان به آسانی روی این نوع بستر رایانش ابری اجرا کرد.
  • شرط بندی همتا به همتا: در وایت پیپر اتریوم نوشته شده که پروتکل‌هایی مانند سایبردایس (Cyberdice) به آسانی روی بلاک چین اتریوم اجرا خواهند شد. در اتریوم ساده‌ترین پروتکل شرط بندی صرفا یک قرارداد مابه التفاوت (CFD) با هش بلاک بعدی است. در نتیجه پروتکل‌های پیشرفته‌تر را هم می‌توان بر همین پایه توسعه داد و سرویس‌های شرط بندی ضدتقلب و بدون کارمزد ایجاد کرد.
  • بازارهای پیش بینی: در صورت وجود یک اوراکل یا پروتکلی مانند شلینگ کوین، می‌توان بازارهای پیش بینی (Prediction Market) را هم در اتریوم اجرا کرد. در ضمن اجرای این نوع بازار در کنار پروتکل SchellingCoin می‌تواند اولین پیاده‌سازی گسترده تئوری فوتارکی (Futarchy) به عنوان یک پروتکل حاکمیتی برای سازمان‌های غیر متمرکز باشد.
  • بازارهای روی زنجیره‌ای غیر متمرکز: این نوع بازارها را می‌توان بر پایه سیستم‌های شناسایی و شهرت در Ethereum اجرا کرد.

سخن پایانی ویتالیک بوترین در وایت پپیر اتریوم

ویتالیک بوترین، خالق اتریوم، در پایان سپیدنامه این شبکه نوشته است که پروتکل Ethereum در ابتدا قرار بود نسخه بروزرسانی ارز دیجیتال باشد و توسعه امکانات ویژه‌ای مانند اسکرو (Escrow) روی بلاک چین، محدود کردن میزان برداشت، قراردادهای مالی، بازارهای شرط بندی و موارد مشابه را از طریق یک زبان برنامه‌نویسی جامع را ممکن کند. پروتکل اتریوم قرار نبود به صورت مستقیم از اپلیکیشن‌ها پشتیبانی کند، اما وجود یک زبان برنامه نویسی تورینگ کامل (Turing-Complete) به این معنی است که از لحاظ تئوری قراردادهای داوری (Arbitration Contract) را می‌توان برای هر نوع تراکنش یا کاربردی ایجاد کرد. نکته جذابی که در مورد اتریوم وجود دارد، عدم محدود شدن آن به یک ارز است. ذخیره‌سازی غیر متمرکز فایل، رایانش غیر متمرکز و بازارهای پیش بینی غیر متمرکز تنها چند نمونه از پروتکل‌هایی هستند که می‌توان آن‌ها را در اتریوم اجرا کرد. چنین پروتکل‌هایی این پتانسیل را دارند که میزان کارآمدی حوزه رایانش را تا حد زیادی افزایش داده و لایه اقتصادی ایجاد شده توسط اتریوم هم می‌تواند به بهبود شگفت انگیز پروتکل‌های همتا به همتا منجر شود. علاوه بر این، اتریوم کاربردهای پرتعداد دیگری هم دارد که به پول ارتباطی ندارند.

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

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

تهیه شده در بیت 24