我通过创建一个简单的存储合同来练习,但是我无法存储或检索数组中的值#34;数字。" uint" structID"没有增加和功能" testRetrieve"仅为正确的索引返回0。
" StructID"不是递增让我相信问题在于功能"存储。"但是,在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"提供了和"测试"指定数组中的第一个条目。
函数“store”在调用时发送事务。
编辑:
问题是天然气。即使我的私人网络的天然气价格低,在我的网上交易200000天然气(商店功能成本大约为104000)超过默认值90000也能让它成功。