什么是预言机?

2018年,中国人民银行发布了《区块链能做什么、不能做什么?》的报告,报告中这样定义了预言机(Oracle):“区块链外信息写入区块链内的机制,一般被称为预言机。”通俗地说,预言机是链上(区块链)与链下(现实世界)之间的信息桥梁。

Oracle这一词,最早起源于古希腊神话中的角色“神谕者”。传说,神谕者可以跟奥林匹斯山上的诸神进行沟通,对未来做出预言,并将神的旨意传达给祈求未来的人民。这就完全贴合预言机将链下信息传递给链上的作用了。

为什么需要预言机?

区块链是确定性的环境,智能合约无法获取区块链以外的数据,外部API提供的数据和任何其他链下资源都无法获取。

具体原因如下: 以太坊的核心组件EVM,能够在分散网络中的任何节点上执行程序,并更新受共识规则约束的以太坊状态。为了保持共识,EVM的执行过程必须完全确定,并且仅基于以太坊状态和签名交易的共享上下文,它不允许不确定的事情或因素出现,所以EVM不能让智能合约有网络调用,否则结果就是不确定的。智能合约不管何时何地运行都必须是一致的结果。

预言机的应用场景

预言机作为区块链与现实世界进行数据交互的桥梁,应用场景非常多,可以说一切需要与链下进行数据交互的DAPP都需要预言机,如稳定币、借贷平台、金融衍生品交易平台、保险、博彩游戏、快递追踪/IoT等。

  • 稳定币。稳货币是一种与法币有稳定兑换率的加密货币,稳定币可以作为价值的储藏和交易的中间媒介。所有的稳定币都需要Oralce的帮助来获取外部世界稳定货币本身和锚定资产的兑换率等数据。
  • 借贷平台。这类应用需要使用Oracle在贷款生成时提供价格数据,并且能监控加密抵押物的保证金比率,在保证金不足时发出警告并触发清算程序。借贷平台也能用Oracle来导入借款人的社交、信用和身份信息来确定不同的贷款利率。
  • 金融衍生品交易平台。金融衍生品交易平台提供金融类的智能合约,允许用户做空或做多背后的资产。这类智能合约需要实时从链外获取资产价格来确定参与方的收益和损失,以及触发平仓交易等。

预言机的设计思路

中心化预言机

image-20221130112542853

  1. 如果oracle节点欺骗/宕机/被攻击?多节点
  2. 如果数据源网站欺骗/宕机/被攻击?多数据源

去中心化预言机

image-20221130173618279

多个数据节点形成去中心预言机网络,每个节点都从多个数据源收集数据,达成共识后输入到区块链上的智能合约。

  1. 技术上,避免了单点失败风险
  2. 数据上,通过网络对多个数据源进行验证

去中心化预言机不仅能防止单个预言机宕机对整个系统造成影响,还能防止单个预言机遭到黑客攻击、被收买的现象。此外,预言机还能够从多个来源采集数据,最大限度地避免单一数据源出现误差。

Chainlink是业内顶尖的智能合约去中心化预言机网络解决方案,使智能合约能够安全地访问链外数据源、网站API和传统的银行支付。

官网:https://chain.link

服务费代币:$Link

创始人:Sergey Nazarov

开发运营团队:Chainlink Labs

上线时间:2019年5月

喂价

Chainlink Data Feeds 提供了一个安全、可靠和分散的链下数据源,为DeFi及其他的智能合约赋能。

image-20221130114052533

节点的报价不同时怎么做选择?

398、398、399、399、399、400、400、400、400、400、401、401、401、402、402

如果使用平均数,6000 / 15 = 400

如果有部分节点提供错误数据呢?

100、100、399、399、399、400、400、400、400、400、401、401、401、999、999

如果使用平均数,6598 / 15 = 439.87

考虑到有少数的恶意节点,Chainlink采用中位数。中位数是一个诚实节点提供,且由多个诚实节点所约束的值。

Chainlink要求至少有21个预言机节点响应才能计算最终的可信答案,如果答案与上次的偏差超过0.5%或间隔1个小时,则会重新获取数据。

如何确保大多数节点是诚实的?

Chainlink建立了“押金”制度,对诚实节点发放奖励。节点必须预存一定数额的$LINK作为保证金,才有机会参与数据处理。如果该节点提供的数据被发现是异常数据,那么其保证金将被没收,并支付给数据请求方作为补偿。从这个方面来看,Chainlink采用博弈论的原理激励节点提供准确的数据。

自动化

Chainlink Automation 让Web3开发者能够轻松将关键的智能合约功能自动化,并实现去中心化。

现有方案

  1. 中心化:手动DevOp

开发者人员通过一个中心化服务器去执行Solidity的Cron job,监控合约状态,并且发送交易给链上合约。

  • 单点失败风险
  • 占用团队时间和资源
  1. 去中心化:Bounty赏金模式

