Твердость: Почему этот простой договор хранения не работает?

Я практикуюсь, создавая простой договор хранения, но я не могу хранить или извлекать значения из массива "числа". Uint "structID" не увеличивается, а функция "testRetrieve" возвращает только 0 для правильных индексов.

Тот факт, что StructID не увеличивается, заставляет меня поверить, что проблема заключается в функции store. Тем не менее, после прочтения нескольких вопросов здесь в SO и онлайн-учебников / документации, я все еще в тупике.

Кто-нибудь знает, почему в этом контракте не будут храниться данные?

contract testStruct {

   uint public structID;

    struct SomeStruct {
        uint[] numbers;
    }

    SomeStruct[] someStructs;

    function store(uint _numbers, uint entryID) public {

        SomeStruct memory someStruct;
        someStructs.push(someStruct);

        someStructs[entryID].numbers.push(_numbers);

        structID++;

    }

    function testRetrieve(uint entryID, uint test) public view returns (uint) {

        return someStructs[entryID].numbers[test];

    }
}

РЕДАКТИРОВАТЬ: Для функций выше, я вызываю все функции из консоли geth на частной блокчейн. Для "testRetrieve" я тестирую функцию с "0", предусмотренным для "entryID" и "test", чтобы указать самую первую запись в массиве.

Функция "store" отправляет транзакцию при вызове.

РЕДАКТИРОВАТЬ:

Проблема была в газе. Несмотря на то, что моя частная сеть имеет низкую цену на газ, сделка с 200000 газа (функция хранилища стоит около 104000) сверх установленного по умолчанию значения 90000 в моей сети позволила добиться успеха.

0 ответов

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