ارز‌ها: ۳۱,۷۰۹
ارزش بازار: ۳.۳۰۴ تریلیون دلار
قیمت تتر: ۷۰,۲۴۶ تومان

آموزش قدم به قدم ساخت قرارداد هوشمند اتریوم

آموزش قدم به قدم ساخت قرارداد هوشمند اتریوم

اگر اخبار تکنولوژی را دنبال کرده باشید از تأثیرات شگرف ارزهای دیجیتالی و بلاک چین و همچنین فرصت‌های اقتصادی نهفته در آنها، آگاهید. ازلحاظ اقتصادی، بیت کوین تنها در ۲۰۱۷ با بیش از ۲۰۳۵ درصد افزایش قیمت همراه بوده که از نشان از اهمیت بالای تکنولوژی‌های این‌چنینی دارد. از طرفی بیت کوین ویترین پول‌های مجازی است، پس با رشد بیت کوین، بقیه ارزها نیز دستخوش تغییرات قیمتی خواهند شد. اتریوم یکی از این ارزهاست که ۶۳۶۵.۳ درصد رشد داشته، لایت کوین هم از دیگر ارزهایی است که ۲۷۷۵.۴۹ درصد رشد را تجربه کرده است.

آموزش قدم به قدم ساخت قرارداد هوشمند اتریوم

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

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

آشنایی با قراردادهای هوشمند

در ادامه قصد داریم تا نحوه ایجاد یک قرارداد هوشمند ساده را برای شما شرح دهیم؛ این قرارداد بر پایه زبان برنامه‌نویسی «سالیدیتی» نوشته خواهد شد. سالیدیتی زبانی است که شباهت‌های بسیاری به جاوا اسکریپت دارد.

دانلود نرم افزارهای مورد نیاز

برای شروع کار لازم است تا ابتدا Ganache را روی رایانه خود نصب کنید. با استفاده از این نرم‌افزار قادر خواهیم بود تا یک بلاک چین شخصی را بر روی دستگاه خود ایجاد کنیم؛ به‌علاوه وجود یک نسخه دانلودی از «مای اتر ولت» نیز ضروری است (نسخه وب کارساز نیست). به یاد داشته باشید که نسخه‌ای که اقدام به دانلود آن می‌کنید v۳.xx.x.x.zip باشد.

