avatar of 发明者量化-小小梦 发明者量化-小小梦
Seguir Mensajes Privados
4
Seguir
1271
Seguidores

Cómo funciona el protocolo Bitcoin (Parte 2)

Creado el: 2017-01-19 18:30:04, Actualizado el:
comments   0
hits   1831

Cómo funciona el protocolo Bitcoin (Parte 2)

  • #### Bitcoin

Ahora, dejemos a Infocoin y pasemos al verdadero protocolo de Bitcoin. Bitcoin no tiene muchas diferencias con Infocoin que acabamos de construir paso a paso, excepto un cambio evidente.

Para usar bitcoin, primero tienes que instalar una billetera en tu computadora. Para que entiendas mejor, la siguiente imagen es una pantalla de una billetera llamada Multibit. Puedes ver en la esquina superior izquierda el saldo de bitcoins de 0.06555555 bitcoins, lo que equivale a casi $70 según el precio de transacción de la pantalla en ese momento.

Cómo funciona el protocolo Bitcoin (Parte 2)

Supongamos que eres un comerciante, tienes una tienda en línea y decides permitir que los clientes paguen con bitcoins. Todo lo que necesitas hacer es generar una nueva dirección de bitcoins con tu programa de monedero. Generará automáticamente un par de claves públicas y privadas, y luego hashará tu clave pública para formar tu dirección de bitcoin.

Cómo funciona el protocolo Bitcoin (Parte 2)

Luego le envías tu dirección de Bitcoin a la persona que te pagará. Puedes usarla en tu correo electrónico o directamente en tu página web. Esto es seguro, porque tu dirección es solo una clave pública que se ha hashado, y puedes divulgarla a cualquier persona sin que nadie pueda usarla para obtener tu clave privada.

Ahora la persona que está dispuesta a pagar necesita crear una nueva transacción. Veamos una transacción real de 0.319 bitcoins. A continuación se muestra casi la información original, con tres cambios: 1) la información no se ha secuenciado; 2) se ha añadido un número de filas para una mejor comprensión; 3) se ha omitido una larga serie de números de la información hash, conservando sólo los primeros 6 dígitos.

  1.  {"hash":"7c4025...",
  2.  "ver":1,
  3.  "vin_sz":1,
  4.  "vout_sz":1,
  5.  "lock_time":0,
  6.  "size":224,
  7.  "in":[
  8.    {"prev_out":
  9.      {"hash":"2007ae...",
  10.      "n":0},
  11.    "scriptSig":"304502... 042b2d..."}],
  12. "out":[
  13.   {"value":"0.31900000",
  14.    "scriptPubKey":"OP_DUP OP_HASH160 a7db6f OP_EQUALVERIFY OP_CHECKSIG"}]}
  • Vamos a explicarlo una por una.

    En la línea 1, el hash de la transacción (de 16), es el único indicador utilizado para representar esta transacción.

    La línea 2 nos dice que la transacción se realizó con la primera versión del protocolo Bitcoin.

    Las líneas 3 y 4 nos dicen que esta transacción tiene una entrada y una salida.

    La línea 5, es un tiempo de bloqueo (lock_time), que se puede usar para controlar cuándo se completará la transacción. Actualmente, la mayoría de las transacciones de Bitcoin tienen un tiempo de bloqueo de 0, es decir, se completará la transacción inmediatamente.

    La línea 6 nos dice cuántos bytes es el tamaño de la transacción, pero no es el dinero de la transacción.

    Las líneas 7 a 11, que definen la entrada de esta transacción, o más exactamente, las líneas 8 a 10 nos dicen que el valor de entrada del dinero que vamos a desviar proviene del valor de salida de la transacción anterior. Ese 2007ae… es el hash de 16 bits de la transacción anterior, para referirse a una transacción anterior.

    La parte de entrada aquí es notable porque no dice cuántos bitcoins de la transacción anterior serán transferidos a la siguiente. De hecho, todos los bitcoins de la salida n = 0 de la transacción anterior fueron transferidos. Por ejemplo, si la primera salida de la transacción anterior (n = 0) contiene 2 bitcoins, entonces estos dos bitcoins se gastarán en la nueva transacción.

    Las líneas 12 al 14, que definen la salida de la transacción. En concreto, la línea 13 nos dice la cantidad de dinero que se ha emitido, esto es 0.319 bitcoins. La línea 14 es más compleja, y es digno de mención que la cadena a7db6f… es la dirección de la recepción de bitcoins.

    Ahora, se puede ver cómo Bitcoin resuelve el problema de la procedencia de los números de serie de monedas de cobre que mencionamos anteriormente. En primer lugar, Bitcoin no es una moneda de cobre separada, sino una cadena de transacciones que existen en la blockchain.

    Podemos ir y venir por la cadena de transacciones. Al final, hay dos posibilidades: primero, puedes llegar a la primera transacción de Bitcoin, que existe en un bloque, que llamamos el bloque de Genesis. Esta es una transacción especial, no tiene entrada y solo tiene una salida de 50 bitcoins.

    El segundo resultado que se obtiene al ir y venir por la cadena de transacciones es que se puede llegar a una transacción llamada “coinbase”. Cada bloque, excepto el bloque de Genesis, comienza con una transacción de coinbase especial. Esta transacción se utiliza para recompensar a los mineros que verifican la transacción en el bloque.

    Lo que no está muy claro en la descripción anterior es qué es lo que está firmado digitalmente en las 11 líneas. Lo más obvio es que el método es hacer que el pagador firme digitalmente toda la transacción. Por ahora no se hace así, y algunas transacciones se ignoran. Esto hace que una parte de las transacciones tenga plasticidad, es decir, que puedan ser modificadas en el futuro.

  • Hay múltiples entradas y salidas.

