bcnet

Mensajes entre nodos

Por enrique ()


Todos los nodos tienen dos modos: in, out

En in el nodo recibe mensajes y solo responde TRUE or FALSE -> que significa si el mensaje es candidato valido a cambiar el estado de la maquina

( quedar dentro de la bc )

En out el nodo responde con datos en formato del script.

Ejecución de un nodo

Lista de tareas para la ejecución en el timer

sincro entre nodos:

1) Punto de entrada: el nodo trata de obtener la lista de nodos desde otros nodos, si no conoce ninguno desde una url si no esta disponible

trata de descubir un nodo.

2) Pregunta a otros nodos por los ultimos "bloques y msg" y trata de sincronizar la block chain y el buffer (mempool) local con la de los otros nodos.

3) Trata de construir un bloque, si se logra lo propaga a los peers

3b) Si hay una colision de bloques ( dos validos mismo marco de tiempo-id ) el algoritmo de consenso determina el optimo.

Ejemplo de sincronizacion entre nodos:

Nodo A tiene en db hasta blockId: 10

Nodo B tiene en db hasta blockId: 9

Cuando un nodo crea un bloque avisa a los peers

???Cada cierto tiempo, todos preguntan por los últimos datos de las DB: bc, buffer ( mempool ), nodes ( lista de ip ) en modo OUT.

//trae el ultimo bloque conocido

#define: netName, myred;

#call: yourLastBlockId@event;

//nuevo bloque desde otro nodo ?????

#define: netName, myred;

#call: myLastBlock@event;

#div: block;

....script...

#endDiv:;

//propaga un tx

#define: netName, myred;

#call: newTx@event;

#div: block;

....script...

#endDiv:;

//propaga un tx

#define: netName, myred;

#call: newTx@event;

#div: block;

....script...

#endDiv:;