Erc-20

ERC20 - transfer 與 transferFrom 有什麼區別?

  • August 11, 2022

我一直在查看OpenZeppelin ERC20 文件,我注意到有兩種方法可以轉移 ERC20 令牌:

  1. 使用transfer(address recipient, uint256 amount) → bool
  2. 結合approve(address spender, uint256 amount) → bool_transferFrom(address sender, address recipient, uint256 amount) → bool

有什麼不同?為什麼使用一種方法與另一種方法?

我正在建構一個 dapp,它可以讓使用者將他們的一些代幣投資到 de-fi 收益協議中,我注意到他們實施了方法 2,但我不確定他們的理由。

免責聲明:我是智能合約開發的菜鳥,所以我正在努力提高我的理解。

如果您需要將代幣從您的地址轉移到另一個地址,請使用transfer(),如果您需要將代幣從一個地址(不是您)轉移到另一個地址,請使用transferFrom。例如,如果您的函式需要amount從呼叫者那裡獲取令牌,您會這樣做

IERC20(token).transferFrom(msg.sender, address(this), amount);

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