深度分析DeFi智能合约的数据质量问题
随着去中心化金融(下文简称DeFi)的生态不断扩张,区块链预言机保障的价值也在同步增长,二者相辅相成,实现了良性循环。在DeFi应用价值飞速增长的同时,发展创新型DeFi生态系统并且提升其安全和可靠性也成为了一项重要工作。
区块链的“预言机问题”备受关注,有许多文章专门研究了这一课题。然而,关于预言机“数据质量”的问题却存在许多未知和误解,这种误解源自于许多人觉得预言机可以传输链下数据,也可以自己产生高质量的数据。我们在研究和开发安全的预言机解决方案时,发现预言机的作用是将数据传输至区块链,并保证数据无法被篡改,而不是自己产生数据。Chainlink价格参考数据所采用的去中心化预言机网络将数据传输和数据质量做了区分,Chainlink是DeFi领域最受欢迎的预言机网络,服务于以太坊上超过90%的去中心化衍生品市场。Chainlink的预言机网络成功地为已上线的应用提供优质数据,并甄别出了保障数据质量的五大关键要素。1.将预言机节点连接至付费数据提供商,确保用户合约连接至最高质量的数据。这需要预言机协议拥有密码和身份认证信息管理能力,让所有节点都能安全储存API密钥并管理付费订阅数据源的账户登录信息。
2.通过节点连接专业链下数据提供商,获取优质精准的价格数据;连接数据聚合商,覆盖所有市场,获取扣除交易量因素的市场价格数据。利用预言机基于一系列原始数据聚合出全球市场价格数据是极其困难的工作,而且这样做会为预言机产生巨大的安全漏洞,比如交易量快速转移以及数据出现异常值等,这些都是加密货币市场常见的风险。
3.在预言机网络中实现去中心化,保障安全和可靠性。从多个独立节点聚合数据,确保预言机向智能合约传输数据时具有防篡改性和较高的可用性。从多个优质数据提供商获取数据,并同时保障数据质量,在数据源层面提升去中心化水平。
4.让用户和开发者在设计预言机时可以洞悉每个节点和整个去中心化预言机网络的当前和历史服务水平,以综合所有信息做出理性判断。避免采取“不公开即安全”(security through obscurity)的策略,尽量减少隐藏风险,并尽可能保障各方监督,在重大问题发生前未雨绸缪,杜绝隐患。
5.规避重大风险,如:只从一个交易所获取数据,或预言机网络中的数据质量良莠不齐。如果在去中心化的同时不建立质量控制标准,那么智能合约就会面临更多更复杂的风险,而这样一来,高质量的预言机方案也将无法发挥其优势。
6.为了进一步扩展这些对数据质量至关重要的功能,我们将讨论安全的去中心化预言机网络理想的构成要素,如何正确利用Chainlink灵活丰富的服务创建优质数据,以及在设计价格预言机网络时应规避哪些重大数据风险。
安全的去中心化预言机网络具备哪些要素?
预言机是连接区块链和链下世界的中间件。有了预言机,智能合约就可以利用储存在区块链以外的数据,并连通真实世界中的日常事件。这种连通链下世界的能力极大丰富了智能合约的场景,让开发者可以在更多市场捕捉价值。随着智能合约连接性的提升,其攻击表面也不断扩大,如果要保持智能合约防篡改的核心属性,就必须解决这个问题。去中心化的预言机网络是安全的中间件,连接链上和链下环境,为开发者提供了一个安全可靠的开发框架,让用户能放心地将价值高达几十亿美元的资产放进具有外部连通性的智能合约中。如果预言机的安全性和可靠性无法与底层区块链媲美,那么即使其代码写得天衣无缝,也同样会面临重大安全风险。Chainlink价格参考数据集合了多个去中心化的预言机网络,是以太坊生态中规模最庞大的链上价格数据集,服务于领先的DeFi应用,并且用户规模正不断扩张。Chainlink的价格预言机网络采用了可验证去中心化的设计思路和最高数据质量的模式,为用户带来最可靠的安全保障。以下是Chainlink价格参考数据的四大核心特色,所有致力于保障数据质量的去中心化预言机网络都应具备这四个特点。
从付费数据提供商获取优质数据
虽然在区块链上挖矿是普遍通行的做法,但针对具体行业输出优质数据并保障数亿美元资产却不是人人都能做到的。相比起开发者使用预言机基于原始数据生成优质数据,更好的方法是让节点直接从数据聚合商采集优质数据,因为这些数据聚合商通常拥有庞大的团队和全栈基础架构,并专门针对某个行业生成优质数据。内部生成优质数据成本高昂,因此访问这类数据需要收费,而且还要签订具有法律约束力的合约。节点必须向数据提供商(即API)付订阅费,或者获得数据提供商的具体授权(如:企业内部数据)。这两种许可模式都需要建立密码和身份认证信息管理能力,以实现节点和API间的交互。因此,节点运营商与付费数据提供商交互时需要建立API密钥储存和登录信息管理能力。预言机如果无法管理身份认证信息,就不能连接付费API,因此只能选择免费的开源API或盗版API。这些API接口的数据通常质量低下、下载速度慢、响应时间不可靠且不具有法律约束力或无法保障服务质量。因此,此类数据源无法为各类高、中、低值智能合约提供可靠的服务。如果向智能合约传输低质量的数据,合约将无法保障其数据的准确性或可靠性,因此会扩大攻击表面。“垃圾进,垃圾出。”这句技术领域的至理名言放在这里也同样适用。参与价格参考数据合约的Chainlink节点通过外部适配器连接至所有付费API接口。这些API接口的数据质量更高、响应速度更快并且可以保障可用性和服务水平。外部适配器采用模块化设计理念,可以用任何编程语言编写,并可以与Chainlink节点放在不同的服务器上。外部适配器可以从数据提供商、web API、企业系统、物联网设备、支付系统和其他区块链等各种环境获取数据
建立去中心化的优质节点运营商
如果没有安全可靠的预言机向智能合约传输数据,那么数据质量将是一纸空谈。要防止意外宕机和避免单一实体在传输时篡改数据,就必须建立去中心化的优质节点网络。去中心化的共识能够大幅提升攻击成本,因为即使网络中有几个节点宕机或恶意发起攻击,对最终聚合的结果也不会产生实质影响。Chainlink的价格参考合约基于去中心化的预言机网络,聚合来自多个独立节点的数据,这些节点都经过安全评估,且具有抗女巫攻击能力。这些Chainlink节点由全球领先的区块链DevOps和安全团队在云端和本地服务器中运营,以规避预言机单点失效风险。另外还有许多由社区运营的备用节点随时可以加入到网络中,以提升网络的去中心化水平。
建立去中心化的优质数据源
预言机解决方案可以在不影响任何一个数据源质量的前提下接入多个数据源,以此提高其稳健性。建立去中心化的优质数据源,能够避免某一数据提供商成为唯一数据源,并且能防止唯一数据源下线的情况。然而,有些情况下可能某个优质数据源也是唯一数据源,这时就需要更先进的加密技术来保障数据质量,比如基于权益质押的服务协议(注:下文会详细讨论)、TLS认证(Town Crier、DECO)以及零知识证明。Chainlink价格参考合约在数据源层面实现去中心化。每个价格参考网络都会统一从多个可靠的独立数据提供商获取市场价格数据。这些数据提供商全部都是付费数据聚合商,他们覆盖了Brave New Coin、Kaiko和Amberdata等所有交易市场以及其他众多优质的数据API。然后,所有数据将聚合成统一的参考价格数据,储存在链上,智能合约可以用简单的read函数访问这些数据。
开源的可视化界面和监控
如果DeFi应用的底层智能合约实现了开源和实时监控,那么向智能合约提供数据的价格预言机也应该是公开透明的。如果预言机无法保障公开透明,dApp用户就无法验证数据来源、提供数据的节点、响应延时、预言机网络服务历史以及数据质量等信息。
每个Chainlink价格参考数据合约都拥有一个开源可视化界面,其中包括具体的链上数据,比如:
每个参考数据源的最新价格
提供数据源的DeFi项目
保障价格数据安全的节点(且节点通过了安全评估)
数据更新时间
触发数据聚合所需的最少节点响应数量
关于每个节点和整个节点网络的其他关键信息
Chainlink价格参考数据使用去中心化的节点网络和数据提供商为智能合约提供优质的价格数据;上图为比特币/美元价格数据。
除此之外,还可以查看某一节点为每次数据请求提供的服务质量,以判断节点是否有能力成功完成数据请求任务。节点运营商、数据提供商和用户可以使用Chainlink Explorer查看网络中每个节点的表现,以及为甄别错误采取的具体措施。
使用Chainlink预言机灵活采集数据
通用型预言机网络要成为DeFi行业标准,必须具备灵活性,让开发者能够根据个人需要灵活创建预言机,满足对安全性和可靠性的具体需求。虽然Chainlink价格参考数据网络中有许多数据聚合商贡献全球市场数据,但Chainlink协议不会对预言机网络的模式或数据源做强制性要求。相反,Chainlink会为用户提供市场上开放程度最高的模块化框架,以满足任何具体的需求。
可随意配置数据源、节点和聚合模式
开发者可以通过外部适配器快速将智能合约连接至任何所需的数据源。除此之外,开发者还可以随意设置所需的去中心化水平、数据源、聚合算法以及数据更新频率。因此,智能合约连接外部数据的方式变得极其灵活。
Market.link 是一个第三方网站,开发者可以在上面选择预构建的外部适配器,并访问丰富的数据源。
Chainlink用户还可以选择不同的聚合方式,比如取平均数、中位数或甚至使用加权和剔除异常值等更加复杂的算法。另外还可以设置数据更新频率,用户可以选择定时更新、基于价格偏差更新(比如价格每上下浮动0.5%时更新一次)或采用基于多个参数的混合模式。
数据提供商可以是传统API接口,也可以自己运行Chainlink节点
Chainlink具有灵活的框架,数据提供商可以选择以何种方式在新兴智能合约经济中提供数据,他们可以是传统的API接口,也可以直接运行Chainlin节点。
传统API接口数据提供商可以保持现有的模式,向订阅用户收取以法币计价的数据服务费。Chainlink节点可以订阅这些API,并在节点中安装Chainlink外部适配器,将API数据传输至链上合约。这个模式适用于任何一个数据提供商,Chainlink价格参考数据网络已经开始采用这个模式,网络中的节点订阅了Amberdata和CoinGecko等优质付费数据。Chainlink还针对交易所API开发了外部适配器,可以连接币安和Coinbase等节点。这个模式非常高效,因为数据提供商无须改变任何现有的商业模式或基础架构。即使数据提供商本身不太愿意主动为智能合约提供服务,Chainlink节点也可以通过外部适配器模块向开发者开放所需数据源。另外,节点还可以订阅本身就是Chainlink节点的数据提供商的数据服务(下文将详细阐述),进一步提升数据的去中心化程度。既是数据提供商,也是Chainlink节点另一个模式是让数据提供商成为Chainlink节点,直接向智能合约出售数据。这个模式可以丰富数据提供商的变现模式,目前已经被几个领先的数据提供商采用,比如Kaiko和Alpha Vantage(市场数据聚合商),以及火币(加密货币交易所)。数据提供商成为Chainlink节点将拥有一个独一无二的优势,那就是可以在自己的数据上进行加密签名。用户和智能合约可以确信价格数据是直接来源于数据提供商或交易所的Chainlink节点,并且数据在传输过程中没有经过篡改,因为节点在链上广播前会用独一无二的私钥在数据上进行加密签名。签名过的数据可以通过节点的公钥在链上进行验证,确保数据的完整性和真实性。这个框架可以让数据提供商直接在区块链上广播数据,无须通过外部第三方将数据传输到链上。这样一来,数据提供商就能够控制数据在链上广播的频率,并保障数据从生成到传输整个过程的安全性。因此,数据提供商可以拥有足够的灵活性,同时向多个不同的应用以独特的方式传输数据,比如向一组应用以每分钟一次的频率更新数据,同时向另一组应用基于价格偏差值更新数据(比如价格每上下浮动0.5%更新一次)。
数据提供商可以将数据卖给Chainlink节点运营商,也可以选择自己运行Chainlink节点
同一网关面向所有区块链环境
数据提供商不可能熟悉所有区块链环境,也不可能在每个区块链上都分别设立安全机制,特别是考虑到区块链是一个新很难了解所有区块链环境。Chainlink预言机网络可以利用已有或新建的外部适配器/发起程序迅速接入任何区块链环境。Chainlink是开源网络,核心开发者无需任何许可就能集成Chainlink预言机,因此可消除开发瓶颈,实现横向扩展。以太坊、Polkadot、Tezos、和Cosmos等众多领先的区块链都已经将Chainlink集成至其区块链网络。这个机制可以为数据提供商和智能合约提供统一的网关,面向任何区块链出售和访问数据,最终向区块链上的dApp提供更多数据,并为数据提供商获得更多收入。值得一提的是,这个机制非常灵活,因此数据提供商无须选择把资源部署在哪里。
为数据和服务质量提供加密经济保障
在Chainlink预言机网络中,节点运营商和发起数据请求的智能合约会签订具有约束力的服务协议,协议将约定节点在服务期间必须满足的各项参数。参数包括数据交付(响应延迟)、数据质量(准确性)、质押的LINK金额(加密经济担保)、经济惩罚(罚款)以及其他由请求方约定的条款。节点运营商的报酬将取决于其是否成功履行了服务协议并按时将优质数据传输到链上。在这个机制下,运行Chainlink节点的数据提供商可以在最大程度上灵活设置数据服务保障,提升数据可信度、完整性、可靠性以及准确性。
具有约束力的服务协议为数据质量和数据交付提供加密经济保障。
利用声誉框架和节点市场做出理性判断
实现灵活性最重要的一点是让用户可以综合判断将什么内容添加至预言机网络中。有两个功能可以实现这一点,即:声誉系统和节点市场。
声誉框架声誉系统为用户提供了不可篡改的链上数据记录,其中记录了节点运营商和数据提供商的所有历史服务。以后,数据请求方可以查看节点历史服务的加密证明,并以此判断节点是否可靠。通过第三方服务,可以在Chainlink节点中进行比较,选出最可靠的节点。这些网站中可以查看Chainlink网络整体的原始数据以及分析提炼出的数据,还可以看到每个预言机节点的具体数据,其中包括交易数量、响应时间、收入和成功率等。
Reputation.link 让开发者和用户可以深入洞悉Chainlink预言机网络整体的表现和性能,还可以查看每个单独的预言机和数据源。
节点市场
另一个关键要素是建立一个市场让用户可以发现预言机节点,通过筛选比较最终挑出最适合的节点加入预言机网络。目前有多个针对Chainlink节点的第三方分类信息平台,比如LinkPool的Chainlink Market和CLCG的Honeycomb Marketplace。开发者可以完全控制其预言机网络的架构,因为他们可以自行决定选择哪些节点以及节点的数量。除此之外,还可以看到每个节点运营商的资质认证、安全评估结果、身份证明、外部适配器、数据源以及具体能为智能合约提供哪些链下服务。节点运营商可以为每个任务设置具体的价格和参数,建立一个自由市场经济,其中节点可以在不同的维度上竞争上岗。
market.link上的节点可以在链上积累声誉,并向开发者展示其声誉记录。
如何灵活地打造价格预言机,以规避重大数据源风险?
为了保障数据质量,在设计预言机时就必须提前考虑到一些可能出现的攻击向量,并防患于未然。如果开发者忽略了这些问题,就会导致用户资金面临巨大风险,并最终威胁到整个dApp的安全。交易量转移/交易所锁定加密货币市场与传统金融市场有所不同,因为交易所不会独家发行资产,因此无法锁定用户或占据某一资产100%的交易量。区块链技术的特点是无须许可,因此任何人都可以在其交易所中发行加密货币通证,交易者可以在任何时间交易这些通证。在这种情况下,加密货币的交易量分布在许多不同的交易所中,而且交易量会在各个交易所之间快速转移。因此,为了避免市场操纵攻击(比如绝大多数交易量转移到了某个不在聚合范围内的交易所),预言机必须要正视这个问题。闪电崩盘加密货币交易所通常没有熔断机制,因此很容易出现闪电崩盘,某一交易所的价格可能会与其他交易所出现严重偏差。即使规模再大的交易所都存在这种风险,在过去几年中多个交易平台都遭遇了闪电崩盘。比如Kraken就遭遇过闪电崩盘,BTC/CAD价格从11,200断崖式下跌至100CAD,跌幅接近99%。Coinbase也遭遇过一次极端的闪电崩盘,以太币价格暂时从322美元跳水至0.1美元。在2020年初,加密货币衍生品交易平台Bitmex也遭遇了闪电崩盘,XRP价格在一分钟内大跌60%,从0.33美元跌至0.13美元。质量稀释实现去中心化必须要同步建立质量控制标准,以避免低质量的数据源稀释聚合结果的质量。如果数据提供商和节点运营商的历史服务水平较低、没有声誉记录或无法证明其基础架构的安全性,则应被禁止加入任何预言机网络。要确保节点运营商和数据提供商有足够的资源和技能解决可能出现的任何问题,并建立预警机制和failsafe安全模式。需要注意的是,发起向量攻击的恶意攻击者不一定都是经验丰富的开发者。任何散户交易者或一小群交易者只要发现了机会,都可以利用交易平台的UI操纵市场并篡改某一预言机的参考价格数据点,而单个预言机覆盖的市场是有限的。这在很大程度上扩大了攻击表面,因为任何人只要有网络连接和交易平台账户都可以操控存在风险漏洞的预言机。Chainlink价格参考数据合约连接数据聚集商而非某一个交易平台的API或多个交易平台的API集合,因此可以规避这类风险。
优质的数据聚合商覆盖所有价格数据源
Chainlink价格参考数据可独家接入数据聚合商,覆盖最多的交易量。加密货币交易量相对传统金融市场仍然较小,有了这个功能,就可以确保向这些市场传输准确的数据。预言机网络创建者缺乏经验和资源,很难持续追踪交易所交易量,因此将这个工作交给专业的数据聚合商。
数据聚合商的团队遍布全球,在市场覆盖和精准价格数据维护方面拥有丰富的专业经验。他们会综合考量各个参数,比如流动性、交易量、时间以及不同交易所之间的参数差异。除此之外,聚合商还会剔除任何异常值。Chainlink价格参考合约的这些功能可以很好地应对交易量转移、闪电崩盘和质量稀释等问题。另外,Chainlink价格参考合约还利用多个数据聚合商保障价格数据免受任何一个数据源的操控。这为dApp开发者和终端用户提供了更高的安全和可靠性。除此之外,通过安全评估的节点运营商以及业内顶尖的监控团队也会提供支持。
Chainlink价格参考数据合约的端到端流程
采集数据时不当使用预言机可能造成的重大风险
预言机网络如果忽略交易量转移风险或只从一个API获取数据,将导致重大风险,要充分了解这些风险,就需要讨论具体应用的案例以及最终会导致的结果。
忠告:避免预言机网络只从一个交易平台API获取数据
预言机网络如果只从一个交易平台获取价格数据,不仅在平台遇到宕机、闪电崩盘和价格操纵时无法提供有效保护,而且平台的市场覆盖将受到极大限制。这种模式在最初价格波动较低的时候似乎是有效的,但当市场价格波动上升,交易者会开始套利,交易量会在各个交易所之间频繁转移。即便升级预言机,使其从另一个交易所获取数据,新的价格点也可能非常不准确,因为市场交易量可能会出现新的变化。这就导致虽然数据源变了,仍然无法维持可靠的市场覆盖。下面,我将与大家分享一个例子,一步步说明单一数据源的危害:
Scan QR code with WeChat