
A 词汇表
该词汇表旨在定义论文正文中的重要术语。方括号表示给定术语接受处理的论文主体部分(如果有)。定义中的粗体术语表示相应的词汇表条目。
- 已验证数据来源 (ADO) [第 7.1 节]:原始数据源使用数字签名来验证从其API提供的数据。 通过验证数据来源,ADO 可以帮助加强oracle报告的完整性。
- 拜占庭容错(BFT):用于分布式系统协议(如区块链)的术语。 即使(少数)节点/服务器以拜占庭(即任意恶意)方式运行,BFT 也能确保安全。 拜占庭一词也方便地描述了大多数拜占庭容错协议的机制。
- 加密经济学:一种特定领域的机制形式,它利用密码学技术和数字资产在去中心化系统中创建理想的平衡。
- DECO [第 3.6.2 节]:DECO是去中心化预言机的缩写,DECO是一种新的加密协议,它使用户(或预言机)能够以零知识证明从支持HTTPS的服务器获得的数据的陈述。 因此,DECO允许来自未经修改的 Web 服务器的私有数据通过预言机网络安全地中继。(它不允许证明者直接在链上发送数据。)DECO的能力比Town Crier窄,但与Town Crier不同的是,它不依赖于可信的执行环境。
- 交易所:数字资产交易平台。 去中心化交易所(DEXes)是部分或全部实现为智能合约的交易所。
- 公平排序服务 (FSS) [第 5 节]:Chainlink的功能为区块链用户带来了先到先得的创新服务,例如可以在熟食店买到的那种服务。FSS有助于防止套利者用来在现有智能合约系统中获得优于普通用户的技术优势的抢先交易和其他计划。
- 抢先交易:金融系统(如公共区块链)中的一种获利策略,交易者观察传入交易,通过迅速将自己的交易放在首位来利用它。该术语在华尔街的含义比在区块链社区中的含义更窄,但从业者社区更加繁荣。
- 未来收费机会:Chainlink预言机未来可能从客户的服务支付中获得的净收入。 在渎职的情况下损失此类费用代表了机会成本。
- 博弈论:战略互动的数学形式研究。游戏是这种交互的模型,通常在现实世界中,它将游戏中的参与者(称为玩家)可用的动作集编成代码。
- L2系统:一类提高区块链性能(交易吞吐量和延迟)的方法。L2系统涉及交易的脱链处理,然后是与目标区块链的定期对账/同步。汇总就是一个例子。
- 机制/机制设计(MD):有时称为“逆博弈论”,MD是设计游戏的科学,称为机制,它激励参与者(通常称为玩家)的特定行为。
- 公钥基础设施(PKI):用于安全创建和管理身份到公钥的映射的系统。
- Rollup [第 6.3 节]:经典计算机科学交易处理方法的变体,称为批处理,现在可用于水果口味。汇总可以帮助提高交易处理速度和吞吐量,并且是扩展区块链以处理高交易负载的一种很有前途的方法。汇总涉及批量交易的链下构建,然后是链上提交。 两种流行的汇总设计方法是:
– 乐观汇总:一类汇总方案,其中交易批次在链上提交而无需验证。 它们的正确性是通过允许参与者对不正确的汇总发起挑战并使用质押作为此类挑战的经济激励来强制执行的。
– zk-Rollups:一类汇总方案,其中“zk”莫名其妙地表示“零知识”,这是zk-Rollups不需要而且通常没有的属性。zk-Rollups 使用简洁的知识论据,即紧凑的密码学证明或正确的计算,以在链上提交时实现有效验证。
- 超线性/二次质押影响[第 9.4.2 节]:对手可以通过贿赂来破坏理性的(即激励驱动的)预言机节点。给定一个预算为$B(n)的对手和n个参与的预言机节点,每个节点都有固定的质押押金 $d,我们说如果对抗成功需要B(n)渐近增长,则质押方案具有超线性影响 比n快。 二次影响意味着B(n)随着渐近增长。
- Staking [第9节]:一种使用严格量化的经济激励措施来加强去中心化系统安全性的方法。在质押计划中,参与者提供加密货币押金,如果参与者偏离区块链协议,该押金将被部分或全部没收。在Chainlink设置中,预言机节点执行质押以确保正确报告; 如果未能提供正确的报告,他们将没收股份。
- 交易执行框架 (TEF) [第6节]:用于实现预言机支持和公平排序服务的L2系统的去中心化预言机网络框架。
- Town Crier [第3.6.2节]:一种预言机技术,它使用可信执行环境 (TEE) 来强制预言机数据和计算的完整性和机密性。Town Crier具有包含DECO的功能,但需要信任TEE。
- 可信执行环境 (TEE):应用程序的执行环境,通常具有专用硬件支持。TEE旨在提供强大的安全属性,例如机密性和应用程序完整性,即软件的防篡改。TEE是一项正在进行的工作,但有望产生巨大的行业影响。
- 信任最小化[第7节]:区块链行业的一个常用术语,巧妙地表达了与它听起来应该意思相反的意思。信任最小化是指分散系统中理想的设计特征:在对系统组件的可信度的有限假设下,强烈保证正确行为。
B DON 接口:更多详细信息
在本附录中,我们提供了第3节中概述的DON接口的更多详细信息。我们在附录B.1、B.2和B.3中分别对待网络、计算和存储这三种计算资源。
B.1 联网
Oracle系统的出现是为了解决基本区块链协议的限制:公共/无需许可的区块链无法安全地从外部系统(如Web服务器)获取数据。DON旨在支持区块链和链下系统之间的应用程序级适配器 以通用、灵活和可扩展的形式。
在本节中,我们将讨论DON将用于构建安全适配器并确保其可用性的技术。我们还提供了一些应用示例。 我们描述的大多数技术之前都没有在Chainlink白皮书中进行编纂。它们可以按照现在的架构应用在Chainlink中,即不需要DON,我们预计其中一些会是。
我们根据经典的CIA(机密性、完整性、可用性)三元组来描述适配器的安全性。
在预言机系统中最重要的是数据完整性。这里的完整性意味着对手不能篡改从源中继到 DON 的数据(反之亦然)。在某些情况下,通道还应该提供机密性。机密性意味着攻击者仅了解协议旨在通过通道发送的数据。(我们提供了更精确的概念。)通道应该表现出可用性,这意味着通道是为响应依赖方的需求而及时创建并传输数据的。最后,作为三元组的补充,我们注意到问责制对于确保预言机系统的正常运行很重要:在发生故障的情况下,应该可以识别(并惩罚)故障节点。
B.1.1 完整性
传输层安全性(TLS)——用于在客户端和主机之间建立安全通道的主要互联网协议——具有严重的固有局限性:它只为两个通信方提供完整性。它不会以支持向第三方证明数据源自主机(或客户端)的方式对数据进行数字签名,并且为此目的提出的建议,例如[9, 191],目前的采用非常有限。区块链系统感兴趣的一些数据可能由其生产者进行数字签名,我们将在第 7.1 节讨论支持这种潜在有益实践的方法。然而,今天,绝大多数网络数据都没有数字签名。
因此,DON包含了专门构建的机制,以确保从一个或多个其他来源传达给DON的报告的完整性。它们以三种形式出现,每一种都有其相关的信任和运营模型。
为了描述这三种机制的功能,我们考虑一个简单的模型,其中参与者旨在确保我们称之为增强报告r=(r~,sid,S)r=\left(\tilde{r},sid,S\right)的完整性,其中基本报告有效负载r~\tilde{r}被标记为 : (1) sid,会话标识符和 (2) 生成报告的源/实体的标识符S。 值sid为发送r~\tilde{r}的协议上下文提供了唯一标签,并且可能包括依赖智能合约的唯一标识符、报告对应的查询的唯一标识符等信息。我们参考 增强的报告只是作为一个从上下文中清楚的报告。
我们用ρi=(r[,w])ρ_{_i}=\left(r\left[,w\right]\right)表示预言机节点OiO_i写入LL的报告,其中表示(可选)见证。 我们将ww(有或没有证人)称为记录报告。因为玩家在LL上的消息是经过认证的,即由发布消息的玩家签名,写ρiρ_i可以作为OiO_i在依赖协议中的背书。
DON 支持三种基本机制来确保查询和报告的完整性,这意味着它们是从声称的源S中继而不会被篡改的。它们是:
- 密码证明:源S使用公钥pk对r进行数字签名,即ρ=(r,w=Sigpk[r])ρ=\left(r,w=Sig_{pk}\left[r\right]\right),直接保证了消息的完整性。
- 可信执行环境 (TEE)/Town Crier:在功能齐全的TEE(如英特尔 SGX)中运行的具有公钥pkA的应用程序实例A可以生成证明,即数字签名见证w=SigpkA[r]w=Sig_{pkA}\left\lbrack r\right\rbrack。假设信任TEE,则记录的报告ρA=(r,w=SigpkA[r])ρ_A=\left(r,w=Sig_{pkA}\left[r\right]\right)确保的完整性。
- 阈值处理:f+1f+1 个玩家的任何子集生成记录报告ρi=(r,Sigpki[r])ρ_i=\left(r,Sig_{pki}\left[r\right]\right)或组合或聚合见证ρO=(r,SigO[r])ρ_O=\left(r,Sig_O\left\lbrack r\right\rbrack\right)提供了rr的集体视图,因为它正确地起源于SS。
阈值和TEE是互补的。它们可以同时用于更强大的组合安全保证,从某种意义上说,如果两种机制中的至少一种是健全的,就可以保证完整性。
我们可以扩展我们对完整性的定义,包括记录r~\tilde{r}的转换conf(r~)conf(\tilde{r}),而不是r~\tilde{r}本身。如下所述,此扩展对机密性很有用。
不可信的来源:给定的数据源当然可能提供不可信的数据。 在我们定义的意义上的适配器完整性不包括处理损坏源的机制。 预言机系统中使用的主要机制是聚合源。 例如,如果资产的价格报告r1、r2、r3r_1、r_2、r_3是从源S1、S2、S3S_1、S_2、S_3获取的,则汇总报告r=median(r1,r2,r3)r=median\left(r_1,r_2,r_3\right),给定一个错误的源,将是正确来源报告的值。确保正确的聚合是计算完整性的问题,如附录B.2中所讨论的。
B.1.2 机密性
如果学习了适配器生成的查询q和报告数据r,我们就说适配器具有弱机密性。然而,弱机密协议可能仍然提供其他形式的机密性:适配器可能仅将关于(q, r) 的部分信息放在L上,因此对观察者部分隐藏 (q, r),协议中的辅助数据可能仍然是机密的。
我们说适配器具有强保密性,另一方面,如果q和r部分或全部对OO隐藏。如何实现强保密性乍一看并不明显:毕竟可以如何处理隐藏查询和管理隐藏报告?
DON可以使用DECO [234]和/或Town Crier [233]来实现适配器的高度机密性。有关示例,请参见附录C。
DECO和Town Crier旨在提供遗留兼容性,即以保密的方式使用现有数据源的能力。另一种方法是通过对数据源进行数字签名并提供机密性功能来更改数据源的输出,如在TLS-N [191]中,这是一种很好的补充方法,我们还将探索,并且在OpenID Connect中的范围有限[9],一种在OAuth 2.0之上运行的面向身份的数据签名协议。
B.1.3 可用性
适配器的可用性取决于它所连接的系统的可用性以及负责实现适配器的DON节点的可用性。虽然可用性机制可能是特定于适配器的,但我们预计它们通常会依赖于一些已经使用或计划包含在当前版本的Chainlink中的基本技术。其中之一当然是冗余,即让多个节点操作通道。另一个是使用加密经济激励措施来加强快速通道操作;例如,当冗余节点为其服务收取费用时,可能会为快速执行支付额外费用,例如,奖励第一个节点从链下系统将数据中继到DON。
有关DON中适配器的更多详细信息,请参见附录B.1。
B.2 计算
DON支持L2扩展方法——无论是基于乐观计算还是有效性证明——都为智能合约提供了显着性能改进的可能性。通过采用额外的技术,DON可以提供进一步的性能增强,并且还支持各种形式的机密性,无论是对于预言机数据作为隐私保护第L2方案(例如 [217])的辅助,或为不存在的方案提供隐私增强。
零知识证明(参数)系统,例如zk-SNARKs [126]、zk-STARKs [38] 和 Bulletproofs [56, 66],是保护隐私的强大工具,将在机密性的演变中发挥重要作用- 保留智能合约系统 [149],就像它们在DECO中所做的那样。值得注意的是,向预言机节点证明零知识陈述的目标是允许使用一种新形式的零知识证明和指定的验证者(即,只能由特定实体而非公开验证的证明)[220];这样的方案可以大大优于更通用的零知识证明系统。我们预计零知识证明将在适配器和可执行文件中的预言机结果的可信和机密中继中发挥重要作用。但它们有一个严重的限制:它们不会向证明者隐瞒秘密。
要启用更通用的保密功能,需要额外的技术。这些相同的技术还可以强制执行完整性,即帮助确保正确执行计算。我们简要讨论了可信执行环境(TEE)和安全多方计算(MPC)在Chainlink演进中的作用。
B.2.1 可信执行环境 (TEE)
TEE,如Intel SGX [229, 133] 和Keystone [152] 允许应用程序在称为enclave的受保护环境中执行,原则上保护它们的完整性和机密性。TEE旨在实现一种强大且非常通用的功能 [183],它包含甚至强大的密码学原语,例如虚拟黑盒混淆,仅使用密码学证明是无法实现的 [27, 175]。
在[139, 233]中引入了将 TEE 用于智能合约的想法,此后出现了几个用于此目的的通用框架[58, 80, 99]。
我们预计TEE最终将在Chainlink网络中发挥作用,因为它们是Town Crier [233]的基础,并且Chainlink已经支持基于TEE的区块链系统,例如 [8]。随着技术的不断成熟,我们相信它将在整个区块链系统中发挥越来越重要的作用,尤其是在Chainlink中。
对TEE安全性的担忧一直是它们采用的障碍之一。因此,我们简要讨论这个问题。
B.2.2 TEE安全性
最近对英特尔SGX的攻击是唯一具有证明能力的商品 TEE,例如 [211, 212],对TEE在实践中的安全性产生了怀疑。 我们相信这项技术将会发展,特别是随着开源努力的出现[152]。
缓解措施:可以以认识到其潜在危害的方式部署TEE。一种是将它们用于纵深防御,即用于加固系统。Town Crier可以这样看待:值得信赖的预言机运营商应该为他们的用户提供机密性和完整性,但使用Town Crier可以加强这种保证。 同样,TEE可以以不依赖完美安全性的方式进行部署。例如,密封玻璃证明 [207] 使用TEE来保证完整性,但不使用机密性(尽管最近的侧信道攻击会损害两者)。
最后,可以设计具有前向安全性的基于TEE的协议,以便在已知中断时:(1)玩家可以避免使用TEE和(2)中断不会追溯影响先前的协议调用。这种方法将极大地限制对手利用TEE漏洞的机会之窗。例如,在TEE控制用户资金的协议中,用户可能会将这些资金转移到专门用于临时、仅限TEE使用的地址。在TEE对长期存在的数据强制保密的协议中,频繁的密钥轮换将实现类似的目标。
例如,TEE可用于实现附录C.3中讨论的机密DeFi的ConfSwitch适配器。TEE摄取在公钥下加密的持续时间为t,例如一周,并生成输出。然后它会清除已处理的所有数据。 在每个新纪元开始时,它会删除其旧密钥,生成一个新密钥,并将其发布到L或MAINCHAIN。(这种发布可以通过L上的可执行文件和每个时期的发起者来促进。)玩家还可以在任何时候通过协议中止。
当然,用户在这个模型中暴露于零日攻击,即未发布的攻击。然而,使用零日攻击是有代价的,即通过发布补丁来暴露和失效的风险。
B.2.3 安全多方计算(MPC)
MPC是一组节点对秘密共享值进行通用计算的术语。MPC能够实现“黑盒”功能,即在机密输入x1,…,xzx_1,\ldots,x_z计算函数使得玩家只学习g(x1,…,xz)g(x_1,\operatorname{\ldots},x_z),并且不学习有关函数输入或中间计算的信息。 输入可以秘密共享,也可以使用承诺方案或秘密共享密钥下的加密以绑定但保密的方式在链上表示。
尽管相当灵活,尽管最近取得了令人瞩目的进步,但与在单个节点上直接执行相比,通用MPC(即支持任何函数的MPC)会产生非常高的计算和通信开销。例如,MPC使用在与恶意玩家的对抗模型中运行的相当先进的工具(例如EMP工具包 [218、219])需要大约20秒的计算才能对WAN上的14个节点进行一次AES评估。(只有250ms的计算是在线的;其余的可以在预计算阶段执行。)相比之下,现代消费级CPU上的AES评估需要大约2µs [213]。
简而言之,通用MPC相当实用,但仅适用于适度的计算。实际的实现往往侧重于相对适度的计算任务,例如Hyperledger Fabric[42]中的拍卖。
对于某些功能可以实现相当有效的协议。一个例子是阈值签名,这对于BLS签名特别实用[54]。2PC,仅涉及两个玩家的计算可以利用特殊技术(“乱码电路”),使其比涉及n>2n>2个玩家的计算效率高得多。例如,DECO [234] 使用自定义和通用2PC技术。
大多数 MPC 方案和实现都有一些重要的限制。一个是单个玩家可以中止协议并学习其输出,同时(匿名)阻止其他玩家学习他们的。这意味着鲁棒性(完成计算的能力)和公平性(在特定于MPC的意义上)的失败,这意味着所有参与者都收到输出,或者没有。
允许识别中止播放器 (ID-MPC) 的方案,例如 [37] 是解决此问题的一种方法。但是MPC协议通常也会对网络同步做出强有力的假设,否则它们可能会遇到机密性和完整性失败。在[157]中提出了一种在异步网络中运行的合理实用的稳健版本的 MPC。
大多数MPC协议的另一个限制是它们缺乏公共可验证性。这在假设有法定人数的诚实参与者的模型中没有问题,但对于第7.3节和第8.3节中讨论的MAINCHAIN问责类型而言,这将是一个问题。
为了确保在大多数节点发生故障的情况下正确的MPC输出,需要使用可公开验证的变体,例如带有公共公告板的[37](在多数不诚实模型中必然是MAINCHAIN),因此不太实用。
总之,我们预计DON将在其开发的早期支持MPC进行专门的计算,例如阈值签名和DECO。我们将跟踪快速发展的MPC领域的发展,以确定对通用MPC的支持在哪里可能是合适的。
B.3 存储
发送到区块链的数据可以发挥多种作用。 它可能会立即被合约消耗掉。 也可以将其置于链上,以供合约在未来快速访问,或用于与合约执行无关的目的,例如便于对链下系统进行审计的档案存储。 最后两个目的所需的数据量大大超过了当今合约消耗的数据量,以及大多数无许可区块链的数据存储容量。
我们设想DON可容纳两种存储形式。第一个是账本存储,通过包含在DON的账本中来实现。第二种对大容量存储特别有吸引力的选择是账本外存储。
账本外存储可能涉及使用天生去中心化的链下系统,例如Filecoin [188]、IPFS [40]、Storj [226]或Sia [215]。Filecoin有一个称为复制证明 (PoReps) [74、112、111、188、199] 的内置协议,旨在确保存储文件F的多个副本(并防止矿工玩共识协议)。其他三个只能通过让最终用户在不同的密钥下对F进行多次加密来实现此属性,从而创建不同的对应密文F~1、F~2、F~3\tilde{F}_1、\tilde{F}_2、\tilde{F}_3。DON可以代表用户执行此类加密 ,允许在目标存储协议中没有本机支持的情况下进行复制证明。
在与用户所需的信任模型兼容的情况下,也可以使用现有系统,例如传统的云存储提供商。跨此类服务的复制是可能的,以实现健壮性[57],并且可以与分散式存储服务互补和组合。
机密性:DON 包括OO存储在秘密共享密钥下加密的数据的能力。他们可以对此类数据执行保密计算,如上文附录B.2中所述。
B.4 资源定价
对用户在区块链上使用资源的准确收费仍然是一个长期的挑战。错误定价的资源不仅会带来阻碍生态系统中重要应用的风险。它们也构成安全风险,因为它们可以实现拒绝服务攻击 [184] 和更微妙的攻击,例如资金流失 [222]。
DON 中可执行逻辑的资源定价是一个比较容易的问题,因为 DON 节点控制资源使用并且可以应用它们认为合适的任何定价策略。可能的方法包括市场驱动的定价、以太坊的燃气计量,EVM 和 WASM [3] 支持这种方法,以及语言驱动的方法,例如非图灵完备的语言 [131]——可能还有有限的代码大小。然而,适配器的定价肯定需要特定于应用程序的定价策略,因为适配器访问外部资源,例如云存储,其成本与DON无关。
C 适配器示例
在本附录中,我们给出了一些适配器示例,以说明在实践中理想和可实现的各种适配器以及相关的安全概念以及实施它们的技术。
我们使用符号Adapter(P,S)Adapter\left(P,S\right)来表示一个适配器,该适配器涉及PP中的玩家和一组数据源(或单个数据源)S。我们让 → T 表示系统 T 的输入/输出,其中存在歧义。 否则,输入应理解为由适配器从 L 读取,输出应理解为写入 L。
C.1 Oracle介导的数据源访问(MediatedReport)
在某些情况下,某些节点可能有权访问整个节点集OO没有的数据源SS。 例如,某些节点可能拥有OO中其他节点所缺乏的API密钥或其他凭据。对数据源SS具有特权访问权限的节点可以使用 DECO(或 Town Crier)代表OO调解访问。在这里,我们描述了一个具有弱保密性的适配器。
技术方法:使用DECO,特定OiO_i可以使用机密凭证访问SS,并向另一个节点 Oj 证明它正确地转发了来自SS的报告rr,而无需向OjO_j透露其凭证。 这种方法当然可以扩展到跨节点子集的证明。

