DOS Network支持多链的去中心化预言机服务网络

DOS Network是一个可扩展的二层协议,它为主流区块链提供去中心化的数据预言机和去中心化的可验证的计算预言机。它将链上智能合约与链下互联网数据连接起来,并且为区块链提供无限的可验证的计算能力,为实现更多现实世界的商业应用赋能。

DOS Network是独立于链的,这意味着它可以服务于所有现有的智能合约平台;它是去中心化的,意味着它没有单点故障,没有单一公司或特殊硬件的中心化信任,信任只存在于数学和代码中; 它是水平可扩展的,这意味着随着更多的节点运行DOS客户端软件,整个网络将会为支持的区块链提供更强大的处理能力和计算能力;它采用加密经济模型设计,意味着该协议可以抵抗女巫攻击,并且网络效应得到了扩展,具有可证明的可信度。
DOS Network分为两层,包含几个关键组件:
●链上部分:在支持的区块链上部署的一组DOS系统合约,主要功能包括请求处理和响应/计算结果验证,节点注册和代币抵押,统计监控,支付处理等功能。链上系统合约也提供了一个统一的接口给所有支持的区块链上的用户合约使用。
●链下部分:由第三方用户(即节点运营者)运行的、实现了核心协议的客户端所组成的第二层分布式点对点网络。协议客户端包括几个重要模块:事件监听和链适配器、分布式随机数引擎、链下组内共识模块、请求/计算任务处理模块等,具体包含哪个模块取决于用户节点所提供的预言机服务类型。
我们将在以下部分详细讨论DOS Network的上述组件,分析DOS链上架构和链下核心协议。对于数据预言机,我们将阐述链下DOS客户端,如何通过公正可验证的产生随机性和非交互的确定性阈值签名,在开放状态和拜占庭环境中达成共识。对于计算预言机,我们将详细说明我们是如何以非交互方式实现类似于Truebit可验证计算架构,该架构基于zkSNARK,在这个架构中我们使用了为数据预言机构建的随机性引擎,以可扩展和无需信任的方式生成了zkSNARK公共参数(称为“设置阶段”,或Zcash的“仪式”)。
我们还将讨论DOS代币经济模型,它通过激励节点运营商提供可信的服务以换取经济回报来启动和扩展网络。根据我们提供的协议和基础设施,可以构建去中心化的数据流市场,为Dapps (需求方)提供更多数据流,并允许优质数据提供商(供应方)从区块链流量和传统网络流量中获利。它还可以建立一个去中心化的计算市场,将去中心化和加密经济学应用于商业计算应用,如视频/音频转码,机器学习模型训练,3D渲染等目前由谷歌,亚马逊,微软等科技巨头垄断的领域。
设计细节
1. 整体架构

我们以Ethereum区块链为例,简要讨论由用户合约发起的按需数据查询的整个过程。它看起来类似于请求和响应模式,然而,从用户合约的角度来看,它是一个异步的过程:
①:用户合约通过对DOS链上系统(一组开源的智能合约,配有很好的技术开发文档给开发者)特别是DOS代理合约的消息(message)调用发出数据查询请求;
②:DOS代理合约触发带有查询参数的事件(event);
③: DOS客户端(用户运行的DOS链下部分),持续监听着区块链上定义好的事件。这个时候会被通知到。理想情况下,应该有数千个DOS客户端在运行。通过使用可验证随机函数(VRF) 构建的分布式随机引擎,随机选择一个注册组;
④&⑤:选定组中的成员同时进行尽职调查,请求webapi,执行计算或执行已配置的脚本;
⑥:他们将通过t-out-of-n门限签名算法达成“组内”共识,并将共识之后的结果反馈给DOS链上系统,只要随机选取的组中有超过t个成员是诚实的,就能得到共识之后的结果。选择的组成员的身份和QoS(响应性/正确性等)性能将被记录在链上,用于监测和数据分析;
⑦: DOS代理合约通过调用用户合约提供的回调图数通知用户合约结果已经就绪。
**可验证的计算预言机的整体工作流程类似,也使用了分布式随机性引擎,但在步骤4~6中有几个不同之处。我们将在后面几节中讨论细节。
2. 链.上设计细节

