ERC20代币中有个挺麻烦的操作:授权。这主要是因为如果其它合约要调用代币转帐只能使用transferFrom
,但是要调用这个方法的前提就是你要授权这个合约有权限来转帐你的代币! 这就是approve
功能。
我在开发时为了避免这个授权,曾专门写过一个函数,如下:
function transferFromOrigin(address _to, uint256 _value)
public
override
returns (bool success)
{
require(_to != address(0));
require(balanceOf[tx.origin] >= _value);
require(balanceOf[ _to] + _value >= balanceOf[ _to]);
balanceOf[tx.origin] -= _value;
balanceOf[_to] += _value;
emit Transfer(tx.origin, _to, _value);
return true;
}
有了这个方法其它合约来调用代币转帐就很容易了,一步搞定。但是后来在其它的文章中看到tx.origin
不太安全,会有钓鱼漏洞。所以,在这次的更改中主要采用OpenZeppelin的标准。这时授权操作就无法避免了。
以太坊的DAPP确实挺难开发和应用的,就算是老手有时也会晕头转向,更别提新手了。现阶段能参与以太坊,比如参与DeFi的大部分是老外,国内的用户还是蛮少的。开发者那就更少了。现阶段几乎所有的DeFi都是老外开发的,国产的几乎没有。嗯 ,国内的开发者要加油啊!