示例应用:假设OiO_i从数据源SS提交报告rr,其值被OO中的另一个或多个节点争议。这可能会发生,例如,作为权益协议中争议机制的一部分。可以通过调用OO中的全部节点集来仲裁争议。但是,OO中的某些节点可能无法访问SS,这可能是一个专门的数据源。使用DECO,OiO_i可以向OO中的节点证明其报告rr是从SS正确中继的,而其他节点无需直接访问SS。
变体和扩展:Town Crier提供了另一种实现相同适配器的方法。OiO_i的凭证可以放置在由OO中的各个预言机节点运行的Town Crier实例中,并对其使用进行适当的限制 [164]。
还可以扩展MediatedReport,以便OO可以调用O∗O^∗中的任何节点,O∗O^∗是可以访问SS的节点的子集。也可以将MediatedReport推广到MAINCHAIN上的节点。这种变体在协议中可能会有所帮助,例如质押或乐观汇总,例如 [141],使用链下计算的链上仲裁。
C.2 跨帐报告(XL-Report-Read)
对于许多应用程序,跨DON交换数据可能很有用。在这里,我们描述了一个简单的适配器,用于将基本报告从DON B导入到另一个DON A。为简单起见,我们假设任何给定qq的LBL_B上的形式为<report:(q,r)><report:\left(q,r\right)>的唯一报告。
技术方法:由于账本 LB 上的消息是相对于pkLBpk_{L_B}进行签名的,因此如果他们知道pkLBpk_{L_B},则可以很容易地由运行去中心化预言机网络A的预言机节点OAO_A对它们进行身份验证。