En el párrafo anterior hablamos de una transacción que tiene una sola entrada y una sola salida. En realidad, la mayoría de las transacciones de Bitcoin tienen varias entradas o varias salidas.

  1. {"hash":"993830...",
  2. "ver":1,
  3. "vin_sz":3,
  4.  "vout_sz":2,
  5.  "lock_time":0,
  6.  "size":552,
  7.  "in":[
  8.    {"prev_out":{
  9.      "hash":"3beabc...",
  10.        "n":0},
  11.     "scriptSig":"304402... 04c7d2..."},
  12.    {"prev_out":{
  13.        "hash":"fdae9b...",
  14.        "n":0},
  15.      "scriptSig":"304502... 026e15..."},
  16.    {"prev_out":{
  17.        "hash":"20c86b...",
  18.        "n":1},
  19.      "scriptSig":"304402... 038a52..."}],
  20.  "out":[
  21.    {"value":"0.01068000",
  22.      "scriptPubKey":"OP_DUP OP_HASH160 e8c306... OP_EQUALVERIFY OP_CHECKSIG"},
  23.    {"value":"4.00000000",
  24.      "scriptPubKey":"OP_DUP OP_HASH160 d644e3... OP_EQUALVERIFY OP_CHECKSIG"}]}
  • Como antes, explicamos una y otra vez, en su mayor parte, lo mismo que antes.

    La línea 1, el hash de la transacción, se utiliza como el único indicador de esta transacción.

    Línea 2, versión del protocolo Bitcoin, primera edición.

    Las líneas 3 y 4 indican que hay 3 entradas y 2 salidas en esta transacción.

    La línea 5, el tiempo de bloqueo ((y lo mismo que antes))

    En la línea 6, el tamaño en bytes de la transacción.

    Las líneas 7 a 19 definen todas las entradas, cada una correspondiendo a la salida de la transacción anterior. La primera entrada es de las líneas 8 a 11. Su forma de contenido es la misma que la anterior. La segunda entrada es de las líneas 12 a 15 y la tercera de las líneas 16 a 19.

    Las líneas 20 a 24 definen todas las salidas, la primera salida es las líneas 21 y 22, y como antes, la línea 21 dice que hay 0.01068 bitcoins dentro. La línea 22 es un lenguaje de script para bitcoins. La cadena e8c30622… es la dirección del destinatario. La segunda salida es las líneas 23 y 24, en el mismo formato.

    Parece un poco extraño que, aunque cada salida tenga un registro de la cantidad de bitcoins, la entrada no. Por supuesto, cuántos bitcoins puede obtener cada entrada de su transacción anterior. En una transacción normal de bitcoins, la suma de todos los valores de las entradas es mayor que la suma de las salidas (excepto las transacciones de Genesis block y coinbase que hemos mencionado), y si la suma de las entradas es mayor que la salida, los bitcoins excedentes se ofrecen a los mineros del bloque donde se realiza la transacción como una tarifa.

    La función de las entradas y salidas múltiples es encontrar cero. Supongamos que quiero darte 0.15 bitcoins. Puedo gastar los 0.2 bitcoins que recibí antes. Por supuesto, no quiero darte todos los 0.2, así que la solución es que te envío 0.15 bitcoins y luego envío 0.05 bitcoins a mi otra dirección de bitcoins.

  • Conclusión

El concepto básico detrás de Bitcoin ya está descrito. Por supuesto, también he omitido muchos detalles, ya que no es una guía formal. Pero lo que quiero describir es el concepto detrás de Bitcoin que se usa comúnmente.

Aunque las reglas detrás de Bitcoin son simples y fáciles de entender, eso no significa que todos los posibles resultados que producen estas reglas también sean fáciles de entender. Hay mucho más que decir sobre Bitcoin, de lo que hablaré en un artículo posterior.

¿Qué tan anónimo es Bitcoin? Mucha gente dice que Bitcoin se puede usar de forma anónima. Esta afirmación se originó en un mercado negro similar a Silk Road. Sin embargo, esta afirmación es ficticia. La Blockchain es pública, lo que significa que cualquier persona puede ver todas las transacciones de Bitcoin.

¿Puedes hacerte rico con Bitcoin? Tal vez sí, Tim O’Reilly dijo una vez que ganar dinero es como un tanque de gasolina en un coche en el que tienes que estar atento o quedar atrapado en el camino, pero la vida no gira en torno a una gasolinera. ¡Oh, la mayoría del interés en Bitcoin parece provenir de personas cuyo único objetivo en la vida es encontrar una gran gasolinera! Tengo que admitir que es confuso.

Detalle que omití: Aunque este artículo describe los conceptos principales detrás de Bitcoin, hay muchos detalles que no mencioné. Uno de ellos es un gran truco de ahorro de espacio en el protocolo, basado en una estructura de datos llamada Merkle tree. Es un detalle, pero es un detalle increíble que vale la pena ver si te gusta la estructura de datos.

Escrito de Bitcoin: En este artículo, explico Bitcoin como una moneda electrónica en línea. Pero esto es solo una pequeña parte de una historia más grande e interesante. Como hemos visto, cada transacción de Bitcoin tiene un lenguaje de script de Bitcoin.

Si lo encuentras útil, te recomendamos que le des un consejo al autor de este artículo, Michael Nielsen, 17ukkKt1bNLAqdJ1QQv8v9Askr6vy3MzTZ, quien también puedes seguir en Twitter. O sigue el primer capítulo de su próximo libro sobre redes neuronales y aprendizaje profundo.

Si algo no va bien, por favor perdónenme.

El artículo fue adaptado de la obra de Jean-Luc Godard.