2.1 代理系统
代理系统为用户合约提供标准的链上接口,一旦响应就绪,就将异步回调给用户合约。提供给用户合约的接口是通用的、简单的,如下所示:
●  向DOS代理合约发送查询请求;
● 使用从、_ callback_ 、 函数中回填的结果,来完成一些后续处理工作。

2.2 链上治理系统
监控系统
监控系统是用来保存链上的链下DOS节点的QoS (服务质量)指标和网络统计数据的记录,包括:
●由最新一轮选择的链下组产生的随机数,可以作为一种新型的链上随机源;
●组的大小,注册组的数量,每次注册的小组已被选中的次数,正常运行时间和为了防止组内窜某而设立的解散时间等;
●支付、权重百分比、回调延迟统计和未处理的查询请求;
●已注册的链下DOS节点的服务质量分数,包括正确率和报告结果的响应率一质量得分极差的节点将被排除在链下共识协议和支付流程之外;
●更多…
基于这些丰富的链上指标,可以构建一个监控Dapp来展示DOS网络的实时状态。
注册系统
DOS链下节点要加入网络,他们需要抵押并锁定一些DOS token作为保证金,在注册合约中登记他们的保证金地址和支付地址。它们将在至少1个阈值组G中进行注册,并可能会相互重叠。阈值组的注册过程在下面的链下结构一节中介绍。
保证金使系统能够抵抗女巫攻击,提高系统的安全性。同时保证金也可以被看做节点愿意贡献带宽和计算能力使DOS网络更强大的一种承诺,他们将获得‘挖矿”奖励并赚取手续费。锁定期有助于稳定网络,避免过于频繁的注册和注销。任何超时的情况也     将被罚款,没收部分保证金。在一定时间限度内没有响应的组将被从注册系统中删除。
支付系统
针对数据请求的付款将被发送到所选择的处理请求的“國值组”里,并分发给诚实的成员。这些付款将首先被存储在支付合约中,因为节点运营者并不需要实时的接受这些付款。主动提款模式是更好的选择,节点操作者可以检查和提取其收入,通过前端UI操作或者直接与付款合约进行交互。
DOS token有两种用途:系统内置的支付token和抵押token。然而,对于那些拥有被广泛接受的稳定币的区块链(例如Ethereum),稳定币是-个更好的支付token,节点运行者不会因价格的波动而面临风险;收费的定价模式也将更容易制定。我们将首先支持DOS作为支付token,从长远来看,节点运行者和token持有者将有管理权,投票选择接受哪些稳定币(DAI/USDC/TUSD/等) 作为额外的支付token。
我们也会支持多种支付方案:按次付费将被广泛采用,适合于个人开发者和使用预言机频次较低的Dapps,优惠订阅模式将更有利于高度依赖预言机的应用程序,如稳定币和其他去中心化的开放金融平台。
链上系统将采用模块化设计模式,所有链上合约都是可升级的。由于它是一个开放的分布式网络环境,而且不同的群体有不同的经济诉求,没有一个简单完美模式适用于所有人。今后将对更多的治理实验和经济模式进行研究和探索。
3. 链下设计细节
3.1 第一部分:去中心化数据流预言机
链下DOS节点在开放的拜占庭网络环境中就相同API调用的结果达成-致的问题与区块链需要解决的共识问题非常相似。来回顾下有关比特币与其他各种XX证明共识算法是如何工作的:实质上在协议的每-一轮, 希望通过-种没有 任何-方能够轻易垄断的资源来实现随机的领导者选举;只要大多数参与者是诚实可信的,区块链就会在概率意义上达成共识。生成公平、无偏的随机数对完成拜占庭容错(BFT) 共识机制尤为重要。我们主要通过利用可验证随机函数(VRF) 和门]限签名方案[25)来证明下面的链下共识协议。简单来说,我们不是在全网的所有节点中进行领导者选举;在协议运行的每一轮,从所有注册的工作节点组中随机选择一个工作组,再在随机选中的工作组中采取门限签名方案-只要超过↑(阈值)个节点是诚实遵循协议运行的,那么选中的工作组就可以达成链下共识。
我们定义协议运行的当前轮是第i轮,上一轮(即i-1轮)产生并公布在链上的随机数为r- ;每个注册的组都有具有相同的组大小(M) ; 并且,对于当前第i轮,有T个注册组。

