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

۲۶ مرداد ۱۳۹۸ | 0 نظر | لینک کوتاه | اخبار اتریوم, اخبار و مقالات ارز دیجیتال

قرارداد هوشمند نسل بعدی و پلتفرم های نرم افزاری غیر متمرکز

توسعه ی بیت کوین Bitcoin توسط Satoshi Nakamoto در سال ۲۰۰۹ اغلب به عنوان یک تحول بنیادین در پول و ارز ،و اولین نمونه از دارایی دیجیتالی که ضمنا هیچ پشتیبانی و ارزش حقیقی و هیچ صادر کننده و کنترل کننده متمرکزی ندارد مورد ستایش قرار می گیرد. با این حال ، بخش دیگری – که احتمالاً مهمتر است – از آزمایش بیت کوین Bitcoin، فناوری زیر بنایی بلاکچین blockchain به عنوان ابزاری برای توزیع جمعی است و توجه ها به سرعت در حال تمرکز بر این جنبه از بیت کوین Bitcoin در حال تغییر است. برنامه های جایگزین متداول  فناوری بلاکچین blockchain شامل استفاده از دارایی های دیجیتال بلاکچین blockchain برای نشان دادن ارزهای معمول و ابزارهای مالی (سکه های رنگی) ، مالکیت یک دیوایس فیزیکی اساسی (اموال هوشمند) ، دارایی های تعویض ناپذیر مانند نام های دامنه (Namecoin) ، و همچنین برنامه های پیچیده تر مربوط به داشتن دارایی های دیجیتالی است که به طور مستقیم توسط یک قطعه کد اجرای قوانین دلخواه (قراردادهای هوشمند) یا حتی سازمان های خودمختار غیرمتمرکز مبتنی بر بلاکچین blockchain (DAO) کنترل می شوند. آنچه اتریوم Ethereum قصد ارائه ی آن را دارد ، یک بلاکچین blockchain با یک زبان برنامه نویسی کاملا تورینگ Turing است که می تواند برای ایجاد “قراردادهایی” استفاده شود که برای رمزگذاری عملکردهای انتقال دلخواه استفاده شود ،و به کاربران این امکان را می دهد تا هر یک از سیستم های شرح داده شده در بالا را ایجاد کنند. و همچنین بسیاری دیگر که هنوز تصورشان نکرده ایم ، فقط با نوشتن منطقی در چند سطر کد.

 

آشنایی با بیت کوین Bitcoin و مفاهیم موجود

تاریخچه

مفهوم ارز غیر متمرکز دیجیتال و همچنین برنامه های جایگزین مانند ثبت املاک ، چندین دهه است که وجود دارد. پروتکل های ناشناس نقدینگی الکترونیکی e-cash در دهه های ۱۹۸۰ و ۱۹۹۰ ، بیشتر متکی به یک رمزنگاری اولیه معروف به پرده چاومین (یک تکنیک رمزنگاری) Chaumian blinding بودند ، که ارز را با حفظ حریم خصوصی فراهم میکرد ، اما این پروتکل ها به دلیل اتکا به یک واسطه متمرکز ، تا حد زیادی نتوانستند موفق باشند. . در سال ۱۹۹۸ ، پول ویی دای Wei Dai اولین پیشنهاد برای معرفی ایده ی ایجاد پول از طریق حل معماهای محاسباتی و همچنین همکاری غیر متمرکز بود ، اما این پیشنهاد جزئیاتی از این موضوع را نشان نمی داد که چگونه می توان همکاری غیر متمرکز را عملی کرد. در سال ۲۰۰۵ ، هال فینی مفهومی از اثبات کار قابل استفاده مجدد ارائه داد ، سیستمی که با استفاده از ایده های b-money همراه با معمای محاسباتی دشوار هش کش Hashcash از Adam Back برای ایجاد یک مفهوم برای کریپتوکارنسی تلاش میکرد ، اما بار دیگر با اتکا به محاسبات قابل اعتماد به عنوان پس زمینه از نتیجه ی ایده آل دور شد. در سال ۲۰۰۹ ، یک ارز غیر متمرکز برای اولین بار توسط Satoshi Nakamoto پیاده سازی شد ، ترکیب اولیه تعیین شده برای مدیریت مالکیت از طریق رمزنگاری کلید عمومی با یک الگوریتم جمعی برای پیگیری اینکه چه کسی صاحب سکه ها است ، معروف به “اثبات کار” ایجاد شد.

