以太坊代币-transferFrom的使用
2020-07-15 本文已影响0人
区块链0
approve是授权第三方(比如某个服务合约)从发送者账户转移代币,然后通过 transferFrom() 函数来执行具体的转移操作。
账户A有1000个ETH,想允许B账户随意调用他的100个ETH,过程如下:
A账户按照以下形式调用approve函数approve(B,100)
B账户想用这100个ETH中的10个ETH给C账户,调用transferFrom(A, C, 10)
调用allowance(A, B)可以查看B账户还能够调用A账户多少个token
代码
/* 从其他账户转移资产
A允许B从A那里转多少钱给C,先用A调用approve方法,传入B账户;然后调用transferFrom方法,from参数传A账户,to参数传B账户,最后账户地址要改为B的账户来调用
*/
function transferFrom(address _from, address _to, uint256 _value) public returns (bool success) {
require(_value <= allowance[_from][msg.sender]); // Check allowance
allowance[_from][msg.sender] -= _value;
_transfer(_from, _to, _value);
return true;
}
/* 授权第三方从发送者账户转移代币,然后通过transferFrom()函数来执行第三方的转移操作 */
function approve(address _spender, uint256 _value) public
returns (bool success) {
allowance[msg.sender][_spender] = _value;
return true;
}