Desmitificando la Blockchain con Bcoin

En esta entrada intentaremos explicar como minar la Blockchain, concretamente con el software basado en Bcoin con el que podremos montar nuestra propia instancia Blockchain de Bitcoin (BTC) a modo de pool, y configurar nuestro minero para generar moneda

Bcoin es una implementación completa del programa oficial de Bitcoin en NodeJS, como sabéis este lenguaje permite asincronía de forma nativa, de esta manera se busca minar bloques de forma asíncrona para aprovechar al máximo los recursos de la máquina durante el minado

En el siguiente ejemplo se muestra como programar un minero simple con mempool y función de minado asíncrona

'use strict';

const bcoin = require('bcoin');

// Default network (so we can avoid passing
// the `network` option into every object below.)
bcoin.set('regtest');

// Start up a blockchain, mempool, and miner using in-memory
// databases (stored in a red-black tree instead of on-disk).
const blocks = bcoin.blockstore.create({
  memory: true
});
const chain = new bcoin.Chain({
  network: 'regtest',
  memory: true,
  blocks: blocks
});
const mempool = new bcoin.Mempool({
  chain: chain
});
const miner = new bcoin.Miner({
  chain: chain,
  mempool: mempool,

  // Make sure miner won't block the main thread.
  useWorkers: true
});

(async () => {
  // Open the chain
  await blocks.open();
  await chain.open();

  // Open the miner (initialize the databases, etc).
  // Miner will implicitly call `open` on mempool.
  await miner.open();

  // Create a Cpu miner job
  const job = await miner.createJob();

  // run miner
  const block = await job.mineAsync();

  // Add the block to the chain
  console.log('Adding %s to the blockchain.', block.rhash());
  console.log(block);
  await chain.add(block);
  console.log('Added block!');
})().catch((err) => {
  console.error(err.stack);
  process.exit(1);
});

minero

Si montamos Bcoin con la Blockchain completa necesitaremos espacio suficiente para bajarla en el disco, actualmente está en torno a los 500Gb de tamaño y si se indexan las direcciones y las transferencias necesitaremos un poco más de espacio

Como curiosidad este software permite minar más de una moneda, y es que el funcionamiento de la Blockchain es muy parecido entre las criptomonedas

Suerte con el minado ⛏️