网站用什么语言开发,wordpress 注册 验证码,wordpress thesis 开发,在印尼用哪个网站做电商预言机 Oracle 是区块链中非常重要的一个功能#xff0c;但我发现很少有人讨论#xff0c;也可能很多人对此并不了解。而网上关于预言机的文章很少#xff0c;很多也没有讲明白#xff0c;甚至有些还是错误的。所以我整理了一篇详细的文章#xff0c;分享给大家#xff0… 预言机 Oracle 是区块链中非常重要的一个功能但我发现很少有人讨论也可能很多人对此并不了解。而网上关于预言机的文章很少很多也没有讲明白甚至有些还是错误的。所以我整理了一篇详细的文章分享给大家相信看完一定会对 Oracle 有一个深层次的了解。 1、预言机Oracle是什么 11 月 6 日在中国人民银行发布的《区块链能做什么不能做什么》的报告中是这样对预言机定义的。 区块链外信息写入区块链内的机制一般被称为预言机 (oracle mechanism) 。 预言机的功能就是将外界信息写入到区块链内完成区块链与现实世界的数据互通。它允许确定的智能合约对不确定的外部世界作出反应是智能合约与外部进行数据交互的唯一途径也是区块链与现实世界进行数据交互的接口。 听上去很难理解我们举例来说。 大家会很形象的把公链比作操作系统Windows、IOS、安卓DAPP 类比的话就是 APP那么预言机可以形象的比做 API 接口。API 是一组定义、程序及协议的集合通过 API 接口实现计算机软件之间的相互通信。 这样类比虽然不准确但意思就是预言机是区块链和现实世界之间的纽带可以实现数据互通的工具。 2、Oracle 为什么被中译为预言机 跟别人提起预言机很多人的第一反应都是预测市场预言机这个名字确实容易想到预测。 Oracle 最初是来源于古希腊宗教意为“神谕、先知、预言”。而在互联网领域预言机英语oracle machine又称谕示机是一种抽象电脑用来研究决定型问题。可以被视为一个多了个黑盒子预言者的图灵机这个黑盒子的功能是可以在单一运算之内解答特定问题。 也许你会好奇这跟甲骨文公司有什么关系吗其实没有关系。 Oracle 在中国叫甲骨文公司的原因可能是另一个故事。在中国商朝晚期王室把在动物骨骼或龟甲上做占卜记事的文字叫甲骨文甲骨文被英译为 Oracle bone script后来 Oracle 公司到中国中译为了甲骨文公司。很有道理的猜测 哈哈哈 3、区块链为什么需要预言机 区块链是一个确定性的、封闭的系统环境目前区块链只能获取到链内的数据而不能获取到链外真实世界的数据区块链与现实世界是割裂的。 一般智能合约的执行需要触发条件当智能合约的触发条件是外部信息时链外就必须需要预言机来提供数据服务通过预言机将现实世界的数据输入到区块链上因为智能合约不支持对外请求。 具体原因是这样的。区块链是确定性的环境它不允许不确定的事情或因素智能合约不管何时何地运行都必须是一致的结果所以虚拟机VM不能让智能合约有 network call网络调用不然结果就是不确定的。 也就是说智能合约不能进行 I/OInput/Output即输入/输出所以它是无法主动获取外部数据的只能通过预言机将数据给到智能合约。 我们通过一个例子来说明一下。 假设现在我被关进了一个小黑屋里不要多想只是例子?我对外面的世界发生了什么一无所知不知道外面是否有人即使呼叫也没有人回应而我知道外界信息的方式只有外面的人在门口把他看到的听到的都告诉我我才可以得知。 例子虽然不太恰当但智能合约就像这个例子中的我一样它无论何时何地都无法主动向外寻求信息只能外部把消息或数据给到里面。而预言机就是这个在外面输送消息和数据的人。 好像这么看来智能合约并不是很智能呀是的智能合约其实是完成的不智能的事情即写好了条件和结果当给它条件的时候就可以触发但也不会马上执行还需要合约相关的人进行私钥签署才可以执行。 所以网上很多文章其实都有水分比如智能合约某个时间或者触发某个条件就可以自动执行之类的只能说这样的句子在逻辑上可能是有问题的。关于预言机的很多文章也有水分描述的并不准确。 好了上面就是区块链为什么需要预言机因为智能合约无法主动去获取链外的数据只能被动接受数据。 4、预言机怎么解决这个问题 这是理想中预言机的工作流程即用户的智能合约把请求给链上 Oracle 合约通过链下的 API 接口获得外部数据更确切的说是外部把数据给链上的 Oracle 合约然后 Oracle 合约再把数据给用户的智能合约。 或许很难理解因为在互联网中调用数据是非常容易的只需要在程序中写调用的代码就可以了。但是区块链与外部世界的数据交互确实不能进行这样的操作。 5、预言机的应用场景有哪些 预言机作为区块链与现实世界进行数据交互的桥梁应用场景非常多可以说一切需要与链下进行数据交互的DApp都需要预言机。比如金融衍生品交易平台、借贷平台、快递追踪/IoT、稳定币、博彩游戏、保险、预测市场等等。 我们还是举例来说。 **先说最近币圈比较火热的博彩游戏为什么需要预言机。**博彩游戏的核心是不可预测、可验证的随机数从而决定赌注的最终结果但是在链上是无法生成随机数的或者说在链上的随机数是可以被预测和破解的这时候就需要预言机从外部给智能合约安全的、不可预测的随机数。 现在的大多数博彩游戏都是在链上生成随机数很容易被预测和破解导致资产被盗大家有兴趣的可以去看一下 DApp 被盗的相关研究报告很多因为随机数问题被盗的。比如 BetDice、Dice2.Win。 如果大家很感兴趣可以看一下我男神 DOS Network 创始人 jonny 关于《智能合约中的随机数》的分享。PPT链接zhuanlan.zhihu.com/p/50219222 其实早在 Fomo3D 这个游戏出来之后以太坊的 Team Leader 就在推特上说过链上是无法生成随机数的。Dear devs... you cant generate random numbers on chain 我们再来看一个关于快递追踪的例子。 假设当我通过某个 DApp 购物平台购买某件物品快递过来的时候真实世界中的快递寄送或到达信息就可以通过 Oracle 把数据传递到链上然后触发链上的智能合约我用自己的私钥确认收到了快递并完成付款。 大家发现了吗这里的智能合约不能自动执行而是需要我用自己的私钥进行确认智能合约保证的是没有第三方机构做担保和资金周转比如支付宝这就是智能合约的价值。 其他的案例就不细说了比如稳定币需要链下的利率保险需要链下的病例或车况等具体可以看这篇文章《Oracle—区块链与现实世界的纽带》。 6、目前预言机项目和解决方案有哪些 目前在预言机领域探索的项目还不是很多每一个项目的预言机解决方案都略有差异我找了几家不同解决方案的预言机项目。 Oraclize为以太坊提供中心化预言机服务 Oraclize 依托亚马逊 AWS 服务和 TLSNotary 技术是一个可证明的诚实的预言机服务不过它是中心化的目前只能在以太坊网络使用而且 gas 费较高。但是不妨碍它是目前比较受欢迎的预言机服务可能也是因为没有其他更好的选择吧。 ChainLink以太坊上第一个去中心化预言机解决方案 ChainLink 的解决方案是通过在链上的智能合约和链下的数据节点通过奖惩机制和聚合模型的方式进行数据的请求和馈送。不过也有一些不足比如链式聚合成本较高拓展性差基于声誉系统容易集中化。 欧链 OracleChainEOS 上的第一个去中心化预言机解决方案 欧链很早就提出了预言机的想法和方案采用自主的 PoRD 机制Proof-of-ReputationDeposit本质上是一种抵押代币奖惩机制的声誉系统奖励数据节点惩罚作恶节点可以实现 Augur、Gnosis 等预测市场应用的功能还能支撑对链外数据有更高频率访问需求的智能合约业务。预测市场的结果本身有时也可以作为 oracle 的输入数据源。欧链更像是预测市场而且单纯的声誉系统容易集中化。 DOS Network支持多条主流公链的去中心化预言机服务网络 DOS Network 是一个 Layer-2 的预言机解决方案它通过在链上部署一个轻量级智能合约链下是一个 p2p 网络服务节点的选取和数据验证采用 VRF和阈值签名等技术保证了去中心化和数据安全并达到快速反应。可以适配所有主流公链比如以太坊、EOS、波场、Thunder。目前已在以太坊测试网发布 alpha 版本dosnetwork.github.io/docs/ 看完文章是不是对区块链预言机有了更深的了解区块链作为一种新兴的技术还需要不断的探索和尝试。而预言机在其中扮演着非常重要的角色让我们共同期待预言机技术的不断成熟进而促进更多区块链与现实世界进行数据交互的 DApp 落地。 转载于:https://juejin.im/post/5c236f456fb9a049c965b9e4