Primers Passos amb Geth

Un client d’Ethereum és una aplicació de programari que implementa l’especificació d’Ethereum i es comunica a través de la xarxa peer-to-peer amb altres clients d’Ethereum. El client és la porta d’entrada per a començar a interactuar amb el teu node. Geth (Go-Ethereum) és la implementació de Go, el client majoritari i el protagonista de l’entrada d’avui.

El repte

El repte d’aquest mes consisteix en familiaritzar-nos amb les ordres més importants del client Geth, per a començar a interactuar amb el teu node d’Ethereum. Per a que l’exercici no sigui massa costós, crearem una blockchain privada. Això ens permetrà poder operar de manera fàcil, sense malgastar recursos ni ETHs reals.

El codi

Pre-requisits: tenir instal·lat Geth, el client Go d’Ethereum

Arxiu genesis.json

Primer de tot, anem a generar un parell d’adreces amb les que puguem interacturar:

cd ./ethereum
get account new
geth account list

A continuació creerem l’arxiu genesis (si no el tenim ja creat):

touch genesis.json

Dins de l’arxiu inclourem l’assignació de pre-minat en una de les adreces que hem creat:

{
"config": {
"chainId": 4566,
"homesteadBlock": 0,
"eip150Block": 0,
"eip155Block": 0,
"eip158Block": 0
},
"alloc" : {
"ADREÇA_ETH": {"balance": "10000000000000000"}
},
"difficulty" : "0x100",
"extraData" : "",
"gasLimit" : "0x888888888000000",
"parentHash" : "0x0000000000000000000000000000000000000000000000000000000000000000",
"timestamp" : "0x00"
}

Canvia ADREÇA_ETH per la teva adreça.

Inicialitzar la Blockchain Privada

Una vegada tenim l’arxiu genesis guardat, ja podem inicialitzar-lo i assignar l’adreça base (canvia ADREÇA_ETH per la teva adreça.) per a la minera, amb les següents ordres:

geth init genesis.json
geth --allow-insecure-unlock --datadir . --keystore ~/.ethereum/keystore --networkid 4569 --http --http.addr '0.0.0.0' --http.corsdomain "*" --http.port 8502 --http.api 'personal,eth,net,web3,txpool,miner' --mine --miner.etherbase=ADREÇA_ETH

A partir d’aquí, obrim una nova terminal per a seguir treballant des d’allà.

Interacció desde Web3

Primer de tot, connectarem la nova terminal 2 amb la instància de Geth corrent a la terminal 1 i mostrarem per pantalla totes les ordres disponibles des de web3:

geth attach geth.ipc
web3

Seguidament, comprovarem el saldo de les adreces que tenim creades. Concretament, podem consultar el saldo de l’adreça on hem assignat el pre-minat d’ETH a l’arxiu Genesis (en el meu cas, la 5):

eth.getBalance(eth.accounts[5])

A partir d’aquí ja podem desbloquejar l’adreça i realitzar una transacció a una altra de les adreces que tenim creades:

personal.unlockAccount(eth.accounts[5])
eth.sendTransaction({to: eth.accounts[4], from: eth.accounts[5], value: 10, gas: 3000000})

Per últim, iniciarem el procés de mineria, per a que la transacció s’inclogui en el pròxim bloc, i s’efectui l’actualització de l’estat de la blockchain i dels saldos:

miner.start(1)
eth.getTransaction("TX_HASH")
eth.getBlock(1)

Conclusions

Interactuar amb el teu node és un dels primers passos per a introduïr-te en el desenvolupament d’Ethereum. Per a fer-ho, és necessari elegir una de les implementacions (clients) disponilbles i instal·lar el programari.

A partir d’aquí, pots córrer tant la xarxa principal (“mainnet”) com les xarxes de tests, o crear la teva propia blockchain privada, com ha estat el cas d’avui.

Leave a comment