مفهوم قرارداد هوشمند در اتریوم – جلسه نوزدهم (+ویدئو)

0 789

مفهوم قرارداد هوشمند (Smart Contract) در اتریوم

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

یک کارکرد کوچک از قرارداد هوشمند (Smart Contract)

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

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

یکی دیگر از جنبه­‌های مهم چنین قراردادهای هوشمندی این است که منطق آن­ها توسط شما و دوستانتان، به صورت قابل مشاهده برای عموم قرار می‌­گیرد. بنابراین هریک از شما می­‌توانید تائید کنید که مطابق انتظار عمل می­‌کند یا خیر. این عملیات، کاملاً شفاف، بی نیاز به اعتماد و امن است و منطق قرارداد هوشمند، متاثر از اصل تغییرناپذیری بلاکچین است. نه شما و نه دوستتان قادر نیستید پس از انجام آن، به عقب برگشته و آن را تغییر دهید.

در حال حاضر این ساده ترین مثالی بود که ارائه شد اما تصور کنید چه کارهایی با استفاده از این سیستم امکان پذیر هستند و این سیستم قادر است چند فرایند را ساده­‌سازی کند؟ چندین واسطه قادر هستند آن را دور بزنند؟

 

قرارداد هوشمند (Smart Contract) در اتریوم و زبان Solidity

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

قرارداد هوشمند (Smart Contract) در اتریوم و EVM

هنگامی که یک قراردادهوشمند به بلاکچین منتقل می‌شود، دقیقاً مانند هر تراکنش دیگری دائمی است. هرگز نمی‌توانید آن را تغییر دهید. اگرچه این یکی از مزایای آن است ولی همچنین یک مشکل نیز به شمار می‌­آید! شما باید کاملا مطمئن باشید که هیچ اشتباهی در قرارداد هوشمندتان وجود نداشته است. این کار ما را به ماشین مجازی اتریوم یا همان EVM رهنمون می­‌سازد. می‌­توان قرارداد هوشمند را به عنوان کد و EVM را به عنوان یک رایانه در نظر گرفت که آن کد را اجرا می­‌کند. EVM، یک ماشین مجازی تورینگ (Turing) کامل است که روی هر گره کامل (full node) در شبکه اجرا می‌شود. چیزهایی را تورینگ کامل می‌گویند که همه آنچه که برای عملکرد کامل بعنوان یک کامپیوتر یا پردازشگر اطلاعات نیاز است را داشته باشند. تمام پردازش‌­ها روی EVM در سرتاسر شبکه اتفاق می‌افتند و به صورت سراسری مورد راستی­‌آزمایی قرار می‌­گیرند. EVM همان چیزی است که اتریوم را اینقدر هیجان‌­انگیز کرده است، شبیه به یک رایانه جهانی توزیع شده است که به جای آنکه فقط بر روی تراکنش‌ها و اعداد به توافق برسد، به توافق درباره منطق و خود فرایندها می‌پردازد.

امکانات مذکور در حال کشف شدن هستند و می‌توانند درک ما از نحوه کار سیستم‌های آنلاین را به چالش بکشند. حتی می‌­توانند مفاهیم بنیادین مانند طرز کار مالکیت را نیز به چالش بکشند! EVM چیزی است که کدها و قراردادهای هوشمند را پردازش می­‌کند ولی این پردازش کردن به صورت رایگان نیست. خوب، شما چگونه این هزینه را پرداخت می­‌کنید؟ در اتریوم برای پردازش، گاز (Gas) پرداخت می‌­کنید مانند پرداخت هزینه تراکنش برای محاسبات. اگر EVM موتور اتریوم باشد، gas، به منزله گازِ این موتور است.

Gas مقدار کمی از واحد ارز اتریوم، یعنی اتر، است که برای محاسبات انجام شده بر روی شبکه پرداخت می‌­شود. گاز، سه کارکرد اصلی را انجام می­‌دهد. اولاً، با دادن پاداش به گره­‌ها آن­ها را به انجام محاسبات تشویق می‌­کند. ثانیاً، میزان بروز هرزنامه و سوء استفاده را کاهش می­‌دهد زیرا هزینه گاز از پاداش هرزنامه بیشتر و چشم‌گیرتر است. ثالثاً، به از اینکه EVM، در یک حلقه نامحدود، برنامه‌­ریزی شود جلوگیری می­‌کند زیرا gas برای هر فرآیند مورد مصرف قرار می­‌گیرد.

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

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

ممکن است شما دوست داشته باشید

ارسال یک پاسخ

آدرس ایمیل شما منتشر نخواهد شد.