Transfer
處理不同的代幣轉移到合約
有什麼方法可以處理代幣轉移以與另一個代幣簽訂契約?例如:第一個合約 - 代幣 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); } }