Contract-Development

使用批准和 transferFrom 發送代幣與僅傳輸

  • January 30, 2022

我們可以使用以下 ERC20 合約方法發送代幣

  1. 批准()和轉移()
  2. 轉移()

在這裡,如果我使用第二個選項,則直接轉移令牌,而如果我使用第一個選項,則需要兩步過程

我是新手,我想了解這兩種方式之間的區別?

轉移方式

轉移方法適用於 2 方轉移,發送方希望將一些代幣轉移給接收方。

  • 發件人➜transfer(receiver, amount)

Approve 和 transferFrom 方法

批准 + transferFrom 用於 3 方轉移,通常但不一定是交易所,發送方希望授權第二方代表他們轉移一些代幣。

  • 發件人➜approve(exchange, amount)
  • 買方➜在交易所執行交易
  • 交流➜transferFrom(sender, buyer, amount)
transfer(address to, uint tokens) public returns (bool success)

將餘額從所有者帳戶轉移到另一個帳戶

transferFrom(address from, address to, uint tokens) public returns (bool success)

tokens從地址from向地址發送代幣數量to transferFrom 方法用於提款工作流程,允許合約代表您發送代幣,例如“存款”到合約地址和/或以子貨幣收取費用;該命令應該失敗,除非 _from 帳戶通過某種機制故意授權消息的發送者;我們提出這些標準化的 API 以供批准。

approve(address spender, uint tokens) public returns (bool success)

允許spender多次從您的帳戶中提款,最高限額為該tokens金額。如果再次呼叫此函式,它會用 _value 覆蓋目前容差。

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