第0章 引言
区块链世界现在都是在空转,区块链里的数据都是区块链自己产生的,很难和现实世界没有关联。比如,我们现在还没有一个有效的办法把比特币的价格数据上链,哪怕是比特币区块链自己都无法知道比特币的价格。
本文介绍一个项目想法,可以让现实世界的数据,比如币价格,股票价格,体育赛事结果,航班延误信息,国家GDP……等等,统统接入区块链。
这个想法要是实现了,那现在的主流币必涨十倍。
第1章 Oracle是什么
Oracle是一个发布数据信息的主体。
币圈将Oracle翻译成预言机,这真是一个奇怪的翻译,给谁看也不知道这玩意是干什么的啊,不知道怎么来的。直接翻译成数据发布主体更好。
Oracle本身有一个数字身份,比如BCH上的Oracle就一定有一对公私钥对,向外界公布其公钥。如果Oracle要发布什么数据信息,那就拿这个公钥和信息,用他的私钥进行签名。外界就可以用这个公钥和签名,来验证这条信息确实是Oracle发布。
Oracle发布任何信息,一般会包含这些内容:具体的信息数据,数据的hash值,以及对该信息的签名信息。用洋文表示,洋气一点,Oracle发布的内容包括:data,hash(data),sig(data)。
一个链上的对赌合约,就可以使用Oracle发布的价格hash值和签名信息,做条件判断来计算对赌结果。
Oracle在技术上并不难,任何一个人都可以成为一个Oracle。关键是如何构建信用,别人如何相信你发布的数据是有效的。
两个人(A和B)在以太坊上签一个对赌合约,赌下一场巴西对阿根廷足球赛的结果。合约里就要包含一个Oracle的数字身份,和条件判断。只要这个Oracle发布了比赛结果(data,hash(data),sig(data)),那A和B就可以利用这个结果来结束对赌。但Oracle如果发布一个假信息呢?比如Oracle和A勾结来骗B,B可能一点办法都没有。
我们需要想一个办法来提供一个广泛有信用的Oracle。
第2章 真实世界数据链
我们现在建立一个去中心化的组织,组织里的每一个节点就是一个Oracle。任何人都可以加入成为一个Oracel,但要遵守组织的协议。我们先假定这个组织一个有100个Oracle节点,其中21选定为主节点,79个为备用节点。
这21个主节点构成一个区块链,我们称之为“真实世界数据链”。
所有Oracle节点各自在真实外部世界采集数据,并按特定的协议规则打包成数据区块。这个协议规则至少包含了,数据区块里的每一条数据是采集相同的外部数据。但不强求数据来源,最好是来自不同的数据源。比如数据区块里的第1条数据是BTC的价格,所有的Oracle节点打包的数据区块的第1条数据必须是BTC的价格。第2条也得是约定好特定的数据。这个数据的顺序和类型是不能改的。
我们设定1分钟采集一个区块。即在1分钟内,所有的Oracle节点,都会采集并广播相同的数据区块。21个主节点,一共采集、打包并广播了21个区块。理论上,这21个区块应该是相同的。
我们约定好,所有的节点在1分钟的前50秒采集并打包数据,最后10秒用来广播并验证数据。
所有的Oracle节点会收到其他节点广播过来的数据区块,然后启动验证区块机制。验证区块的规则是:如果21个区块中至少90%,即 19个区块的内容是完全相同的,则认定“真实世界数据链”成功挖到一个区块。然后21个主节点再挖下一个块。
并且给那些打包的区块和90%不相同的节点记一次错,如果记错超过5次,则踢出主节点,从备用节点选拔一个上来作为主节点。
考虑到很多数据是有精度的,比如BTC的价格,大家采集的是1分钟内的平均值,但肯定不会100%相同,验证机制要允许这种有精度的数据有一点的波动偏差,比如只要偏差在0.1%,就算相同,最后被成功验证的区块里的数据值取19个节点的平均值。
所有的21个节点是共享一个数字身份,都要共享使用一个公钥。这样可以对所有外界保持同一身份。这个数字身份要兼容现在绝大多数区块链,比如这个公钥即可以被BTC链验证,也可以被BCH链验证,也可以被ETH链验证……
“真实世界数据链”发布的区块才是真正为外界使用的数据,即“真实世界数据链”本身才是真正的唯一有效的Oracle。
为了让21个Oracle节点共同采集相的数据,我们必须有一个机制来协议到底什么数据能够上链。
第3章 数据上链BIP
“真实世界数据链”的一开始是不包含任何有效的外部数据的。我们需要制订一个增加特定数据上链的投票协议,用来选择哪个数据被采集,并且确定数据的存储格式。
外界通过向“真空世界数据链”提交BIP(改进协议)的方式来申请采集和发布数据。21个节点通过投票的方式决定是否采纳BIP。
比如以太坊用户可以申请在“真实世界数据链”发布以太坊世界前10大交易所的平均价格,一分钟一次。21个节点对这议题进行投票,决定是否采集并打包以太坊的价格。如果采纳,那还要决定数据格式是什么,还要决定数据源怎么来,采集的结果的偏差值……等等细节。
任何人都向“真实世界数据链”提交BIP,具体的方式可以是向21个节点中的某个节点提交,也可以通过社交网络,网站等公布申请。
一旦21个节点通过了某项数据上链的BIP,就可以采集并发布这项数据了。其他区块链也就可以使用这项数据了。
第4章 激励措施
运营节点是要成本的,维持信用也是要花钱的,如何让节点乐意去采集数据挖矿,并且要做到大家抢着去挖,形成竞争,优胜劣汰。这是要认真设计。
第一种方式是发一个币,不搞I*O,就是这个区块链的本位币。为了方便描述,我们取名叫DataCoin。“真实世界数据链”每挖出一个块,21个节点各发1个DataCoin,备用节点各发0.1DataCoin。21个主节点中采集数据不符合90%共识的节点没币发,并且还要倒扣1个DataCoin。币数量,无上限。
DataCoin的权益1是,任何申请数据上链的BIP,需要申请者购买价值100万美元的DataCoin,成功申请后,这些币会被送入黑洞地址销毁。
权益2是POS挖矿,想成为21个主节点,必须存100万美元以上的DataCoin进去做为保证金。
权益3是提供收费API,100个节点可以对外提供收费API服务。这些数据,牛逼的要死,有的是人买。
权益4是,一旦网络效应起来了,直接向使用数据的用户收费。任何用户想要使用Oracle的数据,需要至少在钱包中保存0.1DataCoin。前提推广阶段不需要。如果收入问题能解决,这一权益也应该主动放弃。用户是上帝,哪有向上帝收费的,还反了天了你。
第二种方式是捐赠。公益事业嘛,接受捐赠。
第5章 容错
有可能会出现经过了21个节点投票达成共识的数据,却还是和真实世界数据是错的。怎么办?这个只能认,认21个节点达成的共识为真实数据。
但有些情况是可以改善。
比如体育赛事,一结束出来的结果,数据经过Oracle发布了,都是对的,但经过了24小时一看,有人吃兴奋剂了,成绩作废。为了解决这一类问题。可以对需要发布的数据设定一个可纠正时间。比如有专门的字段表达这个数据是有48小时的核实时间的,到了48小时后,如果没有变就真不再变了。
第6章 结束语
此物一出天下反,这是一个对所有区块链都好的大好事,这个项目要是成了气候,那真是半个互联网要和区块链有关系了。
作者:黄世亮
欢迎关注微信公众号:闪电HSL
网友评论