给触发交易的个人账户提供赏金,交易执行成功即可获得经济激励。

  • 触发者获得全部赏金
  • 增加链的拥挤程度
  • 悬赏人与触发者没有关系

触发者会获得全部赏金,可能就会有很多人来竞争,进一步导致链上拥挤,从而gas升高,这时赏金可能偏低。由于悬赏人与触发者之间没有直接权责关系,不一定能保证有人来触发交易。如果链上不紧张,gas较低,赏金可能偏高,又会造成资金的浪费。

所以,上述两个方案都不能比较好地处理合约自动化的问题。

Chainlink Automation 架构

image-20221214172322965

角色

  1. UpKeep合约:在链上工作的合约
  2. UpKeep Registry合约:注册和管理UpKeep的合约
  3. 自动化节点keepers:发现UpKeep和注册服务的预言机节点

流程

  1. 创建一个upKeep合约
  2. keepers在不需要输入的条件下,不断检测预设合约设定的预设条件
  3. 不满足,下个区块继续检查
  4. 若满足,调用keepers注册合约
  5. keepers注册合约调用用户合约

可验证随机数(VRF)

Chainlink VRF 可以为区块链应用提供基于加密技术保障安全的随机数

随机数生成器(RNG)- 链上方案

恶意矿工选择性打包交易:随机数函数的方案,所以依赖的随机数,比如说区块哈希有可能被矿工操纵。

合约中的随机数生成被所操纵区块影响,被操纵的随机数会影响到智能合约输入,进而又可能导致用户资产的损失。

随机数生成器(RNG)- 预言机方案

可验证随机数(VRF)定义:在密码学中,可验证的随机函数(VRF)是一个公钥伪随机函数,它可以证明其输出是正确计算的。 VRF具有可证明性(Provability)、独特性(Uniqueness)、伪随机性(Pseudorandomness)。

Chainlink VRF 业务流程

image-20230108195504202

Chainlink2.0

在21年4月发表的Chainlink2.0白皮书中,Chainlink 计划将去中心化的预言机网络(DON)作为跳板,在以下七个关键领域实现跃迁:

  1. 混合型智能合约:提供强大的通用框架,将链上和链下计算资源通过安全的方式组合成“混合型智能合约”,以提升现有智能合约的性能。

  2. 简化开发和使用体验:模糊链上链下的边界,开发者无须研究复杂的底层协议和系统边界,为开发者和用户提供简单的功能。

  3. 扩容:降低预言机服务延迟并提升吞吐量,满足高性能去中心化系统的需求。

  4. 隐私性:打造下一代系统,既保留区块链本身的透明性,又能保护敏感数据隐私。

  5. 为交易公平排序:为终端用户提供公平的交易排序服务,防止矿工抢跑或其他机器人或矿工发起攻击。

  6. 信任最小化:通过去中心化、稳健的区块链、加密技术和加密经济保障等手段为智能合约和其他接入预言机的系统创建非常值得信任的支持层。

  7. 基于加密经济激励的安全性:机制经过严谨的设计和稳健的部署,可以为 DON 建立强大的经济激励机制,约束节点诚实守信,甚至在面对猛烈攻击时也毫不动摇。

1. 混合型智能合约

混合型智能合约: Chainlink 愿景的核心理念就是在智能合约中安全地集成链上和链下组件。

因为去中心化服务架构在区块链上,所以智能合约必须放在链上执行,但是这严重限制了它的链上功能。将合约代码完全放在链上,速度慢、成本高、而且功能少。链上无法实现许多只有链下数据可以实现的功能,比如各种形式的保密计算、生成(伪)随机数,防止矿工/验证者操纵。

智能合约要想充分实现潜力,就必须同时拥有两个模块,即:链上模块(我们通常称为 SC)和链下模块(DON 上运行的可执行程序,通常称为 exec)。最终目标是安全地集成链上功能和 DON 提供的链下服务。这两个模块共同组成了混合型合约。

其余的六大关键领域都是围绕混合型智能合约这一最关键的领域展开的。

image-20230108114452445

2. 简化开发和使用体验

DON 在设计上简化了其背后复杂的流程和机制,让开发者和用户可以轻松使用去中心化系统强大灵活的服务。

Chainlink的终极目标是实现“去中心化的元层”。这个元层将为所有 DApp 的开发者和用户模糊链上链下的边界,无缝开发并使用去中心化服务。

3. 扩容

目前区块链日益拥堵,预言机服务必须在延迟性和吞吐量方面满足这些系统的需求,并同时将合约运行者和普通用户的链上费用降至最低。