مکانیسم اثبات کار مانند ورود به فضا بود زیرا همزمان دو مشکل را برطرف می کرد. ابتدا یک الگوریتم جمعی ساده و نسبتاً مؤثر ارائه می کرد ، به این ترتیب گره های شبکه به صورت دسته جمعی در مورد مجموعه ای از به روزرسانی های استاندارد درباره وضعیت لجر بیت کوین توافق می کردند. دوم ، ساز و کاری برای ورود آزاد به پروسه جمعی فراهم میکرد ،و به حل مسئله سیاسی تصمیم گیری در مورد اینکه چه کسی به تأثیرگذاری جمعی بپردازد و همزمان به جلوگیری از حملات سیبیل sybil attacks بپردازد فراهم می کرد. این کار را با جایگزین کردن یک سد رسمی برای مشارکت ، مانند نیاز به ثبت نام به عنوان یک نهاد منحصر به فرد در یک لیست خاص ، با یک مانع اقتصادی انجام می داد – وزن یک گره در فرآیند رای گیری جمعی به طور مستقیم متناسب با قدرت محاسباتی است که گره به ارمغان می آورد. از آن زمان ، رویکرد جایگزینی به نام اثبات سهام proof of stake ارائه شده است  ، محاسبه وزن گره متناسب با منابع ارزی آن است و نه منابع محاسباتی. بحث در مورد شایستگی نسبی این دو رویکرد فراتر از محدوده ی این مقاله است اما باید توجه داشت که هر دو روش می توانند به عنوان ستون اصلی یک کریپتوکارنسی عمل کنند.

اتریوم  Ethereum

هدف اتریوم Ethereum ایجاد یک پروتکل جایگزین برای ساختن برنامه های غیر متمرکز است ، ارائه ی مجموعه ی متفاوتی از مبادلات تجاری که به اعتقاد ما برای برنامه های غیر متمرکز بزرگتر ، با تأکید ویژه بر موقعیت هایی با زمان توسعه سریع ، امنیت برای نرم افزارهای کوچک و به ندرت استفاده شده و قابلیت برنامه های متفاوت برای رابط موثر بسیار مفید و مهم خواهد بود.

اتریوم این کار را با ساختن آنچه که در اصل لایه ی بنیادی انتزاعی نهایی است انجام می دهد: یک بلاکچین blockchain با یک زبان برنامه نویسی تورینگ کامل Turing-Complete غیر قابل انتقال ، به هر کسی امکان نوشتن قراردادهای هوشمند و برنامه های غیر متمرکز را می دهد تا بتواند قوانین دلخواه خود را برای مالکیت ، فرمت های مختلف معامله و وضعیت عملکردهای انتقال را ایجاد کند. نسخه ی نامحدود Namecoin را می توان در دو خط کد نوشت ، و پروتکل های دیگر مانند ارز و سیستم های شهرت را می توان زیر بیست خط ایجاد کرد.

 

قراردادهای هوشمند ، “صندوقهای” رمزنگاری ارزشمندی هستند که فقط در صورت وجود شرایط خاص باز می شوند ، همچنین می توانند فرای پلتفرم ساخته شوند ، با قدرت بسیار بیشتری از آنچه که توسط اسکریپت بیت کوین Bitcoin ارائه شده است به دلیل قدرت اضافه شده تورینگ کامپلیت، ارزش آگاهی ، آگاهی بلاکچین و وضعیت.

 

فلسفه

طراحی پشت اتریوم Ethereum در نظر گرفته شده است تا از اصول زیر پیروی کند:

۱ – سادگی : پروتکل اتریوم Ethereum باید تا حد امکان ساده باشد ، حتی با هزینه ی برخی از ذخیره سازی داده ها یا ناکارآمدی زمانی.  یک برنامه نویس متوسط به طور ایده آل باید قادر باشد تمام مشخصات را دنبال و پیاده سازی کند ، تا بتواند به طور کامل پتانسیل های دموکراتیک سازی بی سابقه ای که کریپتوکارنسی به وجود آورده است و چشم انداز اتریوم را به عنوان پروتکلی که برای همه در دسترس است درک کند. هر بهینه سازی ای که پیچیدگی ایجاد می کند نباید اضافه شود مگر اینکه مزایای بسیار مهمی را ارائه دهد.

۲ – جهانی بودن : یک بخش اساسی در فلسفه طراحی اتریوم Ethereum این است که اتریوم “ویژگی” ندارد .در عوض ، اتریوم Ethereum یک زبان برنامه نویسی Turing-Complete داخلی را ارائه می دهد ، که یک برنامه نویس می تواند از آن برای ساخت هر قرارداد هوشمند یا هر نوع معامله ای که از نظر ریاضی تعریف شود  استفاده کند . آیا می خواهید مشتق مالی خود را ایجاد کنید؟ با اتریوم می توانید. آیا می خواهید ارز خود را ایجاد کنید؟ آن را به عنوان قرارداد اتریوم تنظیم کنید. آیا می خواهید Daemon یا Skynet در مقیاس کامل راه اندازی کنید؟ برای انجام این کار شاید لازم باشد شما چندین هزار قرارداد متصل به هم داشته باشید و به درستی تامینشان کنید ، اما با وجود اتریوم Ethereum هیچ چیز مانعی برای شما نیست.

