Solidity

呼叫智能合約支付函式發送 erc20 代幣

  • December 6, 2017

我們可以將 er20 代幣發送到智能合約。

要跟踪它,我們可以使用function ( msg.value 總是 wei )

但是我如何驗證是否真的發送了 erc20 令牌?

例如,如果發送的人> 5,我想將地圖設置為 truevbcoins

function sendVBCoins(uint256 _howmuch){
 require(_howmuch >= 5);
 goodperson[msg.sender] = true;
}

任何人都可以發送 1 wei 並呼叫該函式並成為goodperson.

我該如何解決?

這種轉移可以分兩個階段完成。

渴望成為好人的人需要先打電話vbToken.approve(<your contract's address>, 5)(或者更確切地說5 * 10**decimals)。這授權您的合約從他們那裡獲取 5 個 vbcoins。

然後他們打電話sendVBCoins(5)(或者,更有可能5 * 10**decimals)。在裡面sendVBCoins,你會打電話vbToken.transferFrom(msg.sender, _howmuch)。如果成功,那麼你已經從他們那裡收到了這些 vbcoins,你可以認為他們是一個“好人”。

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