pero la clave es que validan que consigue muchas transacciones por segundo siendo gratis y con un hardware minimo, no con grandes granjas de minado como todos los ejemplos que has descrito[...]
¡Esto lo consiguen
todos los coins Proof of Stake, DPoS etc.! ¡No solo Nano! (Ejemplos con grandes capacidades en tps son Bitshares y Steem.)
No se simuló un double spend por que no es posible
Ah, asi que hemos encontrado a una milagrosa tecnología que resuelve todo lo que en 50 años de investigación sobre consensos en informática no se ha conseguido.
(otra vez, no estoy en contra de Nano, pero no creo en estos milagros.)
Supón que un nodo consigue enviar la misma transacción a otros dos nodos, al hacer el proof of work ambos nodos verían que hay dos bloques que vienen del mismo bloque, por lo que enviarían un voto a la red para que los representantes voten sobre cual fue antes y cual debe ser el válido, este proceso dura 1 minuto
OK, esto es lo que quería saber. 1 minuto es entonces el tiempo de confirmación "real". Eso me parece un número realista y válido.
Si no hubiera conflictos, en cualquier blockchain se podrían aceptar transacciones zero-conf y tendríamos confirmaciones "instantáneas". Lo que pasa que como "merchant" no podés confiar en que no haya conflictos - siempre pueden ser double-spends malintencionados - así que deberías esperar este minuto para terminar de aceptar la transacción (y dar la contraprestación).
Y en el caso de que a primera vista no haya conflicto, lamentablemente, tampoco puedes confiar que sea válida, porque el atacante puede enviar otra con los mismos fondos pocos milisegundos después e intentar que
ésta sea aceptada por los delegados. Así que no puedes escaparle a este minuto de espera.
Tampoco me gusta mucho que las transacciones de Nano sean más grandes que las de Bitcoin (tienen aproximadamente el doble del tamaño, o sea 400 vs. 220 bytes).
Me gustaría saber donde has encontrado ese dato, ya que para enviar transacciones, Nano utiliza los paquetes el peso mínimo que permiten los paquetes UDP para ser enviados por internet, y cada transaccion pesa 128 bytes. (Página 5 del whitepaper).
De esta frase del whitepaper en inglés:
RaiBlocks network has processed 4.2 million transactions with an unpruned ledger size of only 1.7GB
que menciona el link "crítico" que posteé en una de las últimas transacciones. Puede ser que el tamaño inicial de una transacción sean 128 bytes, pero lo que importa es lo que queda al final ...
Edit: En este caso tienes un punto a favor - incorrectamente comparé la
media del tamaño de las transacciones de Nano con la
mediana de la de Bitcoin. La media de Bitcoin también está en el orden de 350-400 bytes.
¿Pero no era que en Nano todos los nodos deben procesar (validar) y guardar todas las transacciones del DAG (block lattice)?.
No es lo mismo tener que validar todas las transacciones de una red mientras compites con ordenadores potentes que realizar POW para una transacción, en el primer caso necesitas un ordenador muy potente dedicado a una función específica y si tu ordenador no es más potente que el resto te quedas atrás, en el sgundo caso no compites con Nano y hacer POW para 1 transacción tarda 3 segundos y se puede hacer desde el un Windows 98.
No escribí sobre el trabajo de "confirmación" (la "minería" de Bitcoin) sino el trabajo de validación que hace cada nodo para grabar solo las transacciones válidas.
Pero si aparecen todo el tiempo nuevas transacciones entre otros nodos - está claro que no tendrás que hacer PoW para éstas (sino solamente para las que envias), pero si participás del proceso de validación, que luego ayuda a los nodos DPoS a encontrar el "DAG correcto". Por lo menos en Bitcoin este es el cuello de botella, no la minería ...
No se si no acabas de entender el funcionamiento de Nano, solo participan en el proceso de PoW aquellos nodos que puntualmente reciban o hagan una transacción
Si, así lo he entendido (lee lo que puse en negrita).
, cuando hay conflicto los nodos validadores (que han tenido asignado como representantivos para votar por otros nodos) son lo que votan y deciden, este proceso no consume muchos recursos ni requiere mucho hardware
Sí, aceptado, pero como ya escribí arriba: esto pasa en todos los coins basados en PoS.
El cuello de botella de Bitcoin claro que es la competencia por quién valida el bloque lo que lleva a usar el hardware más potente del mercado, esto repito, NO pasa en Nano.
Yo no me refería a la minería, sino - otra vez - al trabajo de validación "de primer nivel" (es decir, verificar que la transacción sea consistente con el resto de la blockchain) que tiene que realizar
todos los nodos (los "full nodes") para elegir las transacciones válidas y descartar el resto. Este trabajo consume bastantes recursos (ver
este estudio, por ejemplo, en el caso de Bitcoin, teniendo bloques de 8 MB - lo que equivale a ~30-50 tps - se requiere hardware de ~32 GB de RAM para cada nodo - o sea una computadora bastante potente.
En Bitcoin, los mineros son generalmente indivíduos o grupos con hardware muy potente ya que además de esta validación "de primer nivel" realizan el trabajo PoW ("validación de segundo nivel" o "confirmación"), por lo que para ellos el trabajo de validación de primer nivel no es el cuello de botella. El problema es que si aumentás las tps a un valor muy alto, solamente los mineros y otros usuarios con buen hardware pueden operar un nodo "completo".
Éste es en cuello de botella al que me refería.
Los DAG (como Nano) y otras tecnologías con bloques "pequeños" pueden requerir menos trabajo para los nodos ya que hay menos operaciones de hashing, pero tienen otros problemas - ver el link de Lior Yaffe - y por el momento no se sabe cual de los dos sistemas es mejor.
Es el funcionamiento de cualquier blockchain, pero solo determina la validez desde el punto de vista del receptor, lo que equivale a una transacción "zero-conf" de Bitcoin.
No es el proceso de cualquier blockchain, no todas las transacciones se agrupan y se varifican en bloque, si no que son analizadas individualmente. En una transaccion con 0 confirmaciones no se verifica que el nuevo bloque sea coherente con la historia de la blockchain, con el diseño de Nano sí.
Creo que aquí estás mal informado. En Bitcoin, cada uno de los nodos verifica que todas las transacciones que recibe sean coherentes con el resto de la blockchain. Las tx válidas se guardan en el mempool y se difunden, el resto son descartadas. Los mineros agrupan las transacciones válidas en bloques y con ellas realizan el PoW, pero este es el segundo paso, la "confirmación".
- ¿se pueden revertir transacciones si ya han sido "confirmadas" por los delegados? Si no es así, ¿qué se hace cuando hay conflictos basados en malfunciones de la red, por ejemplo diferencias en la latencia (teorema CAP)? (De hecho este es la razón por la cual se permiten "forks" en las blockchains).
Los delegados solo están involucrados en el caso de que haya conflicto, da igual en que orden lleguen las transacciones lo importante es que haya un acuerdo global, en el caso de que haya conflicto se hace un fork hacia la cadena válida. (Para más detalles página 3 del whitepaper).
OK gracias.