Der Vertrag wird gesendet und erhält eine Adresse, aber eth.getCode gibt 0x zurück

Ich versuche, einen Vertrag in einem privaten Blockchain-Netzwerk bereitzustellen. In meinem Solidity-Code werden viele Variablen verwendet. Die Bereitstellung gibt mir eine Vertragsadresse, aber wenn ich versuche, den Bytecode abzurufen eth.getCode()(indem die Vertragsadresse übergeben wird, die aus der Transaktionsquittung generiert wurde), gibt sie 0x.

Ich habe versucht, das Gaslimit im Solidity-Browser zu erhöhen und den Vertrag erstellt. Der Vertrag wird zwar erstellt, die Funktionen im Code geben jedoch keinen Wert zurück (dh es werden keine Daten in den Block geschrieben). Ich nehme an, das läuft auf das Problem des unzureichenden Gases hinaus. Die Frage ist, wie/wo erhöhe ich das Gas? Warum reicht meine gasEstimateAbgabe eines angemessenen Kostenvoranschlags nicht aus, um den Vertrag auszuführen?

Falls jemand ein ähnliches Problem hatte und eine Lösung dafür gefunden hat, bitte um Hilfe.

Danke, Jakob


Unten ist das Format angegeben, in dem der Code geschrieben ist. Es werden jedoch viel mehr Get- und Set-Funktionen und 2 weitere Strukturen verwendet. Etwa 20 Variablen in jeder Struktur. Der Code, wenn er in den Solidity-Compiler eingefügt wird, zeigt 20404 Bytes und verbraucht beim Erstellen 4689378 Gasmengen.

Solidity-Compiler-Screenshot

 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);
    }

    }
Bitte teilen Sie Ihren Code, wenn der Vertrag im Testnet oder Mainnet bereitgestellt wird, teilen Sie seinen Link
Habe meine Frage mit dem Codebeispiel bearbeitet.
Gibt es eine Möglichkeit, das Block Gas-Limit in einem privaten Blockchain-Netzwerk zu erhöhen?

Antworten (1)

Wenn Sie die Ethereum-Brieftasche verwenden, können Sie das Gas in dem Fenster erhöhen, das sich öffnet, wenn Sie auf Deploy drücken. Wenn Sie auf den blau unterstrichenen Text klicken, können Sie ihn eingeben

Der Schieberegler ändert den Gaspreis, nicht die Gasmenge