示例应用:DON A 可以确定它对DON B有足够的信任,以将其报告视为值得信赖。在这种情况下,导入某些报告可能比单独生成报告更具成本效益。
PKI支持:保护DON之间的报告传输的主要挑战是维护支持的公钥基础设施 (PKI),即公钥到 DON 的可信赖的最新映射。为了支持Chainlink中的这一基本功能,我们计划在Chainlink支持的所有区块链上维护基于智能合约的去中心化Oracle网络目录及其公钥。
变体和扩展:当然,许多其他可能的跨 DON 适配器也是可能的。 例如,DON A可能有权在DON B中从LBL_B导入机密数据。 在这种情况下,适配器将需要OBO_B的参与。作为另一个示例,DON A可能对DON B具有选择性写入权限,在这种情况下,用于写入数据的跨链适配器将是可能的。
其他扩展可以处理关于 LB 的多个或模棱两可的报告。 例如,XL-Report-Read 可以在给定时间t在LB上以最高索引z中继消息M=((q,∗),z)M=\left(\left(q,∗\right),z\right)。
C.3 机密交换(ConfSwitch)
我们前面的两个示例没有提供q或r的分类帐机密性。我们现在描述一个可以做到的:ConfSwitch。该适配器仅在链上显示聚合(中间化)报告r的功能开关,因此适用于价格馈送。它为q和r提供账本机密性,仅揭示后者的功能。它还可以为审计员记录机密数据(使用公钥pkaudpk_{aud})。 这种审计可能很重要,因为使用ConfSwitch的交易细节在账本或主链上是不可见的。 向审计员提供的数据包括q、switch和可选的辅助数据α。
技术方法:为了为q和 switch(以及可选的α)提供机密性,它们在O和审计员的公钥下加密。O将账本上的报告汇总并汇总到报告r中,并输出switch(r)。q和任何报告数据都没有明确写在L上。
高度机密性:使用DECO或Town Crier在ConfSwitch中可以实现高度机密性。
在这种变体中,玩家将承诺c=comm(q,switch)c=comm\left(q,switch\right)放在L上以进行查询和切换。然后,任何一个玩家都可以使用 DECO 或 Town Crier 来检索报告并在零知识的情况下证明他们关于c的正确性。由于DECO仅对单个报告启用此类证明,因此需要一个额外的步骤:用户将在单个报告上证明密文的正确性,然后证明声明的输出switch(r)switch\left(r\right)的正确性,正确的中值化和切换到报告的应用。

