Comprender el protocolo Bitcoin (a través de la práctica)

Bien, en primer lugar, Ken Sheriff (el tipo que extrajo Bitcoin con lápiz y papel ) ha publicado algunos artículos fantásticos sobre Bitcoin en su blog .

En " Using Bitcoins the Hard Way ", escribe (énfasis añadido):

Resulta que usar el protocolo Bitcoin es más difícil de lo que esperaba. Como verá, el protocolo es un poco confuso: usa números big-endian, números little-endian, números de longitud fija, números de longitud variable, codificaciones personalizadas, codificación DER y una variedad de algoritmos criptográficos, aparentemente arbitrariamente. Como resultado, hay mucha manipulación molesta para obtener los datos en el formato correcto .

La segunda complicación de usar el protocolo directamente es que, al ser criptográfico, es muy implacable. Si se equivoca en un byte, la transacción se rechaza sin saber dónde está el problema .

La dificultad final que encontré es que el proceso de firmar una transacción es mucho más difícil de lo necesario, con muchos detalles que deben ser correctos. En particular, la versión de una transacción que se firma es muy diferente de la versión que realmente se usa .

Obviamente, trabajar a través de los archivos Python de Ken ayuda a comprender las distintas instancias de agregar bytes, cambiar el endianness y los otros procedimientos complicados que se utilizan para enviar una transacción en hexadecimal sin formato. Asimismo, son de utilidad las siguientes:

  1. Especificación de protocolo @ Bitcoin Wiki
  2. Generador de direcciones gráficas @ RoyalFork
  3. Código Python de Ken Sheriff utilizado en asociación con esta publicación

Mi pregunta: ¿cómo se aprende el protocolo Bitcoin practicando con Testnet? (¿Qué recursos se recomiendan para ayudar a formular una transacción sin procesar para enviar a través de la red Bitcoin (Testnet)?)

Respuestas (1)

El protocolo Bitcoin es MUY simple. No tienes que leer toneladas de manuales y estudiar durante años.

Mi punto de vista es (respondiendo a tu pregunta):

  • Escriba en la hoja de papel lo que quiere hacer.
  • Elija su lenguaje de programación preferido (C++/Python/Delphi/Java/lo que sea)
  • Use las fuentes de Internet solo como información de referencia. No copiar y pegar piezas grandes

Por supuesto,

  • ¡UTILIZA TESTNET PARA EXPERIMENTOS! NO LA RED PRINCIPAL!
¡En realidad es una muy buena idea! ¡La extracción de Bitcoin con lápiz y papel (vinculado en mi pregunta) fue probablemente un ejercicio que el Sheriff no olvidará pronto dado el tiempo invertido! Sin embargo, es muy cierto que, por alguna razón, no es tan fácil retener notas digitales frente a notas escritas (¿GenXer quizás?)