Crear una instancia de un contrato inteligente implementado

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.

¿Estás usando literalmente "[{...}]" para entradas y salidas? Parece que algo se colapsa cuando el objeto se convierte en una cadena.
Sí, literalmente. ¿Debería escapar o algo así?
¿De dónde sacaste esa salida? Si es su navegador, intente hacer clic en él para ver qué hay allí abajo.
Usé la consola geth

Respuestas (1)

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!