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 --abi
ihn, 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 --bin
gibt:
0x606060405260788060106000396000f360606040526000357c010000000000000000000000000000000000000000000000000000000090048063c6888fa1146039576035565b6002565b34600257605160048080359060200190919050506067565b6040518082815260200191505060405180910390f35b60006007820290506073565b91905056
Sollten sie nicht dasselbe Ergebnis liefern?
Es gab einen Fehler in Parity 1.3.0. Nach dem Update auf 1.3.2 funktioniert es einwandfrei.
Mehr Details hier
Tjaden Hess
Tjaden Hess
woglik
Tjaden Hess
from:
Feld im tx-Objekt benötigen.new
Einfachfrom:eth.coinbase
vor das Datenfeld setzen.woglik