· 防止节点不劳而获(Freeloading) : 有一种攻击方式我们称之为节点的不劳而获攻击-即恶意节点仅通过监控提交给系统合约的返回交易、而无需实际处理预言机的数据请求,然后使用更高的Gas来抢跑(Front-run)其他诚实节点提交的返回交易。通过所有诚实组员均分处理费用的做法隐式的克服了节点“不劳而获的问题。此外,为了激励参与协议的节点提供较好的、低延迟的网络带宽/计算资源,每个组都会有-个质量评分:如果超过某个时段选中的工作组仍然没有响应,该组的负分权重会增加并选择后续工作组来处理请求。具有异常正/负分比率或负分过高的工作组会被踢出协议,这意味着从博弈的角度来看,如果组内没有一个组员提交结果的话,所有组员都会受到损失。
· Gas可持续性和交易费用补偿池:以太坊的gas模型要求发送交易的那方支付Gas费用,包括由此交易产生的相关合约调用的费用。为了保证不停歇的、无偏的、安全的随机数生成过程的可持续性,我们可以考虑向诚实的节点成员补偿发送回响应数据、组签名和执行链上验证合约交易消耗的Gas费用,因此将会预留一个交易费用补偿池。补偿池里最初的资金来自基金会捐赠和生态建设的通证池,加上恶意节点25%的保证金被没收和存入报销池来报销未来的交易费用。需要注意的是,执行调用合约的自定义回调函数也需要消耗Gas,但是这部分Gas消耗不应该由节点运行者支付或报销给它们,因为回调函数的复杂性和Gas的消耗完全由调用合约来决定,因此这部分应该由它们自己承担。调用合约能够设定Gas价格,他们需要确保有足够的余额来支付执行他们自定义回调函数所消耗的Gas。这部分费用随着请求将被托管在链上支付合约中,如果对该请求结果的链上验证失败它将被退还调用合约;否则这笔费用将会支付给成功提交结果并且通过链上验证的节点。
· 非交互性和即时最终性:与pBFT (实用拜占庭容错算法)或其他基于消息传递和同步的共识算法不同,这里不存在多轮消息传输。也就是说该算法是可扩展的,即使组的大小是几百,所传输的总字节数也只有若干千字节。此外,与PoW (工作量证明) 1PoS (权益证明)或其他基于资源的共识算法不同,这里的共识结果是即时最终的。(t, n)门限签名的神奇之处在于任意I个成员的有效签名碎片都可以恢复成相同的原始签名。
BLS门限签名方案由于其对给定消息的签名结果的唯一性、确定性、非交互式产生、签名长度短等特性,是一个很好的候选方案。

基于以上观察我们提出几个协议的更新如下:
● 网络规模: 1000个节点是一个合理的中短期估计: 举个例子,ZenCash自2017年10月首次亮相安全节点计划后,到2018年1 月31曰即拥有约70001321个安全节点; Smartcash在发布节点计划声明后的30天内也拥有了80001333个主节点。在未来,我们预计DOSNetwork也会增长至有数千个节点的网络规模。
●最小化拜占庭节点比例: 整个DOSNetwork的拜占庭比例严重影响着系统安全一哪怕这个比率略微下降对整个系统的安全性也是极大的提升。通过利用可验证的门限签名方案和对恶意节点的检测和惩罚,可以显著降低网络的拜占庭节点比率。此外,每个工作组也定义了一个成熟期来消除适应性对手。
●定义两种类别工作组以最大化并行性: 很明显,工作组规模越大, DOS Network越安全。但是,这里有一个两难的问题:组的规模越大,对数据源来说就越不友好-我们应该避免有人滥用DOSNetwork对数据源进行DDoS(分布式拒绝服务)攻击。为了提供至少六个9 (99.9999%, 百万分之一的攻击概率)的信心以及减轻上述的两难问题,我们提议设置两种阈值组:
· 一个是随机数引擎组-组的规模足够大保证足够安全,比如随机数引擎组的大小为159。随机数引擎组的唯一作用就是生成无偏和不可预测的安全随机数来驱动整个系统。
· 另一个是工作组-处理实际预言机请求的组,组大小在11~21,以防止数据源的资源被滥用。工作组由随机数引擎组生成随机数r的哈希值与query_ id,一起选择 :

