Почему эта умная контрактная функция не работает в Remix IDE с использованием провайдера web3? - PullRequest
2 голосов
/ 21 января 2020

Используя git, я получил исходный код ethereum и собрал его сам. И связан со средой веб-провайдера Remix IDE. В приведенном ниже коде функция nums () была выполнена хорошо, но функция add () превысила предел газа.

A.sol


pragma solidity >=0.4.21 <0.6.0;

contract A {
    uint num;
    constructor(uint n) public {
        num = n;
    }

    function add(uint n) public {
        num += n;
    }

    function nums() public view returns (uint) {
        return num;
    }
}

B.sol


pragma solidity >=0.4.21 <0.6.0;

import "./A.sol";

contract B {
    A a;
    constructor(address addr) public {
        a = A(addr);
    }

    function add(uint n) public {
        a.add(n);
    }

    function nums() public view returns (uint) {
        return a.nums();
    }
}

Предел газа установлен на 0x2fefd8000, и он установлен на 1000000000 при работе в Remix IDE. Но нет никаких причин, по которым газовый лимит превышает 800000. Вы знаете, почему?

1 Ответ

0 голосов
/ 21 января 2020

установите GAS limit на 3000000 , тогда все будет работать нормально.

Причина, по которой ваши транзакции не выполнялись, когда был установлен лимит газа: 1000000000

Транзакции с более высокой стоимостью газа, чем позволяет весь блок, не могут быть выполнены , такие транзакции автоматически c fail.

...