【发布时间】:2019-05-07 04:34:38
【问题描述】:
我想将erc20代币发送到能够交易代币的合约地址。
但是,我没有通过测试并且错误提示
Error: VM Exception while processing transaction: revert
我的功能是这个
TokenSale.sol
function startSale(address _tokenSaleContractAddress) public {
require(msg.sender == admin);
require(tokenContract.transfer(_tokenSaleContractAddress, 750000));
}
MyToken.sol
function transfer(address _to, uint256 _value) public returns (bool success) {
require(balanceOf[msg.sender] >= _value);
balanceOf[msg.sender] -= _value;
balanceOf[_to] += _value;
emit Transfer(msg.sender, _to, _value);
return true;
}
我的测试是这样的
it('facilitates start sale', function() {
return MyToken.deployed().then(function(instance) {
tokenInstance = instance;
return TokenSale.deployed()
}).then(function(instance) {
tokenSaleInstance = instance;
return tokenSaleInstance.startSale(tokenSaleInstance.address, {from: admin} )
}).then(function(receipt) {
return tokenInstance.balanceOf(tokenSaleInstance.address)
}).then(function(balance) {
assert.equal(balance.toNumber, 750000);
});
});
你能告诉我为什么我没有通过测试吗?
【问题讨论】:
-
很难说没有看到你的其余代码,但看起来你没有将任何代币转移到
TokenSale合约,所以当它尝试转移代币时,它有余额不足。此外,您似乎正试图让TokenSale合约将代币转移给自己?您正在调用startSale并将TokenSale自己的地址作为参数传递。 -
管理员有 1000000 个代币,我想发送 750000 个代币到
TokenSale合约。 -
我在 github 上发布了我的代码。 github.com/Yosuke-Aramaki/erc20_proto_react.git