簡體   English   中英

ERC20 標准中的批准和允許方法真正在做什么?

[英]what approve and allowance methods are really doing in ERC20 Standard?

問題是津貼和批准真的在做什么???

這個_spender是什么,它在做什么???

有沒有人可以給我解釋一下???

contract Token {
    uint256 public totalSupply;
    function balanceOf(address _owner) constant returns (uint256 balance);
    function transfer(address _to, uint256 value) returns (bool success);
    function transferFrom(address _from, address _to, uint256 value) returns (bool success);
    function approve(address _spender, uint256 _value) returns (bool success);
    function allowance(address _owner, address _spender) constant returns (uint256 remaining);
    event Transfer(address indexed _from, address indexed _to, uint256 _value);
    event Approval(address indexed _owner, address indexed _spender, uint256 _value);
}

津貼和批准實際上在做什么?

假設我們有用戶A和用戶B。 A擁有1000個令牌,並希望授予B使用100個令牌的權限。

  • A將呼叫approve(address(B), 100)
  • B會通過調用allowance(address(A), address(B))來檢查A允許他使用多少令牌
  • B將通過調用transferFrom(address(A), address(B), 100)將這些令牌發送到他的帳戶
  • 允許意味着我們可以批准另一個合同或地址,以便能夠轉移我們的 ERC20 代幣。 而這種需求在分布式應用程序中很常見,例如托管、游戲、拍賣等。因此,我們需要一種方法來批准其他地址來花費我們的代幣。

  • 在 ERC20 標准中,我們有一個全局變量“allowed”,其中我們保持從所有者地址到批准的支出者地址,然后到代幣數量的映射。 調用批准()函數可以為其所需的 _spender 和 _value 添加批准。 此處不檢查令牌數量,將在 transfer() 中檢查。

  • 一旦獲得批准,被批准的消費者就可以使用 transferFrom() 來轉移代幣。 _from 是所有者地址,_to 是接收者的地址,_value 是需要發送的令牌數量。 首先,我們檢查所有者是否實際擁有所需數量的代幣。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM