Después de implementar un contrato inteligente y saber que:
address = 0x20e4ac9385ea45919b9709c2b38d3190efa42ee4
ABI = [{
constant: false,
inputs: [],
name: "kill",
outputs: [],
payable: false,
type: "function"
}, {
constant: true,
inputs: [],
name: "greet",
outputs: [{...}],
payable: false,
type: "function"
}, {
inputs: [{...}],
type: "constructor"
}]
Quiero llamarlo, pero primero necesito instanciarlo en una var JS como esta:
var greeter = eth.contract([{ constant: false, inputs: [], name: "kill", outputs: [], payable: false, type: "function" }, { constant: true,inputs: [], name: "greet", outputs: [{...}], payable: false, type: "function" }, { inputs: [{...}], type: "constructor"}]).at("0x20e4ac9385ea45919b9709c2b38d3190efa42ee4");
pero arroja este error:
(anonymous): Line 1:179 Unexpected token . (and 9 more errors)
Parece un error de sintaxis, tal vez me perdí algo.
Creo que encontré cuál era el problema: falta de comillas dobles.
Al instanciar el contrato inteligente usando el ABI literal de https://ethereum.github.io/browser-solidity/ ¡todo funciona!
> var greeter = eth.contract([{"constant":false,"inputs":[],"name":"kill","outputs":[],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"greet","outputs":[{"name":"","type":"string"}],"payable":false,"type":"function"},{"inputs":[{"name":"_greeting","type":"string"}],"type":"constructor"}]).at("0x20e4ac9385ea45919b9709c2b38d3190efa42ee4");
> greeter.greet();
¡Gracias!
Edmundo Edgar
Juan Ignacio Pérez Sacristán
Edmundo Edgar
Juan Ignacio Pérez Sacristán