Está en la página 1de 5

Entonces, cuando aparece un nuevo comentario, digamos que puede haber 10 o 15 nodos

diferentes en ese back-end masivo que podrían contener copias de esta acción.

1:22

Ahora, lo que el servidor necesita para asegurarse es que ese comentario sea registrado en todas
las copias de esa base de datos, o ninguna de ellas.

1:29

Si por alguna razón, debido a que algunos de estos nodos pueden ser defectuosos, la acción se
registra en ninguna de las bases de datos, está bien. Puede volver al usuario y decir que hubo un
problema al guardar su publicación. ¿Podría volver a intentarlo? Por otro lado, si algunas copias de
la base de datos lo salvaron y otros no, entonces usted estaría en un gran problema, porque
tendría una base de datos inconsistente. Así que este es el problema clave que motivó la
investigación tradicional sobre el consenso distribuido. Y puede ver las similitudes con Bitcoin
aquí. Pero vamos a hablar con más detalles sobre las similitudes y diferencias. Entonces esa era la
aplicación motivadora tradicional. Pero también podemos imaginar que si logramos un protocolo
de consenso distribuido, y pudimos usarlo para construir un almacén de valores clave distribuidos
a escala global que mapee claves arbitrarias o nombres a valores arbitrarios, entonces eso
habilitará una gran cantidad de aplicaciones . Por ejemplo, un sistema de nombre de dominio
distribuido, que es simplemente un mapeo entre los nombres de dominio humanos comprensibles
a las direcciones IP. O un directorio de clave pública, que es un mapeo entre las direcciones de
correo electrónico del usuario, digamos, a sus claves públicas. O incluso cosas como intercambios
de acciones. Debido a que esta base de datos distribuida, en lugar de hacer un seguimiento de
quién pagó a quién y cuánto dinero, haría un seguimiento de quién transfirió qué unidades de qué
acciones a quién.

2:46

Y lo bueno de esto es que ahora que Bitcoin ha resuelto el problema del consenso distribuido, en
cierto sentido lo intentaremos en esta conferencia. También podemos seguir adelante y tratar de
pensar en soluciones a todos estos otros problemas relacionados. Y, de hecho, hay muchas
Altcoins. Y Altcoins, tendremos varias conferencias más sobre Altcoins. Pero muy brevemente,
Altcoins son sistemas basados en principios similares a los de Bitcoin para lograr, tal vez, objetivos
ligeramente diferentes. A veces, los sistemas de divisas, a veces no los sistemas de divisas, como
una de estas aplicaciones. Y así, dado que podemos resolver el consenso distribuido ahora. Y dado
que podemos construir un almacén de valores de claves distribuidas a nivel mundial. Permite
muchas de estas otras aplicaciones geniales.

3:28

De acuerdo, vayamos a una definición técnica ahora. La definición técnica de consenso distribuido
es realmente bastante simple. Imagine que hay un número fijo, n, de nodos o procesos. Y cada
uno de estos nodos tiene algún valor de entrada.
3:43

Y luego ocurre un protocolo de consenso. Y los dos requisitos en este protocolo de consenso son
que el protocolo debe terminar, y todos los nodos correctos deben decidir sobre algún valor, el
valor de consenso, ¿de acuerdo? Y digo nodos correctos, porque algunos de los nodos pueden ser
defectuosos, o incluso abiertamente maliciosos.

4:00

Y el segundo requisito es que este valor en el que están de acuerdo no puede ser un valor
arbitrario. Pero debería ser un valor que fue propuesto como entrada por al menos uno de estos
nodos correctos. Entonces, es así de simple. Pero intentemos ver qué podría significar esto en el
contexto de Bitcoin.

4:17

Entonces, para entender cómo el consenso distribuido podría funcionar en Bitcoin, comencemos
con un recordatorio de que Bitcoin es un sistema de igual a igual, ¿de acuerdo? Entonces, lo que
quiero decir cuando digo que Bitcoin es un sistema de igual a igual es que cuando Alice quiere
pagarle a Bob, lo que hace es transmitir la transacción a todos los nodos de Bitcoin que componen
la red de igual a igual. Y puedes ver aquí la estructura de la transacción. Esto es similar a
GoofyCoin, que vimos en la primera conferencia. Y lo que una transacción va a tener es que tendrá
la firma de Alice. Que los otros nodos necesitan para saber que realmente, de hecho, vino de Alice.
Tendrá la clave pública de Bob, que también accede a su dirección en la que desea recibir bitcoins.

5:01

