[英]Transfer function not working as expected in solidity
考虑以下代码
mapping (address => uint256) public balanceOf;
event Transfer(address indexed from, address indexed to, uint256 value);
function _transfer(address _from, address _to, uint _value) internal {
require(_to != 0x0);
require(balanceOf[_from] >= _value);
balanceOf[_from] -= _value;
balanceOf[_to] += _value;
Transfer(_from, _to, _value);
}
function sell(uint256 amount) public {
require(this.balance >= amount * sellPrice);
_transfer(msg.sender, this, amount);
msg.sender.transfer(amount * sellPrice);
}
function sendTokens(address _to, uint value) public {
_transfer(msg.sender,_to,value);
msg.sender.transfer(value * sellPrice);
}
function buy() payable public {
uint amount = (msg.value / buyPrice) * 1 wei;
_transfer(this, msg.sender, amount);
}
这里的sell()和buy()函数向合约发送/接收合约令牌,但是当调用具有几乎相同签名的sendTokens()函数时,它无法发送或发送0个令牌。 合约也有以太币和代币。 但是它总是考虑发送和接收令牌。 但是sendTokens几乎没有相同的代码。
我也有另一个与此有关的问题。 每个帐户都有以太币和多个令牌。 然后,它将如何确定此处需要发送此特定令牌,或者此处要发送以太币而不是任何令牌。
谁能帮忙。 提前致谢。
那么代码中没有更正。 也许Metamask和remix目前不支持这种类型的事务。 当我从Web3js调用此方法时,它起作用了。 因此找不到确切的原因,但是是的,它最终奏效了。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.