La tecnología blockchain tal vez es una de las innovaciones más grandes de la última década. Probablemente uno de los mejores adelantos tecnológicos desde el Internet mismo.
Imagina que hacemos una apuesta, por ejemplo, $50 dólares al resultado de un partido de playoffs de la NBA. Si gana mi equipo favorito, me pagarás $50 y por el contrario, si gana tu equipo favorito yo te pagaré $50.
¿Cómo podemos manejar el cumplimiento de esta transacción? Al día de hoy tenemos tres opciones:
- Podemos confiar en que ambas partes honraremos el trato y que una vez conocido el resultado, ejecutaremos la transacción conforme a lo acordado. Si somos amigos, se supondría que no deberíamos desconfiar en que la apuesta se pague, sin embargo no hay nada que nos asegure esto.
- Podríamos declarar por escrito los términos de la apuesta y convertirla en un contrato. De esta manera existiría prueba física del acuerdo celebrado, sin embargo, los costos relacionados a una disputa legal se vuelven poco prácticos para el caso de nuestra apuesta de $50.
- Podemos agregar a una tercera parte neutral, cada quien darle $50 y al final, según el resultado del partido, el ganador recibe el total del dinero. Pero una vez más nos topamos con el problema de la confianza ya que nada nos garantiza que la tercera parte va a entregar el dinero.
La confianza y los contratos no son soluciones óptimas, como lo pudimos ver. No podemos confiar instantáneamente en extraños y una disputa de un contrato convencional podría tener costos elevados en tiempo y dinero. Aquí es donde entra a escena la tecnología blockchain, que intenta resolver problemáticas similares a nuestro ejemplo, en donde necesitamos acuerdos entre partes que no necesariamente confían entre sí.
Con ayuda de la tecnología de blockchain se puede escribir un programa que tome los fondos de ambas partes y al final del partido consulte el resultado en fuentes diversas. Después, dependiendo del resultado, se transferirán los fondos, de forma automática, al ganador. Cada una de las partes puede revisar la lógica que seguirá el programa y una vez que éste se encuentre dentro del blockchain, no podrá ser modificado o detenido. Lo anterior suena demasiado para una apuesta deportiva pero no tanto si hablamos de vender una casa o un auto.
Bitcoin
La aplicación más conocida de la tecnología blockchain es Bitcoin; una moneda digital que puede utilizarse para el intercambio de bienes y servicios justo como el dólar estadounidense, el euro o la libra esterlina, con la particularidad de que Bitcoin no necesita de un banco central para legitimar las transacciones. Al igual que las monedas antes mencionadas, un bitcoin (BTC) no tiene valor por sí mismo, el valor que tiene se lo asignamos nosotros al comprar y vender con el objetivo de tener más unidades de la moneda bajo nuestro control, confiando en que otros harán lo mismo.
Para llevar registro de quién tiene cuál bitcoin, el blockchain de Bitcoin usa un libro, ledger en inglés, que contiene información de todas las transacciones que se han llevado a cabo.
El ledger como tal no se encuentra guardado en el servidor de alguna organización centralizada (p.ej. un banco o un gobierno), sino que múltiples copias se encuentran guardadas en cada uno de los nodos de la red de Bitcoin. Entiéndase como nodo a cualquier computadora conectada a dicha red con el objetivo de almacenar el ledger y realizar cálculos.
Si, por ejemplo, David quiere enviar 5 BTC a Alexandria, debe emitir un mensaje a la red a través de alguno de los nodos. En el mensaje se deberá declarar que su saldo de BTC debe disminuir en 5, mientras que el saldo de Alexandria debe aumentar en la misma cantidad. Todos los nodos de la red recibirán el mensaje y aplicarán la transacción sobre sus copias individuales del ledger.
El hecho de que el ledger sea mantenido por un grupo de computadoras conectadas en lugar de una sola entidad central tiene como consecuencia algunos puntos relevantes:
- En la banca convencional, usualmente nuestra historia de transacciones sólo es visible por nosotros y por gente autorizada dentro del banco. En el blockchain de Bitcoin, todos pueden ver las transacciones de todos.
- Por la naturaleza distribuida de la red, si algo sale mal, no hay una entidad u organización a quien hacer directamente responsable.
- Un blockchain está diseñado de tal forma que el factor de la confianza no sea necesario, la seguridad y confiabilidad vienen dadas por matemáticas y código.
Podríamos definir un blockchain como un sistema que permite a un grupo de computadoras, conectadas entre sí, mantener un ledger actualizado. Para ejecutar transacciones en el blockchain se necesita un wallet, es decir un programa que nos permite almacenar y gastar bitcoin. Como medida de protección, para que solo el poseedor del wallet pueda gastar el saldo en bitcoin, se implementa una técnica criptográfica llamada cifrado asimétrico; en el que se tienen un par de llaves (secretos o contraseñas) distintas pero que guardan una relación especial, a una se le llama llave pública y a la otra llave privada.
Si un mensaje es encriptado con una llave pública en específico, solamente el poseedor de su llave privada correspondiente podrá desencriptar y leer el mensaje. Lo inverso también es verdadero, si se encripta con la llave privada, sólo la llave pública podrá desencriptar. Si David quiere disponer de los bitcoin que están almacenados en su wallet, deberá enviar un mensaje a la red de Bitcoin cifrado con su llave privada, ya que únicamente él conoce esta llave, necesaria para desbloquear su wallet y por lo tanto gastar los bitcoin que contiene.
Cuando se encripta una solicitud de transacción (transaction request) con la llave privada de alguien, se genera una firma digital que le sirve a las computadoras que forman el blockchain para verificar la autenticidad del emisor. Esta firma digital es única por transacción ya que es resultado del contenido de la solicitud más la llave privada. Si se cambia una sola letra o dígito de la solicitud, se tiene una firma diferente.
Para enviar bitcoin es necesario probar que se posee la llave privada del wallet de donde se quiere gastar. Como el mensaje sale encriptado desde su origen nunca hay necesidad de revelar la llave privada a terceros.
Contabilización del saldo
El blockchain de Bitcoin no almacena el saldo actual de cada wallet en ninguna parte del ledger; sólo mantiene registro de todas las transacciones que se llevan a cabo dentro de la red. Para determinar el saldo restante de un wallet, se tienen que analizar y verificar todas las transacciones realizadas en las que dicho wallet está relacionado.
La verificación del saldo se realiza por medio de enlaces a las transacciones pasadas. Poseer una cantidad de bitcoin dentro de un wallet significa que hay transacciones en el ledger de Bitcoin que no han sido utilizadas como entradas (inputs) para otra transacción. Existe un mecanismo de verificación en el software que se ejecuta en cada nodo de la red que se encarga de prevenir el gasto duplicado de bitcoin.
Todo el código fuente que se utiliza en la red de Bitcoin para llevar a cabo transacciones es código abierto. De esta forma cualquiera puede auditar cómo se ejecutan las transacciones y puede compilar el software para interactuar con la red.
Seguridad
La red de Bitcoin ordena las transacciones agrupándolas en bloques, cada bloque contiene un número específico de transacciones y una referencia al bloque anterior. De esta forma podemos saber el orden en el cual los bloques son confirmados a través del tiempo. Por esta forma de organizar los datos, como una gran cadena de bloques, es que la tecnología recibe su nombre.
Todas las transacciones dentro de un mismo bloque son consideradas como confirmadas en el mismo tiempo. Transacciones que no se encuentran en algún bloque aun no se consideran confirmadas. Cada nodo puede agrupar transacciones en un bloque y proponerlo como siguiente en la cadena; para lograr un consenso, la red Bitcoin tiene implementado un mecanismo llamado minado (mining) en el cual, todos los nodos de la red compiten por resolver un problema matemático relacionado con los datos del bloque propuesto. La complejidad del problema es tal que a una sola computadora le tomaría un año resolver una instancia del problema, sin embargo, al competir varias computadoras en la red por la solución el tiempo de solución al día de hoy es aproximadamente de 10 minutos.
Beneficios y retos
La tecnología blockchain tiene el potencial de revolucionar varias industrias, desde la publicidad hasta la distribución de energía. Su fortaleza principal radica en la posibilidad de eliminar la necesidad de confianza en un tercero, dada su naturaleza descentralizada.
Casos de uso nuevos están surgiendo todo el tiempo, nuevas herramientas y software está siendo desarrollado para mejorar la seguridad y escalabilidad de un blockchain, ofreciendo un amplio rango de capacidades, herramientas y servicios. Nosotros en rfPro hemos utilizado blockchain para procesar micropagos de forma segura y para mantener la trazabilidad en procesos de fabricación; si deseas saber más sobre nuestra oferta de blockchain, no dudes en contactarnos.