اتریوم چگونه کار می کند؟باتعملکرد قرارداد هوشمند اتریومکوین ایراننحوه استخراج اتریومویژه ها

چطور می توانیم یک توسعه دهنده اتریوم (Ethereum) شویم؟ (قسمت نخست)

می خواهید یک توسعه دهنده اتریوم باشید؟ این راهنما به شما کمک می کند به سوی این هدف گام بردارید. با کوین ایران همراه باشید...

در این راهنما شما را با اصول اولیه اتریوم (Ethereum) آشنا می کنیم. با مطالعه این راهنما یاد خواهید گرفت:

  • اتریوم چیست؟
  • استخراج اتریوم (Ethereum) چگونه انجام می شود؟
  • قرارداد های هوشمند چه هستند؟
  • ماشین مجازی اتریوم چیست؟
  • اتر و Gas چه هستند؟
  • Solidity چیست؟
  • Dapp و ICO چه هستند؟
  • کیف پول اتریوم چگونه کار می کند؟

در پایان این راهنما، شما شناخت کافی از مفاهیم برای این که یک توسعه دهنده (Ethereum) باشید، خواهید داشت.

توجه: بسیاری از موفقیت های شما به عنوان یک توسعه دهنده، وابسته به ابتکار عمل و میزان فعالیتی است که شخصا انجام می دهید. شما باید به طور مداوم دانش خود را به روز رسانی کنید.

راهنمای تبدیل شدن به یک توسعه دهنده اتریوم (Ethereum)

راهنمای تبدیل شدن به یک توسعه دهنده اتریوم (Ethereum)
blockgeeks.com

وب سایت اتریوم چنین تعریفی در مورد این رمزارز آورده است:

«اتریوم (Ethereum) یک پلتفرم غیر متمرکز است که قرارداد های هوشمند را اجرا می کند: برنامه هایی که طوری طراحی شده اند که بدون هیچ خرابی، سانسور، تقلب یا دخالت شخص ثالث اجرا شوند. این برنامه ها روی یک بلاکچین سفارشی ساخته شده اند، یک زیرساخت قدرتمند جهانی برای انتقال دارایی و مالکیت اموال.»

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

در حالی که بیت کوین اولین کاربرد فناوری بلاکچین می باشد، تنها در حد یک ارز قابلیت دارد؛ اما با اتریوم (Ethereum) هر کاری را که توسط تکنولوژی بلاکچین امکان پذیر است، می توان عملی کرد.

همان طور که دکتر گاوین وود (Gavin Wood)، یکی از بنیانگذاران اتریوم می گوید:

«بیت کوین اولین رمزارز و تنها در حد یک ارز است؛ که یکی از خاص ترین کاربرد های بلاکچین می باشد. در واقع، دامنه کاربرد بلاکچین می تواند بسیار وسیع تر باشد. به عنوان یک مثال مشابه، ایمیل یک استفاده خاص از اینترنت است و مطمئنا به شهرت آن کمک کرد، اما اینترنت کاربرد های بسیار بیشتری دارد.»

چگونه می توان اتریوم (Ethereum) استخراج کرد؟

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

بیشتر بخوانید: استخراج ارز رمزنگاری شده شبکه اتریوم با یک کامپیوتر ویندوزی

اما تفاوت اثبات سهام و اثبات کار در چیست؟

اما تفاوت اثبات سهام و اثبات کار در چیست؟
blockgeeks.com

اثبات کار: پروتکلی است که اکثر رمزارز های شناخته شده مانند اتریوم و بیت کوین تا کنون از آن استفاده می کردند؛ یعنی استخراج کنندگان رمزارز ها باید یک پازل رمزنگاری شده را با استفاده از سخت افزار های مخصوص حل کنند.

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

بیشتر بخوانید: چگونه دستگاه استخراج اتریوم بسازیم؟

 

برای اجرای «اثبات سهام»، اتریوم قصد دارد از الگوریتم توافق Casper استفاده کند. برای شروع، تصمیم بر این است که سیستم به سبک ترکیبی کار کند به طوریکه اکثر تراکنش ها از سبک اثبات کار استفاده کنند و در هر صد تراکنش یک بار اثبات سهام به کار گرفته شود. عملیاتی شدن اثبات سهام روی پلتفرم اتریوم (Ethereum) چه تاثیری در دنیای واقعی خواهد گذاشت؟ چه معنایی برای اتریوم و چه مزیت هایی برای پروتکل آن خواهد داشت؟ اجازه بدهید نگاهی بیندازیم.

