Contract Greeter - Windows - Solidez del navegador

Actualmente estoy probando mi primer contrato en Ethereum pero nunca imaginé que sería tan difícil...
Seguí la guía aquí:

https://medium.com/ziggify/blockchain-stack-1-installing-ethereum-geth-and-your-first-smart-contract-7e9c4105e5eb

Pero no entiendo unas cosas... :( Como no tengo solC, uso el navegador solidity. Cuando copio el código Web3 en Geth

Éste :

var _greeting = /"Hello World"/ ;
var hello world_greeterContract = web3.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"}],"payable":false,"type":"constructor"}]);
var hello world_greeter = hello world_greeterContract.new(
   _greeting,
   {
     from: web3.eth.accounts[0], 
     data: '0x6060604052341561000c57fe5b6040516103ac3803806103ac833981016040528080518201919050505b5b33600060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b806001908051906020019061008292919061008a565b505b5061012f565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106100cb57805160ff19168380011785556100f9565b828001600101855582156100f9579182015b828111156100f85782518255916020019190600101906100dd565b5b509050610106919061010a565b5090565b61012c91905b80821115610128576000816000905550600101610110565b5090565b90565b61026e8061013e6000396000f30060606040526000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806341c0e1b514610046578063cfae321714610058575bfe5b341561004e57fe5b6100566100f1565b005b341561006057fe5b610068610185565b60405180806020018281038252838181518152602001915080519060200190808383600083146100b7575b8051825260208311156100b757602082019150602081019050602083039250610093565b505050905090810190601f1680156100e35780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b600060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141561018257600060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16ff5b5b565b61018d61022e565b60018054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156102235780601f106101f857610100808354040283529160200191610223565b820191906000526020600020905b81548152906001019060200180831161020657829003601f168201915b505050505090505b90565b6020604051908101604052806000815250905600a165627a7a723058208695872d7606c3275627d368d0f725b78862809aac0616b576a51d565efc1d1c0029', 
     gas: '4700000'
   }, function (e, contract){
    console.log(e, contract);
    if (typeof contract.address !== 'undefined') {
         console.log('Contract mined! address: ' + contract.address + ' transactionHash: ' + contract.transactionHash);
    }
 })

Y éste :

var hello world_mortalContract = web3.eth.contract([{"constant":false,"inputs":[],"name":"kill","outputs":[],"payable":false,"type":"function"},{"inputs":[],"payable":false,"type":"constructor"}]);
var hello world_mortal = hello world_mortalContract.new(
   {
     from: web3.eth.accounts[0], 
     data: '0x6060604052341561000c57fe5b5b33600060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b5b6101088061005f6000396000f30060606040526000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806341c0e1b514603a575bfe5b3415604157fe5b60476049565b005b600060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141560d957600060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16ff5b5b5600a165627a7a72305820d438d032342c88b4259801b5769aed2e2e221aa8058b7efd4f39112ee8b73b3f0029', 
     gas: '4700000'
   }, function (e, contract){
    console.log(e, contract);
    if (typeof contract.address !== 'undefined') {
         console.log('Contract mined! address: ' + contract.address + ' transactionHash: ' + contract.transactionHash);
    }
 })

Recibí estos 2 mensajes de error:

>
>
undefined
>
(anonymous): Line 1:11 Unexpected identifier (and 1 more errors)
>
...
...
......
......
......
......
......
......
.........
.........
......  })
(anonymous): Line 1:11 Unexpected identifier (and 7 more errors)
>
...
......
......
......
......
......
......
.........
.........
......  })
(anonymous): Line 1:11 Unexpected identifier (and 4 more errors)

Estoy completamente perdido, ya pasé medio día leyendo la guía y otro tutorial sobre el mismo contrato, pero nadie explica cómo resolver este problema :( Cada vez, parece que alguien usa un método ligeramente diferente... ¡Me vuelve loco!

Además, ¿alguien sabe la forma correcta de aprender sobre el contrato inteligente y cómo usarlo? Tengo una cadena de bloques privada con 1 nodo estático y 3 nodos.

Muchísimas gracias :)

Respuestas (1)

Bienvenido a Ethereum, un mundo de dragones y herramientas que supera constantemente cualquier documentación.

Te sugiero que comiences a jugar con contratos inteligentes (por ejemplo, el saludo) solo en el navegador usando Remix . Puede copiar y pegar el ejemplo de saludo en el editor del navegador y jugar con su contrato inteligente allí. Todo solo se ejecutará en su navegador, pero ya se comportará de la misma manera que una cadena de bloques "real".

Si está listo para ingresar a una cadena de bloques pública "real", necesita Ether para enviar cualquier transacción (usted paga algo llamado "gasolina" como tarifa de transacción). Una vez que compró algo de Ethere o recibió algo de un amigo y realmente desea ingresar a la cadena principal pública e interactuar con él a través de geth, primero debe crear una cuenta en la consola geth JS a través de web3.personal.newAccount. A continuación, puede verificar si funcionó web3.eth.accountsy copiar y pegar la dirección en un explorador de blockchain como etherscan.io y ver su saldo. También puedes transferirte algo de Ether para ponerte en marcha. Solo entonces puede usar el código de implementación (para llevar ese contrato a la cadena principal de Ethereum) como se describe en el ejemplo que encontró.

Hola ! Gracias por su respuesta ! :) Ya implementé con éxito una cadena de bloques privada con 4 nodos, envié ether entre ellos, verifiqué su saldo, desbloqueé la cuenta ^^ Es por eso que estoy tratando de implementar el contrato más básico, pero parece que es más difícil que eso. aspecto... :(