¿Blockchain (Bitcoin) como base de datos?

16

Estaba leyendo este artículo de BBC News y el siguiente extracto me llamó la atención. Suena como Grupos de disponibilidad siempre activados o Reflejo de alta disponibilidad, tal vez con seguridad incluida automáticamente.

¿Blockchain es una solución de base de datos potencialmente viable para aplicaciones modernas de alto volumen de transacciones?

Es bastante fácil ver su valor para transacciones de bajo volumen como registros médicos personales, pero ¿qué pasa con las bases de datos de alto volumen?

¿Qué es blockchain?

Las cadenas de bloques dependen de la criptografía para permitir que un conjunto de computadoras realice cambios en un registro global sin necesidad de un actor central.

Eliminar al intermediario reduce los costos en casi todos los sectores.

La cadena de bloques es un libro mayor que registra todo lo que sucede a una colección de datos conocida como "bloque" en un orden cronológico o "cadena".

Como moneda, esta es una característica importante porque permite a los usuarios asegurarse de que su dinero digital sea único, de la misma manera que cada nota en su billetera es única.

"La tecnología Blockchain será la forma en que creamos activos porque le permite transferir información digital sin copiar", dice Adam Ludwin, director ejecutivo de Chain.com, que construye redes blockchain.

Blockchain se puede usar para rastrear el historial de todo tipo de información y mantener su valor, por lo que, por ejemplo, los médicos podrían usarlo para actualizar los registros médicos.

Dado que cada cambio en una cadena de bloques se realiza simultáneamente en toda la red, no se pierde información y debido a que los cambios no se pueden deshacer, el sistema mantiene su transparencia. Se necesita una clave especial para realizar cambios en cada bloque, de modo que las personas puedan mantener sus registros seguros al proteger esa clave.

James Jenkins
fuente

Respuestas:

15

¿Blockchain es una solución de base de datos potencialmente viable para aplicaciones modernas de alto volumen de transacciones ?

La tecnología blockchain en general tiene algunas características que hacen que sea difícil trabajar con grandes volúmenes.

Echa un vistazo a Bitcoin, por ejemplo. El promedio de transacciones por día nunca ha sido más de 300K: transacciones por día (fuente blockchain.info)

ingrese la descripción de la imagen aquí

¡Aún más importante, el tiempo medio de confirmación para una transacción es de alrededor de 8 minutos !: Tiempo medio de confirmación de la transacción (solo con tarifa) y una buena imagen de Quandl :

ingrese la descripción de la imagen aquí

Ahora, ¿cuántas computadoras en todo el mundo son responsables de mantener la base de datos bitcoin? No soy un experto en bitcoin, pero creo que el historial completo de las transacciones se almacena en la cadena de bloques, por lo que todas las computadoras que participan en la red bitcoin esencialmente guardan una copia de toda la base de datos (las transacciones, por supuesto, no la información de las cuentas y claves secretas, estas se guardan en las billeteras personales).

Solo podemos estimar cuántos son, pero supongo que son más de un millón. 300,000 transacciones en un día con un millón de computadoras no suena como un gran volumen. ¿Y 8 minutos para confirmación?

Un RDBMS moderno en un hardware decente puede subir fácilmente hasta 1K transacciones por segundo. Eso es alrededor de 86 millones de transacciones por día. El tiempo de confirmación? Eso depende del tamaño de la transacción (cuántas tablas y filas afecta), pero para una pequeña transacción del tipo bitcoin (eliminar 42 monedas de la cuenta A y agregar 42 monedas a la cuenta B), serán milisegundos.

En conclusión, la diferencia en volúmenes y tiempo es de 1000 a 100000 veces hoy.

Si la tecnología blockchain resuelve este problema en el futuro, es posible que se pueda usar en aplicaciones de volumen medio o alto. Podemos leer discusiones y sugerencias sobre cómo se debe resolver el problema, muchas de las compañías mencionadas en los enlaces están trabajando en estos temas, pero aún no hemos visto una solución o producto que ofrezca grandes volúmenes y velocidad.

ypercubeᵀᴹ
fuente
Otro problema que tengo con la cadena de bloques es que es muy inconsistente. Todo está en carga y el cliente que procesa las transacciones no está 'dedicado', por lo que puede ver que muchos abandonan o se agregan. 8 minutos suena bien, ¿quizás los últimos 10 minutos fueron uno o dos minutos adicionales para que la aprobación llegue a todos los clientes? No estoy seguro, quién sabe con más nodos, ¡tal vez haya desaparecido! De cualquier manera excelentes enlaces. Gracias.
Ali Razeghi
2
Este artículo technologyreview.com/s/540921/... afirma que hay un límite conceptual de siete transacciones por segundo.
a_horse_with_no_name
Las cadenas laterales de @a_horse_with_no_name pueden escalar fácilmente sin límites duros y aún está por sincronizarse con blockchain de bitcoin, que se puede manejar de forma transparente.
Jangorecki
16