مزایای اثبات سهام

  • هزینه انرژی و هزینه های کلی را کاهش می دهد: استخراج کنندگان بیت کوین در سراسر جهان حدود ۵۰ هزار دلار در ساعت برق مصرف می کنند؛ این یعنی، 1.2 میلیون دلار در روز، ۳۶ میلیون دلار در هر ماه و ۴۵۰ میلیون دلار در سال! با استفاده از «اثبات سهام»، شما تمام فرآیند را کاملا مجازی می کنید و تمام هزینه های آن قطع می شود.
  • عدم مزیت ASIC: از آنجا که کل فرایند مجازی خواهد بود، وابستگی به این که کدام سخت افزار یا ASIC  (مدار مجتمع با کاربرد خاص) بهتر است، وجود ندارد.
  • حمله ی ۵۱٪ سخت تر می شود: حمله ۵۱٪ زمانی رخ می دهد که یک گروه استخراج کنندگان بیش از ۵۰٪ از قدرت هش (hashing power) جهان را به دست آورد. با استفاده از اثبات سهام، این حمله منتفی است.
  • تخریب آزادانه تاییدیه ها: هر اعتبارسنجی که اموال خود را در بلاکچین رمزنگاری کرده است، اطمینان حاصل خواهد کرد که هیچ اشتباه یا تخریبی به زنجیره اضافه نمی شود، چرا که اشتباه در بلوک ها به قیمت از دست رفتن سرمایه تمام می شود.
  • ایجاد بلوک: ایجاد بلوک ها و درنتیجه کل فرایند سریعتر می شود.
  • مقیاس پذیری: با ارائه مفهوم “sharding” بلاکچین مقیاس پذیر تر می شود (در ادامه با تفصیل بیشتری به این موضوع خواهیم پرداخت).

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

ویتالیک بوترین در این باره توضیح می دهد:

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

او سپس افزود: به نظر می اید که این روش انگیزه خوبی برای امضا کاغذ صحیح می دهد.

قرارداد های هوشمند چه هستند؟

قرارداد های هوشمند چه هستند؟
blockgeeks.com

قرارداد های هوشمند قرارداد های خودکار هستند. با شروط خاصی که در کد آن ها نوشته می شود به طور خودکار اجرا می شوند.

قرارداد های هوشمند به ما می گویند چطور کار های مختلف در اکوسیستم اتریوم انجام می شود. وقتی کسانی می خواهند بر بستر اتریوم کاری انجام دهد وارد یک قرارداد هوشمند می شوند.

نوشته مرتبط: قراداد هوشمند چیست؟ -بخش اول

 

قرارداد های هوشمند مجموعه ای از دستورالعمل ها با زبان برنامه نویسی “solidity” هستند که براساس منطق IFTTTیا (IF-THIS-THEN-THAT) کار می کند. اساسا، اگر اولین مجموعه از دستورالعمل ها انجام شود، آنگاه تابع بعدی به اجرا در می آید و به همین ترتیب ادامه پیدا می کند تا زمانی که قرارداد به پایان برسد.

بهترین راه برای درک آن این است که یک ماشین فروش خودکار (ماشین خودکاری که با انداختن پول در آن، کالای مورد نظر خارج می شود) را در نظر بگیرید؛ پس از انجام هر گام، گام بعدی به صورت خودکار اجرا می شود. این روش شبیه  اثر دومینو است. بنابراین، فرایند ماشین فروش خودکار را تشریح می کنیم:

  • گام ۱: پول را داخل ماشین فروش خودکار بیندازید.
  • گام ۲: دکمه محصول مورد نظر خود را فشار دهید.
  • گام ۳: محصول خود را بردارید.

حال فرض کنید محصولاتی از یک ماشین فروش خودکار در شبکه اتریوم (Ethereum) می خرید، گام ها چطور خواهند بود؟

گام ۱: مقداری پول وارد ماشین فروش خودکار می کنید که توسط تمام نود های شبکه اتریوم ثبت و دفتر کل با این تراکنش به روزرسانی می شود.

گام ۲: شما دکمه آیتم مورد نظر خود را فشار می دهید که باعث ثبت و به روزرسانی دفتر کل شبکه اتریوم می شود.

گام ۳: محصول مورد نظر را دریافت می کنید که تمام نود ها این را ثبت می کنند و دفتر کل به روزرسانی می شود.

هر معامله ای که شما از طریق قرارداد های هوشمند انجام می دهید، ثبت و شبکه به روزرسانی می شود. این نوع قرارداد طرفین را درگیر می کند و باعث می شود نسبت به اعمالشان پاسخگو باشند. بدین صورت، هر کاری که در شبکه انجام می شود برای کل شبکه قابل مشاهده است.

ماشین مجازی اتریوم (Ethereum) چیست؟

پیش از این که با ماشین مجازی اتریوم (EVM) آشنا شویم، باید بفهمیم چرا به «ماشین مجازی» نیاز است. اجازه دهید به قرارداد های هوشمند برگردیم.

چه ویژگی هایی در قرارداد های هوشمند برای ما مطلوب هستند؟

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

  • قطعیت (Deterministic)
  • قابلیت فسخ (Terminable)
  • جدایی پذیری (Isolated)
ویژگی شماره ۱: قطعیت

