智能合约漏洞——随机错觉

​以太坊不存在"不确定"因数。从协议上说,所有的状态变动都是通过确定的算法(即所谓"状态转换函数")计算出来的。比如:各种哈希值。区块的难度值,甚至是工作量证明算法Eehhash的出的nonce和时间戳。

以太坊产生随机数的方式,主要借助“预言机(Oracle)”服务来达成。

  1. 链外服务在链上会有一个用于注册服务请求的智能合约,我们称之为智能合约S;

  2. 当某个智能合约A希望获取随机数,它可以向智能合约S的特定函数F发起一个消息调用,F的参数会规定一些必要的输入,比如请求服务的类型,要求的返回格式或者数据范围、条件等;

  3. 智能合约S的特定函数F会产生一个特定的事件(Event),其中将注册者的服务请求参数通过日志数据输出,提供这种链外服务的程序会监视(watch)这个事件,从事件参数中获得具体的请求数据;

  4. 链外服务程序根据请求数据的要求生成或者获取必要的返回结果,然后将返回结果作为参数来调用智能合约S的请求结果处理函数R;

  5. 函数R会调用智能合约A的特定函数B,将某个请求的结果数据返回给智能合约A;

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值