¿Cuántas transacciones por segundo puede manejar Ethereum actualmente? ¿Qué cambios permitirán que la red pueda manejar más? [duplicar]

He estado buscando una respuesta más precisa a esta pregunta, pero he visto mucha información contradictoria que indica que Ethereum actualmente puede manejar entre 12 y 45 transacciones por segundo. ¿Cuál es el número actual correcto?

Entonces, también, según este artículo :

En palabras del creador Vitalik Buterin, el objetivo a largo plazo es que la plataforma pueda procesar transacciones en "niveles de transacciones a escala de Visa" o más.

Se hace referencia a la "escala de Visa" como 45,000 transacciones por segundo.

  • Entonces, ¿qué tiene que suceder a nivel técnico para que se logre este objetivo?
  • ¿Más mineros?
  • ¿Más nodos?
  • ¿Código central más eficiente?

¿O será necesaria una evolución completamente nueva de Ethereum para alcanzar ese nivel de capacidad de transacción?

Respuestas (1)

Hice los cálculos para mostrar el aproximado de tx/s:

  • El límite de gas del bloque es 7,999,992

  • La transacción cuesta 21 000 de gasolina (supongamos que no se adjunta nada más)

  • Eso es ~380 transacciones por bloque

  • Con un tiempo de bloqueo de alrededor de 15,03 segundos. Como muestra https://ethstats.net/ .

Esto nos da aproximadamente: 25.346 tx/s.

Al final de su pregunta, ha mencionado algunas formas posibles de aumentar este número.

  • Cuantos más mineros haya en la red, mayor será la dificultad de la red, porque los algoritmos de cálculo de dificultad siempre intentan que el tiempo del siguiente bloque sea de alrededor de 15 s.
  • Más nodos aumentarán aún más el tiempo de bloqueo porque aparecerá más retraso entre ellos y luego, se necesitará más tiempo para que se sincronicen entre sí.

Existe una relación inversamente proporcional entre el volumen de consenso y la tasa de tx/s . Cuanto más tiempo necesiten los nodos para realizar la sincronización y lograr el consenso, menos tx/s tendrá.

Para mejorar todas las funciones que menciona, ahora hay algunas formas en las que Ethereum está ingresando:

  • Fragmentación (Borns, mientras se da cuenta de que toda la cadena de bloques no puede procesar más transacciones que un solo nodo, puede):"Solución" -> Dividimos el estado y la historia en particiones K = O(n / c) que llamamos "fragmentos". Por ejemplo, un esquema de fragmentación en Ethereum podría poner todas las direcciones que comienzan con 0x00 en un fragmento, todas las direcciones que comienzan con 0x01 en otro fragmento, etc. En la forma más simple de fragmentación, cada fragmento también tiene su propio historial de transacciones y el efecto de las transacciones en algún fragmento k están limitadas al estado del fragmento k. Un ejemplo simple sería una cadena de bloques de activos múltiples, donde hay fragmentos K y cada fragmento almacena los saldos y procesa las transacciones asociadas con un activo en particular. En formas más avanzadas de fragmentación, también se incluye alguna forma de capacidad de comunicación entre fragmentos, donde las transacciones en un fragmento pueden desencadenar eventos en otros fragmentos.

La Fundación Ethereum está donando una gran cantidad de $ para incentivar la investigación sobre fragmentación y plasma.

Aquí les dejo información muy buena de github sobre sharding.

