We shall make the first step of implementing the chain synchronization protocol based on a mini-protocol framework. The framework that resulted from #58 and #67 still lacks means for mini-protocol programs communicating with their environments; so we shall for now implement only a fragment of the chain synchronization protocol that doesn’t perform such communication. Concretely, this fragment shall have the following restrictions:
The server sticks to a single chain throughout protocol execution, which it receives upon startup as a program argument.
The client maintains its current chain only internally as a program argument “updated” upon recursive calls.
The chain that the client starts with should be passed to it upon startup. Note that this chain may disagree with the server’s chain, so that the protocol cannot just start with the server sending additional blocks for the client chain.
We shall make the first step of implementing the chain synchronization protocol based on a mini-protocol framework. The framework that resulted from #58 and #67 still lacks means for mini-protocol programs communicating with their environments; so we shall for now implement only a fragment of the chain synchronization protocol that doesn’t perform such communication. Concretely, this fragment shall have the following restrictions:
The chain that the client starts with should be passed to it upon startup. Note that this chain may disagree with the server’s chain, so that the protocol cannot just start with the server sending additional blocks for the client chain.