چگونه یک قرارداد هوشمند بسازیم؟ آموزش ساخت قرارداد هوشمند روی اتریوم
با توجه به درآمدی که ساخت قراردادهای هوشمند میتواند داشته باشد، این سوال بسیاری از افراد است که چگونه یک قرارداد هوشمند بسازیم؟ بهویژه آنکه هرچه قراردادهای هوشمند پیچیدهتر باشند، برای ساخت آنها باید هزینه بیشتری صرف شود.
بهعنوان مثال ساخت یک قرارداد هوشمند (اسمارت کانترکت) ساده تقریبا 500 دلار هزینه دارد و برای قراردادهای پیچیده حتی باید نزدیک به 5 هزار دلار هزینه کرد. پس تا انتهای این مطلب همراه ما باشید تا با آموزش ساخت قرارداد هوشمند آشنا شوید.
تعریفی از قرارداد هوشمند
قبل از شروع بهتر است اگر اطلاعات ندارید، بهطور خلاصه با این مفهوم آشنا شوید. با گسترش فناوری بلاکچین، فناوری دیگری که محبوب شده است، قرارداد هوشمند نام دارد. قرارداد هوشمند یک قرارداد خوداجرایی است که در آن محتویات توافق بین دو نفر به شکل کد نوشته شده است. سادهتر بخواهیم بگوییم، قراردادهای هوشمند مجموعهای از کدها و دادهها هستند که روی شبکه اتریوم قرار دارند. البته بعضی از بلاکچینهای دیگر مانند سولانا و کاردانو از قراردادهای هوشمند پشتیبانی میکنند اما هیچکدام در این زمینه محبوبیتی در حد اتریوم ندارند.
«نیک سابو» یک دانشمند کامپیوتر، در دهه 90 قراردادهای هوشمند را بهعنوان یک مفهوم پیشنهاد کرد. به گفته او، قراردادهای هوشمند پروتکلهای تراکنش بودند که تحت شرایط قرارداد اجرا میشدند.
قراردادهای هوشمند توسط یک کاربر کنترل نمیشوند، بلکه برنامههایی هستند که روی بلاکچین اتریوم خودکار اجرا میشوند. کاربران با ثبت تراکنشهایی که یک تابع رمزنگاری شده در قرارداد هوشمند را اجرا میکند، میتوانند با قراردادهای هوشمند تعامل داشته باشند.
در این مورد بخوانید: قرارداد هوشمند چیست؟ مفهوم و مثالهایی از smart contract
این قراردادها میتوانند مانند قراردادهای رایج قوانین خاصی را مشخص کنند ولی انسان دخالتی در آنها ندارد. قراردادهای هوشمند چندین مزیت دارند، از جمله:
- شفاف هستند. کاربران میتوانند گزارش تراکنشهای رمزنگاری شده را ببینند
- بدون مجوز هستند. هر فردی میتواند آنها را بنویسد و اجرا کند.
- قابل ترکیب با سایر قراردادهای هوشمند روی شبکه اتریوم هستند.
چگونه یک قرارداد هوشمند بسازیم؟
آموزش ساخت قرارداد هوشمند چندین مرحله دارد که در ادامه شرح میدهیم.
1) ایجاد یک کیف پول متامسک
افزونه متامسک را روی مرورگر خود نصب کرده و فعال کنید. پس از نصب از گوشه بالا سمت راست صفحه مرورگر، روی آیکون این کیف پول کلیک کنید تا یک تب جدید برایتان باز شود.
روی گزینه «Create Wallet» کلیک کنید و با کلیک روی عبارت «I agree» با شرایط و قوانین موافقت کرده و به مرحله بعد بروید. در این مرحله از شما خواسته میشود یک رمز عبور مشخص کنید.
پس از آن باید عبارات پشتیبانی که برای پشتیبانی و برگرداندن حساب استفاده میشوند، روی یک کاغذ یا در جایی مطمئن یادداشت کنید. در مرحله بعد چگونه یک قرارداد هوشمند بسازیم، باید مطمئن شوید که در «شبکه اصلی اتریوم» قرار دارید. اگر کنار عبارت «Main Ethereum Network» یک تیک قرار داشت، همه چیز درست است.
2) یک شبکه تست انتخاب کنید
در کیف پول متامسک خود میتوانید یکی از شبکههای تست زیر را پیدا کنید:
- شبکه تست Robsten
- شبکه تست Kovan
- شبکه تست Rinkeby
- شبکه تست Goerli
شبکههای بالا تنها برای تست هستند. توجه کنید که اترهای داخل این شبکهها ارزش واقعی ندارند.
3) مقداری اتر ساختگی به کیف پول خود واریز کنید
در این مرحله از آموزش ساخت قرارداد هوشمند باید مقداری اتر ساختگی داخل کیف پولتان برای تست قرارداد هوشمند خود داشته باشید. بهعنوان مثال اگر میخواهید از شبکه تست Robsten استفاده کنید، آن را انتخاب کنید و متوجه خواهید شد که موجودی اولیه حسابتان 0 ETH است.
برای اضافه کردن اتر ساختگی، روی دکمههای «Deposit» و «Get Ether» زیر عبارت Test Faucet کلیک کنید. سپس باید روی عبارت «request one ether from the faucet» کلیک کنید تا 1 اتریوم به کیف پول شما اضافه شود. به شبکه تست مورد نظر هر تعداد اتر خواستید، میتوانید اضافه کنید.
مرحله بعد آموزش ساخت قرارداد هوشمند به کمی دانش فنی نیاز دارد. در این مرحله باید قرارداد هوشمند مورد نظر خود را به زبان برنامهنویسی سالیدیتی در یک محیط توسعه نرمافزار مانند Remix Browser IDE بنویسید.
4) از ادیتور ریمیکس برای نوشتن قرارداد هوشمند خود استفاده کنید
ریمیکس (Remix) بهترین گزینه برای نوشتن قراردادهای هوشمند است، چون قابلیتهای متعددی دارد و تجربه توسعه کاملی را در اختیار کاربر میگذارد. از این محیط معمولا برای نوشتن قراردادهای کوچکتر استفاده میشود.
5) ایجاد یک فایل با پسوند .sol
این مرحله از آموزش ساخت قرارداد هوشمند به نحوه ساخت فایل نهایی اختصاص دارد. مرورگر ریمیکس را باز کرده و برای ایجاد یک فایل با پسوند .sol از بالا سمت چپ در کنار مرورگر روی آیکون + کلیک کنید.
6) سوار کردن یا دیپلوی قرارداد هوشمند
با فشار دادن دکمه دیپلوی (deploy) از گوشه سمت راست پنجره ریمیکس، میتوانید قرارداد هوشمند خود را روی شبکه تست اتریوم سوار کنید. پس از آن منتظر بمانید تا تراکنش کامل شود. پس از آنکه تراکنش با موفقیت کامل شد، آدرس قرارداد هوشمند را باید در گوشه سمت راست پنجره ریمیکس ببینید.
در این مورد بخوانید: قرارداد هوشمند اتریوم؛ اجرای قوانین بدون دخالت دست!
یک نمونه قرارداد هوشمند
حالا که به پاسخ چگونه یک قرارداد هوشمند بسازیم رسیدید، مثال زیر یک برای یک کد قرارداد هوشمند برای ایجاد توکنهای ERC20 است:
pragma solidity ^0.4.0;
import “./ERC20.sol”;
contract myToken is ERC20{
mapping(address =>uint256) public amount;
uint256 totalAmount;
string tokenName;
string tokenSymbol;
uint256 decimal;
constructor() public{
totalAmount = 10000 * 10**18;
amount[msg.sender]=totalAmount;
tokenName=”Mytoken”;
tokenSymbol=”Mytoken”;
decimal=18;
}
function totalSupply() public view returns(uint256){
return totalAmount;
}
function balanceOf(address to_who) public view
returns(uint256){
return amount[to_who];
}
function transfer(address to_a,uint256 _value) public
returns(bool){
require(_value<=amount[msg.sender]);
amount[msg.sender]=amount[msg.sender]-_value;
amount[to_a]=amount[to_a]+_value;
return true;
}
}
در ریمیکس یکی از نسخههای کامپلایر را انتخاب کنید تا کد اسمارت کانترکتی که به زبان سالیدیتی نوشتهاید، کامپایل شود. اگر به کمک مرحله 6 آموزش ساخت قرارداد هوشمند این مثال را دیپلوی کرده باشید، تمام توکنهای ERC20 در کیف پول کاربری که آن را سوار کرده است، ذخیره خواهند شد.
برای آنکه توکنها را در کیف پول خود مشاهده کنید، به کیف پول متامسکتان بروید و روی گزینه add tokens کلیک کنید. در مرحله بعد آدرس قرارداد هوشمند را وارد کرده و روی عبارت ok کلیک کنید تا بعد از آن بتوانید تعداد توکنها را ببینید.
نحوه تست قرارداد هوشمند روی شبکه اتریوم
- سعی کنید به کمک مثالی که در بالا زدیم، تمام متدهای قرارداد هوشمند خود مانند انتقال، موجودی کل و موجودی را اجرا کنید. این روشها در سمت راست پنجره ریمیکس قرار دارند و میتوانید از آنجا آنها را اجرا کنید.
- سعی کنید مقداری توکن به دیگر آدرسهای اتریوم انتقال دهید و سپس موجودی آن آدرس را با متد فراخواندن موجودی، بررسی کنید.
- سعی کنید با اجرای متد موجودی کل (total Supply method)، تعداد کل توکنها را ببینید.
مراحل دیپلوی قراردادهای هوشمند روی بلاکچین اتریوم
- برای اینکه مطمئن شوید اسمارت کانترکت شما فعال است، در کیف پول متامسک شبکه اصلی اتریوم را انتخاب کنید.
- مقداری اتر واقعی به حساب خود اضافه کنید.
- در این مرحله مجددا با استفاده از ریمیکس قرارداد هوشمند خود را دیپلوی کنید.
- زمانی که قرارداد هوشمند با موفقیت دیپلوی شد، به سایت http://www.etherscan.io بروید و آدرس اسمارت کانترکت خود را آنجا جستجو کنید.
- قرارداد هوشمند خود را انتخاب کنید.
- حالا باید با کلیک روی عبارت «verify the contract»، قرارداد هوشمند خود را تایید کنید.
- کد اسمارت کانترکت خود را کپی کرده و در Etherscan پیست کنید. در این مرحله همان نسخه از کامپلایری را که در ریمیکس برای کامپایل کد خود انتخاب کرده بودید، انتخاب کنید.
- اگر در ریمیکس «Optimization» را انتخاب کرده بودید، گزینه Yes را انتخاب کنید. در غیر این صورت No را انتخاب کنید.
- روی عبارت تایید (Verify) کلیک کنید.
- چند دقیقه طول خواهد کشید و سپس اگر مشکلی نباشد، قرارداد هوشمند شما فعال خواهد شد.
- حالا میتوانید در Etherscan متدهای قرارداد هوشمند خود را اجرا کنید.
ابزارها و فناوریهای لازم برای اجرای قراردادهای هوشمند اتریوم
پس از توضیح مراحل آموزش ساخت قرارداد هوشمند، در این بخش ابزارها و فناوریهای لازم برای آن را خواهیم گفت.
- Truffle، فریمورک توسعه اتریوم
ترافل (Truffle) یک فریمورک توسعه اتریوم است که به توسعهدهندگان اجازه میدهد قراردادهای هوشمند را بنویسند و تست کنند. این فریمورک به زبان جاوا اسکریپت نوشته شده و حاوی یک کامپایلر برای زبان برنامهنویسی سالیدیتی است.
Truffle Contract یک کتابخانه جاوا اسکریپت است که از آن میتوانید برای وارد کردن قراردادهای هوشمند کامپایل شده استفاده کنید.
- Web3.js، مجموعهای از کتابخانهها
Web3.js مجموعهای از کتابخانهها است که توسعهدهندگان توسط آن میتوانند با یک گره محلی یا دور اتریوم با استفاده از HTTP، IPC یا WebSocket تعامل داشته باشند. با استفاده از این کتابخانه میتوانید کلاینتها یا وبسایتهایی را توسعه دهید که با بلاکچین تعامل دارند.
- Visual Studio Code یک ادیتور کد کاربردی
- Ganache CLI
یک کلاینت اتریوم که با استفاده از آن میتوانید به یک بلاکچین لوکال برای تست اپلیکیشن غیرمتمرکز خود وصل شوید. این کلاینت به اسم TestRPC نیز شناخته میشود.
- Parity
Parity یک کلاینت امن و سریع اتریوم برای مدیریت حسابها و توکنهای اتریوم است.
- Node.js
Node.js محیطی برای اجرای کدهای جاوا اسکریپت است که برای برنامهنویسی سمت سرور استفاده میشود. با استفاده از این محیط میتوانید کاربردپذیری قراردادهای هوشمند را تست کنید. در کنار Node.js باید یک نرمافزار مدیریت بسته، مانند Yarn را نیز نصب کنید.
سخن نهایی
قراردادهای هوشمند نسل بعدی اپلیکیشنها هستند که تاثیر قابل توجهی روی صنایع مختلف از جمله حوزه مالی میگذارند. تسلط روی مطالب آموزش ساخت قرارداد هوشمند باعث خواهد شد در حوزه Web3 بتوانید فعال باشید و به درآمد خوبی برسید.
نکات مطلب بالا باید به سوال چگونه یک قرارداد هوشمند بسازیم پاسخ داده باشند و توجه کنید مراحل بالا برای ساخت یک اسمارت کانترکت روی بلاکچین اتریوم است. گرچه شما میتوانید روی بلاکچینهای دیگر مانند سولانا، بایننس اسمارت چین و کاردانو نیز این کار را انجام دهید.