آرتا رسانه

ساخت توکن اختصاصی در اتریوم با استاندارد ERC20

جدول محتوا

در این مقاله به ساخت توکن اختصاصی در اتریوم با استاندارد ERC20 و جابه جایی مبلغ با آن می پردازیم.

برای آشنایی با آموزش برنامه نویسی بلاک چین پکیج آموزش برنامه نویسی بلاک چین را ملاحظه نمایید.

نمونه کد برای ساخت توکن اختصاصی در اتریوم با استاندارد erc20

در این قسمت یک نمونه کد برای ایجاد توکن ERC20 جدید در Ethereum تقدیم شما می‌شود:

solidity pragma solidity ^0.8.0; import "./IERC20.sol"; import "./SafeMath.sol"; contract MyToken is IERC20 { using SafeMath for uint256; string private _name; string private _symbol; uint8 private _decimals; uint256 private _totalSupply; mapping(address => uint256) private _balances; mapping(address => mapping(address => uint256)) private _allowances; constructor(string memory name, string memory symbol, uint8 decimals, uint256 totalSupply) { _name = name; _symbol = symbol; _decimals = decimals; _totalSupply = totalSupply * 10 ** uint256(decimals); _balances[msg.sender] = _totalSupply; emit Transfer(address(0), msg.sender, _totalSupply); } function name() public view returns (string memory) { return _name; } function symbol() public view returns (string memory) { return _symbol; } function decimals() public view returns (uint8) { return _decimals; } function totalSupply() public view override returns (uint256) { return _totalSupply; } function balanceOf(address account) public view override returns (uint256) { return _balances[account]; } function transfer(address recipient, uint256 amount) public override returns (bool) { _transfer(msg.sender, recipient, amount); return true; } function allowance(address owner, address spender) public view override returns (uint256) { return _allowances[owner][spender]; } function approve(address spender, uint256 amount) public override returns (bool) { _approve(msg.sender, spender, amount); return true; } function transferFrom(address sender, address recipient, uint256 amount) public override returns (bool) { _transfer(sender, recipient, amount); _approve(sender, msg.sender, _allowances[sender][msg.sender].sub(amount, "ERC20: transfer amount exceeds allowance")); return true; } function increaseAllowance(address spender, uint256 addedValue) public returns (bool) { _approve(msg.sender, spender, _allowances[msg.sender][spender].add(addedValue)); return true; } function decreaseAllowance(address spender, uint256 subtractedValue) public returns (bool) { _approve(msg.sender, spender, _allowances[msg.sender][spender].sub(subtractedValue, "ERC20: decreased allowance below zero")); return true; } function _transfer(address sender, address recipient, uint256 amount) internal { require(sender != address(0), "ERC20: transfer from the zero address"); require(recipient != address(0), "ERC20: transfer to the zero address"); _balances[sender] = _balances[sender].sub(amount, "ERC20: transfer amount exceeds balance"); _balances[recipient] = _balances[recipient].add(amount); emit Transfer(sender, recipient, amount); } function _approve(address owner, address spender, uint256 amount) internal { require(owner != address(0), "ERC20: approve from the zero address"); require(spender != address(0), "ERC20: approve to the zero address"); _allowances[owner][spender] = amount; emit Approval(owner, spender, amount); } }

در این کد، قرارداد توکن ERC20 جدید MyToken تعریف شده است. برای استفاده از این کد، باید همچنین دو فایل IERC20.sol و SafeMath.sol را نیز داشته باشید و آن‌ها را از یک کتابخانه قابل اعتماد دریافت کنید. IERC20.sol شامل تعریف رابط استاندارد ERC20 است و SafeMath.sol شامل توابع امنیتی برای عملیات ریاضی است.

بعد از کپی کردن این کد و تعریف فایل‌های لازم، شما می‌توانید از تابع سازنده constructor استفاده کنید تا توکن خود را با جزئیاتی مانند نام، نماد، تعداد اعشار و تامین کننده کل توکن، ایجاد کنید.

به عنوان مثال، برای ایجاد توکنی با نام “My Token”، نماد “MTK”، ۱۸ رقم اعشار و تامین کننده کل توکن ۱۰۰ میلیون، می‌توانید این خطوط را به کد اضافه کنید:

