Nos das un link a la descripción del algoritmo preciso de PoS? Hay un paper?
No hay un paper. Y además creo que va a tardar en salir el paper de NXT. Vi un borrador del paper no recuerdo dónde y era una guano infecta. Así que tardará.
Sin embargo en bitcointalk sí que han explicado (en el hilo de NXT) cómo funciona el algortimo de forgeado. Eso sí, de forma desordenada y en medio de un hilo de 1000 páginas :ouch: (casi ná) Te paso el link a los puntos clave:
Tienes que estar registrado para ver este contenido
How determined the generator (account) of the next block:
1. X = digest of prevGenSignature gives 256 bits
2. First 64 bits of X is a HIT
3. Target = BaseTarget (which is the same for all accounts) * Balance * Time_since_previous_block
4. If HIT < Target then next block can be generated
Edit: Target grows each second until it "crosses" HIT of one of the accounts
Cada segundo que pasa, el target del forgeador aumenta porque:
Target = BaseTarget (igual para toda la red) * Balance de la cuenta (el stake que tienes) * Tiempo transcurrido desde el bloque anterior.
Siendo BaseTarget algo parecido a la dificultad de minado en el mundillo BTC y que se calcularía como sigue:
BaseTarget
n = BaseTarget
n-1 * (BlockTimestamp
n - BlockTimestamp
n-1) / 60
El forgeado sería algo así:
1.- Enciendes tu equipo, arrancas el cliente, metes tu passphrasse y liberas tu cuenta.
2.- Una vez tienes la cadena actualizada, coges el último bloque de la cadena y buscas un parámetro que se llama "generationSignature". Es la firma del forgeador que generó el bloque.
3.- Entonces, con la clave privada de la cuenta desde la que estás forjando, firmas el "generationSignature" que cogiste del bloque anterior. Eso te dará 64 bytes que serán hasheados y cuyos primeros 8 bytes son un número que el desarrollador ha llamado "HIT" (disparo).
4.- Ahora piensa que el objetivo de ese "HIT" (disparo) es la cuenta nxt con la que estás minando. Ese objetivo será más grande proporcionalmente al número de monedas (stake) que albergue.
5.- Si en el primer disparo, ningún HIT de ninguna de las cuentas que estén forjando en ese momento alcanza un target, los targets irán creciendo de tamaño conforme pase el tiempo.
6.- Cuando un "HIT" alcanza un Target, ese forger tiene autorización para generar un nuevo bloque y comenzará el proceso de nuevo.
Si te fijas bien, el HIT sólo depende del último bloque minado y de la clave privada con la que estés minando. Por lo tanto hay un HIT diferente para cada cuenta (proceso aleatorio de forjado), pero el Target será más grande, y por lo tanto la probabilidad de minarlo) dependiendo de la cantidad de monedas que tenga la dirección del forger.
Con este sistema de minado se consiguen varias cosas:
1.- Las transacciones del sistema pueden ser enviadas directamente al forger que con mayor probabilidad será autorizado a generar el siguiente bloque (si ha decidido revelar su IP), ahorrando tráfico de datos y pudiendo aproximar la escalabilidad de la red a los volumenes de VISA o Mastercard.
2.- Los bloques pueden generarse con antelación y ser enviados a la mayoría de los mineros antes de que sean válidos (timestamp validation), consiguiendo reducir el ratio de bloques huérfanos.
3.- Debido a la posibilidad de predecir el timestamp de bloques futuros, es posible ajustar las comisiones necesarias para asegurar una rápida confirmación para transacciones importantes.
4.- Y la más importante de todas, la red es capaz de detectar qué mineros no están colaborando con la seguridad del sistema
y actuar en consecuencia (esto es el transparent mining, que inhabilita a un minero díscolo para generar bloques válidos durante un tiempo si abandona la red de minado para forjar una cadena ilegítima)
Te he puesto un pupurri de lo que he ido investigando en el hilo de NXT de bitcointalk sobre cómo funcionaría a grandes rasgos el forgeado podemos comentar todo lo que queráis o incluso iniciar un nuevo hilo si queréis, pero hay que tener en cuenta que TODAVÍA NO ESTÁ LIBERADO EL 100% DEL CÓDIGO.
La parte en la que uno de los desarrolladores (Come from Beyond) le dice a uno de los usuarios del foro que tendrá que esperar para saber cómo impide la red que un atacante sustituya la cadena legítima por la suya propia está aquí:
Tienes que estar registrado para ver este contenido
Lee a partir del post del usuarios "Coradan" y mira las respuestas de "Come from Beyond".