جستجو برای:
سبد خرید 0
  • آخرین دوره های آموزشی
  • درخواست پروژه
  • مقالات بلاکچین
  • تماس با ما

ورود

گذرواژه خود را فراموش کرده اید؟

ثبت نام

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

  • 09395149363
  • info@fara-zaman.ir
  • لیست علاقه مندی ها
0
فرازمان | آکادمی بلاکچین
  • آخرین دوره های آموزشیداغ
  • درخواست پروژه
  • مقالات بلاکچینجدید
  • تماس با ما
آخرین اطلاعیه ها
جهت نمایش اطلاعیه باید وارد سایت شوید
شروع کنید

وبلاگ

فرازمان | آکادمی بلاکچیناخبارنمونه قراردادهای هوشمند سالیدیتیپیاده سازی توکن ERC20 در قرارداد هوشمند Solidity

پیاده سازی توکن ERC20 در قرارداد هوشمند Solidity

8 تیر 1401
ارسال شده توسط مریم طاهری
نمونه قراردادهای هوشمند سالیدیتی
توکن ERC20 در قرارداد هوشمند Solidity

 توکن ERC20 در یک قرارداد هوشمند Solidity به شما امکان می دهد توکن خود را در بلاک چین اتریوم ایجاد کنید. قرارداد ERC-20 استانداردی را برای توکن های قابل تعویض معرفی می کند، به عبارت دیگر، توکن های موجود در این قرارداد دقیقاً (از نظر نوع و ارزش) با توکن های دیگر در همان قرارداد یکسان هستند.

پیشنهاد بهبود اتریوم (EIP) برای توصیف استاندارد توکن ERC20 وجود دارد. سند EIP، خلاصه، روش ها و رویدادهای مورد نیاز برای قرارداد را شرح می دهد.

قراردادهای ERC20 می توانند مقدار یک آیتم را در یک حساب کاربری در بلاک چین ردیابی کنند. می‌توان مقدار سهام، اوراق قرضه، پول، کارت‌های بیسبال، کلکسیون‌ها، پوسته‌های بازی، مایل‌های خطوط هوایی و غیره را ردیابی کرد. به همین دلیل است که قرارداد هوشمند Solidity توکن ERC20 بسیار جالب است.

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

				
					pragma solidity ^0.6.7;


interface ERC20 {
    function totalSupply() external view returns (uint _totalSupply);
    function balanceOf(address _owner) external view returns (uint balance);
    function transfer(address _to, uint _value) external returns (bool success);
    function transferFrom(address _from, address _to, uint _value) external returns (bool success);
    function approve(address _spender, uint _value) external returns (bool success);
    function allowance(address _owner, address _spender) external view returns (uint remaining);
    event Transfer(address indexed _from, address indexed _to, uint _value);
    event Approval(address indexed _owner, address indexed _spender, uint _value);

}

// this is the basics of creating an ERC20 token
//change the name loeker to what ever you would like

contract Loeker is ERC20 {
    string public constant symbol = "LKR";
    string public constant name = "Loeker";
    uint8 public constant decimals = 18;
 
    //1,000,000+18 zeros
    uint private constant __totalSupply = 1000000000000000000000000;

    //this mapping iw where we store the balances of an address
    mapping (address => uint) private __balanceOf;

    //This is a mapping of a mapping.  This is for the approval function to determine how much an address can spend
    mapping (address => mapping (address => uint)) private __allowances;

    //the creator of the contract has the total supply and no one can create tokens
    constructor() public {
        __balanceOf[msg.sender] = __totalSupply;
    }

    //constant value that does not change/  returns the amount of initial tokens to display
    function totalSupply() public view override returns (uint _totalSupply) {
        _totalSupply = __totalSupply;
    }

    //returns the balance of a specific address
    function balanceOf(address _addr) public view override returns (uint balance) {
        return __balanceOf[_addr];
    }
    

    //transfer an amount of tokens to another address.  The transfer needs to be >0 
    //does the msg.sender have enough tokens to forfill the transfer
    //decrease the balance of the sender and increase the balance of the to address
    function transfer(address _to, uint _value) public override returns (bool success) {
        if (_value > 0 && _value <= balanceOf(msg.sender)) {
            __balanceOf[msg.sender] -= _value;
            __balanceOf[_to] += _value;
            emit Transfer(msg.sender, _to, _value);
            return true;
        }
        return false;
    }

    
    //this allows someone else (a 3rd party) to transfer from my wallet to someone elses wallet
    //If the 3rd party has an allowance of >0 
    //and the value to transfer is >0 
    //and the allowance is >= the value of the transfer
    //and it is not a contract
    //perform the transfer by increasing the to account and decreasing the from accounts
    function transferFrom(address _from, address _to, uint _value) public override returns (bool success) {
        if (__allowances[_from][msg.sender] > 0 &&
            _value >0 &&
            __allowances[_from][msg.sender] >= _value
            //  the to address is not a contract
            && !isContract(_to)) {
            __balanceOf[_from] -= _value;
            __balanceOf[_to] += _value;
            emit Transfer(_from, _to, _value);
            return true;
        }
        return false;
    }


    //This check is to determine if we are sending to a contract?
    //Is there code at this address?  If the code size is greater then 0 then it is a contract.
    function isContract(address _addr) public view returns (bool) {
        uint codeSize;
        //in line assembly code
        assembly {
            codeSize := extcodesize(_addr)
        }
        // i=s code size > 0  then true
        return codeSize > 0;    
    }

 
    //allows a spender address to spend a specific amount of value
    function approve(address _spender, uint _value) external override returns (bool success) {
        __allowances[msg.sender][_spender] = _value;
        emit Approval(msg.sender, _spender, _value);
        return true;
    }


    //shows how much a spender has the approval to spend to a specific address
    function allowance(address _owner, address _spender) external override view returns (uint remaining) {
        return __allowances[_owner][_spender];
    }
}
				
			
دوره ها و آموزش های فرازمان

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

