Web3js

如何將代幣從託管智能合約發送回錢包

  • April 22, 2018

我正在嘗試將代幣從託管智能合約發送到賣方的地址,對於代幣,我使用不同的 ERC2O 標準智能合約。所以我可以像買家一樣從 ERC20 智能合約發送到託管。但是我如何將這些代幣從託管智能合約發送到賣家的錢包

假設買方將代幣發送給託管,然後在條件託管發送給賣方之後,然後如何以可靠的方式編寫相同的轉移方法,並且我使用的是 ERC20 標準。

託管 ERC20 代幣:

你的託管合約需要知道它何時收到新的代幣、來自誰以及有多少。

這是通過讓“賣家”創建兩個交易來實現的:

  1. **批准:**第一筆交易呼叫代幣合約
// tracker_0x_address 是他們想要存入代幣的 ERC20 合約的地址
// 花費者是您部署的託管合約地址

ERC20(tracker_0x_address).approve(地址花費者,uint token)
  1. **存款:**第二筆交易呼叫託管合約中的方法
映射(地址=> uint256)公共餘額;
存款(單位代幣){

// 將存入的代幣添加到現有餘額中
餘額[msg.sender]+= 代幣;

// 將代幣從發送者轉移到這個合約
ERC20(tracker_0x_address).transferFrom(msg.sender, address(this), tokens);
}

這會更新發件人的餘額,然後將代幣從發件人轉移到託管機構。

釋放託管代幣:

你的智能合約所要做的就是呼叫

ERC20(tracker_0x_address).transfer(msg.sender, balances[msg.sender]);

在令牌跟踪器地址上,以便將這些令牌轉移到一個地址。

如果你在一份合約中處理多個代幣和多個使用者,你將不得不為餘額實現第二層映射,並支持存款方法中的跟踪器變數。

// 稍後編輯:將第二筆交易更新為應有的“transferFrom”。

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