Я пытаюсь развернуть контракт в частной сети блокчейнов. В моем коде Solidity используется много переменных. Развертывание действительно дает мне адрес контракта, однако при попытке получить байт-код из eth.getCode()
(путем передачи адреса контракта, который был сгенерирован из квитанции транзакции), он возвращает 0x
.
Я попытался увеличить лимит газа в браузере солидности и создал контракт. Контракт создается, однако функции в коде не возвращают никакого значения (т. е. не записывают данные в блок). Я предполагаю, что это сводится к проблеме нехватки газа. Вопрос в том, как/где увеличить газ? Почему моей gasEstimate
правильной оценки недостаточно для выполнения контракта?
Если у кого-то была похожая проблема и он нашел решение, помогите.
Спасибо, Джейкоб
Ниже приведен формат, в котором написан код. Однако в нем гораздо больше функций получения и установки и используются еще 2 структуры. Около 20 переменных в каждой структуре. Код при вводе в компилятор Solidity показывает 20404 байта, а при создании использует 4689378 количества газа.
pragma solidity ^0.4.0;
contract ABC{
uint i;
uint rowCount = 0;
User userObj;
function ABC() {}
struct User{
uint rowCount;
string id;
string ABCData;
string DEFData;
......
......
......
around 20 variables.
}
mapping(uint => User) ABClist;
function setABCData(string uid,string ABCData,string DEFData,........) {
rowCount = rowCount + 1;
ABClist[rowCount].rowCount = rowCount;
ABClist[rowCount].id = uid;
ABClist[rowCount].ABCData = ABCData;
ABClist[rowCount].DEFData = DEFData;
...........
...........
...........
...........
}
function getABCData(string uid) constant returns ( string _id, string _ABCData, string _DEFData, ........)
{
uint rowNumber;
for(i = 0; i <=rowCount; i++){
if(stringsEqual(ABClist[i].id, uid) || stringsEqual(ABClist[i].ABCData, uid) || stringsEqual(ABClist[i].DEFData, uid)){
userObj.id = ABClist[i].id;
userObj.ABCData = ABClist[i].ABCData;
userObj.DEFData = ABClist[i].DEFData;
rowNumber = i;
}
}
return (userObj.id, userObj.ABCData, userObj.DEFData, rowNumber);
}
}
Бадр Беллай
Джейкоб
Джейкоб