''فکت کوینز'' حاصل تلاش یک تیم متخصص وعلاقمند درزمینه بلاک چین وارزهای دیجیتال است که سعی می کند مقالات آموزش های مرتبط را با کیفیت بالا به علم اندوزان ارائه نماید وب سایت www.factcoins.com
وایت پیپر اتریوم- قسمت اول
نسل جدیدی از قرارداد هوشمند و پلتفرم غیرمتمرکز
Vitalik Buterin
در سال 2009 ساتوشی ناکاماتو اولین بار با زنده کردن ایده بلاکچین بیتکوین ،همزمان دو مفهوم آزمایش نشده و بسیار اساسی دیگری را هم به همگان معرفی کرد: بیتکوین ارز آنلاین همتا به همتا و غیر متمرکزی که بدون داشتن هیچ پشتوانه، ارزش ذاتی یا ارزش صادرکننده اصلی را حفظ میکند.
تاکنون بیتکوین هم از نظر سیاسی که بانک مرکزی آن را کنترل نمی کند و هم به خاطر نوسانات قیمتی زیادی که دارد، توجه عموم را به خودش جلب کرده است. مفهوم دیگری که در آزمایش بزرگ ساتوشی به اندازه همان مفهوم اول توجه همگان را به خود جلب کرد، بلاکچین مبتنی بر گواه اثبات کار میباشد که توافق عمومی در مورد ترتیب تراکنش ها را امکان پذیر می کند.
اگر بیتکوین را یک اپلیکیشن در نظر بگیریم به عنوان یک سیستم first-to-file توصیف میشود. در شرایطی که شخصی 50 بیتکوین داشته باشد ، و این بیتکوین را همزمان برای دو نفر A و B بفرستد، تراکنشی که اول تأییدیه بگیرد پردازش میشود.
در ابتدا هیچ منطقی برای اثبات اینکه کدام تراکنش اول انجام شده وجود نداشت و قرن ها بود که این مسأله پیشرفت ارز دیجیتال غیر متمرکز را مختل کرده بود. و اما بلاکچین ساتوشی اولین راه حل معتبر غیر متمرکزی بود که این مشکل را حل کرد.
اکنون مدتی است که توجه مردم به سمت این بخش دوم فناوری بیتکوین واینکه چطور می توان از بلاکچین در زمینه هایی غیر از پول هم استفاده کرد، متمایل شده است.
برنامه های رایج مبتنی بر بلاکچین از ارزهای دیجیتال برای مقاصد متفاوتی استفاده میکنند. به عنوان مثال از آنها به منظور معرفی ارزهای رایج و ابزارهای مالی (“سکه های رنگی”) ، مالکیت یک دستگاه فیزیکی (“دارایی هوشمند”) ، دارایی های غیرقابل معاوضه مانند نام های دامنه ای (“Namecoin“) و همچنین برنامه های پیشرفته تر مانند صرافی غیرمتمرکز ، مشتقات مالی ، مسابقات و سیستم های هویت و سابقه در بلاکچین استفاده میکنند.
یکی دیگر از زمینه های مهم تحقیقاتی “قراردادهای هوشمند” هستند؛ سیستم هایی که به طور خودکار دارایی های دیجیتال را طبق قوانین از پیش تعیین شده ای انتقال میدهند. برای مثال فردی ممکن است یک قرارداد خزانه ای داشته باشد که طبق آن “شخص A بتواند تا سقف n واحد از پولی را روزانه برداشت کند، شخص B بتواند تا سقف Y از واحد پولی را برداشت کند ، A و B هرچقدر بخواهند بتوانند برداشت داشته باشند و شخص A بتواند برداشت B را مسدود کند.”
تعمیم منطقی این مسأله سازمانهای مستقل غیرمتمرکز (DAOs) هستند. آنها قراردادهای هوشمند بلند مدت و حاوی دارایی ای میباشند که آیین نامه های کل سازمان را کد گذاری میکنند.
اتریوم به دنبال بلاکچینی با یک زبان برنامه نویسی کاملا تکامل یافته به نام تورینگ است ، که برای ایجاد قراردادهایی به منظور رمز گذاری عملیات انتقال استفاده میشود. این زبان برنامه نویسی تنها با نوشتن چند خط کد، شرایط ایجاد تمام سیستم هایی که در بالا ذکر شد و سیستهایی که حتی در تصور ما هم نمیگنجد را برای کاربران فراهم می کند.
تاریخچه
مفهوم ارز دیجیتال غیر متمرکز و اپلیکیشنهایی مثل برنامه های ثبت دارایی، قرن هاست که وجود داشته است. پروتکل های ناشناس پول الکترونیکی در دهه 1980 و 1990 ، بیشتر متکی به تکنیک Blinding Chaumian بودند ، که امنترین ارزها بر پایه آنها ساخته شدند. اما این پروتکل ها به دلیل متمرکز بودن ،زیاد مورد توجه قرار نگرفتند. در سال 1998 ،پروژه B- Money وی دای به اولین پیشنهاد برای معرفی نظریه ساخت پول از طریق حل معماهای محاسباتی و اجماع غیر متمرکز تبدیل شد. اما این نظریه به اندازه کافی در مورد جزئیات اینکه اجماع غیر متمرکز چگونه قابل اجرا است ، توضیح نداده بود. در سال 2005 هال فینی مفهوم” گواه اثبات کار قابل استفاده مجدد ” را ارائه داد، سیستمی ترکیبی از نظریه b-money و سند کارhashcash ادم بک ، که در جهت ساخت مفهومی برای رمز ارز استفاده شد. اما از آنجایی که این سیستم هم مبتنی بر محاسبات معتبر بود ، نا کار آمد از آب در آمد.
از آنجایی که ارز ، یک برنامه first to file است و در آنجا ترتیب تراکنش ها اغلب از اهمیت حیاتی برخوردار است، ارزهای غیرمتمرکز به راه حلی برای اجماع غیرمتمرکز نیاز دارند.
مشکلی که همه ارزهای پیش از بیتکوین با آن روبرو هستند این است که، در حالی که سالیان سال تحقیقات زیادی حول ایجاد سیستم های اجماع چندحزبی ” تحمل خطای بیزانس” انجام شد ،اما همه این پروتکل ها ی توصیف شده تنها قسمتی از مشکل را حل کردند.
این پروتکل ها فرض میکردند که همه شرکای این سیستم آشنا هستند و حاشیه های امنیتی ” اگر N تعداد در این سیستم شرکت کنند ، پس سیستم تا n/4 شرکت کننده مخرب را میتواند تحمل کند” ، را تولید میکردند.
اگرچه مشکل اینجاست که در چنین سیستم ناشناسی حاشیه های امنیتی در معرض حملات sybil قرار میگیرند که طی آنها یک مهاجم هزاران نود جعلی در شبکه یا روبوشبکه(شبکه رباتی) میسازد و نهایتا کنترل کل شبکه را در اختیار میگیرد.
اقدام نو آورانه ساتوشی از ترکیب پروتکل بسیار ساده اجماع غیر متمرکز ایجاد شده که مبتنی بر نودهایی است که هر 10 دقیقه تراکنش ها را به یک بلوک و نهایتا به یک بلاکچینی که همیشه در حال رشد است تبدیل میکنند. این پروتکل از الگوریتم گواه اثبات کار به عنوان مکانیزمی استفاده میکند که نودها از طریق آن حق شرکت در سیستم را پیدا میکنند.
اگرچه نودهایی که قدرت محاسباتی زیادی دارند نسبتا مؤثرتر هستند، اما غلبه بر قدرت کل شبکه بسیار سختتر از شبیه سازی یک میلیون نود است. علیرغم سادگی و خامی مدل بلاکچین بیتکوین، خوبی آن ثابت شده است و احتمالا تا 5 سال آینده به بستری برای بیشتر از 200 ارز در سراسر جهان تبدیل خواهد شد.
بیتکوین به عنوان سیستم انتقال وضعیت (Bitcoin As A State Transition System )
از لحاظ فنی دفتر کل بیتکوین را میتوان به عنوان سیستم انتقالی در نظر گرفت که از “وضعیت”و “تابع انتقال وضعیت” تشکیل شده است. این وضعیت مالکیت تمام بیتکوین های موجود را نشان میدهد (وضعیت دارایی). تابع انتقال وضعیت ، با گرفتن داده های وضعیت، تراکنش و خروجی ها وضعیت جدیدی تولید میکند.
برای مثال در سیستم بانکی استاندارد ، وضعیت همان ترازنامه است و تراکنش همان درخواست انتقال مبلغ($X) از شخص A به شخص B میباشد. تابع انتقال وضعیت هم با ($X) مبلغ را از حساب شخص A کم کرده و با ($X) به حساب B اضافه میکند.
اگر حساب شخص A حاوی مبلغ مورد نظر نباشد تابع خطا خواهد داد. شرایط این گونه تعریف میشود:
APPLY(S,TX) > S’ or ERROR
در سیستم بانکی که در بالا تعریف شد:
APPLY({ Alice: $50, Bob: $50 },”send $20 from Alice to Bob”) = { Alice: $30, Bob: $70 }
اما:
APPLY({ Alice: $50, Bob: $50 },”send $70 from Alice to Bob”) = ERROR
وضعیت دارایی در شبکه بیتکوین مجموعه کوین های ضرب شده ای را نشان میدهد که هنوز خرج نشده اند (UTXO). هر کدام از این UTXO ها یک عنوان و یک مالک دارند که با یک آدرس 20 بایتی که همان آدرس عمومی است شناخته میشوند. داده های هر تراکنش عبارتند از: رفرنس به UTXO ، امضای دیجیتالی که از کلید خصوصی و آدرس مالک تشکیل شده و یک یا چند داده خروجی که هرکدام UTXO جدیدی دارند که به وضعیت اضافه میشوند.
هر ورودی در TX:
- For each input in TX: i. If the referenced UTXO is not in S, return an error. ii. If the provided signature does not match the owner of the UTXO, return an error.
- If the sum of the denominations of all input UTXO is less than the sum of the denominations of all output UTXO, return an error.
- Return S with all input UTXO removed and all output UTXO added.
نیمه اول مرحله نخست از ارسال کوین هایی که وجود خارجی ندارند جلوگیری می کند، نیمه دوم آن به افراد اجازه ارسال کوین های دیگران را نمیدهد.دومین مرحله وظیفه حفاظت از موجودی را به عهده دارد.فرآیند پروتکل به شرح زیر است:
فکر کنید آلیس میخواهد 11.7 بیتکوین برای باب بفرستد. ابتدا آلیس به دنبال UTXO هایی میگردد که مجموع آنها به 11.7 بیتکوین برسد.اگر بخواهیم واقع بین باشیم آلیس نمی تواند دقیقاً 11.7 بیتکوین دریافت کند. کمترین مقدار داده هایی که او میتواند دریافت کند 12=6+4+2 است. در ادامه او با این 3 داده تراکنشی انجام میدهد که 2 خروجی تنیجه این تراکنش است. اولین داده خروجی 11.7 بیتکوین میباشد که باب صاحب آن است و دومین خروجی 0.3 بیتکوین مانده حساب آلیس میباشد.
منبع: factcoins.com
مطلبی دیگر از این انتشارات
سختی شبکه (difficulty) ،سیاستی از پیش تعیین شده!!
مطلبی دیگر از این انتشارات
اثبات تحویل در بلاکچین (PoD)
مطلبی دیگر از این انتشارات
درخت مرکل (Merkle) چیست؟