OroyFinanzas.com – 05/11/2017 – ¿Usted quiere entender que es Bitcoin? Pues antes debe entender que es la blockchain
La “blockchain” (cadena de bloques) es una base de datos de transacciones en la red de Bitcoin compartida por todos los nodos (los ordenadores que participan en la red) participantes en un sistema basado en el protocolo Bitcoin.
¿Por qué es importante la blockchain (cadena de bloques)?
Cuando compramos algo en una tienda hay un intercambio físico entre el cliente y la tienda. La tienda se queda con un billete o monedas de euro y el cliente se va con un producto. Ese dinero que le damos al vendedor solo existe en un único lugar: o en nuestro monedero o en la caja registradora del vendedor. No puede existir en los dos sitios al mismo tiempo. No hay forma de que nosotros podamos gastar ese mismo billete más de una vez. El dinero físico por lo tanto no puede ser gastado más de una vez por la misma persona, a no ser que de un servicio o producto a cambio.
Los sistemas contables como los de los bancos emulan esa misma operativa. Antes de poder retirar dinero de un cajero, el sistema del banco comprueba el estado de la cuenta. En el momento que se retira dinero, de forma inmediata se actualiza el estado de la cuenta. Eso ocurre de forma instantánea porque el banco no se quiere arriesgar a que vayamos de nuevo al cajero para retirar dinero que en realidad ya no tenemos. La actualización en tiempo real del sistema previene el doble gasto de nuestra cuenta corriente. El banco tiene el poder central de actualizar los estados de las cuentas en este sistema.
En la red Bitcoin no existe ningún banco o nadie con la autoridad de ajustar los extractos. No hay una autoridad central. Los estados reales de las cuentas se determinan por el consenso del trabajo computacional de los mineros. El poder de procesamiento computacional va creando la blockchain.
Cuando se hace una transacción y esa transacción es retransmitida a toda la red, la existencia y veracidad de esa transacción todavía no está confirmada. Con la estructura descentralizada de Bitcoin, la existencia de esa transacción se confirma cuando es incluida en la blockchain y se crean nuevos bloques encima del bloque en la que está confirmada la transacción que hemos realizado.
En cualquier momento podría haber dos o más bloques al mismo nivel compitiendo por procesar la misma transacción y convertirse en el próximo bloque de la blockchain. Algunos de los bloques acabarán siendo “huérfanos” y solo uno será el “verdadero” al conseguir crecer con más bloques. La estructura del sistema asume como “verdaderos” aquellos bloques de la cadena más larga cuando tenga 5 o más bloques encima del mismo. Un bloque que se haya extendido con 5 bloques más mostrará un total de seis confirmaciones.
Una bolsa de cambio (Bitcoin exchange) no se puede exponer al riesgo del doble gasto. Por eso solo puede transferir los bitcoins a la cuenta de un cliente cuando se haya confirmado como “verdadera” y, es precisamente por eso, que ignorará los bloques hasta que no sean parte de la cadena más larga y tengan más de seis confirmaciones.
¿Cómo funciona la blockchain en Bitcoin?
Una copia completa de la blockchain contiene todas las transacciones ejecutadas en la divisa y con esa información uno puede saber qué valor ha sido propiedad de cualquier dirección (esto es una dirección Bitcoin: 31uEbMgunupShBVTewXjtqbBv5MndwfXhb) en cualquier momento desde la existencia de la base de datos.
Vídeo que explica qué es el “transaction blockchain” en inglés:
Cada bloque contiene un hash (un código) del bloque anterior. Eso permite crear una cadena de bloques desde el bloque génesis (el primer bloque de la cadena) hasta el bloque actual. Todos los bloques van en un orden cronológico porque si no se desconocería el hash del bloque anterior. Esta característica dificulta el gasto doble de bitcoins ya que sería poco práctico modificar toda la blockchain después de que haya pasado un tiempo porque se tendrían que modificar todos los bloques anteriores.
Generadores honestos solo construyen sobre los bloques que forman parte de la cadena válida más larga. La longitud de una cadena se calcula por la dificultad combinada de la cadena y no por el número de bloques. Esta diferenciación es importante en caso de ataques al sistema. Una cadena es válida si todos los bloques y las transacciones que forman parte de los bloques son válidos y sólo si comienza por el génesis block.
Vídeo explicativo sobre los componentes de un bloque de transacciones en Bitcoin:
Para cualquier bloque de la cadena solo hay un camino al génesis block. Pero desde el génesis block puede haber bifurcaciones (forks en inglés) que se crean cuando dos bloques son creados con solo unos pocos segundos de diferencia. Cuando pasa eso, los nodos siguen construyendo la cadena sobre el bloque que hayan recibido primero.
Los bloques de cadenas más cortas no validas no se utilizan para nada. Cuando un cliente Bitcoin (por ejemplo un monedero o wallet) cambia a una cadena más larga, todas las transacciones que forman parte de la cadena corta se reagrupan en las transacciones pendientes y se incluyen en otro bloque. La recompensa para los bloques en la cadena más corta no estarán en la cadena más larga, por lo que estarán perdidos, que es la razón por la que la red obliga un tiempo de maduración de 100 bloques para la generación. El tiempo de maduración de un bloque solo aplica para los bloques nuevos generados por los mineros generadores de bloques Bitcoin y son una medida de seguridad para evitar el doble uso de bitcoins. Eso significa para el minero que no podrá gastar o pagar con sus bitcoins generados hasta que su bloque esté a 101 bloques del más reciente que se haya generado.
Los bloques en cadenas cortas se suelen denominar bloques huérfanos (en inglés “orphan”). Eso es porque las transacciones de generación no tienen un bloque paterno en la cadena más larga. Esas transacciones aparecen como huérfanos en la lista de transacciones del RPC call.
Como un bloque solo puede estar referenciado con un bloque anterior es imposible que se fusionen dos cadenas de bloques bifurcados.