Y además, contiene un hash. ¿Qué es este hash? Recuerde esta noción de punteros que vimos en
la primera conferencia. Entonces este hash es una forma para que Alice vincule esta transacción, o
esta moneda con el recibo de esta moneda de otra persona previamente, ¿de acuerdo? Entonces
esas son las cosas que están contenidas en esta estructura de datos que llamamos transacción. Y
ella lo transmitirá a todos los nodos punto a punto de Bitcoin.

5:28

Y nota algo gracioso aquí. La computadora de Bob no está en ninguna parte de esta imagen.

5:32

Ahora Bob, si quiere que se le notifique que esta transacción de hecho sucedió y que le pagaron,
podría querer ejecutar un nodo de Bitcoin que sea uno de estos nodos punto a punto, para poder
escuchar la red y ser escuchado. Seguro que ha recibido esa transacción. Pero su escucha no es, de
hecho, necesaria para que él reciba los fondos. Los bitcoins serán suyos ya sea que esté
ejecutando o no un nodo en la red. Entonces, dado este sistema peer-to-peer, ¿qué es
exactamente lo que los nodos pueden querer alcanzar en consenso? Bueno, dado que una
variedad de usuarios están transmitiendo estas transacciones a la red. Lo que todos quieren llegar
a un consenso es exactamente qué transacciones se emitieron, y el orden en que sucedieron estas
transacciones.

6:13

Entonces, ¿qué significa eso, específicamente? Cómo podría funcionar el consenso en Bitcoin es
que, en un momento dado, todos los nodos en la red de igual a igual tendrían una secuencia de
bloques de transacciones sobre los que han llegado a un consenso. Así que recuerde que en
ScroogeCoin, para fines de optimización, para la eficiencia, colocamos las transacciones en
bloques. Y unimos estos bloques en una cadena de bloques. Entonces estamos utilizando un
principio similar aquí. Podríamos hacer un consenso sobre las transacciones una por una, eso
estaría bien. Sería simplemente ineficiente. Entonces, en cambio, hacemos un consenso bloque
por bloque. Entonces, en cualquier punto dado, todos estos nodos en la red peer-to-peer tendrían
la secuencia de bloques que ya han acordado. Y cada nodo tendría entonces un conjunto de
transacciones pendientes de las que se había enterado. Así que recuerda que para estas
transacciones, el consenso aún no ha sucedido. Y así, casi por definición, cada nodo puede tener
una versión ligeramente diferente de las transacciones pendientes de las que se ha escuchado. La
red peer-to-peer no es perfecta, por lo que algunos nodos pueden haber oído hablar de una
transacción, pero no de otros nodos. Entonces, dado que tenemos la configuración, lo que podría
pasar es que tienes la secuencia de bloques que todo el mundo ha acordado. Un bloque es solo
una serie de transacciones.

7:27

Y ahora hay, digamos, estos tres nodos en el sistema, cada uno de los cuales propone, cada uno de
los cuales tiene una entrada, el conjunto de transacciones pendientes de las que se ha enterado.

7:36

Y ejecutan juntos algún protocolo de consenso.

7:40

Y para que el protocolo de consenso tenga éxito, puede seleccionar cualquier bloque válido,
incluso si es un bloque propuesto por un solo nodo. Y para que un bloque sea válido, todas estas
transacciones deben tener las firmas criptográficas correctas, etc.

7:55

Entonces, podría seleccionar cualquiera de estos bloques válidos, y el protocolo de consenso aún
estaría bien. Si alguna transacción de alguna manera no llega a este bloque en particular que se
elige como resultado del protocolo de consenso, simplemente podría esperar y pasar al siguiente
bloque. Entonces quizás este bloque verde sea elegido. Ahora se agrega a la cadena de bloques de
consenso. Y luego el protocolo procede y enruta.

8:17
Entonces, si tomaste la teoría tradicional del consenso distributivo y la aplicaste a Bitcoin, este es
el tipo de sistema con el que podrías terminar. Ahora, esto tiene algunas similitudes con la forma
en que funciona Bitcoin, pero no es exactamente como funciona Bitcoin. ¿Y por qué es eso? Y la
razón de esto es simple. Hacer las cosas de esta manera es un problema técnico realmente difícil,
por una variedad de razones. Hay algunos más obvios. Los nodos pueden bloquearse y los nodos
pueden ser maliciosos.

8:43

Pero también porque la red es muy imperfecta. Es un sistema peer-to-peer. No todos los pares de
nodos están conectados entre sí. Podría haber fallas en la red debido a una mala conexión a
Internet, etc. Y finalmente, habrá mucha latencia en el sistema, porque todas estas cosas suceden
a través de Internet. Ni siquiera están dentro de un solo centro de datos o algo así.

