
آموزش گامبهگام برنامهنویسی قرارداد هوشمند با Solidity
مقدمه
بلاکچین یکی از مهمترین فناوریهای نوین است که امکان ثبت و اجرای تراکنشها و قراردادها را بدون واسطه فراهم میکند. در این میان، قرارداد هوشمند مجموعهای از کدهاست که بر بستر بلاکچین اجرا میشود و فرآیندها را به صورت خودکار و غیرقابل تغییر انجام میدهد. زبان Solidity به عنوان زبان اصلی توسعه قراردادهای هوشمند در شبکه اتریوم شناخته میشود.
در این آموزش شما را از نقطه صفر تا ساخت اولین توکن ERC20 همراهی میکنیم. این مطلب برای دانشجویان و توسعهدهندگان تازهکار طراحی شده تا بتوانید مفاهیم پایه را به طور عملی و گامبهگام فرا بگیرید.
پیشنیازها و ابزار مورد نیاز
- آشنایی مقدماتی با یکی از زبانهای برنامهنویسی (جاوااسکریپت یا پایتون توصیه میشود)
- مرورگر Google Chrome یا Mozilla Firefox
- افزونه MetaMask نصب و یک حساب کاربری ایجاد شده
- دسترسی به اینترنت پایدار
Remix یک محیط توسعه آنلاین برای زبان Solidity است که نیاز به نصب نرمافزار ندارد و در مرورگر اجرا میشود. این محیط امکاناتی مانند ویرایش کد، کامپایل، دیپلوی و تست قرارداد را به صورت یکپارچه ارائه میکند که برای مبتدیها بسیار مناسب است.
مرحله اول – نصب و راهاندازی محیط Remix IDE
برای شروع کار:
- به آدرس Remix Ethereum IDE بروید.
- کمتر از چند ثانیه محیط برای شما بارگذاری میشود، بدون نیاز به نصب.
- با بخشهای اصلی این محیط آشنا شوید:
- Explorer: لیست فایلها و پوشههای پروژه
- Editor: بخش ویرایش کد
- Terminal: نمایش رویدادها، خطاها و خروجیها
- برای شروع یک پروژه جدید، یک فایل با پسوند
.solایجاد کنید، مانند:MyContract.sol
مرحله دوم – آشنایی با ساختار زبان Solidity
ساختار اصلی یک قرارداد Solidity شامل بخشهای زیر است:
- نسخه pragma: تعیین نسخه کامپایلر، مانند
pragma solidity ^0.8.0; - تعریف قرارداد: با کلمه کلیدی
contractآغاز میشود. - متغیرها: ذخیره دادهها، انواعی مثل
uint،address،string - توابع: محل درج منطق برنامه، دارای ورودی و خروجی
- Modifiers: محدودکننده رفتار برای برخی توابع
برای جلوگیری از خطا، همیشه نسخه مناسب کمپایلر را استفاده کنید و قبل از دیپلوی، چند بار کامپایل انجام دهید.
مرحله سوم – نوشتن اولین قرارداد ساده
برای اینکه با اصول نوشتن قرارداد هوشمند آشنا شوید، یک مثال ساده مینویسیم.
pragma solidity ^0.8.0;
contract HelloBlockchain {
string public message;
function setMessage(string memory _msg) public {
message = _msg;
}
function getMessage() public view returns (string memory) {
return message;
}
}
این قرارداد یک رشته را ذخیره میکند و امکان خواندن آن را به کاربر میدهد.
- کد را در Remix بنویسید.
- از تب Solidity Compiler آن را کامپایل کنید.
- از تب Deploy & Run Transactions آن را دیپلوی کنید. شبکه را روی Injected Provider – MetaMask قرار دهید تا به شبکه آزمایشی متصل شوید.
- با وارد کردن متن دلخواه در تابع
setMessageو اجرای تابعgetMessageنتیجه را ببینید.
مرحله چهارم – ساخت اولین قرارداد ERC20
استاندارد ERC20 پروتکلی برای ساخت توکنهای قابل تعویض (Fungible Tokens) در اتریوم است. اکثر رمزارزها در این شبکه بر پایه این استاندارد ساخته شدهاند.
- در Remix یک فایل جدید به نام
MyToken.solبسازید. - کد زیر را وارد کنید:
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;
import "@openzeppelin/contracts/token/ERC20/ERC20.sol";
contract MyToken is ERC20 {
constructor() ERC20("MyToken", "MTK") {
_mint(msg.sender, 1000 * 10 ** decimals());
}
}
- کامپایل کنید.
- روی شبکه آزمایشی Goerli یا Sepolia دیپلوی کنید.
- با استفاده از MetaMask مشاهده کنید که توکن شما به موجودیتان اضافه شده است.
مرحله پنجم – تست و اشکالزدایی
برای بررسی صحت عملکرد توکن:
- یک تراکنش انتقال به آدرس دیگر انجام دهید.
- با استفاده از Block Explorer مربوط به شبکه آزمایشی، جزئیات تراکنش را بررسی کنید.
- ابزارهایی مانند Slither یا MythX را اجرا کنید تا مشکلات امنیتی کد شناسایی شود.
مرحله ششم – راهکارهای ادامه مسیر یادگیری
اگر میخواهید مهارت خود را ارتقا دهید:
- شرکت در دورههای پیشرفته Solidity و امنیت قراردادهای هوشمند.
- مطالعه مستندات رسمی Solidity.
- ساخت پروژههای عملی کوچک مانند کیفپول ساده یا سیستم رأیگیری.
- آشنایی با استانداردهای دیگر مانند ERC721 (NFT) و ERC1155.
جمعبندی و نکات کلیدی
- همیشه روی شبکههای آزمایشی تست کنید قبل از اینکه به میننت بروید.
- از کتابخانههای معتبر مثل OpenZeppelin استفاده کنید.
- با مطالعه کد قراردادهای موفق، دانش خود را عمیقتر کنید.
- امنیت باید اولویت اول باشد.
سؤالات متداول (FAQ)
- آیا برای شروع Solidity نیاز به دانش بلاکچین پیشرفته داریم؟
- خیر، فقط آشنایی مقدماتی با یک زبان برنامهنویسی کافی است.
- تفاوت ERC20 با ERC721 چیست؟
- ERC20 برای توکنهای قابل تعویض است، ERC721 برای توکنهای غیرقابلتعویض (NFT) طراحی شده است.
- آیا استفاده از Remix کافی است یا باید Hardhat و Truffle یاد گرفت؟
- برای شروع Remix کافی است. در مراحل پیشرفته میتوانید به ابزارهای دیگر مهاجرت کنید.
- چگونه هزینه گس (Gas) را کاهش دهیم؟
- با بهینهسازی کد، استفاده از نسخههای جدید کامپایلر و اجرای تراکنشها در زمانهایی که شبکه خلوت است.



