A armadilha do Math.random()
Math.random() é um gerador de números pseudoaleatórios. Ele pega uma semente e produz uma sequência que parece aleatória, mas é totalmente determinística. Se você conhecer a semente, pode prever todos os números que se seguem. Em uma blockchain pública, isso é uma falha fatal. Mineradores ou validadores poderiam ver a semente, ou até influenciá-la, e manipular o sistema.
Há também o problema da verificabilidade. Com Math.random(), não há como os usuários provarem que a saída foi realmente aleatória. Você teria que confiar no desenvolvedor do contrato. Em uma rede descentralizada, essa confiança é difícil de conseguir.
Como o Ethereum gera aleatoriedade
O Ethereum, em vez disso, usa métodos criptográficos para produzir aleatoriedade. Esses métodos são projetados para que a saída seja verificável por qualquer pessoa. Isso significa que um usuário pode verificar se a aleatoriedade não foi manipulada depois do fato.
Os mecanismos exatos são complexos, mas a ideia é simples: combinar entradas de múltiplas partes de uma forma que nenhum ator individual possa controlar o resultado. A saída é então submetida a hash ou processada de outra forma para produzir um valor final aleatório. Como o processo é transparente, o resultado pode ser auditado.
Por que a verificabilidade é inegociável
Contratos inteligentes que escolhem vencedores




