公链Terra 2.0在5月28号的时候正式上线新链主网,但是就在这时候却突然传出因为借贷协议Anchor Protocol发生错误导致80万美元的坏帐产生,根据《U.today》的报导当时Terra旧链的代币LUNC价格是不到 0.0001 美元,但是预言机喂出的价格却是新的LUNA价格所以之后平台上就有一位用户发现这个漏洞之后他马上就存入了大量2,000万个 bLUNA然后再借出4,000万颗 UST再转卖,光是这样短短的几分钟就套利了将近80万美元。
其实预言机也已经不是第一次发生喂错价格导致Defi项目产生损失所以想说今天来跟大家简单介绍一下预言机。其实我自己在第一次听到预言机这个名词出现的时候我以为预言机他就是在区块链中可以预测价格的机器,但其实预言机并不是预测价格的机器它实际上是用来解决区块链与现实世界中间特定数据的问题,大家常提到的就是区块链具有不可篡改性以及透明性,但是我们却对链上数据究竟是否正确的这个议题避而不谈,举例来说小王他在区块链上记录了“小美欠小王 10 美元”虽然区块链上有记载但实际上却没有人能够证明小美真的欠小王钱,这个时候就需要 Oracle也就是预言机来替智能合约提供外部讯息触发智能合约,为甚麽区块链会需要预言机呢因为区块链是一个确定性、封闭的系统环境,目前区块链只能获取到链内的数据而不能获取到链外真实世界的数据所以区块链与现实世界是分割的。
而一般智能合约的执行通常都需要触发条件如果当智能合约的触发条件是外部讯息时(链外)这时候就必须使用到预言机来提供数据服务,透过预言机将现实世界的数据输入到区块链上因为智能合约它不能进行Input还有Output(输入/输出)所以它是无法主动获取外部数据的它只能透过预言机将数据传送到智能合约,这边我来举个例子说明一下假设现在我被关进到一个黑暗的小房间裡,裡面一丝灯光都没有也没有窗户完全与世隔绝所以我对外面的世界发生了什麽几乎一无所知,如果我想要知道外面的世界我只能透过房间外面的人在门口把他看到的还有听到的告诉我我才可以知道外面的世界到底发生了甚麽事情,而智能合约就像这个例子中的我一样无法主动向外寻求讯息只能透过外部把消息或者是数据传到裡面,而预言机在这就是扮演在外面传送消息和数据的人。
这样听起来好像其实智能合约并不是很智能呀他只是名字听起来很聪明但实际上智能合约是完成不太智能的事情,只要写好了条件和结果当给它条件的时候就可以触发,当然有些例外的情况下会需要合约相关的人进行私钥签署才可以执行。以上就是区块链为什麽需要预言机的原因因为智能合约无法主动去获取链外的数据它只能被动接受数据,既然了解了这些原理那我们要如何确保数据源的数据不会做恶呢?如果今天一个数据源给预言机节点A的答案是“Y”而给预言机节点B的答案是“N”那这时候该怎麽办,这时候就需要引入更多的数据源来保证数据的真实性。为了预防这些问题的出现去中心化预言机就必需要进行全面的设计像是多预言机节点它就是为了防止单节点预言机的信任问题所以透过多个节点共同执行预言机数据的请求处理,但是多节点可能会带来的数据不一致的问题产生,这时候就会需要数据的聚合常用的聚合算法有BFT共识算法或者是门限签名算法这些,预防问题的出现其实除了多预言机节点以外还有其他各种的方法像是利益分配或是提交揭露机制等等。
目前市场比较知名的预言机项目就是Chainlink。Chainlink 的目标是构建一个完全去中心化的预言机网路网络节点兼容以太坊、比特币还有超级帐本并且支持模块化,系统的每个部分也都支持升级它主要的想法是为预言机打造一个可信的市场但其实以现阶段的预言机实现方式来看其实是大同小异的就是将多个数据提供方的数据经过可信程度加权后再求平均值然后得到一个“相对可信”的数据 提供链上使用,但是这也造成了智能合约複杂化而且因为两个区块链上的循序确认以及执行流程都会让数据产生延迟性,虽然说预言机在区块链有它必须存在的理由以及重要性但相对的,我也认为以目前的技术来说的话要达到完全去中心化的预言机来讲还是有些难度,但我们还是一样可以期待也许未来有一天会出现一个完美的预言机这样不仅可以大大的减少区块链上的问题产生也可以让我们区块链的未来产生更美好的憧憬。
本文来源:HotsMeta