Bitcoin

White Paper de Bitcoin: un breve repaso


Una versión puramente peer-to-peer del efectivo electrónico permitiría que los pagos en línea se enviaran directamente de una parte a otra sin pasar por una institución financiera (he allí la cualidad de Bitcoin).

Proponemos una solución al problema del doble gasto utilizando una red peer-to-peer: la red marca la hora de las transacciones al convertirlas en una cadena continua de pruebas de trabajo basadas en hash, formando un registro que no se puede cambiar sin volver a hacer la prueba de trabajo.

La cadena más larga no sólo sirve como prueba de la secuencia de eventos presenciados, sino también de que proviene de la mayor reserva de energía de la CPU. Mientras la mayor parte de la potencia de la CPU esté controlada por nodos que no están cooperando para atacar la red, generarán la cadena más larga y superarán a los atacantes.

La propia red requiere una estructura mínima. Los mensajes se transmiten con el mejor esfuerzo, y los nodos pueden salir y volver a unirse a la red a voluntad. Aceptando la cadena de prueba de trabajo más larga como prueba de lo que sucedió mientras estaban fuera.

Introducción del White Paper de Bitcoin

Bitcoin

El comercio en Internet ha llegado a depender casi exclusivamente de instituciones financieras que sirven a terceros de confianza para procesar pagos electrónicos. Si bien el sistema funciona lo suficientemente bien en la mayoría de las transacciones. Aún sufre de las debilidades inherentes del modelo basado en el fideicomiso.

El costo de la mediación aumenta los costos de transacción, limitando el tamaño mínimo de las transacciones prácticas y cortando la posibilidad de transacciones casuales pequeñas, y hay un costo más amplio en la pérdida de la capacidad de hacer pagos no reversibles por servicios no reversibles. Con la posibilidad de una inversión, la necesidad de confianza se extiende.

Los comerciantes deben ser cautelosos con sus clientes, acosándolos para obtener más información de la que necesitarían de otra manera. Estos costos e incertidumbres de pago pueden evitarse en persona utilizando la moneda física. Pero no existe ningún mecanismo para realizar pagos a través de un canal de comunicación sin una persona de confianza.

Lo que se necesita es un sistema de pago electrónico basado en pruebas criptográficas en lugar de en la confianza, que permita a dos partes que lo deseen realizar transacciones directamente entre sí sin necesidad de contar con un tercero de confianza.

Las transacciones que son computacionalmente poco prácticas de revertir protegerían a los vendedores del fraude, y los mecanismos rutinarios de custodia podrían ser fácilmente implementados para proteger a los compradores.

En este artículo, proponemos una solución al problema del doble gasto utilizando un servidor de sellos de tiempo distribuido de igual a igual para generar pruebas computacionales del orden cronológico de las transacciones. El sistema es seguro siempre y cuando los nodos honestos controlen colectivamente más potencia de CPU que cualquier grupo de nodos atacantes que cooperen.

Transacciones de Bitcoin

Definimos una moneda electrónica como una cadena de firmas digitales. Cada el propietario transfiere la moneda a la siguiente mediante la firma digital de un hash del transacción anterior y la clave pública del siguiente propietario y añadiendo hasta el final de la moneda. Un beneficiario puede verificar las firmas para corroborar la cadena de propiedad.

El problema, por supuesto, es que el beneficiario no puede verificar que uno de los propietarios no gastó la moneda dos veces. Una solución común es la introducción de un autoridad central de confianza, o menta, que comprueba que cada transacción el doble de gastos.

Después de cada transacción. La moneda debe ser devuelta a la Fábrica de la Moneda y Timbre para emitir una nueva moneda, y sólo las monedas emitidas directamente desde la fábrica de la moneda. Se confía en que la menta no se gastará dos veces.

El problema con esto la solución es que el destino de todo el sistema monetario depende de la compañía que lleva la casa de la moneda, con cada transacción tener que pasar por ellos, como un banco.

Necesitamos una manera para que el beneficiario sepa que los propietarios anteriores no firmaron ninguna transacción anterior. Para nuestros propósitos, la transacción más temprana es la que cuenta. Así que no nos importan los intentos posteriores de duplicar gastos. La única manera de confirmar la ausencia de una transacción es estar al tanto de todas las transacciones.

En el modelo basado en la Fábrica de la Moneda, la Fábrica de la Moneda estaba al tanto de todas las transacciones y decidió cuál llegaba primero. Para lograr esto sin una parte confiable, las transacciones deben ser anunciadas públicamente[1], y necesitamos un sistema para que los participantes acuerden un único historial del orden en que fueron recibidos. El beneficiario necesita la prueba de que en el momento de cada transacción, la mayoría de los nodos acordaron que fue el primero en recibirla.