图19:适配器ConfSwitch
D 功能签名
功能(数字)签名方案 [59],与传统签名一样,具有允许对任何消息进行签名的主(私有)密钥sk。然而,此外,主密钥可用于为函数F创建签名密钥skFsk_F,该函数允许对F范围内的任何值 y 进行签名,即对于某些输入x,F(x) = y。
[59] 中给出的实现这个原语的简单方法如下(稍作修改)。生成一个新的密钥对(sk0,pk0)。 为函数 F 创建键 skF 计算如下:

这里的cert可以被视为“证书”,说明pk′pk^{\prime}是具有函数F和主公钥pk的功能签名的有效公钥。
使用skFsk_F对消息y进行签名,然后采用以下形式:

为了验证Sig∗skF(y)Sig{{∗\atop sk_F}}\left(y\right),即计算verify∗(Sig∗skF(y))verify^∗\left(Sig{{*\atop sk_F}\left(y\right)}\right),验证者检查F(x) = y,并以显而易见的方式检查cert和Sigsk′(y)Sig_{sk^{\prime}}\left(y\right)的有效性。
x值(“见证”)原则上可以很大——就像我们考虑的面向预言机的用例一样。对验证者而言,计算效率高的直接补救措施 [59] 是用SNARK(或zk-SNARK表示机密性)代替x——x存在的紧凑证明(论证)。
功能签名在概念上很简单,它们的基本构造也是如此。但它们提供了一个有用的框架,用于推理在预言机网络中组合源数据。
D.1 组合数据的功能签名
返回示例4,我们可以看到如何应用功能签名来创建证明σ,证明值v是从值-签名集对 (V, Σ)正确计算的。 让(ski,pki)\left(sk_i,pk_i\right)表示SiS_i 在S = {S1S_1, S2S_2, . . . ,SnSS_{nS} }。假设pk是S的公钥,其对应的私钥在数据源之间以阈值方式共享; 为简单起见,假设skisk_i是SiS_i的sk份额。
然后我们可以定义一个函数签名,将一组 nS 个有效签名值中值化如下:

