Твердость: Почему этот простой договор хранения не работает?
Я практикуюсь, создавая простой договор хранения, но я не могу хранить или извлекать значения из массива "числа". 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 в моей сети позволила добиться успеха.