"Aguarde 12 confirmações" é o conselho padrão na maioria das redes, e, honestamente, ninguém explica por que 12, ou o que exatamente está acontecendo durante aqueles blocos. A Dusk não usa esse atalho — ela executa uma máquina de estados real para decidir quando um bloco é seguro.
Um bloco passa por quatro estados: aceito, atestado, confirmado, final. O ponto de partida depende de um número — quantas iterações anteriores naquela rodada falharam antes da iteração deste bloco ter sido bem-sucedida. O artigo chama isso de n. Se n = 0, ou seja, o bloco caiu na primeira iteração, sem falhas antes dele, ele é marcado como atestado imediatamente. Se n for maior que 0, significando que iterações anteriores naquela rodada falharam primeiro, o bloco só é marcado como aceito, que é um estado mais fraco.
A diferença importa porque um bloco aceito ainda pode ser substituído por um bloco concorrente de uma iteração inferior — ainda não é seguro. Um bloco atestado não pode ser substituído dessa forma, já que não existe mais uma iteração inferior que poderia vencê-lo. A partir daí, confirmado significa apenas que o bloco tem quantidade suficiente dos blocos sucessores corretos empilhados sobre ele, e final significa que toda a sua cadeia de ancestrais também é final, travando-o permanentemente.
A parte que eu considero genuinamente subestimada aqui é o exemplo no próprio artigo: um bloco na iteração 5, em que apenas duas das iterações anteriores tiveram atestações de falha, é marcado como aceito e precisa de mais quatro blocos atestados ou confirmados empilhados sobre ele antes de ser confirmado. Isso não é uma contagem arbitrária de confirmações tirada do nada — é um número calculado diretamente a partir de quão bagunçada foi aquela rodada específica. Uma rodada limpa finaliza mais rápido. Uma rodada turbulenta leva mais tempo. É um modelo bem diferente de "apenas espere 12 blocos, independentemente do que aconteceu."
Sendo bem honesto, isso parece um tipo de detalhe de design que importa muito mais para instituições avaliando a finalização de liquidação do que para traders de varejo — ninguém trocando tokens se importa com contagens de iteração, mas um banco executando uma liquidação de valores mobiliários certamente se importaria.
@Dusk
$DUSK
#dusk
Um bloco passa por quatro estados: aceito, atestado, confirmado, final. O ponto de partida depende de um número — quantas iterações anteriores naquela rodada falharam antes da iteração deste bloco ter sido bem-sucedida. O artigo chama isso de n. Se n = 0, ou seja, o bloco caiu na primeira iteração, sem falhas antes dele, ele é marcado como atestado imediatamente. Se n for maior que 0, significando que iterações anteriores naquela rodada falharam primeiro, o bloco só é marcado como aceito, que é um estado mais fraco.
A diferença importa porque um bloco aceito ainda pode ser substituído por um bloco concorrente de uma iteração inferior — ainda não é seguro. Um bloco atestado não pode ser substituído dessa forma, já que não existe mais uma iteração inferior que poderia vencê-lo. A partir daí, confirmado significa apenas que o bloco tem quantidade suficiente dos blocos sucessores corretos empilhados sobre ele, e final significa que toda a sua cadeia de ancestrais também é final, travando-o permanentemente.
A parte que eu considero genuinamente subestimada aqui é o exemplo no próprio artigo: um bloco na iteração 5, em que apenas duas das iterações anteriores tiveram atestações de falha, é marcado como aceito e precisa de mais quatro blocos atestados ou confirmados empilhados sobre ele antes de ser confirmado. Isso não é uma contagem arbitrária de confirmações tirada do nada — é um número calculado diretamente a partir de quão bagunçada foi aquela rodada específica. Uma rodada limpa finaliza mais rápido. Uma rodada turbulenta leva mais tempo. É um modelo bem diferente de "apenas espere 12 blocos, independentemente do que aconteceu."
Sendo bem honesto, isso parece um tipo de detalhe de design que importa muito mais para instituições avaliando a finalização de liquidação do que para traders de varejo — ninguém trocando tokens se importa com contagens de iteração, mas um banco executando uma liquidação de valores mobiliários certamente se importaria.
@Dusk
$DUSK
#dusk
