Почему мой SmartContract работает без газа, когда я добавляю простую функцию

У меня есть простой токен, полученный из 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);
      })
};

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

Ошибка: VM Exception при обработке транзакции: нет газа

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

1 ответ

Решение

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

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

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

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

Другие вопросы по тегам