Duas formas de recuperar o atraso
O arranque inicial (bootstrapping) — chegar à versão atual a partir do nada — pode ser feito de duas maneiras fundamentalmente diferentes. Reexecutar o histórico. Começar na génese e avançar, executando de novo todas as transações ou aplicando os resultados que a execução já produziu. O resultado é um nó que detém o histórico inteiro: todas as versões, todas as provas, todas as transações. É também lento, e fica mais lento a cada dia que a cadeia corre. Descarregar o estado atual. Saltar o histórico e obter as chaves e os valores de estado tal como estão na versão mais recente, verificados contra a raiz confirmada. O nó fica atualizado numa fração do tempo e não sabe nada sobre como a cadeia lá chegou.Um nó novo
Modo de arranque
Reexecutar o históricoreexecutar ou aplicar os resultados, desde a géneselento, e mais lento a cada dia que passa
Descarregar o estado atualchaves e valores na versão mais recente, verificados contra a raiz confirmadaatualizado numa fração do tempo
Versão atualsincronização contínua
Os caminhos não são equivalentesUm nó que descarregou o estado atual não serve consultas históricas nem sabe como uma posição chegou onde está. Um nó que alimenta um indexador ou uma auditoria precisa do histórico que saltou.
Esta é uma decisão operacional, não um valor por omissão a aceitar sem pensar. Um nó que descarregou o estado atual não consegue servir consultas históricas nem responder a perguntas sobre como uma posição chegou onde está — não tem histórico para ler. Um nó que sirva um indexador ou um processo de auditoria precisa do histórico que saltou.
Manter-se atualizado
Uma vez na versão atual, um nó acompanha a cadeia consumindo os blocos confirmados à medida que chegam — de novo executando as transações ou aplicando os resultados, com o mesmo compromisso entre força de verificação e velocidade. A diferença face ao arranque inicial é que a distância é pequena e constante, em vez de grande e a diminuir. Um nó que fique suficientemente atrasado volta a entrar no caminho do arranque inicial, em vez de tentar fechar uma distância arbitrária de forma incremental.Como os dados circulam
A sincronização não é um nó a pedir a outro um intervalo de blocos. Separa-se em camadas, para que nenhum par isolado seja uma dependência e nenhuma falha isolada trave o progresso.
A consequência que vale a pena perceber: um nó em sincronização não está a confiar num par. Cada segmento chega com uma prova contra uma raiz que a rede confirmou, e um par que sirva algo inconsistente é rejeitado em vez de merecer crédito. A seleção de pares é uma decisão de desempenho, não uma decisão de confiança.
Verificação
Nada na sincronização de estado é aceite apenas por crédito de quem o enviou. Os valores de estado são verificados contra a raiz do estado confirmada. As transações e os resultados são verificados contra os acumuladores. Um nó que termina o arranque inicial tem um estado cuja raiz corresponde ao que um quórum de validadores assinou — e é isto que torna seguro o caminho rápido: descarregar o estado atual salta o histórico, mas não salta a verificação.Para onde ir a seguir
Armazenamento e provas
As estruturas que tornam a sincronização verificável.
Operar um nó
Os papéis de nó e como pedir informações sobre a operação de um nó.
Topologia da rede
Com que nível de nó está a falar um par em sincronização.
Indexador
O que o histórico responde e o estado atual não consegue.