通常,我们理解依赖block.timestamp
来生成随机,因为矿工可以尝试评估keccak256(block.timestamp)
(假设我们的哑随机函数正是这个函数(,尝试:
- 根据难度找到一个好的哈希
- 在有利的区块中尝试。时间戳
这是:理论上,随机数可以是"0";被黑的";矿工们。我现在的问题是看到这篇使用。。。类似的方法,出于类似的原因,我先验地认为这是不安全的。但无论如何,我想问这些问题:
- 所有这些变量都容易被矿工操纵吗
- 这些价值观实际上是什么时候决定的?(特别是
block.number
、blockhash(n in 1..256)
、block.timestamp
的含义 - 作弊矿工可以在多大程度上操纵所有一起使用的变量
链上所有"随机性";应该被认为是确定性的,而不是真正的随机性。你对不同程度的伪随机数的舒适程度可能取决于你使用的值或其他值。
通过VRF或VDF实现的随机数预言机提供可证明的随机数。