28、智能合约开发中的随机数生成、数据信任与时间依赖挑战

智能合约开发中的随机数生成、数据信任与时间依赖挑战

1. 随机数生成器的挑战

在区块链这样的确定性系统中,智能合约无法在链上生成真正的随机数。因为区块链是确定性的,每个节点必须执行完全相同的操作,所以随机数生成器(RNG)只能是伪随机的。而且,在全球分布式系统中,没有节点会在同一时间执行完全相同的计算,因此时间不能作为随机性的基础。目前,还没有开发出没有弱点和攻击点的确定性 RNG。以下是几种常见的随机数生成方法及其存在的问题:

1.1 使用区块变量

最初的想法之一是使用区块变量,如以太坊中的 block.coinbase block.difficulty block.gasLimit block.number block.timestamp 。以下是一个基于 block.number block.timestamp 生成 0 到 255 之间随机数的示例代码:

function blockVariables() public view returns(uint8) {
    bytes32 x = keccak256(abi.encodePacked(block.number, block.timestamp));
    return uint8(uint256(x));
} 

这个方法看似可行,但它假设每个矿工都是可信的

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值