随机数在DApp中广泛应用于游戏抽奖、NFT属性生成、验证者选举等场景。然而,区块链是确定性系统,无法直接生成真随机数。任何依赖公开变量(如区块哈希、时间戳)的随机数都可能被矿工或验证者操纵。DApp开发需要选择合适的链上随机数方案,平衡安全性、成本与延迟。
区块哈希是早期DApp常用的随机源,但存在明显缺陷。矿工可以丢弃不利于自己的区块,或通过轻微修改区块时间影响哈希值。对于高价值抽奖,矿工可尝试多次直到获得有利结果。DApp开发应完全避免使用blockhash作为随机数,除非用于无关价值的场景(如展示排序)。
承诺-揭示模式是最简单的去中心化随机方案。用户提交随机数种子哈希(承诺),所有用户揭示种子后,通过XOR运算生成最终随机数。这种方案要求至少有一个诚实的参与者提供不可预测的种子。DApp开发可设计“随机数提供者”角色,由多个节点提交哈希,最后聚合。但揭示阶段可能有人不响应,需要设置超时惩罚。适合回合制游戏或治理场景。
Chainlink VRF是目前最广泛使用的可验证随机函数。VRF接收一个种子,生成随机数与证明,任何人都可验证该随机数确实由预言机节点产生且未被篡改。DApp开发调用VRF协调合约请求随机数,等待2-3个区块后接收到结果。VRF的随机性依赖于Chainlink节点的可信度,但通过质押与声誉机制保障安全。成本约为每次0.1-1美元,适合NFT铸造、抽奖等场景。
