Cómo configurar una cadena privada/red de prueba local: ingeniería inversa del código de la cadena de bloques

Para resumir, quiero configurar una cadena privada/una cadena de bloques de testnet que pueda ejecutarse localmente solo para manipularla y jugar con ella solo para aprender cómo funciona. Así que tengo una comprensión general de cómo funcionan las cosas y pensé que para aprender realmente necesitaría aplicar ingeniería inversa y jugar con ella tanto como pueda.

Entonces, ¿cómo haría eso? Lo que estoy buscando es, idealmente, una explicación paso a paso clara y fácil de usar para principiantes porque estoy apuntando a cadenas de bloques escritas en javascript (lisk, nimiq) o en python (bismuto)

Permítanme primero decirles lo que pensé o lo que pienso sobre las formas de hacerlo. Me imagino que tendría que:

  1. Decidir qué cadena de bloques existente se parecería más a lo que tengo en mente con respecto al algoritmo de consenso
  2. Descárgalo de GitHub
  3. Establecer un entorno de desarrollo
  4. Haz diferentes pruebas y deja que mi cerebro haga su magia

Ahora, con respecto a esos pasos, tengo algunas preguntas:

  1. ¿Me estoy perdiendo algo así como un paso intermedio, digamos?
  2. Con respecto al paso 1, ¿dónde debo buscar, qué partes de una cadena de bloques serán los factores decisivos para elegir una sobre la otra, considerando que quiero introducir un nuevo algoritmo de consenso?
  3. Con respecto al paso 2, ¿cómo descargaría una cadena de bloques pero ignoraría el historial de transacciones (esta será una nueva altcoin que comenzará con el bloque de génesis) o es más como algo que cambio dentro del código, no estoy seguro?
  4. Con respecto al paso 3, aquí es donde agradecería una respuesta paso a paso ya que no tengo idea de qué descargar y qué pasos seguir para pasar de: "Tengo el código" etapa a "Puedo jugar con él y probar diferentes cosas " escenario.
  5. Con respecto al paso 4: excepto eliminar parte del código, cambiar el valor de las variables, cambiar el orden o las líneas, ¿qué más podría ayudarme a comprender mejor cómo funciona el código?

Gracias

¡Bienvenido a Bitcoin.SE! Planea establecer un entorno de desarrollo, ¿en qué plataforma?

Respuestas (1)

La pregunta excede ligeramente las capacidades de este foro de preguntas y respuestas. Tal vez sea mejor buscar bitcointalk.org, allí este tipo de solicitudes se discuten a menudo. ¡Únase a una de las discusiones allí!

De todos modos, necesitamos desarrolladores y personas con mentes frescas. Aquí mi oportunidad corta en bitcoin, porque estamos en el foro de preguntas y respuestas de bitcoin. Probablemente querrás crear una altcoin de él. Seguro que la información relevante y el enlace al código están en bitcoin.org .

Para lograr sus objetivos, tendría que tener una idea y, a veces, un conocimiento excesivo sobre lo siguiente:

Information Security
Overview of current crypto coin technologies
Finite Fields
Elliptic Curves
Elliptic Curve Cryptography
Signing/Verifying Messages
Parsing Transactions
Signing Transactions
Creating Transactions
Script parsing and processing
Address construction/Private Key WIF Format Construction
Extended Keys (XPriv and XPub)
Parsing Blocks
Validating Proof-of-Work
Difficulty Calculations
Merkle Tree Construction 
Merkle Proofs
Network Message Parsing

y tal vez

Segwit
Lightning
Altcoin
... 

La lista puede ser sin duda ampliada :-) Así que eliges una curva de aprendizaje empinada. Por lo que leí en tu mensaje, creo que (todavía) no estás allí, pero eso no es un problema. Probablemente querrás leer libros como "Mastering Bitcoin" de Andreas y algunos más. Ellos te pondrán al día.

Si piensa en los entornos (como Ethereum o IOTA), dudo que muchos desarrolladores estén aquí para brindar apoyo.

1) decidir qué blockchain existente se parecería más a lo que tengo en mente en términos de algoritmo de consenso

esto es algo no podemos ayudarte, ya que no has presentado nada. ¿Quiere utilizar el poder y los esfuerzos de la comunidad para sacar adelante su proyecto, pero no proporciona información a la comunidad ocultando su lógica e ideas? En general: aquí tenemos mucha curiosidad por nuevas ideas :-)

2) descargar si desde github

ver los enlaces en bitcoin.org

3) establecer un entorno de desarrollo

Tomas una máquina Linux e instalas el software, lo compilas y ves cómo te va. Alternativamente, puede probar suerte en otro sistema operativo, pero el soporte es mucho mejor en los sistemas unixoide. También el uso de máquinas virtuales es muy atractivo.

4) ejecutar diferentes pruebas y dejar que mi cerebro haga su magia

de nuevo, esto depende de su mente cómo hacerlo. Pero hay casos de prueba entregados con el software, por lo que puede encontrar el código relevante para él, adaptarlo a sus requisitos y listo.