Gente, desculpem minha ignorância, mas eu não conheço bem o funcionamento desse
roulette selection e acredito que seja dúvida de outros também.
Especificamente nessa parte....
6- calcula-se o vencedor usando "roulette selection" de acordo com a ordem da tx e seu peso.
... gostaria de entender como que é calculado uma probabilidade maior de ganho para quem apostou mais (tem mais "peso") com base nesse algoritmo?
Roulette selection é um algoritmo bem simples pra se escolher um elemento de uma lista. Parecido com o que crianças usam em algumas brincadeiras. Na minha terra a gente falava "adoleta" e cada um mostrava um numero, depois o organizador somava todos os numeros mostrados e contava as pessoas sequencialmente até chegar na soma. A pessoa em que "caisse" o ultimo numero era a sorteada. O algoritmo seria assim:
1- você sorteia um numero (no caso, o numero sorteado é o numero dado pela hash dos blocos conforme descirto no post original)
2- você ordena todos os elementos por algum criterio deterministicos (no caso, pelo tx id)
3- você conta os elementos em ordem até chegar no numero corteado.
3 a. se chegar no ultimo elemento e não tiver terminado ainda a contagem, recomece do começo, como se os elementos estivessem organizados em circulo. O nome de "roulette" vem dessa caracteristica, onde os elementos ficam organizados em forma de "roleta".
Exemplo:
elementos: A, B, C, D, E e F.
Numero sorteado: 15.
Contagem:
1->A, 2->B, 3->C, 4->D, 5->E, 6-> F, 7 -> recomeça -> A, 8 -> B, 9 -> C, 10 -> D, 11 -> E, 12 -> F, 13 -> A, 14->B 15 ->C ->sorteado
No exemplo eu recomecei 2 vezes do inicio. Isso pode acontecer quantas vezes forem necessárias.