Erc-20

為特定的 ERC20 代幣支付功能?

  • February 11, 2022

當一個方法是payable時,可以在呼叫它的同時向合約發送乙太幣,並且該函式可以檢查通過 發送的金額msg.value

如何讓函式接收乙太以外的東西,例如 ERC20 代幣?

ERC20 代幣只是另一個合約。ERC20 標準為您提供了兩個共同作用以幫助支付契約的功能:approve()transferFrom().

如果代幣合約稱為“token”,而您嘗試支付的合約稱為“store”,則流程如下所示:

  1. 使用者呼叫token.approve(store, amount);Thisstore授予轉移amount使用者代幣的權限。
  2. 使用者呼叫store.buy();,它呼叫token.transferFrom()來執行實際的傳輸。

buy()函式可能如下所示:

function buy() external {
   require(token.transferFrom(msg.sender, this, amount));
   // having now received <amount> tokens from the sender, deliver whatever was
   // purchased, etc.
}

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