¿Cómo diseñar una red blockchain de ethereum escalable?

He configurado el bloque de ethereum privado siguiendo los siguientes pasos.

1- Inicializado el mismo genesis.json en 2 sistemas.

2- Inicié la consola geth usando la misma identificación de red.

3- Se agregaron estos dos sistemas (nodo) agregándolos como pares usando el comando admin.addPeer.

Ahora puedo hacer todas las transacciones.

Preguntas :

1- Ahora esta cadena de bloques privada está lista y si tengo que agregar un nuevo usuario, ¿eso significa que tengo que iniciar un nuevo servidor y en ese servidor, tengo que seguir los pasos anteriores?

2- ¿Cómo configuran su infraestructura estas carteras (carteras ETH)? ¿Tienen un servidor que esté conectado a la blockchain pública de ethereum? y cualquier nuevo usuario que se una/compre-ether de estas billeteras básicamente se agrega a estas billeteras como una cuenta, no como un nuevo par?

3- A partir de las dos preguntas anteriores, descubrí que, básicamente, hay tantos intercambios o billeteras que están conectados como pares a la cadena de bloques pública y que las personas que compran o venden usando estas billeteras son básicamente cuentas de estas billeteras. (se agregó una nueva cuenta, por ejemplo: personal.newAccount("xux"))

Soy nuevo en blockchain y trato de entender la infraestructura de cómo se está configurando para poder replicar lo mismo para mi blockchain privado. Corrígeme si me equivoco y despeja mis dudas.

Gracias de antemano.

En la pregunta #1. ¿A qué te refieres con un nuevo usuario? ¿Un nuevo servidor? #2: las billeteras funcionan igual que en la cadena pública de ETH. Son monederos y llaves válidos. Genere una billetera como lo haría normalmente. #3: Las billeteras no están conectadas como pares en absoluto. Las billeteras son saldos en el libro mayor público/privado. Un usuario usa su clave privada para acceder a sus billeteras y transferir ether a otro lugar o para ejecutar contratos inteligentes.

Respuestas (3)

Lamentablemente, Ethereum no es muy escalable. Si desea cambiar algo en el archivo de Génesis. tendrá que reconfigurar todos los nodos. Al menos por ahora no te permite escalar dinámicamente.

  1. Si es solo un nuevo usuario, necesita una nueva cuenta que puede estar en cualquiera de los dos nodos. Agregar otro nodo no será un problema, solo que el archivo de génesis no puede cambiar o reconfigurar todo. Además, para estar en la misma cadena de bloques privada, sus archivos de génesis deben ser los mismos y la identificación de la red debe ser la misma.

  2. Comprender la diferencia entre una cuenta, un nodo y un servidor. Un servidor puede alojar varios nodos, sus nodos son los que usa para conectarse a la red y una cuenta puede estar en cualquiera de sus nodos, puede moverla por la red. (Lleve su almacén de claves con usted). Entonces, cuando dices comprar, haces transacciones, solo puedes enviar. Algo así como una DApp y un contrato inteligente permitiría ejecutar la lógica que solicita y alguien le envía ether desde su "cuenta" a su "cuenta". Sus saldos e historial de transacciones permanecen en la cadena de bloques.

  3. Los pares son básicamente nodos, cuando haces un admin.addPeer, estás reconociendo su existencia en la red. Quorum, que es una bifurcación de Ethereum, permite una forma muy dinámica de agregar pares. Y también proporciona un alto TPS.

1- Ahora esta cadena de bloques privada está lista y si tengo que agregar un nuevo usuario, ¿eso significa que tengo que iniciar un nuevo servidor y en ese servidor, tengo que seguir los pasos anteriores?

No. Estás confundiendo las preocupaciones de la plataforma con las preocupaciones de la aplicación.

Ethereum está diseñado para que todos los nodos que funcionen correctamente lleguen a un consenso sobre la interpretación correcta de las transacciones y, por extensión, el estado del sistema.

La palabra "usuario" está sobrecargada. Podría ser un individuo o una organización, un comité, un dispositivo. En última instancia, el significado de esto es una preocupación de la aplicación que se ocupa de asuntos como la autoridad y el control de acceso. Esto se expresa en el diseño del contrato.

En la práctica, las redes privadas a menudo sirven a múltiples organizaciones y esas organizaciones pueden tener interés en garantizar que otros, por ejemplo, los competidores, no tengan una ventaja injusta. Una solución topológica es que cada organización opere un nodo.