نقشه راه

راهنما آکادمی فرازمان

برای یادگیری برنامه نویسی بلاکچین…

دوره مفاهیم پایه برنامه نویسی
دوره جامع جاوا اسکریپت و جی کوئری
آموزش برنامه نویسی سالیدیتی
دوره جامع html/css/bootstap
آموزش پیشرفته برنامه نویسی بلاکچین
آموزش Whitepaper نویسی برای پروژه های بلاکچینی

در این باره بیشتر بخوانید

پل(Bridge) در بلاک چین چیست؟

پروژه قفل زمان(Time lock) در قرارداد هوشمند Solidity

پروژه هتل و فروش(Hotel and vending) در قرارداد هوشمند solidity

پروژه دفترچه آدرس(Address book) در قرارداد هوشمند Solidity

نمونه قرارداد هوشمند Solidity

برچسب ها: توکنtokenآموزش برنامه نویسی سالیدیتیآموزش سالیدیتیحسابرسی در قرارداد هوشمندقرارداد هوشمند
جدیدتر پل(Bridge) در بلاک چین چیست؟
قبلی پروژه کیف پول مشترک (Shared wallet) در قرارداد هوشمند Solidity

دیدگاهتان را بنویسید لغو پاسخ

جستجو برای:
برچسب‌ها
function nft آموزش برنامه نویسی سالیدیتی آموزش بلاکچین آموزش سالیدیتی اتریوم اخبار بازی اخبار رمز ارز اخبار کریپتو امنیت قرارداد هوشمند ان اف تی اکتیویژن ایلان ماسک بازی بلاکچین برنامه نویسی بلاک چین برنامه نویسی سالیدیتی بلاک چین بیتکوین بیت کوین تحلیل بیت کوین تسلا توابع توابع در سالیدیتی جاوا اسکریپت حسابرسی در قرارداد هوشمند خبر بلاکچین دسنترالند دوج کوین رمزارز سالیدیتی سرمایه گذاری سندباکس قرارداد هوشمند مایکروسافت متاورس مقاله بلاکچین مقاله کریپتویی موزیلا نمونه قرارداد هوشمند سالیدیتی وب3 پی پال کریپتو کسب درامد کیف پول اتریوم کیف پول بلاکچین
  • محبوب
  • جدید
  • دیدگاه ها
دسته‌ها
  • آموزش برنامه نویسی سالیدیتی
  • اتریوم
  • اخبار NFT
  • اخبار متاورس
  • امور مالی غیرمتمرکز
  • برنامه نویسی سالیدیتی
  • بیت کوین
  • سولانا
  • صرافی غیرمتمرکز
  • قرارداد هوشمند
  • کریپتو
  • کیف پول ارز دیجیتال
  • مقالات بلاکچین
  • مقاله
  • نمونه قراردادهای هوشمند سالیدیتی
 فـرا زمان با بهره گیری از دانش روز دنیا و توانایی در آموزش، مشاوره و پیاده سازی انواع پروژه های بلاکچینی پا به عرصه ی رقابت گذاشته و هر روز به گروه و تخصص خود می افزاید.
دسترسی سریع
  • خانه
  • دوره ها
  • اخبار
  • تماس با ما
  • ساری، ابتدای خیابان 15 خرداد،مجتمع بهار،طبقه اول
  • 09395149363
  • info@fara-zaman.ir
خبرنامه

چیزی را از دست ندهید، ثبت نام کنید و در مورد شرکت ما مطلع باشید.

نماد ها

logo-samandehi
© 1400. آکادمی فرازمان - طراحی فرازمان
اشتراک گذاری در شبکه های اجتماعی
ارسال به ایمیل
https://fara-zaman.ir/?p=13871
دسته بندی دوره ها
دوره های من
دسته بندی دوره ها

طراحی وب

  • 1 دوره

WhitePaper

  • 1 محصول

برنامه نویسی اتریوم (سالیدیتی)

  • 4 محصول

کلاس مجازی

  • 1 دوره
دوره های من
برای مشاهده خریدهای خود باید وارد حساب کاربری خود شوید
Twitter Youtube Instagram
مرورگر شما از HTML5 پشتیبانی نمی کند.

سوالی دارید؟ از ما بپرسید، کارشناسان ما در اسرع وقت با شما تماس می گیرند.

گروه تخصصی برنامه نویسی
  • 09395149363
  • پشتیبانی آنلاین
  • 09395149363