Erhalten einer ungültigen Adresse oder ungültiger Parameter bei der Bereitstellung eines neuen Vertrags im Testnetzwerk mit Parity

Ich versuche, einen neuen Vertrag im Internet bereitzustellen, und ich erhalte zwei Fehler, je nachdem, wie genau ich es mache. Da ich keinen ABI-Kompilierungsvertrag auf Parity bekommen kann, benutze ich solc --abiihn, um ihn zu bekommen. Jetzt, je nachdem, ob ich kompilierten Code verwende oder ihn auf Parität kompiliere, erhalte ich einen von zwei folgenden Fehlern:

..node_modules/web3/lib/web3/formatters.js:271
throw new Error('invalid address');

Fehler: ungültige Adresse - (bei der Vertragserstellung mit web3 auf Parity)

oder

Fehler: Ungültige Parameter - (bei Verwendung eines mit solc kompilierten Vertrags)

Irgendwelche Ideen, was ich falsch mache? Hier ist der Code:

var Web3 = require("web3");
var web3 = new Web3(new Web3.providers.HttpProvider("http://localhost:8545"));

web3.eth.defaultAccount=web3.eth.accounts[0]

var source = "" +
"contract test {\n" +
"   function multiply(uint a) returns(uint d) {\n" +
"       return a * 7;\n" +
"   }\n" +
"}\n";
//var compiled = web3.eth.compile.solidity(source);

var compiled = 0x606060405260788060106000396000f360606040526000357c010000000000000000000000000000000000000000000000000000000090048063c6888fa1146039576035565b6002565b34600257605160048080359060200190919050506067565b6040518082815260200191505060405180910390f35b60006007820290506073565b91905056;

console.log(compiled);

var abi = [{"constant":true,"inputs":[{"name":"a","type":"uint256"}],"name":"multiply","outputs":[{"name":"d","type":"uint256"}],"payable":false,"type":"function"}]

web3.eth.contract(abi).new({data: compiled}, function (err, contract) {
    if(err) {
        console.error(err);
        return;
        // callback fires twice, we only want the second call when the contract is deployed
    } else if(contract.address){
        var myContract = contract;
        console.log('address: ' + myContract.address);
    }
});

Es ist erwähnenswert, dass der Aufruf:

web3.eth.compile.solidity(source);

gibt:

0x606060405260308060106000396000f3606060405260e060020a6000350463c6888fa18114601c575b6002565b346002576007600435026060908150f3209

während solc --bingibt:

0x606060405260788060106000396000f360606040526000357c010000000000000000000000000000000000000000000000000000000090048063c6888fa1146039576035565b6002565b34600257605160048080359060200190919050506067565b6040518082815260200191505060405180910390f35b60006007820290506073565b91905056

Sollten sie nicht dasselbe Ergebnis liefern?

Sie brauchen die Zeilenumbrüche in der Quelle nicht. Es ist eigentlich besser, sie wegzulassen
Das Problem ist auch, dass Sie den Bytecode in Anführungszeichen setzen müssen. dh var kompiliert = "0x6060 ....."
@TjadenHess hat beides versucht und jetzt bekomme ich Fehler: ungültige Adresse in beiden Fällen. Auf formatters.js geworfen
Oh, das liegt daran, dass Sie im Aufruf ein from: Feld im tx-Objekt benötigen. newEinfach from:eth.coinbasevor das Datenfeld setzen.
@TjadenHess hinzugefügt von: web3.eth.accounts[0] und immer noch dasselbe Problem.

Antworten (1)

Es gab einen Fehler in Parity 1.3.0. Nach dem Update auf 1.3.2 funktioniert es einwandfrei.

Mehr Details hier

Ausgabe noch am 2.1.1