相对于传统预言机服务,DON 将交易和预言机报告放在链下而不是链上处理,以扩展区块链(智能合约)。将计算从链上转移到链下可以降低交易延迟和交易成本,并同时提升交易吞吐量。

image-20230108192529175

4. 隐私性

区块链为智能合约应用提供了前所未有的透明性,但是透明性和隐私性之间存在天然的冲突。比如,如今用户的去中心化交易被记录在链上,因此比较容易监控交易行为,但同时也公开了用户的交易内容。

Chainlink2.0 既保留区块链的透明性,又保障隐私性,实现这一目标的三种主要方式:

  1. 保护隐私的适配器: Chainlink 计划在其网络中部署两种技术,即 DECO和 Town Crier。这两项技术可以为节点传输链下系统的数据,并同时保护用户和数据隐私。它们将对 DON 适配器的设计起到关键作用。
  2. 保密计算: DON 可以向区块链隐藏计算内容。采用安全多方计算或可信执行环境也可以增强隐私性,DON 节点在计算数据过程中自己都无法查看数据内容。
  3. 兼容具有隐私功能的 layer-2 系统:TEF 在设计上可兼容各类 layer-2 系统,其中许多系统采用零知识证明,以各种方式保障交易隐私。

5. 为交易公平排序

区块链在一段很短暂的时间内其实是中心化的。矿工和验证者可以按照自己的心意为交易排序。网络中的用户也可以通过支付交易费来左右交易排序,并在一定程度上利用网络连接速度占得先机。这类操纵可以是交易抢跑的形式。矿工会观察用户交易,并在同一区块中将自己的交易插在前面,以谋取私利。他们这样做是利用了自己可以提前看到交易池的优势来榨取用户的利益。机器人交易抢跑会损害普通用户的利益。

Chainlink 2.0 将推出“公允排序服务”(FSS),FSS 可以为 DON 严格基于时间顺序公平地为交易排序,还可以为用户降低网络费用。 FSS 保障了智能合约设计者可以为交易公平地排序,并避免交易抢跑和尾随攻击等各类对用户交易以及其他类型的交易攻击。

image-20230108193612440

6. 信任最小化

信任最小化(Trust minimization)是指在设计或使用系统时尽可能减少对其他系统的信任。这意味着只在必要的情况下才向外界提供信任,并尽量减少对其他因素的依赖。这种方法通常用于保护系统的安全和隐私。

DON 在设计时的主要目的是为智能合约和其他接入预言机的系统创建一个高度可信的支持层,提供去中心化架构、加密工具,并建立加密经济激励机制。DON 本身是去中心化的,用户可以任意选择 DON 接入区块链,或选择自己信任的节点组成 DON。

Chainlink 计划推出一系列网络机制,提升 DON 对区块链的安全保障,同时保护来自 web 服务器的数据不受到操控。

  1. 数据源认证:为数据提供商提供工具,对数据进行数字签名,以增强数据源和链上合约之间的监管链(chain of custody)。
  2. DON 少数派报告:少数 DON 节点发现多数节点的恶意操作并上报。
  3. 安全护栏:主链上的合约逻辑监测异常情况,并有权暂停或停止合约执行(或采取其他补救措施)。
  4. 信任最小化治理:采用降速更新机制辅助社区监督,并采取去中心化的紧急干预机制快速响应系统故障。
  5. 去中心化的实体认证:使用公钥基础设施(PKI)识别 Chainlink 网络中的节点身份。

7. 基于加密经济激励的安全性

Chainlink 将报告生成去中心化,分散到各个预言机节点,即使节点受到操控,也可以保障安全性。然而,同样重要的是要确保节点有足够的经济激励保持诚实守信。权益质押(节点质押 LINK 保证金,如果出现违规行为则保证金被没收)将在 Chainlink 网络中起到关键作用。

区块链中的质押机制是为了避免攻击者对共识发起攻击,而 Chainlink 的质押机制是为了保障及时传输正确的预言机报告。预言机网络的质押机制如果设计得当,应有能力使攻击者即便买通了预言机也无利可图,就算攻击目标是高值智能合约也得不偿失。

Chainlink 质押机制有以下两个创新:

  1. 超线性质押影响,指如果攻击者要有效攻击预言机网络,资金量必须大于所有预言机节点质押保证金的总和。作为 n 的函数,$B(n) » $dn。假设网络中有 n 个预言机节点,每个节点都质押 $d 保证金,随着 n 的增长,$B(n) 逐渐大于 $dn。也即是,攻击者贿赂的金额 $B(n) 比所有预言机节点保证金总和 $dn 增长更快。

  2. 隐性激励框架(IIF)是Chainlink设计的一个激励模式,在显性质押金额之上再添加了一层实证维度可衡量的激励,比如节点的未来收入机会。IIF 拓宽了质押的概念,超出了节点质押保证金的范畴。

image-20230108201741791