Web3js
如何將代幣從託管智能合約發送回錢包
我正在嘗試將代幣從託管智能合約發送到賣方的地址,對於代幣,我使用不同的 ERC2O 標準智能合約。所以我可以像買家一樣從 ERC20 智能合約發送到託管。但是我如何將這些代幣從託管智能合約發送到賣家的錢包
假設買方將代幣發送給託管,然後在條件託管發送給賣方之後,然後如何以可靠的方式編寫相同的轉移方法,並且我使用的是 ERC20 標準。
託管 ERC20 代幣:
你的託管合約需要知道它何時收到新的代幣、來自誰以及有多少。
這是通過讓“賣家”創建兩個交易來實現的:
- **批准:**第一筆交易呼叫代幣合約
// tracker_0x_address 是他們想要存入代幣的 ERC20 合約的地址 // 花費者是您部署的託管合約地址 ERC20(tracker_0x_address).approve(地址花費者,uint token)
- **存款:**第二筆交易呼叫託管合約中的方法
映射(地址=> uint256)公共餘額; 存款(單位代幣){ // 將存入的代幣添加到現有餘額中 餘額[msg.sender]+= 代幣; // 將代幣從發送者轉移到這個合約 ERC20(tracker_0x_address).transferFrom(msg.sender, address(this), tokens); }
這會更新發件人的餘額,然後將代幣從發件人轉移到託管機構。
釋放託管代幣:
你的智能合約所要做的就是呼叫
ERC20(tracker_0x_address).transfer(msg.sender, balances[msg.sender]);
在令牌跟踪器地址上,以便將這些令牌轉移到一個地址。
如果你在一份合約中處理多個代幣和多個使用者,你將不得不為餘額實現第二層映射,並支持存款方法中的跟踪器變數。
// 稍後編輯:將第二筆交易更新為應有的“transferFrom”。