Estoy tratando de implementar un nuevo contrato en la red y obtengo dos errores dependiendo de cómo lo haga exactamente. Como no puedo obtener el contrato de compilación ABI en Parity, lo uso solc --abi
para obtenerlo. Ahora, dependiendo de si uso código compilado o lo compilo en Parity, obtengo uno de los dos errores siguientes:
..node_modules/web3/lib/web3/formatters.js:271
arroja un nuevo error ('dirección no válida');Error: dirección no válida - (al compilar el contrato con web3 en Parity)
o
Error: Parámetros no válidos - (al usar un contrato compilado con solc)
¿Alguna idea de lo que estoy haciendo mal? Aquí está el código:
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);
}
});
Vale la pena señalar que llamar:
web3.eth.compile.solidity(source);
da:
0x606060405260308060106000396000f3606060405260e060020a6000350463c6888fa18114601c575b6002565b346002576007600435026060908152302091526020
mientras solc --bin
da:
0x606060405260788060106000396000f360606040526000357c010000000000000000000000000000000000000000000000000000000090048063c6888fa1146039576035565b6002565b34600257605160048080359060200190919050506067565b6040518082815260200191505060405180910390f35b60006007820290506073565b91905056
¿No deberían dar el mismo resultado?
Hubo un error en Parity 1.3.0. Después de actualizar a 1.3.2 funciona bien.
Más detalles aquí
tjaden hess
tjaden hess
wonglik
tjaden hess
from:
campo en el objeto tx en lanew
llamada. Solo ponlofrom:eth.coinbase
antes del campo de datos.wonglik