如何发送代币到合约地址
How to send tokens to contract address
我想将 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);
});
});
你能告诉我我考试失败的原因吗?
Admin has 1000000 tokens, and I want to send 750000 tokens to TokenSale
contract.
为此,admin 需要在代币合约上调用 transfer
。 IE。你的测试代码应该有这个:
tokenInstance.transfer(tokenSaleInstance.address, 750000, { from: admin });
之后,调用startSale
应该会成功,但没有理由调用它,因为它只是向自己转移了750,000个代币。
我想将 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);
});
});
你能告诉我我考试失败的原因吗?
Admin has 1000000 tokens, and I want to send 750000 tokens to
TokenSale
contract.
为此,admin 需要在代币合约上调用 transfer
。 IE。你的测试代码应该有这个:
tokenInstance.transfer(tokenSaleInstance.address, 750000, { from: admin });
之后,调用startSale
应该会成功,但没有理由调用它,因为它只是向自己转移了750,000个代币。