然后,可以使用具有主密钥sk的功能签名方案可用于将正确计算的中值v传输到SC。预言机网络计算σ∗=Sig∗skF(v)σ^∗=Sig{∗\atop sk_F}\left(v\right),并将其发送给SC,SC通过计算verify∗(σ∗,pk,v)verify^∗\left(σ^∗,pk,v\right)对其进行验证。
当然,为了提高对数据源故障的鲁棒性,可以放宽 F 以对某个阈值kS≤nSkS≤nS的至少kSk_S个有效签名值的子集进行中介,即像我们一样接受来自法定人数的源的有效签名 在我们下面的示例结构中。
D.2 离散函数签名
计算σ*使用基于SNARK的函数签名构造是一项计算密集型任务,可能与高性能DON应用程序不兼容。 因此,我们提出了一种宽松的变体,我们称之为离散函数符号性质,其关键思想是在可能的符号值空间上放置一个网格,并将值约束到该网格。 例如,如果所需答案是单个标量,则网格可以是某个网格大小的所有整数倍a∈R+,aZ={...,−3a,−2a,−a,0,a,2a,3a,...}a∈R^+,aZ=\left\{...,-3a,-2a,-a,0,a,2a,3a,...\right\}。 那么一个有效的有符号值是某z的表示,对于z∈Zz∈Z加上一个在az上的有效签名。
值az不必是精确的答案F(V, Σ),但会接近它。 为了形式化这一点,除了附录D.1中的谓词函数F之外,离散函数签名的规范还有一对额外的参数(δ,δ′)\left(δ,δ^{\prime}\right),对应于约束网格的粗/细。它们如下:
- 参数δ的界限允许偏离 F 的正确输出。在形式上,给定一对 (V, Σ),我们要求对抗性签名者(DON,为了我们的目的)生成签名σ∗σ^∗是不可行的与 F(V, Σ) 的正确输出的偏差大于δ,即:

