Kein Gas-Fehler auf TesRPC

Hey, ich habe nur mit Trüffel herumgespielt und bekomme immer wieder einen Gasfehler, wenn ich die Befehle nach einem bestimmten Punkt ausprobiere. Auch wenn ich testrpc deinstalliere und neu installiere, bleibt das Problem bestehen.

Ich entschuldige mich für die Code-Formatierungsprobleme.

Denken Sie daran, alles, was ich tun möchte, ist, einfach unbegrenzt Gas in meiner Testumgebung zu haben.

Hier ist mein Code `

  contract Organization {



 struct Proposal {
   uint code;
   uint amount;
  string description;
  uint numberOfVotes;
  string name;
}

Proposal[] public proposals;
uint public numberOfProposals;


 event ProposalAdded(uint code, uint amount, string description, int 
 numberOfVotes , string name);


 function addProposal(uint amount, string description , string name) 
 returns (uint) {

proposals.push(Proposal(numberOfProposals,amount,description,0,name));
ProposalAdded(numberOfProposals,amount,description, 0, name);
numberOfProposals++;
return numberOfProposals;

}



 function proposalExists (uint code) returns (bool) {
   for(uint i = 0; i < proposals.length; i++) {
     if (proposals[i].code == code) {
        return true;
      }
    }
     return false;
 }

function numOfProposals() returns (uint){
    return numberOfProposals;
  }

function getProposalName(uint index) returns (string){
    return proposals[index].name;
}

function getProposalDescription(uint index) returns (string){
    return proposals[index].description;
}

function getProposalIndex(string name) returns (uint){
  for(uint i = 0; i < proposals.length; i++) {
      bytes memory a = bytes(proposals[i].name);
      bytes memory b = bytes(name);
    if (a.length == b.length) {
        return i;
    }
  }
  return 1000000;
}

function voteFotProposal(uint index) {
    proposals[index].numberOfVotes++;
  }

function getProposalVotesIndex(uint index) {
    proposals[index].numberOfVotes;
  }


struct Memmber {
  uint id;
  string name;
}

struct Commitee {
  uint id;
  string name;
  string missionStatement;
  uint balance;
  string [] memmbers;
}

event MemmberAdded(uint id, string name);
event CommiteeCreated(string name,string missionStatement );

string [] public memmbersArray;
string[] public comitees;
uint public numOfComitees = 0;
uint public numOfTotalMemmbers = 0;
Commitee [] fullComitees;




  function convertMemmberStrings (bytes32 [] values) internal returns 
  (string []){

        for(uint i=0;i<values.length;i++){
            MemmberAdded(numOfTotalMemmbers, 
            bytes32ToString(values[i]));
            memmbersArray.push(bytes32ToString(values[i]));
            numOfTotalMemmbers++;
    }
    return memmbersArray;
}


function addCommitee 
(string name, string missionStatement , uint funds, bytes32 [] values)
returns (string)
{
  comitees.push(name);
  CommiteeCreated(name,missionStatement );
  fullComitees.push(Commitee(numOfComitees, name, missionStatement, funds, convertMemmberStrings(values)));
  numOfComitees++;
  return name;
}

function getComitees (uint index) returns (string){
  return comitees[index];
}

function numberOfCommitees () returns (uint){
  return numOfComitees;
}

 function bytes32ToString(bytes32 x) constant returns (string) {
    bytes memory bytesString = new bytes(32);
    uint charCount = 0;
    for (uint j = 0; j < 32; j++) {
      byte char = byte(bytes32(uint(x) * 2 ** (8 * j)));
      if (char != 0) {
        bytesString[charCount] = char;
        charCount++;
     }
 }
bytes memory bytesStringTrimmed = new bytes(charCount);
for (j = 0; j < charCount; j++) {
    bytesStringTrimmed[j] = bytesString[j];
}
return string(bytesStringTrimmed);
}

 function uintToBytes(uint v) constant returns (bytes32 ret) {
    if (v == 0) {
      ret = '0';
   }
   else {
    while (v > 0) {
        ret = bytes32(uint(ret) / (2 ** 8));
        ret |= bytes32(((v % 10) + 48) * 2 ** (8 * 31));
        v /= 10;
    }
 }
 return ret;
}


}

`

Wie läuft testrpc?
einfach über den Befehl testrpc

Antworten (3)

Sie können das Gaslimit des Blocks erhöhen, indem Sie testrpc mit einem höheren Limit starten

testrpc -l 450000000000

https://github.com/trufflesuite/ganache-cli/releases/tag/v3.0.0

TestRPC 3.0.0 Breaking Changes: Das Standardgaslimit für Transaktionen beträgt jetzt 90000 Gas anstelle des vollen Blockgaslimits.

Um diese neuen Gasfehler zu vermeiden, können Sie jetzt eine höhere Gasgrenze als Parameter an web3 übergeben:

web3.eth.sendTransaction({..., gas: 3141592}) // choose your own gas limit suitable for you

Ich stand vor den gleichen Fehlern. Saiten sehr teuer im EVM. Probieren Sie Bytes aus oder versuchen Sie, Zeichenfolgen zu vermeiden. Ich hatte ähnliche Probleme mit meiner dApp und Smart Contract. Ich habe alle Saiten entfernt (also neu gestaltet) und jetzt funktioniert alles einwandfrei. Auch Ihre Veranstaltungen erfordern viele Parameter und erfordern daher viel Gas. Kommentieren Sie Ihre Ereignisaufrufe aus und versuchen Sie Ihre Funktionen erneut. Testrpc hat ein Limit für die Menge an Gas, die Sie bei jeder Transaktion geben können. Versuchen Sie also, Ihre Befehle in mehreren Transaktionen auszuführen. Verwenden Sie den Remix-Online-Compiler, um zu sehen, ob Ihre Funktionen korrekt funktionieren. Das ermöglicht unbegrenztes Gas.