由此,不同的工作组将被选中来处理不同的请求,而且请求可以被并行处理以实现最大的可扩展性。
3.2 第二部分: 计算预言机
可验证的计算意味着客户可以向不可信的、但是具有充足计算能力的第三方外包-些计算任务。计算结果以及证明结果有效性和完整性的证明将一起返回给客户,客户随后仅仅需要做一步验证计算,而不需要执行原始计算任务。
一旦上述第一部分的开发完成,我们就已经可以提供–个基于共识的计算型预言机,这个想法很直接:对于每个计算请求,随机选择一组计算节点,每组成员执行确定性计算任务,并将得到多数节点同意的结果发送回去。这在短期计划里可以作为我们为DOS所支持的公链们提供的计算预言机服务的方案,但是我们希望在长期路线图中提供更好的选择。
随着2017年10月份拜占庭硬叉的成功,以太坊现在能够在智能合约中验证雾知识证明。这使我们能够构建一个基于零知识证明(zkSNARK)的可验证计算型预言机,它在链下执行,在链上验证。整个过程可以大致分解为三个阶段:

与基于共识的计算预言机或基于求解者与挑战者之间的交互式验证游戏(Truebit)的委托计算不同,基于zkSNARK的链下计算只需要执行一次。求解者和验证者之间 是非交互的。证明是简洁的,意味着它很小并且与计算的复杂性无关。验证过程能快速验证计算结果的有效性,它只取决于输入的大小而不受计算过程复杂度的影响。这些特性使它成为理想的解决方案,它为区块链带来无限的计算能力和执行的可扩展性。
但是有几个棘手的问题。首先是设置阶段中使用的“有毒废料”,它必须被销毁不能泄漏,否则将生成假证明。其次,对于算术电路的生成,计算任务在等效变换为名为R1CS (rank-1 constraint system, – 阶约束系统)的正确形式并最终转换为QAP (Quadratic Arithmetic Program)之前,不能对它直接应用zkSNARK。与R1CS或QAP直接打交道就好比是让开发者手写汇编代码,这很容易出错并涉及非常复杂繁琐的细节工作,对大多数开发人员来说并不友好。
需要解决这些问题才可能让基于zkSNARK的可验证计算在区块链.上落地。Zcash研究人员最近提出了一种新的多方计算(MPC,Multi-Party Computation)协议,它可以扩展到数百甚至数千名参与者,并修复设置阶段需要信任的问题。该协议的特性是,必须要所有的参与者都不诚实或都被攻破,才有可能泄漏设置阶段中用到的“有毒废料”。此外,无需信任的设置阶段又可以分为两个步骤:一个计算量大的、但只需要在整个“系统范围”执行一次的无需信 任的设置步骤被称为”Powers of Tau’1al,它产生的部分zkSNARK公开参数适用于一定大小范围内的所有zkSNARK电路,并可以被重复使用。另一个步骤是对每种特定计算电路都需要但仅需要执行一次的、无需信任的MPC设置,基于”Powers of Tau”产生的公开参数,对特定计算电路要做的MPC要便宜得多,并可以在DOS网络每轮随机选中的工作组里进行。
为解决第二个问题,我们需要 定义和形式化一个叫“锌” (Zinc)的领域特定语言(DSL,domain specific language)用于可验证的计算,其语法类似于python或javascript,具有如变量、条件和流控制语句、循环、函数、模块/文件引入等高级程序语言特性。这使得开发人员能够用高级编程语言编写链下计算代码,而无需理解zkSNARK的底层数学原理或处理R1CS等实现细节。我们还将开 发一个包括SDK和编译器前端的工具链,它把用高级语言Zinc编写的代码编译成底层R1CS.再把R1CS作为输入提供给已有的后端验证系统/工具库比如SCIPRlab开发的Iibsnark37。工具链还会包含集成到DOS链下客户端的命令行工具和函数库,使可验证计算适配DOS网络所支持的链。