- 参数δ′δ^{\prime}表征了V中的某些法定值必须匹配的精确程度,才能保证可行的签名。 即,函数签名σ∗σ^∗总是可以构造,给定kSk_S个签名者{Szi}kSi=1\left\{Szi\right\}{k_S\atop i=1}和观察{vzi}\left\{vz_i\right\}使得∣vzi−vzj∣≤δ′|vz_i−vz_j|≤δ^{\prime} 对于所有i,ji,j。
因此,δ可以粗略地被视为一个健全性参数,而δ′δ^{\prime}是一个完整性参数,因为它指定签名总是可以由诚实的参与者从观察v=(v1,...,vkS)v=\left(v_1,...,v_{k_S}\right)中构造出来,只要 因为v位于VkSV^{k_S}空间中对角线的δ′δ^{\prime}之内,在最大范数下,即δ′δ^{\prime}越大,可签名观察集的集合就越大。
回想一下我们的假设,即滑雪是sk的秘密份额。在描述示例构造时,我们进一步假设Sig是非交互式阈值签名,例如BLS签名 [54]。在下面的示例中,我们将对某个阈值kS≤nSk_S≤n_S使用(kS,nS)\left(k_S,n_S\right)-阈值签名,使得kS>23nSk_S>\frac{2}{3}n_S。
借助这种机制,我们可以为各种不同的消息空间构建有效的功能签名。简而言之,这个想法是针对数据源集体(但非交互式)计算网格值azi∈aZaz_i∈aZ在其各自的值viv_i附近的部分(kS,nS)\left(k_S,n_S\right)阈值签名。这样,S中的数据源共同约束v,而无需显式计算它。如果至少 kS 个数据源发出足够接近的值viv_i,则它们的相邻网格值将具有它们都已签名的公共元素,共同在有效v = F的δ有界邻域内的网格点上创建阈值签名 (V, Σ)。v=azv=az的签名Sig∗sk(v)Sig{∗\atop sk}\left(v\right)只是az ∈ aZ上的阈值签名。
我们举例说明,描述一种用于中值化的构造。 这里方便地将aZ的单元定义为包含在一对连续网格点内的值的间隔,即[az,a(z+1)]\left[az,a\left(z+1\right)\right]。
示例6(中位数的离散函数签名)。假设要签名的值是报价(例如,ETH的美元价格),因此可以表示为Z+Z^+中的正整数(例如,以美元的一部分计价,例如美分)。对于对一组至少kSk_S个有符号源值进行中值化的函数F(V, Σ),对于任何a∈Na∈N,以下构造实现(δ=a,δ′=a)\left(δ=a,δ^{\prime}=a\right)。

即,[ι(vi),ι′(vi)]\left[ι\left(v_i\right),ι^{\prime}\lparen v_i\right)\rbrack是包含viv_i的网格 aZ 中的最高单元。
每个数据源SiS_i发出以下形式的签名σiσ_i:

