Estoy tratando de descubrir cómo implementar un contrato con web3 en la versión 1.0.0-beta.11, y no sé si tengo un error en web3, un problema de incompatibilidad con la versión de solc I' estoy usando, o si simplemente estoy haciendo algo mal.
Estoy usando la última versión de solc lanzada en NPM: 0.4.13. Estoy tratando de implementar el siguiente contrato:
contract Greetings {
string message;
function Greetings() {
message = "I am ready!";
}
function setGreetings(string _message) public {
message = _message;
}
function getGreetings() constant returns (string) {
return message;
}
}
con la siguiente serie de instrucciones ejecutadas en una consola de nodo:
sourceCode = fs.readFileSync('Greetings.sol').toString()
compiledCode = solc.compile(sourceCode)
contractABI = JSON.parse(compiledCode.contracts[':Greetings'].interface)
[ { constant: false,
inputs: [ [Object] ],
name: ‘setGreetings’,
outputs: [],
payable: false,
type: ‘function’,
signature: ‘0x49da5de4’ },
{ constant: true,
inputs: [],
name: ‘getGreetings’,
outputs: [ [Object] ],
payable: false,
type: ‘function’,
signature: ‘0xca4c3a41’ },
{ inputs: [],
payable: false,
type: ‘constructor’,
signature: ‘constructor’ } ]
contract = new web3.eth.Contract(contractABI)
byteCode = compiledCode.contracts[':Greetings'].bytecode
contract.deploy({data: byteCode, arguments:[]}).send({from: '0x00D1AE0A6fC13B9ecdefA118B94cF95ac16D4ab0', gas: 4700000}).on('error', function(error){console.error(error);}).then(function(newContractInstance){console.log(newContractInstance.options.address)})
y allí, en el último, recibo el siguiente error críptico:
TypeError: Cannot read property 'length' of undefined
at /Users/jdoe/myproject/node_modules/web3/packages/web3-eth-contract/src/index.js:356:43
¿alguna idea de lo que estoy haciendo mal?
Parece que #948 te está mordiendo . También vea esta otra pregunta . Debería resolverse en -beta.12
, aparentemente
DeviatePez
contractABI
a partir de la cuarta línea?Sebastián
DeviatePez
prasana