Los contratos son indiferentes a qué nodos usan los usuarios para enviar transacciones.

La resiliencia de la red, no la velocidad, escala con la cantidad de nodos. A medida que se agregan más nodos, las transacciones por segundo no aumentan, pero sí el número de umbral de nodos cómplices necesarios para revisar los hechos históricos.

2- ¿Cómo configuran su infraestructura estas carteras (carteras ETH)? ¿Tienen un servidor que esté conectado a la blockchain pública de ethereum? y cualquier nuevo usuario que se una/compre-ether de estas billeteras básicamente se agrega a estas billeteras como una cuenta, no como un nuevo par?

Las billeteras y los contratos no tienen infraestructura. La red Ethereum proporciona conectividad, procesamiento, estado y resiliencia. Cuando se implementa un contrato en Ethereum, el código del contrato se convierte en un hecho observable en la cadena de bloques. Los contratos deben ejecutar sus instrucciones tal como están codificadas. La cadena de bloques pública proporciona a esta plataforma replicación en muchos miles de nodos. Los contratos publicados no requieren más soporte de infraestructura por parte de sus creadores.

Una cadena de bloques privada (generalmente) usa el mismo software de nodo. El creador diseña una topología que cumple con los requisitos de réplicas, acceso seguro (cada "usuario" debe conectarse al menos a un nodo), conectividad de nodo a nodo, posiblemente detrás de una VPN, generalmente con al menos un nodo en cada participante. organización para que puedan interpretar de forma independiente la cadena de bloques sin depender de los competidores donde los incentivos pueden no alinearse perfectamente.

3- A partir de las dos preguntas anteriores, descubrí que, básicamente, hay tantos intercambios o billeteras que están conectados como pares a la cadena de bloques pública y que las personas que compran o venden usando estas billeteras son básicamente cuentas de estas billeteras. (se agregó una nueva cuenta, por ejemplo: personal.newAccount("xux"))

Blockchain invierte la relación habitual de datos centralizados y nodos dispersos que solicitan información. Hay un conjunto compartido de hechos y un protocolo. Eso es todo.

En una cadena pública, no se requiere infraestructura adicional. Las soluciones de cadena privada rechazan las cadenas públicas y utilizan (en su mayoría) el mismo software para crear redes similares. Es similar a la Internet pública y las intranets internas que utilizan la misma pila de software y protocolos.

Si piensa en las "monedas" como objetos o archivos que se pasan, nunca tendrá sentido. Es más como una hoja de cálculo en el cielo que es evidente para todos los que pueden verla. Hay reglas estrictas sobre las actualizaciones y un historial inmutable de todos los cambios.

Cuando un nuevo nodo se une a una red, lo primero que hace es descargar los bloques, que contienen un historial de transacciones bien ordenado, y ejecuta las transacciones por sí mismo, como un registro de reproducción. Cuando esté completamente al día, el nodo estará en consenso con el resto de la red.

Los nodos (completos) son similares a las réplicas de bases de datos en que contienen el historial de estado completo de todos los usuarios y todos los contratos. Los nodos están de acuerdo en todo. Puede ser útil pensar en los contratos como similares a los procedimientos almacenados. No se permite ninguna actualización arbitraria. Por ejemplo, un administrador de sistemas no puede INSERT INTO TABLE .... Todos están restringidos send(data, {to: contract})y el contrato decidirá si se permite la actualización.

Un nodo rebelde simplemente perdería el consenso con el resto de la red. La red simplemente ignoraría el nodo no autorizado porque los otros nodos, al haber evaluado el historial de transacciones por sí mismos, concluirían que no están de acuerdo con el nodo no autorizado y, por lo tanto, deberían ignorarlo.

El consenso en una cadena privada tiene diferentes limitaciones que el consenso en una cadena pública. En consecuencia, existen variaciones de Ethereum como Quorom. Los patrones de diseño para los sistemas distribuidos son bastante diferentes de los sistemas centrados en el servidor en cualquier caso, pero el rendimiento de las transacciones y los asuntos de privacidad pueden tratarse de manera diferente que en el caso de la red principal pública.

Espero eso ayude.

No creo que deba agregar un servidor para cada usuario, sino identificar claramente sus requisitos.

¿Le gustaría tener la cadena de bloques Consortium que tiene algunos nodos autorizados predefinidos?

En general, no necesita un servidor para cada usuario; en cambio, si aumenta el número de usuarios y quieren realizar algunas transacciones de ether, entonces cada usuario debe estar vinculado a una cuenta y tener algo de saldo.