事情是这样的:我有一个旧的 bep20 一文不值,智能合约有一些问题,所以我决定创建一个新的 bep20,显然我需要旧的 bep20 的持有者来获得新的。
解决方案可能类似于交换合约,人们可以将代币 A 交换为代币 B。我尝试部署以下合约,但存在错误,人们可以无限次交换 :(
这是代码,但任何想法,任何帮助都非常感谢:
import 'ERC20.sol`;
contract NewToken{
ERC20 public oldToken;
address public addressToIgnore;
function NewToken(address _oldTokenAdddress, address _addressToIgnore){
oldTokenAddress=_oldTokenAddress;
addressToIgnore=_addressToIgnore;
}
function upgradeTokens(uint amountToUpgrade){
require(amountToUpgrade<=oldToken.balanceOf(msg.sender));
require(amountToUpgrade<=allowance(msg.sender, this));
require(msg.sender!=addressToIgnore);
if(transferFrom(msg.sender, 0x0, amountToUpgrade)){
//Mint the new tokens
}
}
}