solidity constructor() public { _name = "My Token"; _symbol = "MTK"; _decimals = 18; _totalSupply = 100000000 * 10 ** uint256(_decimals); _balances[msg.sender] = _totalSupply; emit Transfer(address(0), msg.sender, _totalSupply); }

پس از اجرای تابع سازنده، توکن ERC20 شما ایجاد خواهد شد و می‌توانید از توابع استاندارد ERC20 مانند transfer، approve و transferFrom برای جابجایی مبلغ استفاده کنید.

توجه داشته باشید که قبل از استفاده از کد، بهتر است مطمئن شوید که کتابخانه‌های IERC20.sol و SafeMath.sol به طور صحیح وارد شده و توابع استاندارد ERC20 را پیاده‌سازی کرده‌اند.

همچنین، قبل از استفاده در شبکه اصلی Ethereum، قرارداد خود را در شبکه تست یا آزمایشی تست کنید و از نحوه استفاین قرارداد توکن ERC20 می‌تواند در Solidity با استفاده از کتابخانه OpenZeppelin پیاده‌سازی شود.

برای این منظور، کافی است کتابخانه OpenZeppelin را در پروژه Solidity خود استفاده کنید. در ادامه نمونه کدی را برای ایجاد توکن ERC20 جدید با استفاده از OpenZeppelin آورده‌ام:

solidity pragma solidity ^0.8.0; import "@openzeppelin/contracts/token/ERC20/ERC20.sol"; contract MyToken is ERC20 { constructor(uint256 initialSupply) ERC20("My Token", "MTK") { _mint(msg.sender, initialSupply); } }

در این کد، قرارداد MyToken از کلاس ERC20 کتابخانه OpenZeppelin ارث‌بری می‌کند. تابع سازنده constructor برای ایجاد توکن فراخوانی می‌شود. در این نمونه، نام توکن “My Token” و نماد آن “MTK” است. توابع name و symbol از کلاس پایه ERC20 به ارث برده می‌شوند.

در صورت تمایل آموزش برنامه نویسی سالیدیتی را ملاحظه نمایید.

در مرحله ساخت توکن، از تابع _mint استفاده می‌کنیم تا مقدار اولیه توکن‌ها را به آدرس ارسال کننده (msg.sender) اختصاص دهیم.

برای استفاده از این کد، باید کتابخانه OpenZeppelin را به پروژه خود اضافه کنید. می‌توانید از OpenZeppelin با استفاده از npm (Node Package Manager) نصب شود. به عنوان مثال، می‌توانید دستور زیر را در ترمینال پروژه خود اجرا کنید:

shell npm install @openzeppelin/contracts

با نصب کتابخانه، می‌توانید قرارداد MyToken را با استفاده از محیط توسعه Solidity مورد استفاده خود کامپایل و استقرار کنید.

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

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

بعد از ایجاد توکن ERC20 با استفاده از کدی که قبلاً ارائه شد، شما می‌توانید از تابع transfer برای انتقال توکن‌ها به یک آدرس دلخواه استفاده کنید. برای انتقال دو توکن از آدرس فرستنده به یک آدرس دیگر، مراحل زیر را دنبال کنید:

1. ایجاد یک نمونه از قرارداد توکن با استفاده از کد زیر:

solidity MyToken myToken = MyToken(tokenAddress);

در اینجا، tokenAddress آدرس قرارداد توکن است که قبلاً ایجاد کرده‌اید.

2. فراخوانی تابع transfer بر روی نمونه قرارداد توکن با ارسال پارامترهای آدرس مقصد و مقدار انتقال:

solidity myToken.transfer(recipientAddress, amount);

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

به عنوان مثال، اگر بخواهید ۱۰ توکن را از آدرس فرستنده به آدرس 0x1234567890abcdef منتقل کنید، کد زیر را استفاده کنید:

solidity myToken.transfer(0x1234567890abcdef, 10);

لطفاً توجه داشته باشید که برای انتقال توکن، باید حساب فرستنده دارای توکن‌های کافی باشد. در غیر این صورت، عملیات انتقال ناموفق خواهد بود.

دیدگاه‌ خود را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

آرتا رسانه
آرتا رسانه
دیجیتال مارکتینگ چیست؟
Loading
/
پیمایش به بالا