Solidity

為什麼與 TransferFrom 相比,Transfer 函式不檢查津貼?

  • December 17, 2020
  1. 與 相比,為什麼Transfer功能不檢查津貼TransferFrom
  2. 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;
   }
  1. 使用帳戶A來執行transferFrom(source, target, amount)需要:
  • source至少持有amount給定的令牌
  • A已被批准source從它轉移至少amount給定的令牌
  1. 使用帳戶A來執行transfer(target, amount)只需要:
  • A至少持有amount給定的令牌
  1. 您的問題本質上是,為什麼它也不需要:
  • A是否已被批准A至少從它轉移amount給定的令牌?
  1. 而答案顯然是:
  • 因為批准自己做某事是沒有意義的(任何事情都是真的)

無論A是外部擁有的賬戶還是智能合約賬戶,都是如此。

引用自:https://ethereum.stackexchange.com/questions/91224