Olá, Habr!
Neste artigo, vou falar sobre a geração de números pseudo-aleatórios por participantes que não confiam uns nos outros. Como veremos a seguir, é bastante fácil implementar um gerador “quase” bom, mas um muito bom é difícil.
Por que se preocupar em gerar números aleatórios para participantes que não confiam uns nos outros? Uma área de aplicação é em aplicativos descentralizados. Por exemplo, um aplicativo que aceita um lance de um participante e duplica o valor com uma probabilidade de 49% ou tira de 51% só funcionará se puder obter um número aleatório de forma imparcial. Se um invasor puder influenciar o resultado do gerador de números aleatórios e até mesmo aumentar ligeiramente sua chance de ser pago no aplicativo, ele pode facilmente devastá-lo.
Quando projetamos um protocolo de geração de número aleatório distribuído, queremos que ele tenha três propriedades:
Ele deve ser imparcial. Em outras palavras, nenhum participante deve influenciar de forma alguma o resultado do gerador de números aleatórios.
. , , ( - ) , .
, , - .
: RANDAO + VDF , . , .
, , , .
RANDAO
RANDAO - , , . , . , XOR, .
, , . .
(.. ): , , . , , , , .
, , RANDAO? , , , . , , , , XOR, , , . , 1 . , .
, , -. . , .
RANDAO + VDF
, RANDAO , : , , XOR , , , , .
(vdf_output, vdf_proof) = VDF_compute(input) //
correct = VDF_verify(input, vdf_output, vdf_proof) // Verifiable Delay Function, VDF. , , , .
VDF . , , VDF , Ethereum 2.0 RANDAO VDF . , , , , ( , ).
VDF, VDF . , , 10x. , ASIC, VDF , , RANDAO. - , , , , .
VDF ASIC 100+ , . , 10 , VDF, ASIC, 100 , 10- , , , VDF, , 100 x 100 = ~ 3 .
Ethereum Foundation ASIC. , , RANDAO + VDF , ASIC.
. , 100 . , :
, 67 , 100 , , 67 , 100 . .
, 67 .
, 67 , , .
67 (3), , XOR , (1).
, . , , ⅔ , . , , , , .
, (1) , ? , , , . , : , , , , , . (2) , ( , , , ). 67 , 67 ( ), 67 , .
(4) 67 , , :
, , , , .
, , .
.
, (1), (1), , (2) (3), (2) (3). , , . – XOR , .
BLS. , , , , , .
BLS – , . , .
BLS- , , – BFT. , 100 , , 67 . BLS- -, 67 , BLS-. 67 ( ) , , 67 , , , 67- , . , 67, .
, , , , , 67 ( , ) , . : , ( RANDAO , , ), BLS-. , 67 , .
, ⅔ , ⅓ . , , ⅓ ⅔ , .
– . , , .
– NEAR. NEAR – , .
!