Почему мой SmartContract работает, когда я добавляю простую функцию - PullRequest
0 голосов
/ 09 сентября 2018

У меня есть простой токен, полученный из openzeppelin's MintableToken.

Однако, когда я добавляю Конструктор ИЛИ другую функцию, у меня постоянно кончается бензин. Но когда я добавляю ТОЛЬКО один из обоих, либо конструктор, либо функцию, все работает нормально.

Мой вопрос: как я могу добавить несколько функций вместе с конструктором в мой SmartContract?

Токен-код:

pragma solidity ^0.4.22;

import "openzeppelin-solidity/contracts/token/ERC20/MintableToken.sol";

contract HaioToken is MintableToken {
    string public name = "Haio Token";
    string public symbol = "HAI";
    uint8 public decimals = 18;

    uint256 public cap;

    constructor(uint256 _cap) public {
        cap = _cap;
    }

    function test(address _to) public returns (bool) {
        return true;    
    }

}

Миграция:

2_deploy_contracts.js:

var HaioToken = artifacts.require("HaioToken");

module.exports = function(deployer, network, accounts) {
  const hardCap = 25000000;

  return deployer
      .then(() => {
          return deployer.deploy(HaioToken, hardCap);
      })
};

Когда я хочу развернуть код, я получаю следующее сообщение об ошибке:

Ошибка: исключение виртуальной машины при обработке транзакции: нет газа

Если я удаляю либо конструктор, либо тестовую функцию, все работает нормально.

1 Ответ

0 голосов
/ 09 сентября 2018

Я полагаю, вы запускаете миграцию с настройками по умолчанию для трюфелей, которые появились после запуска "truffle init", не так ли?

Вы должны поднять газ, который хотите отправить при развертывании контракта, таким образом в truffle.js (или truffle-config.js в Windows):

module.exports = {
  networks: {
    development: {
      host: "localhost",
      port: 7545,
      network_id: "*",
      gas: 5000000
    }
  }
};

(Значение 5000000 - это пример, который в основном работает "из коробки", и если вам это не нужно, потому что вы разрабатываете локальную тестовую сеть :))

...