Как отправить токены на адрес договора - PullRequest
1 голос
/ 07 мая 2019

Я хочу отправить токены 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);
    });
  });

Не могли бы вы дать мне любой совет, почему я потерпел неудачутест?

1 Ответ

1 голос
/ 07 мая 2019

Администратор имеет 1000000 токенов, и я хочу отправить 750000 токенов на TokenSale контракт.

Для этого admin необходимо позвонить transfer на жетонном договоре.Т.е. в вашем тестовом коде должно быть следующее:

tokenInstance.transfer(tokenSaleInstance.address, 750000, { from: admin });

После этого вызов startSale должен завершиться успешно, но нет причины вызывать его, потому что он просто передает 750 000 токенов самому себе.

...