[mks_button size=”large” title=”Download Ganache ” style=”squared” url=”http://truffleframework.com/ganache” target=”_blank” bg_color=”#4688cc” txt_color=”#FFFFFF” icon=”fa-download” icon_type=”fa” nofollow=”0″]

[mks_button size=”large” title=”Download MyEtherWallet V۳.۱۱.۳.۳″ style=”squared” url=”https://cdn.arz.digital/ad-cnt/main/2018/02/etherwallet-v3.zip” target=”_blank” bg_color=”#4688cc” txt_color=”#FFFFFF” icon=”fa-download” icon_type=”fa” nofollow=”0″]

در سایت Ganache اگر سیستم عامل شما windows باشد نسخه ای که برای دانلود به شما پیشنهاد می شود دارای پسوند .appx است که قابل اجرا در windows ۱۰ می باشد. قبل از نصب فایل باید تنظیماتی را در ویندوز اعمال کنید تا برنامه بتواند نصب شود.

تنظیمات ویندوز

پس از دانلود فایل نصبی Ganache در قسمت search ویندوز ۱۰ جمله for developers settings را سرچ کنید و بروی نتیجه نمایش داده شده کلیک کنید.

آموزش قدم به قدم ساخت قرارداد هوشمند اتریوم

پنجره settings بخش For developers باز می شود. هم اکنون گزینه Winsdows Store apps به صورت پیش فرض انتخاب شده ولی شما باید گزینه Sideload apps را انتخاب کنید.

آموزش قدم به قدم ساخت قرارداد هوشمند اتریوم

پس از انتخاب گزینه Sideload apps پنجره ای به شما نمایش داده می شود. گزینه Yes را بزنید و کار تنظیمات ویندوز برای نصب Ganache تمام است.

آموزش قدم به قدم ساخت قرارداد هوشمند اتریوم

حالا فایل نصبی Ganache اجرا نموده و نصب کنید.

 کد اولیه در ریمیکس

پس از نصب این نرم‌افزارها به این سایت وارد شوید تا این صفحه برای شما نمایش داده شود.

آموزش قدم به قدم ساخت قرارداد هوشمند اتریوم

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

pragma solidity ^۰.۴.۰;
contract Counter {
    int private count = ۰;
    function incrementCounter() public {
        count += ۱;
    }
    function decrementCounter() public {
        count -= ۱;
    }
    function getCount() public constant returns (int) {
        return count;
    }
}

همان‌طور که می‌بینید کد ما شامل یک متغیر و سه عملکرد است. متغیر «Count» یک عدد صحیح است که شخصی است؛ یعنی از بیرون از قرارداد امکان دسترسی به آن وجود ندارد. اولین عملکرد که با عنوان «incrementCounter()» مشخص‌شده، با افزایشش باعث تغییر مقدار count می‌شود.

از طرفی نیز با کاهش آن میزان count با جهش (mutation) مواجه خواهد شد. عملکرد سوم نیز getCount() است که با استفاده از آن می‌توان به count دسترسی پیدا کرد و میزان آن را به هر چیز و هرکسی که از دستور استفاده کند بازخواهد گرداند.

پس از جایگذاری دستورها در Remix شکل صفحه باید به‌مانند تصویر زیر باشد.

آموزش قدم به قدم ساخت قرارداد هوشمند اتریوم

در اینجا ما تب موردنظر را باز گذاشتیم تا در صورت نیاز به آن رجوع کنیم. حالا وقت آن رسیده که Ganache را بازکنیم. با باز کردن آن تصویر زیر دیده خواهد شد.

آموزش قدم به قدم ساخت قرارداد هوشمند اتریوم

بر روی صفحه می‌توانید نوشته «RPC SERVER» را مشاهده کنید. مکان آن را به خاطر بسپارید که به‌زودی لازممان خواهد شد.

آموزش قدم به قدم ساخت قرارداد هوشمند اتریوم

حالا مای اتر ولت را از حالت فشرده خارج کنید و سپس پوشه موردنظر را بازکنید. با باز کردن فایل index.html به‌وسیله مرورگر خود، صفحه زیر برایتان بازخواهد شد.

آموزش قدم به قدم ساخت قرارداد هوشمند اتریوم

اتصال MyEtherWallet به Ganache

در گوشه سمت راست صفحه می‌توانید بخشی را ببینید که به شما می‌گوید به شبکه از اتریوم متصل هستید. به‌صورت پیش‌فرض شما به شبکه اصلی اتریوم یا  Ethereum (ETH) متصل خواهید بود. با باز کردن ادامه لیست آن را تغییر می‌دهیم.

آموزش قدم به قدم ساخت قرارداد هوشمند اتریوم

بر روی Add Custom Node کلیک کنید.

آموزش قدم به قدم ساخت قرارداد هوشمند اتریوم

حالا اطلاعاتی را که پیش‌تر از Ganache و بخش RPC Server به‌دست آورده بودیم را در این کادر وارد می‌کنیم. توجه داشته باشید که نام نود را هر چیزی که دوست‌ داشته باشید می‌توانید بگذارید.

آموزش قدم به قدم ساخت قرارداد هوشمند اتریوم

ایجاد قرارداد هوشمند جدید

مای اتر ولت، حالا به همان هاستی وصل شده که شما به وسیله نرم‌افزار Ganache ایجاد کرده بودید. حالا با استفاده از مای ولت اتر، قرارداد هوشمندی که به وسیله Counter ایجاد کردید را در درون بلاک چین خود آپلود می‌کنیم. به این منظور بر روی Contracts کلیک کرده و Deploy Contract را انتخاب می‌کنیم.

آموزش قدم به قدم ساخت قرارداد هوشمند اتریوم
آموزش قدم به قدم ساخت قرارداد هوشمند اتریوم

همان‌طور که مشاهده می‌کنید، مای اتر ولت از شما بایت کد قرارداد را می‌خواهد. برای پیدا کردن آن به Remix IDE برمی‌گردیم و بر روی گزینه Details کلیک می‌کنیم.

آموزش قدم به قدم ساخت قرارداد هوشمند اتریوم

حالا و در صفحه بازشده اطلاعات بسیاری را در مورد قرارداد خود می‌بینید.

آموزش قدم به قدم ساخت قرارداد هوشمند اتریوم

حالا باید رشته ی جلوی کلمه Object را کپی کنید که در واقع bytecode پروژه ما هست.

آموزش قدم به قدم ساخت قرارداد هوشمند اتریوم

حالا به مای اتر ولت برگشته و بایت کد را در درون کادر مربوطه وارد می‌کنیم.

آموزش قدم به قدم ساخت قرارداد هوشمند اتریوم

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

آموزش قدم به قدم ساخت قرارداد هوشمند اتریوم

با کلیک بر روی آن، صفحه‌ای به شکل مقابل برای شما نمایش داده می‌شود که حاوی کلیدهای خصوصی این حساب کاربری است.

آموزش قدم به قدم ساخت قرارداد هوشمند اتریوم

حالا می‌توانید این کلیدها را در بخش مای اتر ولت جایگذاری نمایید.

آموزش قدم به قدم ساخت قرارداد هوشمند اتریوم

با کلیک بر روی گزینه Unlock، مای اتر ولت از شما میپرسد که آیا قصد تائید تراکنش و قرار دادن قرارداد را دارید. با انتخاب گزینه بله آن را تائید کنید.

آموزش قدم به قدم ساخت قرارداد هوشمند اتریوم
آموزش قدم به قدم ساخت قرارداد هوشمند اتریوم
آموزش قدم به قدم ساخت قرارداد هوشمند اتریوم

اگر تمام مراحل را درست طی کرده باشید، Ganache در بخش Current Block اعدادی را به نمایش درخواهد آورد که تعداد اکانت هایی است که در داخل قرارداد، گنجانده‌ایم.

آموزش قدم به قدم ساخت قرارداد هوشمند اتریوم

تست قرارداد هوشمند

قرارداد ما در بلاک چین به ثبت رسیده. برای کار کردن با آن و تعیین میزان counter، به مای اتر ولت بازگشته و گزینه Interact With Contract را انتخاب می‌کنیم.

آموزش قدم به قدم ساخت قرارداد هوشمند اتریوم
آموزش قدم به قدم ساخت قرارداد هوشمند اتریوم

حالا مای اتر ولت از شما آدرس قراردادی که به‌تازگی واردشده و ABI قرارداد را از ما می‌خواهد. برای پیدا کردن آدرس به Ganache باز می‌گردیم و از بخش Transactions  این آدرس ها را پیدا می‌کنیم.

آموزش قدم به قدم ساخت قرارداد هوشمند اتریوم
آموزش قدم به قدم ساخت قرارداد هوشمند اتریوم

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

آموزش قدم به قدم ساخت قرارداد هوشمند اتریوم
آموزش قدم به قدم ساخت قرارداد هوشمند اتریوم
آموزش قدم به قدم ساخت قرارداد هوشمند اتریوم
آموزش قدم به قدم ساخت قرارداد هوشمند اتریوم

در اینجا تنها جای ABI خالی مانده است. به را پیدا کردن این بخش کافی است به Remix برگردیم و با کلیک روی گزینه کپی که درست در کنار  INTERFACE – ABI قرار دارد آن را کپی کنیم.

آموزش قدم به قدم ساخت قرارداد هوشمند اتریوم

در این مرحله ABI را وارد و بر روی گزینه Access کلیک می‌کنیم.

آموزش قدم به قدم ساخت قرارداد هوشمند اتریوم

با کلیک بر روی گزینه Select a function می‌توانیم با قرارداد خود کارکنیم.

آموزش قدم به قدم ساخت قرارداد هوشمند اتریوم
آموزش قدم به قدم ساخت قرارداد هوشمند اتریوم

در بخش کد نویسی مقدار اولیه count را صفر تعیین نمودیم. برای آزمایش اینکه آیا قرارداد درست‌کار می‌کند یا نه دستور getCount()  را اجرا می‌کنیم.

آموزش قدم به قدم ساخت قرارداد هوشمند اتریوم

اگر با تصویر بالا روبه‌رو شدید قرارداد شما نیز به خوبی کار می‌کند. دو دستور دیگر نیز در کد ما وجود داشت برای تست دستور ncrementCounter()  iرا وارد می‌کنیم. با انتخاب عملکرد موردنظر از کادر پایین، گزینه incrementCounter را انتخاب می‌کنیم و یک تراکنش جدید ایجاد می‌کنیم.

آموزش قدم به قدم ساخت قرارداد هوشمند اتریوم
آموزش قدم به قدم ساخت قرارداد هوشمند اتریوم
آموزش قدم به قدم ساخت قرارداد هوشمند اتریوم
آموزش قدم به قدم ساخت قرارداد هوشمند اتریوم

بدین ترتیب باعث افزایش میزان count شدیم. حالا دوباره دستور getCount()    را اجرا می‌کنیم تا ببینیم که آیا این مقدار تغییر کرده یا نه.

آموزش قدم به قدم ساخت قرارداد هوشمند اتریوم

همان‌طور که می‌بینید مقدار count به عدد ۱ تغییر کرد. پس عملکرد incrementCount()  کارکرده. به همین منوال عملکرد decrementCount()   نیز قابل آزمایش است.

جمع بندی

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

ممکن است علاقه مند باشید
guest

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

21 دیدگاه
hpanahpour
hpanahpour
۳ سال قبل

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

محمد
محمد
۴ سال قبل

تصاویر داخل اموزش کوچین چرا ؟ کلیک هم که میکنی روی همین صفحه باز میشن و کلا چیز داغونیه!

Hamed Jafari
Hamed Jafari
۴ سال قبل

خیلی بده مطلب ارسال میکنید ول میکنید بره

امیرحسین حسنی
امیرحسین حسنی
۴ سال قبل

با سلام
چجوری میتونیم از این قرار داد هوشمند کسب درآمد کنیم؟

مهاجری
مهاجری
۵ سال قبل

کد سالیدیتون ایراد داره. وقتی تو remix قرار میدی . این ایراد رو میگیره:
browser/ballot_test.: ParserError: The state mutability modifier "constant" was removed in version 0.5.0. Use "view" or "pure" instead.
function getCount() public constant returns (int) {
^------^

حامد
حامد
۵ سال قبل

سلام
ادرس لینک https://truffleframework.com/ganache باز نمیشه

امیررضا
امیررضا
۶ سال قبل

سلام سعید جان من میخواستم توکن اختصاصی خودم رو بزنم این کهر در ایران مجوز نمیخواد?و اینکه الان کسی بخواد توکن هارو از ما بخره باید به کجا بره??

بیژن
بیژن
۶ سال قبل

سلام
میخواستم بپرسم منظورتون از "اما به یاد داشته باشید که افراد کلاه‌بردار می‌توانند از این طریق مبالغ تقلبی برای شما ارسال کنند." چیه؟

بعد اینکه با این کار همون توکن درست میشه دگ؟
آخرین سوالم هم این بود که برای این کار به هاست نیاز هست؟
خیلی ممنون

بهرام حسینی مقدم
بهرام حسینی مقدم
۶ سال قبل

سلام، خسته نباشید، قراردادی که قبلا ثبت شده رو چطور باید دوباره ازش استفاده کرد؟ یعنی از custom node که قبلا ایجاد کردیم

حسین صادقی
حسین صادقی
۶ سال قبل

سلام اگر امکانش هست بگین روی هاست و سایت وردپرسی چطور میشه کار کرد با این؟جدیدا خود اتریوم برای وردپرس افزونه ای با نام EthereumICO داده این افزونه The ICO token address و The ICO crowdsale contract address میخواد میدونید چطوری ساخته میشه؟ روی سرور مجازی چطور میشه این چیزی که دادین پیدا کرد یعنی این توکن هارو به صورت عمومی عرضه کرد الان این توکن ها برای خودمون ساخته میشن ممنون میشم عمومی این توکن هارو هم توضیح بدین

هاب
مکانی برای گفتگو درباره سرمایه گذاری کریپتو. همین الان عضو شو
ورود به هاب