Не удалось вызвать функцию по другому контракту - PullRequest
0 голосов
/ 21 мая 2018

Я изучаю надежность.

Генерация токенов TT3 в тестовой сети не является проблемой, но TT3Token_Test завершился неудачно.(TT3Token и TT3Token_Test были развернуты по одному и тому же адресу кошелька)

https://ropsten.etherscan.io/tx/0x4099019ecc47640dc7d3ceb3de3d50759f4e5ebc6d730410cda992c97d78ea10

Я не знаю, почему нет.

(я развернул его в ropsten с помощью ремикса)


pragma solidity ^0.4.23;

import "./StandardToken.sol"; // openzeppelin

contract TT3Token is StandardToken {
    string public constant name = "TT3Token";
    string public constant symbol = "TT3";
    uint8 public constant decimals = 18;
    uint256 public constant INITIAL_SUPPLY = 10000 * (10 ** uint256(decimals));

    constructor() public {
        totalSupply_ = INITIAL_SUPPLY;
        balances[msg.sender] = INITIAL_SUPPLY;
        emit Transfer(0x0, msg.sender, INITIAL_SUPPLY);
    }

    function sendTest(address _to, uint256 _value) public {
        transfer(_to, _value);
    }
}

contract TT3Token_Test {
    constructor() public {
        address r = 0xEcA254594c5bBCCEBc321e9252cc886cE37Be914;

        TT3Token token = TT3Token(msg.sender);
        token.sendTest(r, 99 * (10 ** uint256(18)));
    }
}

1 Ответ

0 голосов
/ 22 мая 2018

TT3Token token = TT3Token(msg.sender) не имеет смысла, если только сам контракт TT3Token не создает новое развертывание TT3Token_Test (которое не показано в вашем коде).msg.sender - это адрес, с которого была инициирована транзакция (учетная запись EOA).Это должен быть адрес вашего развернутого TT3Token контракта.

Кроме того, токены принадлежат адресу, который развернул TT3Token контракт.Вам необходимо перевести токены с той же учетной записи на адрес TT3Token_Test, чтобы звонок на sendTest был успешным.

...