documentación oficial de blockchain

Estoy desarrollando un sistema de gestión administrativa. El proyecto está migrando de PHP a C++. Con los nuevos requisitos queremos trabajar con blockchain. Pero cuando busco más al respecto, a pesar de los tutoriales genéricos, casi siempre encuentro enlaces a implementaciones de blockchain como Bitcoin o Eterium. Pero necesito implementar algo puro, desde cero.

¿Dónde puedo encontrar la documentación oficial de la tecnología blockchain?

La "tecnología blockchain" es tan insignificante como la "inteligencia artificial" o la "web 2.0". Se refiere a una colección de ideas, la mayoría de las cuales son pura exageración de marketing. Algunas de esas ideas son útiles, pero rara vez independientes. Si cree que necesita una "cadena de bloques desde cero" sin comprender los problemas fundamentales que resuelve (pista: ¡no mucho!), me temo que simplemente perderá su tiempo.
No hay documentación oficial. La "tecnología blockchain" no tiene una autoridad central ni nada oficial, ya que es solo un concepto abstracto.

Respuestas (2)

¿Dónde puedo encontrar la documentación oficial de la tecnología blockchain?

En ningún lugar. No existe un organismo oficial a cargo de la "tecnología blockchain".

Hay muchos individuos, grupos y organizaciones diferentes, todos haciendo su propio trabajo de "cadena de bloques" de forma más o menos independiente. A menudo basarán su cadena de bloques en parte en ideas antiguas de cadenas de bloques. Cada uno de estos grupos puede o no publicar una definición de la cadena de bloques que están utilizando.

Un ejemplo es la Referencia de desarrollador de Bitcoin escrita por un grupo aleatorio en constante cambio de personas en su mayoría anónimas/seudónimas sobre cuyos motivos y precisión tiene que hacer su propio juicio. Sospecho que en su mayoría están bien, pero no tiene ningún recurso si yo o ellos estamos equivocados, engañando o incluso maliciosamente.

Lo más parecido a una definición oficial probablemente sea el libro blanco de Satoshi Nakamoto publicado en octubre de 2008. Si lee y comprende eso, está en una buena posición para implementar su propia cadena de bloques. Necesitará una base en los principios y algoritmos criptográficos básicos (no escriba sus propios algoritmos criptográficos).

queremos trabajar con blockchain.

Si esto proviene del marketing, ignórelos y simplemente agregue la palabra "blockchain" generosamente a los nombres de productos, documentación, etc. :-)

Tenga en cuenta que The Economist del 1 de septiembre de 2018 tiene una sección de 12 páginas sobre blockchain

Aunque en su mayoría es positivo sobre blockchain, tiene muchas precauciones.

Debido a su naturaleza descentralizada, una cadena de bloques siempre será más lenta y engorrosa que una base de datos estándar.

Su artículo principal separado dice:

Algunas organizaciones, como SWIFT, una red de pagos bancarios, y Stripe, una empresa de pagos en línea, han abandonado proyectos de cadenas de bloques y han llegado a la conclusión de que los costos superan los beneficios. La mayoría de los otros proyectos son experimentales.

La idea de bases de datos peer-to-peer replicadas con fuertes controles de integridad basados ​​en criptografía de clave pública se remonta al menos a 1984 cuando Ray Ozzie et-al formaron a Iris Associates para desarrollar Lotus Notes. Cualquiera que seleccione "cadena de bloques" debe tener una comprensión profunda de cuáles de sus características son vitales para su proyecto, qué alternativas existen y cuáles son las ventajas y desventajas.

La explicación más simple de una cadena de bloques es como una cadena de bloques de datos vinculados criptográficamente. Brett Benefield, Scott Herford y Kyle Thomas escriben: Cada uno de estos bloques puede tener múltiples piezas de información, como información de transacciones o datos de activos, por ejemplo. Cuando se agrega un nuevo bloque, se agrega al final de la cadena de bloques y luego se calcula un nuevo valor hash. Esta característica relativamente simple garantiza que, una vez que la cadena de bloques sea lo suficientemente grande, sea computacionalmente segura y evite que una parte malintencionada modifique los bloques anteriores. (Benefield, Herford y Thomas 2018, 1)

La cadena de bloques se agrega solo por diseño. Una característica de implementación mantiene múltiples copias de la cadena de bloques, validadas a través de un mecanismo de consenso. Esto aumenta la seguridad de la cadena de bloques, ya que un actor malicioso tendría que obtener acceso a suficientes nodos y reescribir cada cadena de bloques lo suficientemente rápido para lograr el consenso de que la cadena alterada es correcta. Para usar el término de Benefield, Herford y Thomas, esta dificultad hace que la cadena de bloques distribuida sea computacionalmente segura.

