Actualmente estoy probando mi primer contrato en Ethereum pero nunca imaginé que sería tan difícil...
Seguí la guía aquí:
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 :)
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.accounts
y 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ó.
Asord