4. 跨链互操作性
DOS网络为异构区块链之间的跨链交互打开了一扇大门。DOS网络给以太坊区块链和EOS区块链提供数据预言机服务之后,理论上,以太坊上的智能合约经由DOS链下P2P网络的路由就能够调用EOS链上的智能合约,触发跨链状态变化。因此,DOS网络可以充当异构区块链之间互相操作的连接器或桥梁。
一个简单的应用场景比如原子级交换不同区块链上的加密资产。现在的去中心化交易所只能交易同一区块链内的资产,比如以太坊上的EtherDelta和基于0x中继的去中心化交易所无法交易EOS区块链上的资产。然而通过DOS网络的帮助,这个需求可以通过在以太坊和EOS区块链上分别部署两个DEX合约来实现: 分别定义两个链上的协作函数,以太坊上DEX合约里的函数通过DOS网络作为桥接器调用EOS链上DEX合约里的函数,对跨链订单和账户余额的状态变化做原子更新。这个例子展示了DOS网络在跨链互操作方面的应用和潜力。

对新支持链的区块链节点(全节点、轻节点、或利用infura等 远程全节点服务)的运营和维护都取决于DOS预言机节点运行者对自身容量和经济利益的考虑;DOS团队则负责将链上系统合约移植和部署到新支持的链上,并发布链外核心客户端软件,包括协议更新和对新链的适配支持。
要为新支持的链启动DOS预言机服务,主要是初始化时组的注册和非交互式DKG流程生成组内密钥碎片。注意到对于支持的不同的链,每个链上的系统参数比如工作组大小M和注册组数量T等可能会不同;在不同的链上生成和发布的随机数r通常也是不同的。

付费数据源和数据市场
数据和API正在为网页应用、移动应用、物联网设备提供支持,目前正发展为-项价值数十亿美元的业务。除了通过去中心化数据预言机将外部开放和免费的API和数据引入区块链之外,我们还计划建立一个专门针对高级付费数据源的数据市场,让它们上链。对于付费数据源和Dapp开发者,我们坚持贯彻KISS原则,这样它们从自己的架构上只需要做最小程度的修改甚至都不需要更改就能通过DOS网络接入主流区块链。

