Rückruffehler, wenn der Vertrag erfolgreich abgebaut wird

Ich erhalte heute eine Fehlermeldung, wenn ich versuche, einen Vertrag mit Ethereum Testnet zu minen. Selbst nachdem die Transaktion erfolgreich abgebaut wurde (ich kann das im Testnet überprüfen), führt der Rückruf den Code innerhalb des Fehlers aus.

Die Callback-Funktion in meinem Java-Skript wie folgt:

function mine_pContract(byteCode, abi, estimatedGas) {
console.log(abi);
var MyContract = web3.eth.contract(JSON.parse(abi));

var myContractReturned = MyContract.new({
    from: web3.eth.accounts[0],
    data: byteCode,
    gas:estimatedGas}, function(err, myContract) {
    if (err) {
        console.log("Error while mining the contract" + err)
    }
    else {
        if (!myContract) {
            console.log("Contract transaction sent. Transaction Hash" + myContract.transactionHash + "waiting to be mined");
        }
        else {
            if (myContract.address === undefined) {
                console.log("still mining. Transaction Hash= " + myContract.transactionHash)
            }
            else {
                console.log("Contract mined. Address" + myContract.address);
            }
        }
    }
  });
} 

Die Ausgabe ist: still mining. Transaktions-Hash = 0x859cbff73bf7da136f1b5402f1d9a7948608d6ef82c9e5f956db3e576fa5d720 main.js:262

Fehler beim Schürfen des VertragsError: Der Vertragscode konnte nicht gespeichert werden, bitte überprüfen Sie Ihre Gasmenge.

Aber es sollte die folgende Meldung Contract Mined anzeigen. Adresse: 0xxxxxxxx.

Jeder kann darauf hinweisen, wo das Problem ist?

Das offensichtliche Problem wäre, dass Sie nicht genug Benzin senden. Wie stellen Sie die Variable "stimatedGas" ein?
Ich übergebe nur einen Wert aus meinem HTML ... Ich habe es mit ziemlich hohen Beträgen versucht (600000 - 1000000). Es scheint kein Problem mit der Gasmenge zu sein. Die Transaktion wird erfolgreich abgebaut, wenn ich die Ropsten-Benutzeroberfläche ( ropsten.etherscan.io/tx/… ) nachverfolge . Aber im Callback gibt es vor dem Mining einen Fehler zurück. Der gleiche Code funktionierte tatsächlich schon einmal für mich (1 Woche). Ab heute funktioniert es nicht mehr. Liegt es an einer Netzwerkverzögerung oder an etwas anderem?
Können Sie die Konstruktorfunktion Ihres Vertrags teilen?
Es ist der einfachste Vertrag. Der Code lautet wie folgt: pragma solidity ^0.4.0; Vertrag Patient { string public swarmHashP = "76565ef4c1609f619e57f97956454b0b78c1e0b1067677f26839b3dc565‌​67a56465"; Funktion changeLocation (string _newSwarmHashP) { swarmHashP = _newSwarmHashP; } }

Antworten (1)

                contract = this.web3.eth.contract(abi);
                contract.new(Params.toString(), {
                    from: this.web3.eth.defaultAccount,
                    data: code,
                    gas: estimatedGas
                }, (error, contractInst) => {
                    if(error) {
                        console.log(error);
                    } else if(contractInst.address){
                        console.log(contractInst);
                    }
                });

So verwende ich den abgebauten Vertrag in meinem Dapp. Versuchen Sie, die Korrektur anhand meines Beispiels vorzunehmen, und hoffen Sie, dass es funktioniert.

Weitere Informationen finden Sie unter https://github.com/ethereum/wiki/wiki/JavaScript-API#web3ethcontract