Transfer

處理不同的代幣轉移到合約

  • September 30, 2021

有什麼方法可以處理代幣轉移以與另一個代幣簽訂契約?例如:第一個合約 - 代幣 A 第二個合約 - 代幣 B

如何處理將代幣 A 轉移到代幣 B 的合約並在此轉移發送時進行一些邏輯?

邏輯範例:在代幣 A 合約上獲得代幣 B 後,我們呼叫 mint/burn 函式。

應該可以使用approve + transferFrom。例如,這樣的事情應該可以工作:

  • 鎖定令牌的程式碼
contract B is ERC20 {

   mapping (address => uint256) public locked;

   IERC20 public tokenA;

   function lockTokens(uint256 amount) public {
       require(msg.sender == address(tokenA), "Only token A can lock tokens");

       // Lock tokens from A
       tokenA.transferFrom(msg.sender, address(this), amount);
       locked[msg.sender] += amount;

       // Mint B tokens
       _mint(msg.sender, amount);         
   }

}
  • 從 A 發送令牌的程式碼
contract A is ERC20 {

   IERC20 public tokenB;

   function sendToken(uint256 amount) public {
        // Approve tokenB access to A tokens
        approve(address(tokenB), amount);

        // lock A tokens in B
        tokenB.lockTokens(amount);
   }
}

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