Ошибка: возвращенная ошибка: исключение виртуальной машины при обработке транзакции: не хватает газа - PullRequest
0 голосов
/ 25 апреля 2020

У меня есть простой умный контракт, развернутый в локальной среде трюфелей с использованием миграции. Я использую пакет реагирующих компонентов для работы с умным контрактом.

Так что моя проблема в том, что работают простые методы получения и установки, но когда я пытаюсь запустить метод с 2-3 аргументами, я получаю это исключение .

Мой Truffleconfig выглядит следующим образом:

module.exports = {
  // See <http://truffleframework.com/docs/advanced/configuration>
  // to customize your Truffle configuration!
  contracts_build_directory: path.join(__dirname, "app/src/contracts"),
  networks: {
    develop: { // default with truffle unbox is 7545, but we can use develop to test changes, ex. truffle migrate --network develop
      host: "127.0.0.1",
      port: 8545,
      network_id: "*",
      gas: 6921975,
      gasPrice: 25000000000
    }
  },
  solc: {
        optimizer: {
            enabled: true,
            runs: 200
        }
    }
};

И в моем компоненте реакции я звоню так:

  <div className="section">
    <h2>Testing Poni</h2>
    <p>
      This is a initial test to create Poni
    </p>
    <p>
      <strong>Stored Value: </strong>
      <ContractData
        drizzle={drizzle}
        drizzleState={drizzleState}
        contract="PoniOwnership"
        method="getMyPonies"
      />
    </p>
    <ContractForm drizzle={drizzle} contract="PoniOwnership" method="createPoni" />
  </div>

Мои функции солидности таковы:

function createPoni(string memory _code, string memory _imgLink) public onlyOwner poniIsUnique(_code){

    uint randDna = _generateRandomDna(_code);

    //!!pass imgHash here also later
    _createPoni(_code, _imgLink, randDna);
  }

function _createPoni(string memory _code, string memory _imgLink, uint _dna) private {

    uint id = ponies.push(Poni(msg.sender, _code, _imgLink, _dna, 0, true)) - 1;

    poniToOwner[id] = msg.sender;
    codeToId[_code] = id;
    ownerPoniCount[msg.sender] = ownerPoniCount[msg.sender].add(1);

    emit NewPoni(id, _code, _imgLink, _dna);
  }

struct Poni {
    address owner;
    string code;
    string imgLink;
    uint dna;
  }

Я попытался дополнительно послать газ из реактивного компонента моросящего газа, поскольку здесь приведены параметры: https://www.trufflesuite.com/docs/drizzle/react/react-components, но он выдает ошибки, говорящие о том, что функция не подлежит оплате. Я не могу понять, как бороться с этим исключением.

1 Ответ

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

Вы хотите установить более высокий газ для транзакции

Вы хотите настроить sendArgs ({gas:}) для компонента ContractForm.

https://www.trufflesuite.com/docs/drizzle/react/react-components#contractform

...