Otra mejora importante es la siguiente:

  • CasperFFG (como se dijo antes, el algoritmo de consenso PoW no es escalable, debido a eso, se están investigando nuevos algoritmos de Prueba de Conceptos de consenso. Ahora Ethereum planea pasar a PoS implementando CasperFFG para comenzar el período de transacción en el que 1/100 tx's ser hecho por PoS. Esencialmente es un algoritmo mixto PoW, PoS cuyo propósito es llegar algún día a una implementación completa de PoS.) Solución -> Al usar algoritmos de consenso PoS, elimina el concepto de minería (como hacer cálculos no rentables para encontrar un hash en un cierto rango). Luego, el tiempo de bloqueo puede disminuir hasta llegar a 5 - 7 segundos (Dicho por Vitalik Buterin).

Aquí os dejo el enlace del paper de CasperFFG.

Hay más ideas para mejorar la velocidad de la red sin perder su principal objetivo: el consenso. Pero publiqué los más importantes.

¡Espero eso ayude!

7,999,992 no es "pi millones". 3141592 es, que es lo que solía ser el límite de gas del bloque :-)
Propón la edición, la acepto!! :)
Agradezco la respuesta increíblemente pensada. La comunidad y yo nos beneficiaremos mucho de esto.
No estoy seguro de entender su punto de reducir el tiempo de bloqueo. (Tal vez lo estoy leyendo de forma incorrecta). Si reduce el tiempo de bloque a menos de 15 s, la tasa de tío aumentará, lo cual es malo. Los algoritmos de ajuste de dificultad están configurados para que se mantenga este tiempo de bloque; no está relacionado con la cantidad de nodos de minería.
Del mismo modo, no creo que aumentar la cantidad de nodos aumente el tiempo de bloqueo. El tiempo de bloque permanecerá igual, según el ajuste de dificultad. Si un nodo no recibe un mensaje propagado a tiempo, o no puede validar un bloque (ya sea porque tardó en recibirlo o porque su hardware no es lo suficientemente bueno), simplemente se queda atrás. Al resto de la red no le importa que sea lenta (y no tiene forma de saberlo).
PoS tendrá que usar un bloque de tamaño similar para permitir que la propagación y la validación ocurran a una velocidad similar a PoW. Si ese es el caso, incluso si el tiempo de bloqueo alcanza los 5 segundos, eso significará solo un aumento de 3x en TPS, lo que significa ~ 75 TPS, en lugar de algo cercano a 100.
Eso es cierto, y para un solo nodo no hay problema. Pero con más de 20000 nodos que ahora están en Ethereum, el tiempo de propagación es importante. Debe asegurarse de que al menos un porcentaje considerable de ellos esté sincronizado con el estado real de la cadena de bloques. Y pueden obligar a la red a esperar más para asegurarse de que un gran porcentaje de los nodos hayan coincidido en el mismo estado de la cadena de bloques.
Revisando ahora la parte de los mas mineros, veo que no me expliqué bien, lo editaré. Y finalmente, sí, será de aproximadamente 75tx/s si somos optimistas, pero con todo el dinero que ahora se invierte en Ethereum, tenemos que entender que las soluciones no pueden llegar tan rápido como queremos, hay muchas pruebas. hacer antes de lanzar cualquier nueva mejora. Si algo falla, millones y millones simplemente desaparecerán. Y si no me equivoco no he dicho nada de 100 tx/s, por que dices eso? ¿Era solo para propósitos de información?
Se eligió el tiempo de bloque (~15 s) porque se consideró tiempo suficiente para que los bloques se propagaran a una parte suficiente de la red. ¿Cómo obligarían a la red a esperar? ¿Cómo saben cuántos nodos acordaron por consenso cuando no conocen el tamaño de la red?
De acuerdo, leí mal la parte de 1/100 txs (pensé que habías dicho que podía administrar 100 TPS), mi error :-)
Porque tal vez no se pensó que el cálculo de 15s permitiera que los bloques se propagaran lo suficiente en una red de +20000 nodos. Lo que estaba tratando de decir es que si la cantidad de nodos aumenta drásticamente, tal vez este tiempo de bloqueo de 15 segundos no sea suficiente para lograr un consenso aceptable. Entonces, tenemos que esperar para que el bloque se propague más tiempo.
De acuerdo, está hablando de un cambio de protocolo para aumentar el tiempo de bloqueo, en lugar de algo que sucederá automáticamente como resultado de que más nodos se unan a la red. Gracias por aclararlo.