Servidor de marcas de tiempo

Bitcoin

La solución que proponemos comienza con un servidor de marcas de tiempo en Bitcoin. Una marca de tiempo funciona tomando un hash de un bloque de ítems para ser sellados y publicando ampliamente el hash, como en un periódico o en un correo de Usenet[2-5].

La marca de tiempo prueba que los datos debe haber existido en ese momento, obviamente, para entrar en el hachís. Cada marca de tiempo incluye la marca de tiempo anterior en su hash, formando una con cada marca de tiempo adicional reforzando las anteriores.

Prueba de trabajo en Bitcoin

Para implementar un servidor de sello de tiempo distribuido de igual a igual, necesitaremos usar un sistema de prueba de trabajo similar a Adam Back’s Hash cash, en lugar de publicaciones en periódicos o Usenet. La prueba de trabajo implica la búsqueda de un valor que, al hacer el hash, como en el caso de SHA-256, comienza con un número de bits cero.

El trabajo promedio requerido es exponencial en el número de bits cero requeridos y puede ser verificado ejecutando un solo hash. Para nuestra red de sellos de tiempo, implementamos la prueba de trabajo incrementando un valor en el bloque hasta que se encuentra un valor que da al hash del bloque los bits cero requeridos.

Una vez que el esfuerzo de la CPU se ha gastado para que satisfaga la prueba de trabajo, el bloque no se puede cambiar sin rehacer el trabajo. Como los bloques posteriores se encadenan después de él, el trabajo para cambiar el bloque incluiría rehacer todos los bloques después de él.

La prueba de trabajo también resuelve el problema de determinar la representación en la toma de decisiones por mayoría. Si la mayoría se basara en una dirección IP con un solo voto, podría ser subvertida por cualquiera capaz de asignar muchos IPs.

La prueba de trabajo es esencialmente uno-CPU-uno-uno-voto. La decisión de la mayoría está representada por la cadena más larga, que tiene la mayor prueba de esfuerzo invertido en ella.

Si la mayor parte de la potencia de la CPU está controlada por nodos honestos, la cadena honrada crecerá más rápidamente y superará a cualquier cadena competidora.

Para modificar un bloque pasado, un atacante tendría que torpedear la prueba de trabajo del bloque y todos los bloques después de él y luego alcanzar y superar el trabajo de los nodos honestos. Más adelante mostraremos que la probabilidad de que un atacante más lento se ponga al día disminuye exponencialmente a medida que se añaden bloques posteriores.

Para compensar el aumento de la velocidad del hardware y el interés variable en la ejecución de nodos a lo largo del tiempo, la dificultad de la prueba de trabajo se determina por una media móvil que se dirige a un número medio de bloques por hora. Si se generan demasiado rápido, la dificultad aumenta.

Red

Los pasos para ejecutar la red de Bitcoin son los siguientes:

1) Las nuevas transacciones se transmiten a todos los nodos.
2) Cada nodo recoge las nuevas transacciones en un bloque.
3) Cada nodo trabaja para encontrar una prueba de trabajo difícil para su bloque.
4) Cuando un nodo encuentra una prueba de trabajo, transmite el bloque a todos los nodos.
5) Los nodos aceptan el bloque sólo si todas las transacciones en él son válidas y no están gastadas.
6) Los nodos expresan su aceptación del bloque trabajando en la creación de la directiva
siguiente bloque en la cadena, usando el hash del bloque aceptado como el
hachís anterior.

Los nodos de Bitcoin siempre consideran que la cadena más larga es la correcta y seguirán trabajando para extenderla. Si dos nodos emiten versiones diferentes del siguiente bloque simultáneamente. Algunos nodos pueden recibir uno u otro primero. En ese caso, ellos trabajan en el primero que ellos recibido, pero guarde la otra rama en caso de que se alargue.

La corbata se romperá cuando se encuentre la siguiente prueba de trabajo y una se hace más larga. Los nodos en los que se estaba trabajando la otra rama cambiará a la más larga. Las transmisiones de nuevas transacciones no necesariamente tienen que llegar a todos los nodos.

Como siempre y cuando alcancen muchos nodos, se meterán en un bloque en poco tiempo en Bitcoin. Las transmisiones en bloque también son tolerantes a los mensajes que se dejan caer. Si un nodo hace no recibir un bloque, lo solicitará cuando reciba el siguiente bloque y se da cuenta de que se le pasó una.

Dejar un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.