Ich versuche derzeit, mein Wissen in Calls auf niedrigerem Niveau wie DELEGATECALL weiterzuentwickeln.
Ich stoße ständig darauf, wenn ich versuche, .delegatecall() zu verwenden:
RunTime Error: out of gas
Gas Usage: 0xe07e44(Decimal = 14712388)
DelegateCall-Vertrag:
pragma solidity ^0.4.4;
import "delegateReceiever.sol";
contract delegateCall{
uint public testInt;
address public sender;
function delegateCall(){
testInt = 1;
}
function delegateCallC(address _c, uint _testInt){
if(_c.delegatecall(bytes4(sha3("setTestInt(uint")),_testInt ))
throw;
}
}
DelegateReceiver-Vertrag:
pragma solidity ^0.4.4;
contract delegateReceiever{
uint public testInt;
function delegateReceiever(){
testInt = 2;
}
function setTestInt(uint _testInt){
testInt = _testInt;
}
}
Bearbeiteter Trüffeleinsatz, um das Gas wie folgt zu erhöhen:
deployer.deploy(contract,{gas:114712388})
Anfangskontostand von testrpc geändert auf:
1e+167
Bearbeitete truffle.js-Datei, um Gas einzuschließen:
rpc:{
host: "localhost",
port: 8545,
gas: 114712388
}
Gibt es eine andere Methode, um sicherzustellen, dass das Gas nicht ausgeht? Gibt es zum Beispiel einen Entwicklerparameter, der kein Gas etc. benötigt?
delegatecall
Renditen true
auf Erfolg, so
if(_c.delegatecall(bytes4(sha3("setTestInt(uint")),_testInt ))
throw
wird ausgelöst, wenn der Anruf erfolgreich ist.
Versuchen
if(!_c.delegatecall(bytes4(sha3("setTestInt(uint")),_testInt ))
Miguel Mota
"setTestInt(uint"
absichtlich eine schließende Klammer?