Solidity
發送 ETH 後收到 ERC20 代幣
我想在將 eth 發送到合約後實現接收令牌的可能性。我能怎麼做?也許我必須修改這個功能?
function () public payable { revert(); }
您遺漏了一個重要細節:代幣是不同的合約嗎?
如果我們假設代幣在單獨的合約中,並且希望為每個貢獻的乙太幣發送 10 個代幣(我假設代幣像乙太幣一樣有 18 位小數)
ERC20 token; // <-- Token address assigned on the constructor for example. function () public payable { // Received amount of ether uint amount = msg.value; // Convert to tokens uint tokens = amount * 10; // Transfer tokens assigned to this contract to sender token.transfer(msg.sender, tokens); }
對於 ERC20 合約介面,您可以使用OpenZeppelin實現。
我建議您查看 OpenZeppelin 團隊實施的其他契約,以便您更好地了解如何程式其他事情。