Trazendo um pouco do tópico "Perguntas e Respostas" para cá, alguém para explicar a diferença de um bloco orfão e stale? Valendo merits, claro.
A solução para esse problema é simples: aguarde mais de 1 confirmação antes de considerar uma transação irreversível. Claro que esse tipo de situação não acontece com frequência, mas isso poderia ser utilizado por uma pessoa maliciosa para tentar fazer um double-spend mesmo depois de 1 confirmação no bloco que será deixado de lado caso perca a corrida para se tornar parte da chain mais longa.
Acho que a resposta mais curta é essa: Órfão não tem pais (não pode ser verificado) e stale não tem filhos (não é a chain mais longa)
E por fim todo mundo usa o nome "blocos órfãos" quando na verdade estão se referindo a stale blocks..
Este gráfico mostra o quão raro é um bloco órfão:
https://www.blockchain.com/charts/n-orphaned-blocksInteressante, eu to acostumado com Stale Shares minerando Ethereum que no caso é quando o pool já está em um bloco a frente e o minerador envia uma resposta referente ao um bloco que já foi minerado.
No caso de um Stale Block seriam 2 mineradores que chegaram a solução de um bloco praticamente ao mesmo tempo, ai os nodes começam a receber a informação sobre esse novo bloco... alguns nodes recebem primeiro a informação vinda do minerador1 e alguns nodes recebem a do minerador2 (principalmente questão de latência da internet)... No fim das contas oque vai prevalecer é oque formar a corrente mais longa, posteriormente os outros nodes também vão seguir a corrente mais longa e vão abandonar esse Stale block. (por isso é tão importante aguardar mais do que 1 confirmação)
A situação do bloco órfão também ocorre quando 2 blocos são minerados praticamente ao mesmo tempo e acabam sendo validados na ordem inversa... o mais recente (filho) aparece antes do anterior (pai), essa situação foi prevista e é tratada deixando o bloco órfão aguardando até a inclusão do pai.
Devido a diferença de tempo entre blocos (~14s vs ~10min) entre o ETH e BTC, o Ethereum gera muito mais blocos "inúteis" e então trabalha de forma um pouco diferente.. ele anexa os blocos tios (uncle blocks) ao bloco principal e estes uncle blocks agregam peso aos blocos principais e o protocolo da preferência a cadeia mais pesada ao invés da mais longa como é o caso do BTC..
Acredito que no caso do ETH tal "problema" vá para os
shares dentro das pools, dependendo da velocidade da internet você vai ter muito mais
shares inválidos.. O que diminui o lucro de tal minerador..