如果所有组成签名σ(j)iσ{{\left(j\right)\atop i}}都有效,则签名σiσ_i有效,并且σ(1)i,σ(2)iσ{\left(1\right)\atop i},σ{\left(2\right)\atop i}中的消息等于ι(vi),ι′viι\left(v_i\right),ι^{\prime}v_i,其中 vi 是 σ (3) i 中的消息。
一个函数签名Sig∗sk(v)=F({vi},{σi})Sig{∗\atop sk}\left(v\right)=F\left(\left\{v_i\right\},\left\{σ_i\right\}\right)可以从签名{σi}i\left\{σ_i\right\}_i构造,如果有一个公共网格点v=az∈aZ{σ(1)i,σ(2)i}iv=az∈aZ\left\{σ{\left(1\right)\atop i},σ{\left(2\right)\atop i}\right\}_i的子集包含部分签名。
示例 6 中的方案实现了δ=aδ=a和δ′=aδ^{\prime}=a的中值函数 F(V, Σ),它对一组至少kSk_S个有符号源值进行中值,我们将在下面的引理中展示。
引理 1. 给定v∈aZv∈aZ上的有效离散函数签名,由v上的kSk_S个部分签名构成,

因此,每个viv_i位于[v−a,v+a]\left[v-a,v+a\right]中。
证明。 由于{σi}\left\{σ_i\right\}可用于在v上构造函数签名,因此对于每个i,我们必须有v∈{ι(vi),ι′vi}v∈\left\{ι\left(v_i\right),ι^{\prime}v_i\right\}。因此,以下其中一项为真:

因此,

引理2. 令{vi}mi=1\left\{v_i\right\}{m\atop i=1}为一组观测值,令I⊂{1,...,m}I⊂\left\{1,...,m\right\}是构成多数的骰子的子集。{vi}\left\{v_i\right\}的中位数位于[min({vi}i∈I),max({vi}i∈I)]\left[\min\left(\left\{v_i\right\}i∈I\right),max\left(\left\{v_i\right\}i∈I\right)\right]。
证明。不失一般性,假设观测值v1,..,vmv_1,..,v_m已排序。子序列比m2\frac{m}{2}长,因为∣I∣>m2|I|>\frac{m}{2} 。因此,序列的中点位于1,...,m1,...,m子序列中,因此中位数位于[min({vi}i∈I),max({vi}i∈I)]\left[\min\left(\left\{v_i\right\}i∈I\right),max\left(\left\{v_i\right\}i∈I\right)\right]。

引理3. 给定v∈aZv∈aZ上的有效离散函数签名,来自一组nSn_S个签名者{Si}\left\{S_i\right\},其中三分之二以上是诚实的,签名阈值kS>23nSk_S>\frac{2}{3}n_S,真正的中位数位于[v−a,v+a]\left[v−a,v+a\right]。
证明。 根据引理 1,诚实签名者使用的所有viv_i都位于[v−a,v+a]\left[v−a,v+a\right]中。 虽然不诚实的签名者可以根据任何观察(甚至没有观察)签署v,但诚实的参与者构成了大多数签名者,因此根据引理2,中值观察值介于[v−a,v+a]\left[v−a,v+a\right],因此它本身位于[v−a,v+a]\left[v-a,v+a\right]。(诚实的签名者占多数,因为至少有kS>23nSk_S>\frac{2}{3}n_S签名,但假设签名组中的不诚实参与者的数量少于13nS=12×23nS<kS2\frac{1}{3}n_S=\frac{1}{2}×\frac{2}{3}n_S<\frac{kS}{2} 。)
引理4.示例6中的离散化函数签名方案对于中值函数实现了δ=aδ=a。
证明。根据引理3,真正的中位数位于[v−a,v+a]\left[v-a,v+a\right]。 此区间内的所有点与v的距离均小于a个单位,因此从v到真实中位数的距离小于aa。即,我们希望不可行的δδ定义中的条件,确实是不可行的,因为δ=aδ=a。

