[英]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個令牌的權限。
approve(address(B), 100)
allowance(address(A), address(B))
來檢查A允許他使用多少令牌 transferFrom(address(A), address(B), 100)
將這些令牌發送到他的帳戶 允許意味着我們可以批准另一個合同或地址,以便能夠轉移我們的 ERC20 代幣。 而這種需求在分布式應用程序中很常見,例如托管、游戲、拍賣等。因此,我們需要一種方法來批准其他地址來花費我們的代幣。
在 ERC20 標准中,我們有一個全局變量“allowed”,其中我們保持從所有者地址到批准的支出者地址,然后到代幣數量的映射。 調用批准()函數可以為其所需的 _spender 和 _value 添加批准。 此處不檢查令牌數量,將在 transfer() 中檢查。
一旦獲得批准,被批准的消費者就可以使用 transferFrom() 來轉移代幣。 _from 是所有者地址,_to 是接收者的地址,_value 是需要發送的令牌數量。 首先,我們檢查所有者是否實際擁有所需數量的代幣。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.