۳ – مدولار بودن Modularity : قسمتهایی از پروتکل اتریوم Ethereum باید طوری طراحی شوند که تا حد امکان مدولار و جدا از هم باشند. در طول فرایند توسعه ، هدف ما ایجاد برنامه ای است که در صورت ایجاد اصلاح پروتکل کوچک در یک مکان ، پشته ی برنامه بدون هیچ گونه اصلاح ، عملکرد خود را ادامه دهد. نوآوری هایی مانند Ethash   ( به مقاله ی ضمیمه مقاله زرد یا مقاله ی ویکی پدیا مراجعه کنید) ، درختان اصلاح شده ی پاتریشیا modified Patricia trees (به کاغذ زرد ، ویکی مراجعه کنید) و RLP ( به yp و ویکی مراجعه کنید) باید به عنوان کتابخانه های کاملاً مجزا و با ویژگی های کامل اجرا شوند و می شوند. این امر به گونه ای است که حتی اگر در اتریوم Ethereum استفاده شوند ، و حتی اگر اتریوم Ethereum به این ویژگی های خاص نیازی نداشته باشد ، چنین ویژگی هایی هنوز در پروتکل های دیگر نیز قابل استفاده است. توسعه ی Ethereum  اتریوم باید به بهترین حالت ممکن انجام شود تا به نفع کل اکوسیستم کریپتوکارنسی باشد ، نه فقط به نفع خودش.

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

۵ – عدم تفکیک و عدم سانسور: پروتکل نباید سعی در محدود کردن یا جلوگیری استفاده از کاربرد های خاص داشته باشد. کلیه ی سازوکارهای قانونگذاری در پروتکل باید به گونه ای تنظیم شود که آسیب را مستقیماً مهار کند و سعی در مقابله با برنامه های نامطلوب خاص نداشته باشد. یک برنامه نویس حتی می تواند یک اسکریپت حلقه نامحدود را در اتریوم اجرا کند تا زمانی که مایل به پرداخت هزینه ی معامله در هر مرحله ی محاسباتی باشد.

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

در اتریوم Ethereum ، حالت از اشیایی به نام “حسابها” تشکیل شده است که هر حساب دارای آدرسی ۲۰ بایتی است و تبدیل های حالت به صورت  انتقال مستقیم ارزش و اطلاعات بین حساب ها است. یک حساب اتریوم  Ethereum  شامل چهار قسمت است:

nonce ، پیشخوان مورد استفاده برای اطمینان از  اینکه هر تراکنش فقط یک بار قابل پردازش است

مانده اتر فعلی در حساب

در صورت وجود ، کد قرارداد حساب

ذخیره ی حساب (به طور پیش فرض خالی)

“اتر” Ether سوخت اصلی رمزنگاری اتریوم Ethereum است و از آن برای پرداخت هزینه ی معاملات استفاده می شود. به طور کلی ، دو نوع حساب وجود دارد: حساب های خارجی ، تحت کنترل کلیدهای خصوصی و حساب های قراردادی ، که با کد قرارداد آنها کنترل می شود.

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

توجه داشته باشید که “قراردادها” در اتریوم نباید به عنوان چیزی که باید “انجام شود” یا “مطابق با آن” انجام شود ، تلقی شوند. بلکه آنها بیشتر شبیه به “عواملی خودمختار” هستند که در داخل محیط اجرایی اتریوم وجود دارند ، همیشه با تلنگر یک پیام یا معامله ، یک قطعه کد خاص را اجرا می کنند ، و کنترل مستقیمی بر تراز اتر و کلید شخصی خود برای پیگیری متغیرهای مداوم دارند.

پیام ها و معاملات

اصطلاح معامله در اتریوم Ethereum اشاره به بسته ی داده ی امضا شده دارد که پیامی را که باید از یک حساب خارجی منتقل شود ارسال می کند . معاملات شامل این موارد می شوند :

گیرنده ی پیام

امضایی که فرستنده را مشخص می کند

مقدار اتر برای انتقال از فرستنده به گیرنده

یک فیلد داده ی اختیاری

مقدار STARTGAS ، حداکثر تعداد مراحل محاسباتی ای را که اجرای معامله مجاز به انجام آن است ، نشان می دهد

مقدار GASPRICE ، هزینه ای را که فرستنده در هر مرحله ی محاسباتی پرداخت می کند ، نشان می دهد

سه مورد اول ، فیلدهای استانداردی هستند که در هر کریپتوکارنسی مورد انتظار است. فیلد دیتا به طور پیش فرض هیچ عملکردی ندارد ، اما ماشین مجازی دارای کد دستی است که یک قرارداد می تواند از آن برای دسترسی به داده ها استفاده کند. به عنوان نمونه ی مورد استفاده ، اگر یک قرارداد به عنوان یک سرویس ثبت دامنه on-blockchain عمل می کند ، ممکن است بخواهد داده های منتقل شده به آن را که حاوی دو “فیلد” است  تفسیر کند  ، اولین فیلد ، دامنه ای برای ثبت نام و دومین فیلد آدرس IP برای ثبت آن است.  قرارداد ، این مقادیر را از داده های پیام می خواند و به طور مناسب آنها را ذخیره سازی میکند.

زمینه های STARTGAS و GASPRICE برای سرویس ضد انکار اتریوم Ethereum بسیار مهم است. به منظور جلوگیری از حلقه های نامتناهی تصادفی یا خصمانه یا سایر تلفات محاسباتی در کد ، هر معامله موظف است محدودیتی را برای استفاده از چند مرحله محاسباتی اجرای کد ایجاد کند.

واحد اساسی محاسبه ” ” gas  نام دارد.  معمولاً ، یک مرحله ی محاسباتی ۱ gas هزینه دارد ، اما برخی از عملیات مقادیر بیشتری gas را به دلیل گران بودن محاسباتی ، یا افزایش داده هایی که باید به عنوان بخشی از حالت ذخیره شوند ، هزینه می کنند. همچنین ۵ gas برای هر بایت در داده های معامله هزینه می شود. هدف از سیستم هزینه این است که یک مهاجم را به پرداخت متناسب برای هر منابعی که مصرف می کند ، از جمله محاسبه ، پهنای باند و ذخیره سازی ملزم کند. بنابراین ، هر معامله ای که منجر به مصرف بیشتر از هر یک از این منابع برای شبکه شود ، باید هزینه ای برای gas تقریبا متناسب با میزان افزایش ایجاد شده داشته باشد.

پیام ها

قراردادها این امکان را دارند که برای سایر قراردادها “پیام” ارسال کنند. پیام ها اشیاء مجازی ای هستند که هرگز سریالی نمی شوند و فقط در محیط اجرایی اتریوم Ethereum وجود دارند. یک پیام شامل این موارد می شود :

فرستنده ی پیام (ضمنی)

گیرنده ی پیام

مقدار اتر برای انتقال همراه با پیام

یک فیلد داده ی اختیاری

مقدار STARTGAS

در اصل ، یک پیام مانند یک معامله است ، مگر اینکه توسط یک قرارداد تولید شود و نه یک شخص خارجی. هنگامی که قراردادی که کد در حال اجرای آن است ، کد عملیاتی CALL را اجرا می کند ، پیام را تولید و اجرا می کند. مانند یک معامله ، پیام منجر می شود که حساب گیرنده ، کد آن را اجرا کند. بنابراین ، قراردادها می توانند دقیقاً به همان روش اشخاص خارجی ،  با سایر قراردادها ارتباط برقرار کنند.

توجه داشته باشید که هزینه ی gas که توسط یک معامله یا قرارداد منعقد شده است ، به gas مصرفی کلی در آن معامله و کلیه ی موارد فرعی اعمال می شود. به عنوان مثال ، اگر یک شخص خارجی به نام A ، معامله را به شخص B با ۱۰۰۰ gas ارسال کند ، و B قبل از ارسال پیام به شخص c  ۶۰۰ gas مصرف کند ، و اجرای داخلی C قبل از بازگشت ۳۰۰ gas مصرف کند ، سپس B می تواند ۱۰۰ gas دیگر را قبل از تمام شدن آن مصرف کند.

ترجمه توسط تیم دلاریپتو

No views yet

دیدگاه بگذارید

avatar


    | 4,100,255,280 تومان

    | 4,193,442,900 تومان

    | 197,980,200 تومان

    | 202,479,750 تومان

    | 32,162 تومان

    | 32,893 تومان

    | 5,215,320 تومان

    | 5,333,850 تومان

    | 9,726.42 تومان

    | 9,947.48 تومان

    | 7,834,200 تومان

    | 8,012,250 تومان

    | 66,000 تومان

    | 67,500 تومان

    | 0 تومان

    | 0 تومان

    | 0 تومان

    | 0 تومان

    | 0.000

    | 0.000

    | 0.000

    | 0.000

    | 0.00 $

    | 0.00 $

    | 0.00 $

    | 0.00 $

    | 0.00 $

    | 0.00 لیر

    | 0.00 لیر

    | 0.00 لیر

    | 0.00 لیر

    | 0.00 لیر

    | 0.00 لیر