La tecnología utilizada para vincular los bloques de datos es el hash criptográfico, que es un resumen matemático de un conjunto de datos. Este hash criptográfico es la huella digital del bloque. Es imposible usar el hash criptográfico para determinar el contenido del bloque y es imposible cambiar el bloque sin alterar el hash criptográfico.

Una cadena de bloques es una cadena de bloques de datos vinculados criptográficamente. El primer bloque de una cadena de bloques, conocido como Bloque Génesis, está compuesto por datos digitales y el hash criptográfico de esos datos. El siguiente (y los bloques subsiguientes) se componen del hash del encabezado del bloque anterior.

Entonces, ¿qué es un bloque, realmente? El bloque es una estructura de datos llamada contenedor. El contenedor consta de un encabezado que contiene metadatos (datos sobre datos) y los datos en sí. En el diagrama anterior, el encabezado contiene solo el hash del bloque anterior. Para que la cadena de bloques sea útil, necesitamos definir los datos que pueden contenerse dentro del bloque y el tipo de metadatos utilizados dentro del encabezado.

No existe una estructura de datos endémica a la cadena de bloques. Una cadena de bloques se puede almacenar en un archivo plano o en una base de datos. Debido a que los bloques se pueden almacenar en cualquier orden, necesitamos una forma de identificar el orden de los bloques. Para ello, añadimos una marca de tiempo. A continuación, según Emmanuelle Anceaume (et al.), también necesitamos una forma de determinar la validez del bloque. El método utilizado para determinar la validez en la red Bitcoin es una prueba de trabajo.

La prueba de trabajo agrega un nonce al bloque. "Un nonce es un número aleatorio que actúa como una variable de marcador de posición en funciones matemáticas". (Stewart, Chapple y Gibson 2015) La prueba de trabajo implica reemplazar el nonce con valores aleatorios y calcular el hash criptográfico hasta que encuentre uno que satisfaga un criterio particular. En el caso de Bitcoin, la dificultad es encontrar un hash que comience con un número particular de ceros, un objetivo que cambia dinámicamente a medida que cambia el número de mineros.

Finalmente, las transacciones que se agregarán al bloque se almacenan en una estructura de datos llamada Merkle Tree. (Consulte a continuación para obtener más información). Esta es una estructura de datos basada en hash que proporciona un almacenamiento eficiente y una verificación segura de los datos. El resultado de todo esto es una cadena de bloques.

La prueba de trabajo es un algoritmo de consenso que se utiliza para determinar quién crea el siguiente bloque y requiere que la mayoría de los nodos estén de acuerdo. Muy democrático, pero depende del tamaño de la red para evitar el fraude. Hay otros algoritmos de consenso utilizados en diferentes implementaciones de blockchain, como "Prueba de participación", "Prueba de actividad", "Prueba de quemado", "Prueba de capacidad" y "Prueba de autoridad". Cada tipo de tolerancia a fallas bizantinas se implementa de manera diferente en cada implementación. Así, una vez más, la infraestructura determina la resistencia del sistema a las fallas bizantinas.

Hay algunas otras cosas que necesita saber.

  1. La cadena de bloques es un diario, no un libro mayor. Un diario es una lista de transacciones; un libro mayor es un resumen analizado del diario.
  2. La cadena de bloques no es intrínsecamente segura. Es básicamente un archivo de texto y visible para todos los que tengan una copia. Asegurar la cadena de bloques es una característica de implementación.
  3. La cadena de bloques no es inmutable. Ha habido varios casos en los que las cadenas de bloques públicas han tenido que revertirse. A diferencia del registro de transacciones en una base de datos, la reversión de la cadena de bloques revisa el registro histórico, cambiando la pista de auditoría.
  4. Blockchain no es ni una especificación ni un protocolo. Es un conjunto de conceptos que se pueden implementar en una variedad de formas. Su caso de uso suena como una cadena de bloques privada y autorizada, en cuyo caso debe investigar Hyperledger.
  5. Blockchain no es una base de datos, al menos no muy buena. Las implementaciones públicas de blockchain no satisfacen las propiedades de la base de datos ACID ni BASE. En particular, debido a que la cadena de bloques se puede revertir, en esencia cambiando la historia, las cadenas de bloques no son duraderas. Las cadenas de bloques dan más importancia a la coherencia que a la disponibilidad, lo que significa que no son eficaces.

Buena suerte.