Solidity
呼叫智能合約支付函式發送 erc20 代幣
我們可以將 er20 代幣發送到智能合約。
要跟踪它,我們可以使用
function
( msg.value 總是 wei )但是我如何驗證是否真的發送了 erc20 令牌?
例如,如果發送的人> 5,我想將地圖設置為 true
vbcoins
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,你可以認為他們是一個“好人”。