Construcció d’una API que exposa mètodes RPC de Bitcoin

Si tenim algun node de Bitcoin, tant si està connectat a la Testnet, com a la Mainnet, resulta útil de visualitzar certs paràmetres que ens informin sobre la xarxa, el node, els blocs, etc.

El repte

El repte d’aquest mes consisteix en crear la nostra pròpia API per a servir els diferents mètodes RPC de Bitcoin, així com mostrar a l’usuari les mètriques obtingudes a temps real (actualitzant cada 5 segons). Per a assolir aquest objectiu, s’haurà d’abordar 3 aspectes diferents:

  • Configurar correctament bitcoin.conf, per a definir la connexió RPC.
  • Crear el servidor amb les rutes necessàries, així com la connexió RPC amb bitcoin daemon.
  • Crear un client que consumeixi les dades i les mostri per pantalla, amb un disseny senzill.

El codi

Repositori: l’última versió del codi del projecte la pots trobar en aquest repositori. Tingues en compte que el codi es va actualitzant per afegir-hi millores.

Dependències rellevants: express

Pre-requisits: haver instal·lat Bitcoin Core, des de la web oficial.

Configura bitcoind

Si no el tens ja creat, crea el fitxer bitcoin.conf, dins de la carpeta oculta home/.bitcoin. Si tens dubtes de com fer-ho, pots seguir l’entrada Personalitza Bitcoin Core amb l’arxiu Bitcoin.conf, on ho explico.

En el cas que ens ocupa avui, introduïrem la següent configuració:

testnet=1
rpcuser=bitcoinuser
rpcpassword=bitcoinpassword

Bàsicament seleccionarem que volem córrer la xarxa de tests, i introduïrem unes credencials arbitràries, per a fer la connexió RPC amb el servidor.

Fés córrer bitcoind

Una vegada tinguem l’arxiu bitcoin.conf guardat, obrirem una terminal dins la localització del projecte bitcoin:

cd Descargas/Bitcoin-XXX/bin

I farem córrer bitcoind. A la terminal podràs veure com a l’inici, se’ns carrega la configuració de l’arxiu que acabem de definir (testnet, usuari RPC i contrasenya RPC).

bitcoind

Blog - Bitcoind

Crea el servidor amb Express

Deixarem que bitcoind vagi corrent, i obrirem una nova terminal per a crear un nou projecte a l’ubicació on desitjem. Aquest projecte tindrà dues carpetes, la de l’API i la del frontend. Ara ens ocuparem de la primera.

mkdir bitcoin-cat
cd bitcoin-cat
mkdir bitcoin-api
mkdir bitcoin-frontend
cd bitcoin-api
npm init

Amb això inicialitzarem un projecte de Node, i introduïrem el nom del projecte, autor, etc. si ho desitjem, si no, simplement prém ENTER per a deixar-ho en blanc.

A continuació instal·larem les dependències que necessitem:

npm i express request dotenv
npm i -D nodemon morgan

Crearem un servidor amb touch server.js i inclourem els següents middlewares (consulta el repositori pel codi complet):

app.use(express.json());
app.use(express.urlencoded({ extended: true }));
app.use(morgan("dev"))
app.use(errorHandler);
app.use("/api", rpcMethods);

Disseny del client

Finalment, crearem un frontend senzill amb React, on farem sol·licituds periòdiques cada 5 segons, a la nostra API, i mostrarem per pantalla els resultats.

cd bitcoin-frontend
npx create-react-app .

Conclusions

Fer un registrador és més senzill del que et pots imaginar. Si vols minimitzar el fet d’incloure paquets externs en el teu projecte, pots crear-ne un de manera fàcil i senzilla, personalitzant-lo a conveniència.

Leave a comment