9:04

Y una consecuencia particular de esta alta latencia es que no hay una noción de tiempo global.
¿Qué significa esto y por qué es importante? Significa que no todos los nodos pueden aceptar un
orden común de eventos, simplemente basado en la observación de marcas de tiempo.
Simplemente no funciona así. Por lo tanto, no es posible diseñar su protocolo diciendo cosas como
tomar el nodo que envió el primer mensaje en el paso uno. Y haz que ese nodo haga algo en el
paso dos. Simplemente no puede funcionar así, porque no todos los nodos estarán de acuerdo
sobre qué mensaje se envió primero, en el primer paso del protocolo. Así que esto realmente
impone serias restricciones sobre qué tipo de algoritmos puedes poner realmente en tus
protocolos de consenso.

9:46

Y, de hecho, debido a estas limitaciones, mucha de la literatura sobre consenso distribuido es algo
pesimista. Y muchos resultados imposibles han sido probados. Voy a nombrar un par de estos, en
caso de que quieras buscarlos, pero no entraré en demasiados detalles. Un resultado imposible
que es muy conocido y bastante simple de entender se llama problema de los generales
bizantinos. Y uno mucho más sutil, conocido por los nombres de los autores que lo probaron por
primera vez, se llama resultado de imposibilidad de Fischer-Lynch-Paterson. En algunas
condiciones, que incluyen los nodos que actúan de manera determinista, lo que demostraron es
que el consenso es imposible, incluso con un único proceso defectuoso. Entonces, a pesar de estos
resultados imposibles, hay algunos protocolos bien conocidos. Y Paxos es probablemente uno de
los más conocidos. Y lo que hace Paxos es hacer ciertos compromisos. Lo que te da es que nunca
produce un resultado inconsistente, lo que sería realmente malo. Pero acepta el compromiso de
que, bajo ciertas condiciones, aunque sean raras, el protocolo puede quedarse atascado y no
lograr ningún progreso.

10:47
Pero aquí está lo interesante. Estos resultados imposibles fueron probados en un modelo
diferente. Estaban destinados a estudiar bases de datos distribuidas. Y este modelo no se lleva
bien, este fue el entorno bajo el cual opera Bitcoin. Entonces, ¿qué resultados realmente nos dicen
más sobre el modelo que sobre el problema, de hecho? Y lo que hace Bitcoin es que viola muchas
de las suposiciones que entran en estos modelos. Y debido a eso, el consenso en Bitcoin,
irónicamente, funciona mejor en la práctica que en la teoría. Y lo que esto realmente significa es
que la teoría que se desarrolló para un conjunto diferente de problemas debe ponerse al día, para
poder decir cosas realmente interesantes sobre Bitcoin. Pero, sin embargo, esa teoría es bastante
importante porque, por ejemplo, puede ayudarnos a predecir ataques imprevistos, y realmente
ser capaz de obtener fuertes garantías sobre la naturaleza del consenso y la seguridad en Bitcoin.

11:43

Entonces, ¿cuáles son estas suposiciones diferentes? ¿Cuáles son algunas cosas que Bitcoin hace
de manera diferente? Bueno, antes que nada, introduce la idea de incentivos. Y esto es muy
diferente de cualquier sistema anterior de consenso distribuido. Y esto solo es posible en Bitcoin
porque es una moneda. Y puede usar esa moneda para incentivar a los participantes a actuar
honestamente.

12:04

Y así, Bitcoin no resuelve el problema del consenso distribuido en un sentido general. Pero lo
resuelve en el contexto del sistema monetario. La otra cosa que hace de manera diferente es que
realmente abarca la noción de aleatoriedad. Y lo que quiero decir con eso es que una de las cosas
que hace es eliminar la noción de un punto de partida específico y un punto final para el consenso.
En cambio, el consenso sucede durante un largo período de tiempo, aproximadamente una hora
en el sistema práctico. Pero incluso al final de ese tiempo, no está 100% seguro de que una
transacción o un bloque en el que esté interesado haya llegado a la cadena de bloques de
consenso. En cambio, a medida que pasa el tiempo, tu probabilidad aumenta más y más. Y la
probabilidad de que te equivoques al hacer una suposición sobre una transacción disminuye
exponencialmente.

12:49

Entonces ese es el tipo de garantía inherentemente probabilística que Bitcoin le ofrece. Y es por
eso que es capaz de evitar por completo estos resultados de imposibilidad tradicionales en los
protocolos de consenso distribuido.

También podría gustarte