引理 5. 示例6中的离散化函数签名方案实现了δ′=aδ^{\prime}=a。即,给定至少kSk_S个签名者的法定人数Q={Si}Q=\left\{S_i\right\}与观察∣vi−vj∣<a|v_i-v_j|<a对于Si,Sj∈QS_i,S_j∈Q,一个有效的离散函数签名可以由它们的签名{σi=Sigski(ι(vi)),Sigski(ι′(vi)),Sigski(vi)}\left\{σ_i=Sig_{sk_i}\left(ι\left(v_i\right)\right),Sig_{sk_i}\left(ι^{\prime}\left(v_i\right)\right),Sig_{sk_i}\left(v_i\right)\right\}证明。
令I=[min({vi}i),max({vi}i)]I=\left[\min\left(\left\{v_i\right\}i\right),max\left(\left\{v_i\right\}i\right)\right]为包含{vi}i\left\{v_i\right\}_i的最小区间。由于我的长度,∣max({vi}i)−m∈({vi}i)∣|max\left(\left\{v_i\right\}i\right)-m\in\left(\left\{v_i\right\}i\right)|,是{vi}\left\{v_i\right\}的两个元素之间的差,它小于a。因此 I 至多包含一个点 aZ。如果它包含一个,比如说v,那么对于所有II,v∈{ι(vi),ι′(vi)}v∈\lbraceι\left(v_i\right),ι^{\prime}\left(v_i\right)\rbrace,因为每个viv_i要么位于v下方的单元格中,要么位于v上方的单元格中。因此可以构造v上的函数签名 从σiσ_i的。如果不是,则它完全位于aZ的一个单元格内,并且{ι(vi),ι′(vi)}\lbraceι\left(v_i\right),ι^{\prime}\lparen v_i)\rbrace对于所有i将是相同的,因此可以在任一边界值上构造函数签名。
示例6中的技术可以看作是一种通过在格内离散化值来将接近度测试简化为等式测试的方法。如果参与者在他们观察到的viv_i附近的一组更大的网格点上发送签名,则可以实现更大的方差弹性(在更大的δ′δ^{\prime}的意义上)。
丰富离散化的函数签名:如此处所述,签名Sig∗sk(v)Sig{∗\atop sk}\left(v\right)位于网格点v∈aZv∈aZ上,并且v将接近但不一定等于在一组至少kSk_S节点上计算的中值vmedv_{med} - 提供的值。但是,DON 也可以在其签名消息中包含vmedv_{med}。如果vmedv_{med}是由DON计算的,那么它是一个值得信赖的值,假设DON运行正常。 在某些情况下,如果∣v−vmed∣≤a|v−v_{med}|≤a ,合约可能希望使用vmedv_{med},使用v作为对vmedv_{med}严重不准确的保证。
E 预期贿赂
我们明确设计了我们提议的质押机制来防止的一类对抗行为是我们所说的预期贿赂。 这种新颖的攻击是[166]中描述的贿赂攻击的概括。潜在的贿赂是可行的,并且会影响工作量证明、股权证明和许可系统的安全性。
在工作量证明和权益证明区块链中,假设未来块满足某些特定条件,潜在贿赂者承诺向未来块的创建者支付特定的贿赂。例如,贿赂者可以发布贿赂以确保未来的区块不包含特定的交易,或包含指定的排序。我们使用“预期”一词,因为贿赂者实际上不知道在相关轮次中将选择哪个节点来领导协议。不过,只要担任领导职务的候选人知道贿赂,贿赂就可以成功。
为了掌握在质押背景下预期贿赂的影响,考虑一个用于预言机网络的质押机制,其中有一个预言机池,并且在每一轮中随机选择一个节点——使用新鲜的随机性——单方面报告 下一个值。看起来这种策略天生就可以抵抗贿赂攻击,因为贿赂者可能无法提前确定要贿赂哪个节点。然而,贿赂者可以向被选为目标区块领导者的任何节点提供有保证的贿赂,当且仅当区块返回错误时才承诺付款(使用第9节的语言)。
贿赂者可以使用类似于 [166] 中所示的智能合约来保证支付预期的贿赂。
F 随机与基于委员会的Oracle选择
可以以无需许可或准许可的方式操作预言机网络,选择随机的子委员会O~⊂O\tilde{O}⊂O产生给定的报告 r 或报告序列。 这种方法的一个表面上的好处是它可以抵抗破坏节点的攻击,无论是技术还是基于贿赂。 如果事先不知道O~\tilde{O},则攻击者原则上必须控制接近大多数的 O,而不仅仅是O~\tilde{O},以便在足够大的 n 下以高概率颠覆r。
这一观察是许多混合共识协议的基础,例如 [120, 182] 以及一些预言机协议,例如 [25]。
然而,我们相信,在许多应用中,依赖方选择稳定的预言机节点(或委员会)将是有益的,原因如下:
- 非均匀腐败:理性节点的可靠性是激励机制的函数,它反映了超出的因素 他们的质押资产,例如潜在的未来收入、声誉等,如第9节所述。用户可能更喜欢依赖他们评估为高度可信的节点,而不是随机选择的节点。 即使与权益加权随机选择相比,这种选择也可能导致选择一个更值得信赖的委员会,即不太可能被破坏的委员会。
- 损坏阈值:一个相关的问题是,除非n和k非常大或O中对抗节点的比例非常低,否则随机选择的子集O~\tilde{O}在某个时间具有高比例损坏节点的概率可以 相当高。
例如,假设n = 100,f = 10,即只有10%的节点被破坏,并且一个大小为∣O~∣=10|\tilde{O}|=10的子委员会是随机均匀选择的。多数腐败小组委员会被选中的概率约为0.000009。
即使在吞吐量较低的系统中,处理(例如每秒一个请求),如果为每个工作选择一个新委员会,一个腐败的委员会也会在一天多的时间内浮出水面。
出于这个原因,给定对抗性分数 f/n = 1/4,以及其提出的安全参数,[41] 中的随机委员会选择方案需要 26,091 个委员会规模!
因此,我们认为随机选择不足以确保O随着时间的推移的可信度,鉴于我们强调的下一点,这个问题特别相关。
- 机密性:为了以阈值方式访问存储在预言机节点中的数据,用户必须与持有skLsk_L的节点进行交互。可以在具有动态变化的成员资格的预言机节点委员会之间传递skLsk_L。除了通信成本可能大幅增加外,频繁的更改可能会带来问题,因为它们会导致委员会在某个时间出现f ≥ k腐败的概率升高,从而导致灾难性的失败,如上所述。
- 预期贿赂:如第9节所述,对手可以通过使贿赂取决于节点的选择,在委员会选择之前向委员会中的节点提供贿赂。 也就是说,一个节点可以证明它被选中并生成了所需的报告,以便获得赏金。智能合约实际上可以使用 [165] 中的技术来促进这种渎职行为。
- 创新:Oracle供应商可以选择基于性能、准确性或特殊功能(例如增强的机密性或对专有数据的访问)来区分自己。允许用户选择提供商,而不是从具有同质能力的池中提取提供商,可以帮助促进创新。
- 定制:不同的用户在可靠性、性能和成本权衡方面可能有不同的偏好,并且应该能够根据他们选择的供应商来表达这些偏好。
原文链接:https://chain.link/whitepaper
---煤油灯科技victorlamp.com翻译整理---