文章前言
智能合约是在区块链等去中心化的基础架构中执行的应用,其具有防篡改性,即包括合约创建者在内的任何一方都无法篡改代码或干预代码执行,一直以来,传统合约的代码都是在中心化的系统中运行的,因此有权限的一方有可能将合约篡改、终止或甚至删除。相比之下,智能合约可保障合约顺利执行,约束合约各方履行各自义务。这就建立了一种全新且稳健的信任关系,无须依赖合约各方彼此间的信任。由于智能合约是自动验证和执行的,因此可以很好地执行并管理数字合约。
随着智能合约这种新的信任模式的产生,出现了一个新的技术挑战,那就是——连接性。大多数有价值的智能合约应用都需要获取来自关键数据源的链下数据,特别是实时数据和API数据,这些数据都不保存在区块链上,由于区块链受自身特殊的共识机制限制,所以无法直接获取这些关键的链下数据,而ChainLink也因此而孕育而生了。
Chainlink是一个去中心化的预言机项目,它的作用就是以最安全的方式向区块链提供现实世界中产生的数据,Chainlink围绕LINK token通过经济激励建立了一个良性循环的生态系统,Chainlink预言机需要通过LINK token的转账来实现触发。
基础架构
Chainlink的核心目标是嫁接链上和链下环境,其链上和链下部分都采用了模块化的设计理念,系统中每个模块都可以升级,因此一旦出现了更好的技术和实现方式,便可轻松替换原有模块。
链上架构
Chainlink节点作为预言机,针对由智能合约端亲自发起的或第三方委托发起的数 据请求返回结果,我们将这类数据请求称为\\”请求合约\\”,并用USER-SC表示,Chainlink与请求合约交互的接口本身也是一个链上合约,我们用CHAINLINK-SC表示。
Chainlink在CHAINLINK-SC后方还设置了一个链上模块,这个模块由三大智能合约组成,即\\”声誉合约\\”、\\”订单匹配合约\\”和\\”聚合合约\\”:
-
声誉合约:记录预言机服务提供商 的历史服务水平。
-
订单匹配合约:包含一个服务水平协议,记录协议中的具体参数,并收集来自预言机服务商的竞标,然后再使用声誉合约从多个服务商中选出优胜者,并最终敲定预言机的服务水平协议
-
聚合合约:收集预言机服务商返回的结果,聚合所有数据,计算出一个最终结果,它还将预言机服务商的数据质量返回到声誉合约中。
Chainlink智能合约采用了模块化的设计理念,用户可以随意配置或替换模块,链上工 作流程分成三步:预言机选择、数据上报、数据聚合
预言机选择
用户在购买预言机服务时会在服务水平协议中具体阐明服务要求,服务水平协议包括数据参数以及所需预言机数量等各种内容,另外用户还会确定对声誉合约和聚合合约的要求,根据链上声誉系统和可靠的历史服务记录,用户能够通过链下分类信息平台手动分类、过滤并选择预言机服务。
数据上报
一旦生成了新的预言机记录,链下预言机就会开始执行合约并将数据发送至链上
数据聚合
一旦预言机将返回结果上传至预言机合约,这些数据将被传输至聚合合约,聚合合约收集所有预言机返回的结果,并计算出一个加权数值,每台预言机返回的数据质量都将被发送到声誉合约中,最后加权数值将被发送至USER-SC具体的合约函数中。
链下架构
Chainlink节点实现了标准开源的核心功能,其中包括标准化的区块链交互、调度以及连接共同的链下资源,节点运营商可以选择添加软件扩展包,即外部适配器,以提供专业的链下服务,Chainlink节点已被部署到了公链和企业联盟链,让节点实现去中心化运营是Chainlink网络不断前进的动力。
核心软件
节点的核心软件负责与区块链交互、调度任务并平衡各个外部服务的工作量。Chainlink节点完成的工作被称为\\”任务\\”(assignment),每个任务都可分成更小的单位, 即\\”子任务\\”(subtask),子任务以流水线的方式进行,每个子任务都有具体的职责,前一个子任务完成工作后会将结果传递给下一个子任务,并得出最终结果,Chainlink节点软件内置了几个子任务,其中包括HTTP请求、JSON解析以及转换成不同的区块链格式。
外部适配器
除了内置子任务外,还可以通过创建适配器定制子任务,适配器是配置了最小化REST API的外部服务。配置了服务型适配器后,任何编程语言开发的程序都可以通过加上一个中间API而轻松实现,与复杂的分步API交互也可以通过多个参数化的子任务的方式得到简化。
子任务模式
Chainlink目前基于JSON格式运行,规范每个适配器需要什么数据输入,以及应该如何格式化,适配器也会明确数据输出格式以及每个子任务的数据输出 格式。
安全架构
在讨论安全架构之前,我们先谈一谈为什么预言机一定要保证安全呢?
我们来看一个简单的例子:如果证券智能合约收到错误的数据,那 么它就会付款给错误的一方;如果保险智能合约的数据被受保人篡改,那么就可能出现骗保行为;如果贸易金融智能合约的GPS数据在传输过程中被篡改,那么在货物还没送到之前就可能冒然付款.
Chainlink工作流程:
-
USER-SC发起链上请求
-
CHAINLINK-SC为预言机记录事件
-
Chainlink核心软件收到事件记录并向适配器发送任务
-
Chainlink适配器执行任务,向外部API请求数据
-
Chainlink适配器处理返回数据并返回至核心软件
-
Chainlink核心软件将数据传回CHAINLINK-SC
-
CHAINLINK-SC将数据聚合成单一数据,并返回至USER-SC
通常来说,一个功能正常的区块链其账本和公告板功能可以在很大程度上保障安全性,用户在区块链上可以可靠地验证交易并避免数据被篡改,对用户来说区块链就是一个可信的第三方,所以对区块链提供支持的预言机服务也必须达到与区块链同等水平的安全性。也就是说,预言机也必须为用户提供有效且可信的第三方服务,以及非常准确及时地返回结果,任何一个系统中安全性最弱的一环就决定了系统的整体安全,因此为了维持区块链的可信水平,就必须要配备同样可信的预言机。
如果要论证预言机的安全性,我们首先要给它下个定义,关于预言机安全性的指导性论证最初源于以下思想实验:想象现在有一个可信的第三方(TTP),即理想的实体或功能,总是能忠实执行所有指令,现在由这么一个第三方负责运行一台预言机,我们将这台预言机称作\\”ORACLE\\”,假设这个可信的第三方从一个完全可信的数据源Src获取数据,如果是通过这台完美的ORACLE预言机提供服务,那么我们会给它下达什么指令呢?
完整性
为了保证完整性,我们就让ORACLE预言机执行以下任务:
理想型预言机ORACLE的任务分成以下几个步骤:
-
接受请求:从智能合约USER-SC获得数据请求Req=(Src, t, q),明确目标数据源Src、时间或时间范围t、以及请求q
-
获取数据:将请求q在时间t发送至Src
-
返回结果:收到返回的数据a,将a返回至智能合约
这几个简单的指令快速、有效且有意义地勾勒出了安全的概念,从根本上来说,这些指令决定了ORACLE预言机是Src和USER-SC之间可信的桥梁,举个例子,如果Src=http://www.FountOfKnowledge.com、t=下午四点、q=“ticker INTC的价格”,那 么ORACLE预言机就会保证为USER-SC提供下 午4点时来自数据源http://www.FountOfKnowledge.com完全准确的INTC价格。
机密性
保密性是预言机另一个关键功能,USER-SC在区块链上将数据请求发送至ORACLE时,数据请求是公开的,很多情况下数据请求本身比较敏感,因此公开会产生负面影响。假如USER-SC是一份航班保险智能合约,向ORACLE发送了一个数据请求Req,请求某个用户的航班信息(q=\\”以太航空航班338\\”),那么结果就是全世界都会看到这个用户的航班计划,如果USER-SC是一份金融交易智能合约,数据请求可能会泄露用户的交易记录和资产组合,这样的例子不胜枚举。
所以,为了保护数据请求的隐私,我们需要对其进行加密,公钥由ORACLE保存,为了继续发挥ORACLE可信第三方的作用,我们可以给ORACLE 设定一个信息流限制:解密数据请求Req后,除了Src以外,不能对任何一方披露或使用Req内容。
可用性
预言机还需要具备可用性,这也是经典的CIA(保密性-完整性-可用性)三角中最后一个角,当然一个理想型的ORACLE预言机是永远不会宕机的,可用性还包括抗审查性等更加隐晦的功能,即一个诚实的ORACLE预言机不会拒绝为任何一个智能合约服务。
可信第三方的概念等同于某些模型中证明加密协议安全性的最佳模式,我们也可以用同样的逻辑打造区块链,用可信第三方的概念完美地维持公告板机制,可信第三方得到的指令包括接受、验证并序列化交易,将它们永久保存在公告板上,公告板是一种append-only的数据结构。
相关挑战
当然,世界上并不存在完全值得信任的数据源Src,数据会由于网站漏洞、服务提供商作弊或无心的差错等各种原因被善意或恶意篡改,如果Src不值得信任,即使ORACLE预言机如上文中的可信第三方一样完美运行,仍无法完全符合我们的安全要求。如果数据源Src出现问题,则预言机返回的结果a也会出错。如果Intel的真实价格是40美元,而http://www.FountOfKnowledge.com网站上把价格误报成50美元,那么ORACLE预言机就会将错误值a=50美元发送至USER-SC,如果使用单一数据源Src,这个问题则无法避免,ORACLE预言机不可能判断数据源Src返回的数据是否正确。
当然,还有一个问题是我们这里设定的可信第三方预言机ORACLE只是一个抽象概念,没有一个服务提供商是百分之百可信的,就算是本身诚实的服务提供商也有可能被黑客攻击或出现风险漏洞,因此用户或智能合约无法完全相信ORACLE预言机会忠实执行指令。
工作原理
Chainlink 提出三种互补的方案来避免问题节点的出现:分布式数据源、分布式预言机、可信硬件。
分布式数据源
应对单一数据源Src风险漏洞的一个简单方法就是改为从多个数据源获取数据,即采用分布式的数据源模式,可信预言机ORACLE可以向 Src1,Src2,……,Srck数据源集合请求数据,获得a1, a2,……ak结果集合,并聚合成单一数据A=agg(a1,a2,……,ak),预言机可以以各种方式来完成任务,比如多数投票。如果大多数数据源返回同一个值a, 那么agg函数就返回a,否则则返回错误。这样的话,如果大多数(即大于k/2)的数据源都能正常运行,那么ORACLE预言机将永远都能返回正确的值a。
还有许多其他的agg函数可以侦测错误数据或处理一段时间内的数据波动(比如:股票价格),并取剩余数据的平均值。
当然,还有一种情况是不同数据源之间的错误是互相关联的,这就会削弱聚合数据的确定性,如果网站Src1=EchoEcho.com从 Src2=TheHorseMouth.com获取数据,那么Src2的错误就会导致Src1也出现错误,此外数据源之间还会出现难以被察觉到的关联性错误,Chainlink致力于解决这类问题,对数据源的独立性进行映射和报告, 让预言机和用户可以轻松规避此类关联性错误。
分布式预言机
理想型预言机ORACLE本身其实也可以是一个分布式系统,也就是说网络中并非只有一个预言机节点O,而是有n个不同的预言机节点 {O1,O2,……,On},每个预言机Oi都会有自己的数据源集合,不同预言机的数据源可能会重叠也可能不会。Oi从各个数据源获取并聚合数据,并将自己的聚合数据Ai发送至请求Req。
其中一些预言机可能出现问题,因此所有预言机返回的数据A1,A2,……An需要以可信的方式被聚合成一个单一且权威的值A,但由于可能出现问题预言机,Chainlink怎么样聚合数据呢?
初步方案:合约内聚合
Chainlink最初提出的解决方案是简单的\\”合约内聚合\\”模式。CHAINLINK-SC自行聚合预言机返回的数据, 也就是说CHAINLINK-SC将调 用Agg函数计算A= Agg(A1,A2,……An),并将结果A返回至USER-SC,这个方法在n值较小的情况下很实用,而且有几大优势:
-
概念简单:虽然采用分布式预言机模型,但 CHAINLINK-SC 仍统一执行 Agg 函数运算聚合数据。
-
可信度高:由于 CHAINLINK-SC 的代码是开源的,因此其正确行为可以得到验证,另外CHAINLINK-SC的执行在链上完全公开透明,因此用户(即 USER-SC的创建者)可以对CHAINLINKSC高度信任。
-
灵活性高:CHAINLINK-SC可以实现最优聚合函数 Agg,这个函数可以是多数投票制,也可以是取平均值等
这个方案虽然很简单,但是却引出了一个值得深思的技术性问题,即\\”吃空饷\\”(freeloading),预言机Oz通过作弊看到另一台预言机Oi反馈的结果Ai,然后决定抄袭它的答案,这样一来,预言机Oz就不用花钱向数据源请求数据,而数据源是按照请求次数收费的,吃空饷现象会削弱数据源的多样性,也会打击预言机快速响应的积极性 (注:因为响应速度慢的预言机可以免费抄袭别人的答案),因此会影响整体安全性。
针对\\”吃空饷\\”问题这里提出了一个广为人知的解决方案,那就是建立先提交后解密(commit/reveal)的机制,在第一轮,预言机将结果以加密形式返回 CHAINLINK-SC,CHAINLINK-SC收到合法数量的结果后,就会开启第二轮,预言机将在这一轮解密数据。
中长期战略:链下聚合
合约内聚合存在一个关键问题,那就是成本,预言机O(n)提交的结果在链上处理(注:指 A1,A2,……An 的提交和解密)会产生费用。在联盟链中,这项开支是可以承受的,但在以太坊这样的公链上会收取链上交易费用,如果n值很大,那么费用将难以承受,一种成本效益更高的方式是在链下聚合预言机提交的结果,并将最后聚合成的单一数据发送至CHAINLINK-SC,我们将这个方案称为链下聚合,这是我们的中长期战略。
在节点可能出现问题的情况下达成共识得出结果值A,这其实很接近区块链自身达成共识的机制。假设有一组预先设定的预言机,一般人可能会考虑使用经典的拜占庭容错(CFT)共识算法来计算结果A,然而经典的拜占庭容错协议的目标是最终所有诚实节点都能储存同样的值,也就是说在区块链中,所有节点都储存同一个新产生的区块,而Chainlink的预言机目标则稍有不同。我们想要确保CHAINLINK-SC(以及 USERSC)能够获得聚合结果 A=Agg(A1,A2,……An),无须参与共识协议也无须从多台预言机收到结果。另外\\”吃空饷\\”的问题仍然需要解决。
Chainlink提议采用基于门限签名的简单协议。现存许多签名机制都可以实现这一功能,但使用Schnorr签名机制是其中最简单的方案。用Schnorr签名机制,预言机拥有一个公钥集合pk和对应的私钥集合sk,以(t,n)门限的方式分配给O1,O2……,On, 这里分配是指每个节点Oi都有一对专属的私钥和公钥(ski,pki),Oi可以生成部分签名σi=Sigski[Ai],可以用pki进行验证。
这个方案最大的特点是,t台预言机的集合针对同一个值A分别生成部分签名,这些签名被聚合成一个完整的合法签名Σ = Sigsk[A],然而t-1台预言机的集合就无法针对任何值生成合法签名,因此这个完整签名Σ至少由t台预言机的部分签名组成。
门限签名只需让Σ包含t个来自不同节点的独立合法签名即可,门限签名在安全性上与这个方案无异,但它却能大幅提升链上性能,因为它可以将验证 Σ的工作量和成本降低t倍。
也就是说,预言机只需要生成并广播部分签名,直到达到t个数量的部分签名,才会开始计算Σ,然而这个方案同样存在\\”吃空饷\\”的问题,因此我们必须保证预言机真实地从数据源获取数据,而非从其他预言机抄袭Ai,Chainlink建立了一个经济机制来解决这个问题,即通过PROVIDER(智能合约)付款给真实获取了数据产生部分门限签名的预言机。
在分布式结构中,很难决定应该付款给哪台预言机,预言机可能在链下互相沟通, CHAINLINK-SC可能不再是唯一能收到反馈结果的权威性实体,因此无法直接在众多预言机中判断出应该付款给谁,也就是说PROVIDER必须从预言机获得证据证明他 们是否违规操作,当然其中一些证据可能是不可信的,Chainlink提出采用类似共识机制的方案,避免PROVIDER错误地付款给抄袭的预言机。
安全服务
Chainlink在网络中出现f个问题预言机的情况下仍保障可用性和准确性,另外我们正在积极研究使用可信硬件有效避免问题节点向智能合约提供错误数据。然而光靠可信硬件可能无法提供充分的安全保障,理由有三:第一,Chainlink最初开发的网络中不会部署可信硬件;第二,一些用户不相信可信硬件;第三,可信硬件只能规避节点违规操作风险,而无法规避节点宕机风险。因此用户希望能够选择最可靠的预言机,并将USERSC连接到>f 个问题节点的概率降到最低。
为了实现这个目标,Chainlink开发了四大安全服务,即:验证系统、声誉系统、认证服务和合约升级服务,所有这些服务一开始都由有意愿发布 Chainlink网络的公司或组织运行,但须严格遵照Chainlink去中心化的设计理念,Chainlink的安全服务无法阻止预言机节点参与或更改预言机反馈的结果,前三项服务仅为用户提供评分或指导意见,而最后一项合约升级服务则完全由用户自行选择,另外这些服务还可以支持独立的服务提供商,Chainlink鼓励独立服务提供商的参与,以便为用户提供更加丰富的安全服务。
验证系统
Chainlink的验证系统负责监控链上预言机行为,提供客观的性能指标,为用户选择预言机提供指导意见,它会对预言机在以下两个方面进行监控:
-
可用性:验证系统应记录预言机失效,以及时响应数据请求,它将持续汇总运行时间内的统计数据
-
准确性:验证系统应衡量预言机反馈结果与网络中其他预言机之间的偏差程度,并记录明显错误的反馈结果
Chainlink初期的链上聚合系统可以直接监控预言机,因为CHAINLINK-SC可以看到所有预言机的活动,然而在我们前文中设想的Chainlink链下聚合系统中,数据会在预言机端聚合,也就是说CHAINLINK-SC无法直接看到预言机反馈的结果,也无法直接监控到预言机的可用性和准确性。
所幸,预言机提交的结果都附有电子签名,因此便生成了不可否认的证据,Chainlink提出以智能合约的形式实现验证服务,针对偏差结果提交证据的预言机将得到奖励。换句话说,预言机将受到激励上报明显有问题的行为。
可用性相对来说比较难监控,因为预言机不会在响应失败的记录上签名,因此Chainlink提出预言机在它们从其他预言机收到的反馈结果集合上附上电子签名认证,验证合约会接受预言机提交的认证集合,并对提交认证的预言机给予奖励,认证中会一致显示某一问题节点不响应数据请求。
无论在链上还是链下,预言机的可用性和准确性数据都会在链上公开,这样一来用户/开发者就可以在客户端实时查看这些数据,其中包括以太坊中的Dapp或联盟链上的同类应用。
声誉系统
Chainlink的声誉系统将记录预言机服务商以及节点的用户评分,让用户可以评估预言机的历史服务水平,验证系统的报告可能成为决定预言机声誉的主要因素,并确保声誉数据真实可信,而链上服务记录之外的其他因素则可揭示预言机节点本身的安全水平,这些因素包括用户对预言机品牌的熟悉度、节点操作团队背景信息以及基础架构,我们将Chainlink的声誉系统设计成链上和链下两个模块。在链上模块中,用户评分可以供其他智能合约参考,另外声誉衡量指标还能轻松在链下获取,因为在链下可以高效处理大量数据并且加权方式可以更加灵活。
对节点运营商来说,声誉系统一开始包括以下几个衡量指标,既有按不同任务类型划分的指标,也有综合所有任务类型的指标:
-
被分配的数据请求总数:节点过去被分配的(包括完成和未完成的)数据请求总数
-
完成的数据请求总数:节点过去完成的数据请求总数,这个数字可以除以被分配的请求总数得出任务完成率
-
被接受的反馈结果总数:计算合约在比较各台预言机的响应后判定可以被接受的反馈结果总数,这个数除以被分配的数据请求总数或完成的数据请求总数,可以得出准确率
-
平均响应时间:所有预言机都需要一段时间来确认,但预言机的响应速度将有助于 定义未来预言机的响应速度,平均响应时间一般按完成数据请求的时间来计算
-
罚款金额:预言机支付保证金可保障其服务质量,用经济处罚的手段避免预言机服 务商收了钱不办事,这个指标既有现实意义也有经济意义
声誉较高的服务提供商将受到激励认真完成任务,保证较高的可用性和数据质量。 用户差评将严重损害品牌价值,另外违规操作还会被罚款,因此我们希望建立一个良性循环,让表现好的预言机能够不断积累声誉,而较高的声誉也能反过来激励节点维持高水平的服务。
认证服务
Chainlink的验证和声誉系统旨在解决一系列预言机违规操作的行为,在多数情况下保障系统完整性。另外我们在此基础上还添加了一层认证服务,目的是避免重大问 题的发生,并在问题发生时进行补救,特别是由于女巫攻击和镜像攻击导致整个区块沦陷的情况。
无论是简单版协议还是合约内聚合协议,其目标都是避免节点违规操作,抄袭诚实节点的反馈结果,从而不劳而获。但这两种协议都无法抵御女巫攻击,这类攻击中,有一方能操控多个表面上看起来独立的节点。攻击者试图在预言机池里占据主导地位,操控f台以上的预言机参与聚合协议,并在特定时间提供错误数据,这样做可能是为了操纵高价值合约中的大额交易,有时候一个攻击者可以操纵达到合法数量的预言机共同作弊,而有时候则是多个攻击者共同操纵,f台以上的预言机被攻击者操控的危险性特别高,因为无法单从链上行为判断出来。
另外女巫攻击者为了降低操作成本,会采取镜像攻击法,操控预言机从同一个数据源获取数据并发送至链上,也就是说违规操作的节点偷偷从同一个链下数据源获取数据,并假装是从不同来源获取的,无论攻击者是否选择发送错误数据,镜像攻击法都能使他们受益,它所带来的安全威胁比伪造数据要小很多,但还是会对安全造成一定影响,因为多个请求者之间无法进行对比甄别出错误数据,比如正常情况下就算数据源 http://www.datasource.com 由于偶发的bug而发出了错误的数据,最后综合大多数请求者的数据还是能得出正确的结果。
Chainlink的认证服务旨在保障完整性和可用性,在短期到中期监测并防止镜像攻击和节点窜通行为,认证服务会为优质节点提供背书。我们在这里再次强调,正如上文中提到的那样,我们为服务提供商打分的唯一目的是为用户提供便利,我们这样做不是为了控制节点是否参与到系统当中。
认证服务基于节点部署和操作的几个维度为其背书,监控节点在验证系统中的数据并对其提交到链上的结果开展事后抽查,特别是针对高值交易,将结果与直接来自权威数据源的数据进行对比。市场对预言机数据需求巨大,因此我们相信会有足够的经济激励支持对节点开展链下审计并确认是否符合相关安全标准,比如云安全联盟(CSA)的云控制矩阵相关规定,并提供有用的安全信息,以证明对预言机的数据源和智能合约代码按要求开展了审计工作。
除了声誉衡量指标以及链上和链下反欺诈自动化系统以外,认证系统还能甄别女巫攻击和其他链上系统无法甄别到的违规行为。举个例子,如果所有节点都认为\\”太阳从西边升起\\”,那么最终USER-SC就会接受这个明显错误的数据,然而在事后审核时,\\”太阳从西边升起\\”这条记录很明显就能被甄别出来是错误数据。
合约升级
从近期智能合约被黑客攻击的事件可以看出,光靠代码几乎无法让智能合约在安全性上做到滴水不漏,即使智能合约的代码完全没有问题,它所部署的环境一旦出现变化或错误,仍然会对合约安全造成严重影响。
因此我们推出了合约升级服务,并强调这项服务并非强制性,而是完全由用户自行选择的。短期内如果发现了风险漏洞,合约升级服务将在Chainlink预言机中创建一套新的预言机合约,新的数据请求合约将迁移到新的预言机合约集合中。
然而这样一来,新旧版本的合约会同在一台预言机内,而旧版本合约仍存在潜在风险。因此我们的长期战略是CHAINLINK-SC在请求合约向预言机发起的调用中加上一个标识(MIGFLAG),表明这次调用是否应该被转发到新的CHAINLINK-SC中,MIGFLAG的默认设置是false,可以让请求合约被自动转发并迁移到新版本的CHAINLINK-SC中,用户要激活转发,需要用请求合约向Chainlink预言机发送带有MIGFLAG=true参数的请求(注:用户可以修改智能合约,其在链上收到有权限的合约管理员发送的更改指令后便可以对标识进行更改)
用户将新的预言机合约作为\\”紧急逃生出口\\”,这个概念一直以来都受到区块链研究者的追捧。这个机制可以弥补错误和漏洞,同时规避了白帽编程或硬分叉等复杂繁琐的方案,迁移到新版合约的过程在链上可见,用户在升级前也可以查看审计结果。
然而我们发现一些用户不放心任何一个组织控制迁移或转发的\\”紧急出口\\”,强制迁移可能会让有权限控制合约的人拥有更多权力,或是让黑客有机会开展恶意攻击,比如修改预言机的反馈结果。因此请求合约拥有对转发功能的所有控制权,可以选择不激活更新,另外由于Chainlink本质上是去中心化的模式,因此我们希望服务商能够支持社区开发的多个版本的CHAINLINK-SC。
LINK通证
Chainlink网络使用LINK通证向Chainlink节点运营商就链下数据获取、重新格式化、链下计算以及服务水平保障支付费用。以太坊等网络中的智能合约如果要使用Chainlink节点,就需要使用LINK付款给为它们提供服务的Chainlink节点,节点根据用户对它们服务的需求量以及其他类似数据源的供应量来定价,LINK是ERC20通证, 附带ERC223\\”转账加调用\\”功能(address,uint256,bytes),合约可以在单笔交易内收到并处理通证。
参考链接
https://assets.website-files.com/5ef0b2ad11602b50056a2304/5f44fe161921e31cabe50168_Chainlink%20whitepaper%E4%B8%AD%E6%96%87%E7%89%88-202007%E6%B6%A6%E8%89%B2%E7%89%88.pdf
原创文章,作者:七芒星实验室,如若转载,请注明出处:https://www.sudun.com/ask/34264.html