''فکت کوینز'' حاصل تلاش یک تیم متخصص وعلاقمند درزمینه بلاک چین وارزهای دیجیتال است که سعی می کند مقالات آموزش های مرتبط را با کیفیت بالا به علم اندوزان ارائه نماید وب سایت www.factcoins.com
وایت پیپر اتریوم- قسمت پنجم
در ادامه قسمت چهارم وایت پیپر اتریوم:
اپلیکیشن ها (Applications )
اپلیکیشن های مبتنی بر پلتفورم اتریوم به 3 دسته تقسیم میشوند.
دسته اول برنامه های مالی هستند که با استفاده از سرمایه کاربران روشهای قدرتمندتری برای مدیریت و عقد قرارداد در اختیار آنها قرار می دهند. این آپ ها عبارتند از: ارزهای فرعی( در شرایطی که کاربری بخواهد ارز خودش را بسازد از این sub- currencies استفاده میکند)، شعبات مالی، قراردادهای hedging، کیف پول ها، وصیت نامه ها. و در نهایت حتی برخی از قرارداد های استخدامی تمام و کمال هم شامل این برنامه ها میشوند.
دسته دوم ، آپ های نیمه مالی هستند که به فعالیتشان علاوه بر جنبه مالی ،جنبه غیر مالی هم معطوف است. مثال واضح این مورد پاداشی است که در ازای حل مسائل محاسباتی به صورت خودکار به ماینرها اعطا میشود.
و دسته آخر آپ های رأی گیری و نظارتی غیر متمرکزی هستند که اصلاً مالی به حساب نمی آیند.
سیستم های توکنی (Token Systems )
سیستم های توکنی مبتنی بر بلاکچین کاربردهای مختلفی دارند. از ارزهای فرعی نماینده دلار و طلا گرفته تا سهامهای شرکتها ،توکن های شخصی نماینده دارایی های هوشمند، کوپن های غیر قابل جعل و حتی سیستم های توکنی که هیچ ارزشی ندارند. و به عنوان توکن تشویقی مورد استفاده قرار میگیرند.
سیستم های توکنی به راحتی در اتریوم قابل اجرا هستند. فقط نکته مهم این است که همه ارزها و توکن ها پایگاه داده ای هستند که یک عملیات خاص را انجام میدهند.
برای مثال : مبلغ X را از حساب A کم کن و به حساب B اضافه کن. البته به شرطی که اول از همه قبل از تراکنش X(i) حداقل مبلغ X موجود باشد و دوم اینکه A این تراکنش را تأیید کند. کد پایه برای اجرای سیستم یک توکن که به زبان سرپنت(Serpent ) نوشته شده، به شرح زیر است:
from = msg.sender
to = msg.data[0]
value = msg.data[1]
if contract.storage[from] >= value:
contract.storage[from] = contract.storage[from] value
contract.storage[to] = contract.storage[to] + value
تابع انتقال وضعیت
این کد همان کد اجرای “تابع انتقال وضعیت “در سیستم های بانکی است. که در قسمت قبل به آن اشاره کردیم. برای ارسال ارز و دستیابی به مانده حساب ها چند خط دیگر کد باید به این تابع اضافه شود.در عمل سیستم های مبتنی بر توکنی که به عنوان ارز فرعی فعالیت دارند میتوانند به طور بالقوه ویژگی مهمی دیگری هم داشته باشند. که متا ارزها و ارزهای مبتنی بر بیت کوین فاقد آن هستند. این ویژگی خاص توانایی پرداخت کارمزد تراکنش با همان ارز (ارز فرعی) است.
روش اجرای این فرآیند به این صورت است که قرارداد، مانده اتری را که احتمالاً با آن کارمزد را برای فرستنده میفرستد ،ذخیره میکند. این قرارداد موجودی حساب را دوباره با مقادیر ارز داخلی ای که از کارمزدها و برگزاری حراج به دست آورده ،پر میکند. بنابراین کاربران باید حساب های خود را با اتر “فعال” کنند. اتریوم موجود در حساب را میتوان دوباره استفاده کرد چراکه قرارداد هر بار حساب را با اتر پر میکند.
شعبات مالی و ارزهای استیبل (Financial derivatives and Stable-Value Currencies )
شعبات مالی از رایج ترین آپ های قرارداد هوشمند و البته از ساده ترین نوع کدها در اجرا هستند. چالش اصلی در اجرای قراردادهای مالی این است که اکثریت آنها نیاز به مراجعه به قیمت سنجِ خارجی دارند. برای مثال، یک آپ مناسب، قرارداد هوشمندی است که با توجه به دلار آمریکا از نوسانات اتریوم یا هر رمز ارز دیگری جلوگیری میکند. اما قرارداد برای انجام چنین کاری باید از قیمت جفت ارز اتر/ دلار باخبر باشد.
ساده ترین روش برای انجام این کار، استفاده از یک قرارداد ” منبع داده” است. که توسط نهاد خاصی مثل نزدک (NASDAQ) طراحی شده باشد تا در شرایط لازم قرارداد را به روز رسانی کند .و به قراردادهای دیگر رابطی(قرارداد) را معرفی کند که آنها بتوانند به آن پیام داده و از قیمت باخبر شوند.
روند قرارداد پوشش ریسک
با توجه به این جزء اساسی، روند قرارداد پوشش ریسک( Hedging) به شرح زیر است:
. Wait for party A to input 1000 ether.
. Wait for party B to input 1000 ether.
. Record the USD value of 1000 ether, calculated by querying the data feed contract, in storage, say this is $x.
After 30 days, allow A or B to “ping” the contract in order to send $x worth of ether (calculated by querying the data feed contract again to get the new price) to A and the rest to B
- منتظر شوید شخص A مبلغ 1000 اتر وارد کند.
- منتظر شوید شخص B مبلغ 1000 اتر وارد کند.
- مبلغ 1000 دلار اتر را که قیمت آن از طریق قرارداد منبع تغذیه محاسبه شده ، در بلاک ذخیره سیو کنید و اسم آن را $x بگذارید.
- بعد از 30 روز، به جهت تست اتصال از شخص A یا B بخواهید مقدار $x را به دلار ( که قرارداد قیمت جدید را از قرارداد منبع تغذیه گرفته است) برای طرف مقابل ارسال کند.
چنین قراردادی پتانسیل قابل توجهی در تجارت رمزنگاری دارد. یکی از مشکلات دنیای رمز ارز بی ثباتی و متغیر بودن آن است. بسیاری از تجار و کاربران دوستدار سیستم رمزارزها، طرفدار مزایا و امنیت این دارایی ها هستند و دوست ندارند در طول یک روز 23% از کل داراییشان را ببازند.
راه حل پیشنهادی
تا الان معمول ترین راه حل پیشنهادی، دارایی های پشتیبانی شده توسط ناشر هستند. طبق این نظریه، ناشر یک ارز فرعی ایجاد میکند که حق ارسال یا لغو واحدهای آن را دارد. این ناشر به هر کسی که یک واحد دارایی مشخص شده مثل طلا یا دلار پرداخت کند ، یک واحد ارز فرعی میدهد. صادرکننده به کاربران متعهد میشود که اگر آنها خواستند رمزارزشان را پس بدهند ، او واحد اصلی و پایه معامله(طلا یا دلار) را به آنها بر میگرداند.
در صورتی که بتوان به ناشر اعتماد کرد، این مکانیزم برای هر ارز ساده و رمزنگاری نشده ای (غیر رمزارز) شرایطی فراهم میکند تا ارتقاء یابد و به رمزارز تبدیل شود. اگرچه در عمل همیشه هم ناشرها قابل اعتماد نیستند. و در برخی موارد زیر ساختهای بانکی برای وجود چنین خدماتی بسیار ضعیف و ناسازگار عمل میکنند. شعبات یا مشتقات مالی جایگزین های دیگری ارائه میدهند.
در اینجا به جای اینکه یک ناشر به تنهایی بودجه ای برای پشتیبانی از یک دارایی فراهم کند، یک بازار غیر متمرکز این نقش را بازی میکند و سر بالا رفتن قیمت یک رمز ارز شرط بندی میکند. دلالان برخلاف ناشران هیچ پیش فرضی برای معامله خود ندارند. چون قراردادهای hedging سرمایه آنها را به عنوان ضمانت نگه میدارند. توجه داشته باشید که اگرچه این رویکرد وجود الزامات زیر ساختی و امکان کلاه برداری را کاهش میدهد، اما کاملاً غیر متمرکز به حساب نمی آیند. به این خاطر که وجود یک منبع قابل اعتماد برای قیمت سنج ضروری است.( بر خلاف ناشر بودن ،صدور قیمت به هیچ مجوزی احتیاج ندارد)
سیستم های اعتباردهی اتریوم (Identity and Reputation Systems )
Namecoin ، به عنوان اولین رمزارز جایگزین در صدد بود تا از بلاکچینی شبیه به بیتکوین در سیستم ثبت نام استفاده کند. تا کاربران بتوانند نام خود را در کنار داده های دیگر در یک پایگاه داده عمومی ثبت کنند. این کاربرد مربوط به سیستم DNS است که نام دامنه هایی مانند ‘bitcoin.org’ را در IP طرح می کند. موارد دیگر استفاده از آن در احراز هویت ایمیل و سیستم های اعتبار سنجی بسیار پیشرفته میباشد. مثال زیر قرارداد ساده ای از سیستم ثبت نامی شبیه به Namecoin روی پلتفرم اتریوم است:
بیشتر بخوانید : اثبات اعتبار (PoA) چیست؟
if! contract.storage[tx.data[0]]:
contract.storage[tx.data[0]] = tx.data[1]
این قرارداد ساده پایگاه داده ای در شبکه اتریوم است که میتواند به آن اضافه شود. اما قابل حذف یا اصلاح نیست.هر کسی می تواند با پرداخت کمی هزینه در این سیستم ثبت نام کند. و برای همیشه در این سیستم ماندگار شود. نمونه پیچیده ی این نوع قراردادها یک “بند تابع” دارد که به سایر قراردادها اجازه میدهد از آن اطلاعات بگیرند. همچنین مکانیزمی دارد که مالک” یعنی اولین کسی که ثبت نام میکند” میتواند اطلاعاتش را اصلاح کند. حتی میتوان به این مکانیزم افزونه WOT (امنیت وب گردی) را هم اضافه کرد.
ذخیره سازی غیر متمرکز فایل بر روی پلتفورم اتریوم ( Decentralized File Storage )
سالهاست که تعداد زیادی استارت آپ های ذخیره سازی آنلاین به بازار آمده اند که از برجسته ترین آنها میتوان به Dropbox اشاره کرد. این برنامه ها به کاربران اجازه میدهند نسخه پشتیبانی از هارد دیسک خود را بارگذاری و ذخیره کنند. و در ازای پرداخت هزینه ماهانه به فایلهای خود دسترسی داشته باشند، اگرچه گاهی این کار اصلاً کارایی ندارد .
با نگاهی اجمالی به تمام راهکارهای موجود میتوان فهمید که در سطح 20000 گیگا بایتی که نه سهمیه رایگان و نه تخفیف شرکتی وجود دارد ، هزینه های ماهانه برای ذخیره فایل آنقدر گران هستند که شما خیلی بیشتر از هزینه خرید هارد دیسک را در یک ماه پرداخت خواهید کرد.
Dropbox
قراردادهای اتریوم شرایط توسعه اکوسیستم ذخیره سازی فایل های غیر متمرکز را فراهم کرده اند. که از این طریق کاربران با اجاره دادن هارد دیسک خود میتوانند در آمد کمی داشته باشند. و همزمان هزینه های ذخیره سازی فایل هایشان را کاهش دهند.این قراردادها قرارداد” Dropbox غیرمتمرکز” نامیده میشوند. عملکرد آنها به شرح زیر است:
ابتدا، شخصی داده های مورد نظر را در بلاکی وارد میکند. سپس برای امنیت بیشتر آن بلاک داده ها را رمزنگاری کرده .و از آن یک درخت مرکل میسازد. پس از آن با توجه به قانون این سیستم، قرار دادی تنظیم میکند: در هر N بلاک، قرارداد، یک ایندکس تصادفی از درخت مرکل انتخاب میکند( به عنوان یک منبع تصادفی که از هش بلاک قبلی استفاده کرده و از کد قرارداد قابل دسترسی است)، و X اتریوم به اولین نهادی که تراکنش را در آن ایندکس درخت مرکل تأیید کند ،میپردازد.
زمانی که کاربر بخواهد فایل خود را دوباره دانلود کند، با استفاده از پروتکل کانال پرداختی ( در ازای هر 32 کیلو بایت،1 زابو) به راحتی فایل را بازیابی میکند . کارآمدترین روش برای پرداخت کننده این است که تا پایان فرآیند تراکنش را منتشر نکند .و درعوض این تراکنش را با یک تراکنش سودآورتر ولی با همان عدد نانس بعد از هر 32 کیلو بایت جایگزین کند.
مهمترین ویژگی این پروتکل این است که، اگرچه به نظر میرسد که کاربر به تعدادی نود تصادفی اعتماد کرده تا فایل را فراموش نکنند، اما با تقسیم پرونده به قسمتهای مختلف از طریق به اشتراک گذاری مخفی و بررسی قرارداد میتوان احتمال خطر را تا نزدیک به صفر کاهش داد. تقسیم پرونده به قسمتهای مختلف برای توجه به اینکه هر بخش در اختیار چند نود است، ضروری است.
سازمانهای مستقل و غیر متمرکز اتریوم (Decentralized Autonomous Organizations )
به طور کلی ” سازمان غیر متمرکز” به یک نهاد مجازی گفته میشود که اعضای آن سهامدارانی هستند که شاید با اکثریت 67٪، حق دارند سرمایه آن نهاد را خرج و کد آن را اصلاح کنند. همه این اعضا در مورد چگونگی تخصیص بودجه سازمان تصمیم گیرنده هستند. روش های تخصیص بودجه DAO می تواند از پاداش ها و حقوق گرفته تا مکانیسم های عجیب و غریب تر مانند ارز داخلی برای پاداش کار طبقه بندی شوند.
تا اینجا بیشتر در مورد سهام شرکتهای مستقل و غیر متمرکز صحبت کردیم. جایگزین این شرکتها میتواند “یک جامعه مستقل غیرمتمرکز “باشد. که در آن همه اعضا سهمی مساوی در تصمیم گیری دارند. و برای حذف یا اضافه یک عضو به این جامعه تأییدیه 67 درصد اعضا لازم است. اینکه یک نفر تنها یک حق عضویت داشته باشد هم باید توسط همه اعضا تأیید شود. طرح کلی کد گذاری DO به شرح زیر است:
ساده ترین طراحی به سادگی قسمتی از کد خوداصلاح است. که در صورت توافق دو سوم اعضا در مورد تغییر ، تغییر می کند. اگرچه کد از لحاظ تئوری تغییرناپذیر است ، اما با داشتن تکه هایی از کد در قراردادهای جداگانه و داشتن آدرس قراردادهای فراخوان، به راحتی می توان از پس این مسئله برآمد و از قابلیت تغییر پذیری واقعی برخوردار شد.
در اجرای چنین قرارداد مستقل و غیرمتمرکزی سه نوع تراکنش وجود دارد که هرکدام داده هایشان متفاوت است:
[0,i,K,V]to register a proposal with index i to change the address at storage index K to
value V
[0,i]to register a vote in favor of proposal i
[2,i]to finalize proposal i if enough votes have been made
اطلاعات قرارداد
در این قرارداد بندهایی برای هر یک از این موارد در نظر گرفته شده است. رأی و نام تمام کسانی که در این نظرسنجی شرکت کردند به همراه پیشینه ای از تمام تغییرات باز، ذخیره خواهد شد. زمانی که هر تغییر به تأیید دو سوم اعضا برسد ،تراکنش نهایی این تغییر را عملی میکند.
یک ساختار پیچیده تر هم میتواند گزینه رأی گیری داخلی را برای جنبه های دیگری مثل ارسال یک تراکنش، حذف و اضافه اعضا، داشته باشد . حتی این رأی گیری میتواند به گونه ای باشد که مثلاً هر کس بتواند به صورت موقت کسی را تعیین کند که به او رأی دهد. بنابراین اگر A شخص B را و B شخص C را انتخاب کند ، C رأی A را تعیین می کند.
این طراحی به DO اجازه می دهد تا به عنوان یک جامعه غیرمتمرکز رشد کند.همچنین به افراد اجازه می دهد تا فرآیند انتخاب عضو را به متخصصان واگذار کنند .اما از آنجایی که اعضای این جامعه دیگر هماهنگ عمل نمیکنند ، متخصصان “سیستم فعلی” به راحتی می توانند در طول زمان با عوض شدن شرایط همکاری ، به سیستم بازگردند یا از آنجا خارج شوند.
این مدلِ جایگزین برای یک شرکت غیرمتمرکز مناسب است. جایی که هر حساب می تواند یک یا چند سهم داشته باشد. یا اصلاً هیچ سهمی نداشته باشد. البته برای هر تصمیم گیری حضور دو سوم این سهم ها ضروری است. یک ساختار کامل از قابلیت هایی مثل مدیریت دارایی ، توانایی ارائه پیشنهاد برای خرید یا فروش سهام و توانایی پذیرش پیشنهادات (ترجیحاً با مکانیزم تطبیق سفارش در داخل قرارداد) برخوردار است.
در آینده ،مکانیزم های پیشرفته تری به منظور بهبود نظارت سازمانی اجرا خواهد شد. و آن زمان است که یک سازمان غیر متمرکز را میتوان به عنوان سازمان مستقل و غیرمتمرکز به حساب آورد.
منبع: factcoins.com
مطلبی دیگر از این انتشارات
راه اندازی دستگاه ماینر بیت کوین
مطلبی دیگر از این انتشارات
آیا بلاکچین امن است؟
مطلبی دیگر از این انتشارات
وایت پیپر اتریوم – قسمت سوم