哈Ha!
在本文中,我将讨论由彼此不信任的参与者生成伪随机数。正如我们将在下面看到的那样,实现“几乎”好的生成器是很容易的,但是很难实现。
为什么要为彼此不信任的参与者生成随机数呢?应用程序的一个领域是分散应用程序。例如,一个接受参与者出价并以49%的概率将金额加倍或从51%接受的应用程序只有在能够以公正的方式获得随机数时才起作用。如果攻击者可以影响随机数生成器的结果,并且甚至稍微增加了在应用程序中获得报酬的机会,他将很容易破坏自己。
在设计分布式随机数生成协议时,我们希望它具有三个属性:
他一定没有偏见。换句话说,任何参与者都不应以任何方式影响随机数生成器的结果。
他一定是变幻莫测的。换句话说,在生成数字之前,没有参与者应该能够预测哪个数字将被生成(或推断其任何属性)。
该协议必须是可行的,即可以抵抗一定比例的参与者断开网络连接或故意尝试停止该协议的事实。
在本文中,我们将研究两种方法:RANDAO + VDF和擦除代码方法。在下一部分中,我们将仔细研究阈值签名方法。
但首先,让我们分解一个可行,不可预测但有偏见的简单且常用的算法。
兰道
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 – , .
!