Solidity
為什麼與 TransferFrom 相比,Transfer 函式不檢查津貼?
- 與 相比,為什麼
Transfer
功能不檢查津貼TransferFrom
?increaseAllowance
每次打電話前都需要打電話TransferFrom
嗎?Ex 實施無津貼檢查的轉移
function transfer(address receiver, uint256 numTokens) public override returns (bool) { require(numTokens <= balances[msg.sender]); balances[msg.sender] = balances[msg.sender].sub(numTokens); balances[receiver] = balances[receiver].add(numTokens); emit Transfer(msg.sender, receiver, numTokens); return true; }
- 使用帳戶
A
來執行transferFrom(source, target, amount)
需要:
source
至少持有amount
給定的令牌A
已被批准source
從它轉移至少amount
給定的令牌
- 使用帳戶
A
來執行transfer(target, amount)
只需要:
A
至少持有amount
給定的令牌
- 您的問題本質上是,為什麼它也不需要:
A
是否已被批准A
至少從它轉移amount
給定的令牌?
- 而答案顯然是:
- 因為批准自己做某事是沒有意義的(任何事情都是真的)
無論
A
是外部擁有的賬戶還是智能合約賬戶,都是如此。