繁体   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