استانداردهای توکن در سالیدیتی

ایجاد شده توسط دکتر مصطفی جلیلی در آموزش برنامه نویسی سالیدیتی 13 مه 2025
اشتراک گذاری

استانداردهای توکن در سالیدیتی | ERC-20، ERC-721 و ERC-1155 به زبان ساده و دقیق


یکی از مهم‌ترین اجزای توسعه قراردادهای هوشمند در اتریوم، استفاده از استانداردهای توکن است. این استانداردها نه‌تنها موجب هماهنگی و تعامل بین قراردادها و اپلیکیشن‌ها می‌شوند، بلکه امنیت، سازگاری با کیف‌پول‌ها و صرافی‌ها، و مقیاس‌پذیری را تضمین می‌کنند. در این مطلب به بررسی سه استاندارد پرکاربرد ERC-20، ERC-721 و ERC-1155 در سالیدیتی می‌پردازیم. همچنین نمونه کدهای عملی برای هرکدام ارائه شده تا بتوانید خودتان از صفر یک توکن بسازید.




ERC-20: استاندارد توکن‌های قابل تعویض (Fungible Tokens)


ERC-20 متداول‌ترین استاندارد برای ساخت توکن‌های دیجیتال قابل تعویض است. توکن‌هایی که از این استاندارد پیروی می‌کنند، همانند یکدیگر هستند و ارزش و ویژگی یکسانی دارند؛ مانند ارزهای دیجیتال، توکن‌های پاداش، یا دارایی‌های مالی قابل تقسیم.


ویژگی‌ها:




  • تمام واحدهای توکن ارزش برابر دارند.




  • قابلیت انتقال، تایید و نگهداری توسط قراردادهای دیگر.




  • استانداردسازی برای کیف‌پول‌ها و صرافی‌ها.




ساخت یک توکن ERC-20 با OpenZeppelin:



// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;
import "@openzeppelin/contracts/token/ERC20/ERC20.sol";
contract GoldToken is ERC20 {
constructor() ERC20("Gold Token", "GLD") {
_mint(msg.sender, 1000000 * 10 ** decimals());
}
}



  • با استفاده از این قرارداد، توکنی با نام "Gold Token" و نماد "GLD" ایجاد شده که یک میلیون واحد دارد.




  • تمامی توکن‌ها هنگام استقرار به آدرس سازنده اختصاص داده می‌شود.






ERC-721: استاندارد توکن‌های غیرقابل تعویض (NFT)


ERC-721 اولین استاندارد رسمی برای ساخت NFT (Non-Fungible Token) است. این توکن‌ها یکتا هستند و به هیچ وجه قابل تعویض با یکدیگر نیستند. هر توکن نمایان‌گر یک دارایی منحصربه‌فرد است؛ مانند تابلوهای هنری، آیتم‌های خاص بازی، یا سند مالکیت دیجیتال.


ویژگی‌ها:




  • هر توکن دارای شناسه‌ی یکتا (tokenId) است.




  • امکان اتصال متادیتا (metadata) و فایل‌ها از طریق URI.




  • مناسب برای بازارهای دیجیتال، بازی‌ها، هنر و کلکسیون‌ها.




توابع کلیدی:




  • ownerOf(tokenId)




  • safeTransferFrom(from, to, tokenId)




  • tokenURI(tokenId)




  • approve(to, tokenId)




ساخت یک NFT ساده:


// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;
import "@openzeppelin/contracts/token/ERC721/ERC721.sol";
contract ArtGallery is ERC721 {
uint public currentId;
address public admin;
constructor() ERC721("ArtGallery", "ART") {
admin = msg.sender;
}
function mint(address to) external {
require(msg.sender == admin, "Only admin");
_safeMint(to, currentId);
currentId++;
}
}



ERC-1155: ترکیب توکن‌های قابل و غیرقابل تعویض


ERC-1155 استانداردی نوین و چندمنظوره است که توسط Enjin معرفی شد. برخلاف ERC-20 یا ERC-721 که محدود به یک نوع توکن هستند، در ERC-1155 می‌توان توکن‌های مختلف (چه قابل تعویض و چه غیرقابل تعویض) را در یک قرارداد نگهداری کرد.


مزایا:




  • پشتیبانی از انواع توکن در یک قرارداد واحد.




  • انتقال چند توکن در یک تراکنش (batch transfer) با مصرف گس کمتر.




  • مناسب برای بازی‌ها، متاورس‌ها و پروژه‌های چندارزی.




توابع خاص:




  • safeBatchTransferFrom(...)




  • balanceOfBatch(...)




  • setURI(...)




نمونه کد پایه ERC-1155:


// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;
import "@openzeppelin/contracts/token/ERC1155/ERC1155.sol";
contract GameAssets is ERC1155 {
constructor() ERC1155("https://api.example.com/metadata/{id}.json") {}
function mint(address to, uint256 id, uint256 amount) external {
_mint(to, id, amount, "");
}
}



  • در این مثال می‌توان آیتم‌هایی مانند "شمشیر"، "سپر"، یا "NFT خاص" را با شناسه متفاوت ضرب (mint) کرد.






نکات تکمیلی برای طراحی توکن حرفه‌ای




  • استفاده از کتابخانه OpenZeppelin برای پیاده‌سازی مطمئن و امنیتی.




  • تعیین دقیق اعشار (decimals) برای توکن‌های ERC-20.




  • در نظر گرفتن محدودیت‌های mint و burn برای کنترل عرضه.




  • استفاده از تابع AccessControl برای مدیریت سطوح دسترسی در پروژه‌های پیشرفته.




  • استفاده از Events برای ثبت دقیق تراکنش‌ها در شبکه.






جمع‌بندی


آشنایی با استانداردهای ERC یکی از پایه‌های اصلی توسعه در دنیای Web3 و بلاک‌چین است. با استفاده از ERC-20 می‌توان توکن‌های مالی قابل تعویض ساخت؛ با ERC-721 توکن‌های یکتا مانند NFTها را ایجاد کرد؛ و با ERC-1155 توکن‌هایی انعطاف‌پذیرتر و چندمنظوره پیاده‌سازی نمود. با انتخاب استاندارد مناسب، رعایت اصول امنیتی و استفاده از ابزارهای حرفه‌ای مانند OpenZeppelin، مسیر توسعه توکن‌سازی ایمن و حرفه‌ای را هموار خواهید کرد.

نظرات (0)

اشتراک گذاری

این پست را با دیگران به اشتراک بگذارید

تنظیمات GDPR

When you visit any of our websites, it may store or retrieve information on your browser, mostly in the form of cookies. This information might be about you, your preferences or your device and is mostly used to make the site work as you expect it to. The information does not usually directly identify you, but it can give you a more personalized web experience. Because we respect your right to privacy, you can choose not to allow some types of cookies. Click on the different category headings to find out more and manage your preferences. Please note, that blocking some types of cookies may impact your experience of the site and the services we are able to offer.