Estoy muy familiarizado con la criptomoneda y las bases de datos, y puedo decirte que no es un gran motor de base de datos.

Usando el blockchain como una base de datos en vivo:

Piense en ello como una primera forma normalizada sin ninguna capacidad de búsqueda o indexación realmente buena en lo que respecta a la cadena de bloques. Básicamente, una hoja de Excel sin ninguna capacidad de cálculo que solo le brinda capacidades de 'lectura / escritura' con mucha verificación y validación. Un blockchain es una excelente manera de validar que sus datos se desinfectan y corrigen antes de colocarlos en una base de datos que le permite consultarlos de manera diferente, indexarlos, etc.

Beneficios de la cadena de bloques:

La cadena de bloques en este caso es puramente un libro mayor y una API para solicitudes PUT y GET. Eso es todo. La cadena de bloques es interesante porque necesita una mayoría de nodos para pasar la transacción como válida y no hay retrocesos, una vez que se confirma, se confirma. Por lo tanto, si alguien intenta realizar una transacción falsa, será atrapado a menos que la persona que lo haga tenga un grupo que tenga una fuerte participación mayoritaria. Luego pueden validarlo en su grupo antes de que alguien pueda rechazarlo. Ese es el punto fuerte de la cadena de bloques. Verificación de que los datos son precisos. También suele ser bastante lento. Estás viendo unos 10 minutos bajo carga normal para que se valide. Bajo una carga pesada, el tiempo sube bastante.

Después de validar que las transacciones son válidas y no fraudulentas utilizando blockchain, puede importar esos datos a una base de datos y trabajar con ellos como desee. Tengo algo de experiencia con esto, pero tenga en cuenta que cada transacción en la arquitectura actual de bitcoin se registrará, por lo que tiene información interesante para analizar.

Consulta de datos fuera del esquema de blockchain en un DBMS:

Aquí está el diagrama de bitcoin que puede usar para crear el esquema en PostgreSQL. Con esto, puede colocarlo en un DBMS relacional: https://bitcointalk.org/index.php?topic=38246 ingrese la descripción de la imagen aquí

Este repositorio de código también es útil si desea importar los datos en un RDBMS real: https://github.com/bitcoin-abe/bitcoin-abe

En cuanto a qué DBMS debe poner, depende de su caso de uso. Si desea analizar las transacciones / ID de billetera para ver algunos patrones o hacer un trabajo de BI, recomendaría una base de datos relacional. Si desea configurar una ingesta en vivo con múltiples criptomonedas, recomendaría algo que no necesita el registro de transacciones, por lo que una solución MongoDB sería buena. No creo que deba preocuparse por Elastic Search a menos que quiera comenzar a grabar en vivo todas las criptomonedas al mismo tiempo y lo usará para realizar operaciones automáticas o algo igualmente loco. :)

Ali Razeghi
fuente
8

En 2014 creamos ascribe.io con la premisa de usar Bitcoin como base de datos para reclamos de Propiedad Intelectual. Tras el lanzamiento, conectamos la red porque no podía manejar el rendimiento, la latencia fue de al menos 10 minutos y estábamos limitados por lo que podíamos poner en OP_RETURN, lo que nos obligó a almacenar el archivo digital real relacionado con el reclamo en Amazon S3 . Nos dimos cuenta de que Bitcoin en su forma actual nunca podría ser una base de datos de transacciones altas.

Pero la idea de si podríamos tener una base de datos de estilo blockchain: control descentralizado, inmutabilidad (resistencia a la manipulación) y activos activos en la red se quedó con nosotros. Entonces, a mediados de 2014, comenzamos a trabajar en BigchainDB

En pocas palabras: podemos procesar 100k tps con una latencia de 100mS y tener petabytes de capacidad. El código es nuestro BigchainDB Github, la documentación técnica aquí y el pensamiento fundamental en nuestro documento técnico .

Si tiene un caso de uso para una base de datos descentralizada de alta transacción, creamos BigchainDB exactamente para esto.

Bruce Pon
fuente
2

Blockchain derivado de Bitcoin es lento y costoso; La cantidad de datos que se pueden almacenar en un bloque es muy modesta. Los mecanismos detrás de blockchains (distribuir libros de contabilidad) están destinados a proporcionar un almacén de datos incorruptible y altamente replicado; De igual a igual es menos una característica esencial que un "requisito político" para evitar la apariencia de control central. He estado trabajando durante unos 18 meses para producir un libro mayor distribuido de alto rendimiento (consulte metrognomo.com para una instanciación) que toma la menor cantidad posible de Bitcoin. Al final, sin embargo, un libro mayor distribuido se parece bastante a un archivo secuencial que se puede agregar pero no editar después de la adición. Esto es algo valioso para algunas aplicaciones, pero no es lo que la mayoría de la gente piensa como una base de datos.

Londres
fuente