یک برنامه قطعی است اگر در ازای یک ورودی ثابت، هر بار خروجی ثابتی بدهد. به عنوان مثال، اگر ۳+۱=۴ است همیشه جواب ۳+۱، ۴ خواهد بود (با فرض مبنای عددی مشابه). بنابراین وقتی یک برنامه خروجی مشابهی برای مجموعه ای از داده های تکراری در دفعات متعدد می دهد، آن برنامه را قطعی گوییم.

لحظات مختلفی وجود دارد که یک برنامه ممکن است به شیوه غیر قطعی عمل کند:

فراخوانی توابع سیستمی غیر قطعی: هنگامی که یک برنامه نویس یک تابع غیر قطعی را در برنامه خود فراخوانی می کند.

منابع اطلاعاتی غیر قطعی: اگر برنامه حین اجرا، به داده ای نیاز داشته باشد و منبع داده غیر قطعی باشد، برنامه غیر قطعی خواهد شد. به عنوان مثال، فرض کنید برنامه ای به ۱۰ جستجوی برتر برای یک جستجوی خاص نیاز دارد؛ احتمالا این لیست مدام تغییر می کند.

فراخوانی های پویا: زمانی که یک برنامه، برنامه دیگری را فراخوانی می کند، فرایند را فراخوانی پویا می نامند. از آنجایی که هدف فراخوانی فقط حین اجرا قطعیت دارد، به طور طبیعی با عدم قطعی مواجهیم.

ویژگی شماره ۲: قابلیت فسخ

در منطق ریاضیات خطایی به نام «مساله توقف» داریم. اساسا، حالتی مد نظر است که نمی توان فهمید آیا برنامه داده شده قابلیت اجرا در زمان محدود را دارد یا بینهایت بار تکرار می شود. در سال ۱۹۳۶، آلن تورینگ (Alan Turing)، با استفاده از مساله قطری سازی کانتور، اثبات کرد که هیچ راهی برای این که بفهمیم یک برنامه خاص در زمان محدود به پایان می رسد یا نه، وجود ندارد.

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

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

روی یک بلاکچین، همه می توانند یک قرارداد هوشمند آپلود کند. بدین ترتیب، قرارداد ها ممکن است (آگاهانه یا ناآگاهانه) حاوی ویروس و باگ هایی باشند. اگر این قرارداد ها ایزوله نشوند، ممکن است کل سیستم را مختل کنند. از این رو، ایزوله بودن یک اصل برای قرارداد های هوشمند است تا اثر مخربی روی اکوسیستم نگذارند.

حال که این ویژگی ها را تشریح کردیم، لازم است با نحوه اجرا آشنا شویم. قرارداد های هوشمند معمولا در یکی از این دو سیستم اجرا می شوند:

  • ماشین های مجازی: اتریوم (Ethereum) از این سیستم استفاده می کند.
  • داکر (Docker): Fabric از این سیستم استفاده می کند.

اجازه دهید این دو را مقایسه کنیم و تعیین کنیم که چه چیزی برای یک اکوسیستم بهتر است. به خاطر سادگی ما می خواهیم اتریوم (ماشین مجازی) را با Fabric (Docker) مقایسه کنیم.

ماشین مجازی

داکر

قطعیت

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

قابلیت فسخ

اتریوم (Ethereum) از برآوردگر هزینه برای محدود کردن استفاده می کند. هزینه هر گام در قرارداد ها «gas» است و زمانی که هزینه gas از پیش پرداخت بیشتر شود، قرارداد مختومه می گردد.Fabric از تایمر استفاده می کند. با این حال، ممکن است تایمر از نودی به نود دیگر متفاوت باشد، چرا که هر نود قدرت محاسباتی خود را دارد که یک ریسک برای فرایند اجماع است.

جذایی پذیری

ویژگی جدا کنندگی خوبی دارد.وابسته به فضای اسمی است و قادر به ایزوله ی مناسب نمی باشد.

بنابراین، همان طور که مشاهده می شود، ماشین های مجازی، محیط قطعی، با محدودیت زمانی و جدایی پذیر برای قرارداد های هوشمند فراهم می کنند. با این حال، dockers به وضوح دارای یک مزیت است؛ انعطاف پذیری زبان برنامه نویسی را دارد، در حالی که در یک ماشین مجازی (VM) مانند اتریوم، نیاز به یادگیری یک زبان کاملا جدید (solidity) برای ایجاد قرارداد های هوشمند است.

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

برای نوشتن قرارداد های هوشمند در EVM، نیاز به یادگیری زبان برنامه نویسی Solidity داریم.

توجه!

دیدگاه هایی که در این مقاله ارائه شده اند، متعلق به نویسنده می باشند و لزوماً مربوط به Coiniran نمی باشد و نباید به آن نسبت داده شود.

مشاهده قسمت نخست:

چطور می توانیم یک توسعه دهنده اتریوم (Ethereum) شویم؟ (قسمت دوم)

منبع

نوشته های مشابه

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

بستن