我们将开发一个数据市场合约并部署在DOS网络所支持的公链上,它的主要目的是: 1.让付费数据源在链上统一注册登记,公布其规格和报价; 2.数据市场合约负责分组、集中展示各种付费数据源,让Dapp开 发者可以直接选择和比较。同时为了更好的用户体验并且支持结构化数据查询,比如支持对付费数据源类别和关键字的检索和排序,我们会开发提供一个数据市场合约的UI前端并且部署在高性能服务器上。但实际.上所有.上链的付费数据源信息都储存在链上数据市场合约和IPFS中,我们部署的服务器仅充当缓存层以提供更好的用户界面和更快的查询速度,任何和数据市场合约和IPFS的直接交互都是完全可行的。
付费数据源首先注册和发布它们需要上链的数据的规格和报价,包括但不限于API类别、格式、接收链上调用合约付款的地址、支付方案(按单次调用收费、按订阅收费等)。一个包含区块链轻节点的功能的SDK会发布给付费数据源整合,将付费数据源产生的交易广播到区块链全节点,让数据源–端所需要做的改动最小化。
需要特定类别链外高级数据的用户合约仅需在公开数据市场中搜索现有的付费数据源并选择最合适的一种。如果链上还没有这样的付费数据源,开发人员可以使用DOS代币发布悬赏任务,社区将联系相应的数据提供商以帮助他们在链上集成他们的服务。
由于目前所有的链上数据都是公开的,因此不应该将私钥或者APItoken之类的秘密信息存储在链.上。我们正在用其他方法来解决这个问题:查询付费链下数据的接口与使;用和查询开放/免费数据的接口不同,但是链上合约的调用顺序和之前的类同,它将进入链上代理系统合约,并与数据市场合约交互,以确保所请求的付费数据源已经登记,并检查调用合约是否有足够的DOS通证向付费数据源付费。付款被托管在DOS链上支付系统合约中,在响应被回调到调用合约之前不会被移交给付费数据源。DOS链下网络与集成了轻量级SDK的付费数据源进行沟通,数据源在返回数据之前,可以首先确保链.上支付合约里托管了与调用合约的请求id相匹配的付款。通过这种方式,付费数据源能够从区块链流量中变现,并且不会被未支付的调用合约或未授权的互联网流:量所滥用。
应用场景
DOS网络给链上智能合约提供了以去中心化的和无需信任的方式触达外部事件并做出反应的能力。在DOS网络的帮助下,解锁了许多现在能够使用的智能合约应用场景。
1. 去中心化金融衍生品
衍生工具是两个或者多个当事方之间的金融合约,其价值基于标的资产。衍生工具尤许人们对标的资产提出不同的观点(长期或短期)并在本质上促进金融稳定。公共智能合约平台使创建和交易金融衍生工具(包括基于区块链的资产)成为可能;例如,Market Protocoll43]、Decentralized Derivatives Association441和DyDx Protocol4都在努力推动这类应用向前发展。DOS网络可以通过提供价格、结算值和合同到期时间来确定参与者的得失,从而在去中心化衍生工具中发挥重要作用。
2. 稳定币
稳定币是一种加密货币,具有稳定的法定价值,降低了波动性,使其作为价值存储和交换媒介在许多方面更具吸引力,因此它们被誉为数据货币的圣杯。这里我们指的不 是由中心化公司发行的白条,如Tetherl*或 者digix,而更多的是去中心化和算法控制的加密货币,例如由bitUSD和Da等抵押支持的稳定货币,以及以铸币税为基础的股票,如Basecoin和kUSD。 所有的稳定币都需要像DOS网络这样的预言机系统的帮助才能获得有关稳定币与它们所依赖的资产之间的汇率的外部数据。
3. 去中心化借贷平台
去中心化的点对点贷款平台,如SALT Lending和ETHL end允许匿名用户在区块链上担保加密资产,以换取法币或加密贷款。DOS网络可用于在贷款创造过程中引入市场利率,并监测加密担保与贷款金额比率,如果满足贷款条件,就会触发清算事件。此外,ETHLend还使用预言机导入借款人的社交媒体数据和其他身份信息,以区分不同借款人之间的利率。
4. 去中心化保险
Etherisc正在通过提高效率和透明度以及降低运营成本,为去中心化的保险应用(如航班延误保险和作物保险)建立-个平台。用户购买保险单并在以太网中支付保费,如果满足商定条件,他们将根据保障策略获得相应的以太币补偿。通过将外部数据和事件引入智能合约,DOS网络可以在索赔的时候帮助那些去中心化的保险产品进行保单承保和支付决策,并在保单到期时安排未来检查以实现自动支付。
5. 去中心化菠菜
去中心化Du场,如Dice2Win、 Ether和Edgeless在透明度、几乎即时的安全资金转移以及公平的零庄家优势中受益匪浅,传统Du 场的庄家优势可以达到1%-15%。不可预测的和可验证的随机数生成是任何dU 场游戏的核心,但在纯确定性环境(链上)中产生随机数在理论上是困难的,甚至是不可能的。DOS网络能够生成安全、可验证、无偏的和不停止的随机数供这些Dapp使用。
6. 去中心化预测市场
去中心化预测市场,如Augur和Gnosis, 利用人群的智慧来预测现实世界的结果,如总统选举和体育菠菜结果。当投票结果受到用户的质疑时,DOS网络可以提供真实结果,用于快速和安全的解决纠纷。
7. 去中心化计算市场与扩展执行
DOS网络绕过区块Gas限制和昂贵的链上计算成本,将冗杂的第三方计算能力与业务计算密集型任务(如机器学习模型训练、3D绘制、DNA测序等科学计算)连接起来。在我们的长期发展路线图中,基于zkSNARK的计算型预言机还将支持为私有输入的计算任务提供隐私。此外,对于当前的区块链可扩展性问题,它将为支持的链带来无限的执行可扩展性。

关于更多DOS Network信息:https://dos.network/