钟摆协议(Pendulum Protocol)安全、可扩展的去中心化数据库二层协议

区块链技术,或者说分布式账本技术,正在受到全世界的广泛关注。伴随着比特币的出现,区块链有着如下特点:分布式的全局状态、拜占庭环境下保持防篡改、没有中央机构或单点故障等;因此,区块链被认为是信任和价值交换的基石。此外,以太坊的出现进一步推动了去中心化经济的发展,通过引入用户定义的状态和图灵完备的虚拟机,带来了去中心化应用和智能合约的蓬勃发展。
尽管现在的区块链杀手级应用可能是去中心化无需信任的众筹项目和一些基于博弈论的金融类游戏,但是智能合约和分布式应用也正在被各行各业的人才开发。例如内容变现、分布式云存储、保险、游戏、去中心化赌场和预测市场等等。我们坚信区块链和智能合约虽仍然处于起步阶段,越来越多的难以置信的应用场景即将呈现。
不过,由于现有区块链的共识机制及其确定性虚拟机的固有局限,目前存在两大问题正阻碍着智能合约的广泛应用和大规模去中心化商业应用的出现:
● 智能合约既不能直接引入互联网数据,也不能自发调用外部网络 API,而任何商业应用,例如保险等,都不可避免地要与现实世界交互,特别是与互联网交互。
●实际上,在现有的智能合约平台上,例如以太坊,链上计算资源和容量都是非常昂贵且有限的。再加上执行合约的 Gas 费用,区块Gas 限制和验证者的困境等等问题,这会导致合约执行的可扩展性问题,使得在智能合约中的链上计算无法进行,甚至不可能实现大规模矩阵乘法、AI 模型训练、3D 渲染等商业计算目标。
克服这些问题与解决当前区块链的交易吞吐量问题同样重要。我们有必要付出同样的努力,用现实世界的数据和更多的运算能力来丰富智能合约的功能和去中心化生态,以此来达到使区块链能大规模应用的目的。

另外一方面,大部分 DeFi 协议都需要价格数据,特别像稳定币、期货等合约资产进行清算。价格是 DeFi 的核心风险,因此本文提供的价格预言机方案,对 DeFi 的重要性毋庸置疑。

预言机与现有解决方案
1. 什么是预言机
预言机是为去中心化借贷提供基准价格的工具。参与去中心化借贷的用户可以基于预言机的价格,进行借出或借入,避免借贷价格偏离市场正常价格,产生亏损。
在复杂性和可计算性理论中,我们将预言机定义为能够解决任何决策性问题或功能性问题的实体。预言机基本上被视为一个可以为任何给定的请求提供解决方案的“黑盒子”。具体来说,在区块链和智能合约的背景下,我们将预言机分为两类:
● 数据预言机:根据请求将外部数据提供给智能合约,并使得业务层智能合约和链下事件之间可以交互。
● 计算预言机:在链下执行用户定义的运算密集型任务,为现有的区块链提供无限的运算能力,为传统的计算市场带来去中心化的通证经济。
2. 预言机的分类
2.1 数据预言机
Oraclize 为以太坊区块链提供中心化的数据预言机服务。
Oraclize 在亚马逊网络服务(AWS)和 TLSNotary proof 的帮助下证明它诚实地执行了合约的请求。然而,Dapp 本质上不支持中心化解决方案——不仅是因为信任归属方被转移到 Oraclize 公司然后又转移到亚马逊,而且系统的去中心化程度取决于其中最中心化的组件,Oraclize 成为了整个系统中的单点故障(SPOF)。而另一个两难的情况是,TLSNotary 生成的证明很大,回传证据到链上需要花费巨额的Gas,这笔消耗最终由用户发起请求的合约来支付。在链上,证明无法实时地被发起请求的合约快速验证。臃肿的证明带来的额外费用加上Oraclize为赚取利润而收取的费用使得总成本远高于其文档中所写
的成本。
Town Crier 是另一个基于以太坊区块链的中心化数据预言机,它主要是利用英特尔软件防护扩展(SGX)为智能合约提供经过身份验证的数据。SGX 维护了一个名为“Enclave”的可信执行环境(TEE),用户核心程序代码在 Enclave 模块中执行,保护其不受其他恶意程序的干扰(包括操作系统本身)。终端用户也可以远程验证 SGX 中Enclave 模块内核心用户程序代码的执行安全性。
2.2 计算预言机
基于 SGX 的计算型预言机:目前某些项目和初创公司正在研究使用 SGX 或其他可信硬件执行链下计算的可能性。虽然目前还没有可落地的产品,但这是一个非常吸引业内人士关注的有趣话题。
Truebit 是第一个为以太坊区块链提出的可扩展的链下计算协议。它应用了链下任务解决者和挑战者之间的交互式证明以及创新性的激励模型设计。在有争议的情况下,任务解决者和挑战者通过递归地检查剩余计算步骤来玩一个交互式链下验证游戏,直到在应用某计算步骤之后,第一个他们对状态变化有分歧的地方。然后,哪个状态变更是有效的,要在链上智能合约中进行最终裁定。因此,Truebit还需要在 Solidity 中实现一个链上解释器,以便执行这个计算步骤。Truebit 引入了“强制错误率”的概念,并维护了一个“累积奖金库”,以激励挑战者进行尽职调查。
这基本上形成了可验证计算的体系结构,其中计算在链下外包完成,但验证在链上进行。可验证计算是将可扩展计算引入区块链的理想解决方案。然而,Truebit 仍处于早期阶段,还需要进行大量的开发。此外,复杂的激励模型和交互式验证游戏本身也增加了更多的安全风险。
PEND 应运而生
目前 DeFi 常用的价格预言机,一般由“可信”节点采纳中心化交易所的价格,以数据的形式上传到链上,供 DeFi 调用。此方案存在一个根本性的问题,即价格没有进行有效验证。有些 DeFi 采用去中心化交易所的价格,但由于交易深度低,很容易被攻击。
是否存在一种对价格进行直接验证的预言机,能保证价格准确、及时,且攻击成本极高?同时,该方案是分布式的,即不存在中心化的风险。
Pendulum Protocol 应运而生。
Pendulum Protocol 是一个可扩展的二层协议,它为主流区块链提供去中心化的数据预言机和去中心化的可验证的计算预言机。它将链上智能合约与链下互联网数据连接起来,并且为区块链提供无限的可验证的计算能力,为实现更多现实世界的商业应用赋能。
Pendulum Protocol 是独立于链的,这意味着它可以服务于所有现有的智能合约平台;它是去中心化的,意味着它没有单点故障,没有单一公司或特殊硬件的中心化信任,信任只存在于数学和代码中;它是水平可扩展的,这意味着随着更多的节点运行 PEND 客户端软件,整个网络将会为支持的区块链提供更强大的处理能力和计算能力;它采用加密经济模型设计,意味着该协议可以抵抗女巫攻击,并且网络效应得到了扩展,具有可证明的可信度。
Pendulum Protocol 的目标是打造一个最安全的,最具可扩展性的去中心化世界的数据库,为去中心化应用程序(dApp)提供可信的数据。使用 Pendulum Protocol 的开发者和 dApp 公司通过公共智能合约数据点进行数据消费,而并不是基于剥离于区块链的中心化预言机。如此一来,dApp 在利用互联网已有数据的同时保证了安全性,在 Web 2.0 和 Web3.0 的用例间架起一座桥梁。

Pendulum Protocol 具有以下几个特点:
1)价格具备准确性:能真实反应市场价格
2)价格具备灵敏性:对市场价格的反应足够快
3)价格具备抗攻击性:扭曲或者影响真实价格的成本极高
4)对价格进行直接验证:且验证者是任意第三方,同时不需要审查或门槛
5)报价系统是分布式的:不需要审查或门槛,可以自由进入或退出
PEND 的解决方案
PEND 提供一种创造性方案,包含抵押资产报价、套利验证、价格链以及 BETA 系数等模块,组成一个完整的 Pendulum Protocol 。以以太坊网络为例, Pendulum Protocol 的示意图如下:

1. 角色定义
Pendulum Protocol 中的参与者定义如下:
报价者:协议中提供报价的参与者,包含报价挖矿的矿工以及成交并报价的验证者。
A 矿工:提供报价并支付佣金获得 PEND(ERC-20Token),矿工的集合记为 O,任何人都可以成为矿工。
B 验证者:如果某个报价偏离市场价格,验证者可以以该价格与报价资产成交,从而获得收益。
验证者在成交的同时,需要强制报价,该报价不用支付佣金也不参与挖矿。验证者集合记为 A,任何人都可以成为验证者。
价格调用者:调用 PEND 提供的报价并付费的合约或账户称之为价格调用者,价格调用者的集合记为 C,任何合约和账户都可以成为价格调用者,一般为 DeFi 协议。
2. 报价挖矿及价格验证
以 ETH/USDT 为例,某个矿工 o 打算报价 1ETH=100USDT,他需要将报价资产 ETH 和 USDT 转入报价合约,规模为 xETH 和100xUSDT,支付的佣金为λxETH,按照支付的佣金规模参与挖矿,获得 PEND。整个过程完全开放,任何人都可以成为矿工,且价格和规模由其自主设定。
矿工:将资产和价格提交到报价合约后,任意验证者 a 认为该价格有套利空间,便可以按照 o 的报价 1ETH=100USDT,成交掉 ETH或者 USDT。这一机制,保证了报价要么是市场上的公允价格,要么是报价者认可的等效价格(即在 o 看来,1ETH 和 100USDT 是等价的,所以无论验证者成交哪种资产都是无差异的),这一过程即价格的验证期。从本质上讲,报价矿工在验证期内提供了一个看涨看跌的双向期权,执行价格即为其报价,验证者如果发现存在套利机会就执行该期权。因此,矿工要最小化自己的成本,就需要报出在验证期内最不可能被成交的价格,这意味着矿工报价对未来价格有一定预测和发现功能。对于验证者而言,是否套利(执行期权)取决于报价与市场均衡价格的偏差大小,我们将验证者采取行动的最小偏差称之为最小套利空间,这一数值取决于验证周期的长短和交易成本。
报价挖矿的过程用公式表达如下:报价者 o 报价 p,即1ETH=pUSDT,资产规模为 xETH,则对应 USDT 数量=x*p,参与挖矿的佣金规模为 w=λ*x,验证者 a 可以以价格 p 成交 xETH 或者 x*p的 USDT。
3. 价格验证期
从报价时间算起,任何一次报价的验证期都是有限的,记为 T0,它决定报价者承担风险的周期和价格的灵敏度。验证期过后,没有成交的报价称之为生效报价,包含价格和报价规模(p,x)两个变量,生效报价形成 5)所说的区块价格;而被验证者成交的报价则不被采纳,如果某个报价有一部分成交,则剩余部分也是生效报价,即(p,x’)。价格验证期过后,报价者的剩余资产以及被成交的资产可以随时取回。
验证周期影响矿工的报价成本和价格准确性,时间越长,期权成本越高,对未来价格的预测越困难,按照当前 DeFi 对价格的需求以及主流资产的波动率,将T0 设计成10 分钟或者 5 分钟都是合理的(可以根据以太坊网络性能和验证者的规模优化调整,最佳的当然是 1 分钟以内了)。注意,一个价格度过了验证周期,说明该价格与当前市场均衡价格之间不存在套利空间(由 T0 和交易成本决定最小套利空间的大小),从而近似代表当前价格,因此 T0 的存在并不意味着价格的延迟。
4. 价格链
根据上面的约定,验证者在对某个报价者价格成交后,需要强制报一个新的价格(可以理解为,验证者销毁了一个报价,就需要留下一个新的报价)。如 a1 与某报价者 o 的价格 p0 成交(o 的报价规模为 x),他需要同时报一个价格 p1 到合约内,其规模为 x1,即需要将x1 个 ETH 及 x1*p1 个 USDT 打到合约中,但此时不必再支付佣金,也不参与挖矿。如果有套利者 a2,与 a1 的报价成交,他就需要报价p2,其规模为 x2,如此类推,就形成了一个以 TO 为最大报价时间间隔的连续价格链:p0—p1—p2…,报价资产链为 x—x1—x2…
5.区块价格
PEND 预言机的价格是按照区块记录的,每个区块形成一个价格,由该区块内生效的报价按照一定的算法生成,该价格称之为区块价格或者 PEND-Price。假设某一区块的生效报价为(p1,x1),(p2,x2)(p3,x3)…则该区块价格 P=∑pi*xi/∑xi,如果该区块没有生效报价,则沿用上一个区块价格。
6. 价格序列与波动率
以太坊网络的每个区块对应一个 PEND 价格,从而形成价格序列。
价格序列拥有重要意义,包含:
A.提供均价供 DeFi 调用,包括连续 N 个区块的算术平均价格,Ps=∑P/N;或者连续 N 个区块加权平均价格 Pm=∑P*Y/∑X,其中 X=∑Xi,为上述生效报价。
B.提供波动率指标供大部分衍生品 DeFi 调用,如连续 50 笔报价的滚动波动率,或者 DeFi 自定义的各种波动率。
C.其他统计量。
7.  抗攻击算法
如果调用 PEND 价格的 DeFi 资产规模较大,可能存在攻击者。攻击者篡改某个正常报价 p0,将其改为 p1,或者攻击者恶意成交,以期望价格一直不更新(因为价格一旦被成交了就无法采纳并更新)。
攻击者愿意牺牲掉 P1 与 P0 的价差,以换来更大的收益,这样价格机制就会失效。那么,PEND 如何防范此种攻击?
我们通过提高攻击者的成本来防范攻击:
首先,价格链本身就是一种抗攻击机制,即攻击者攻击完价格后必须留下一个价格以及该价格对应的资产。这意味着攻击者攻击后,要么留下正确的价格,要么留下一个套利空间,市场上必然会有验证者来套利并修正报价。
其次,为了放大攻击者的成本,对所有验证者的报价规模进行如下安排:验证者成交的规模为 x1,则其同时报价的规模 x2=βx1,其中β>1,即验证者必须以一倍以上的规模来报价。我们以β=2 为例,初始报价为x=10个ETH,则全部成交的情况下,x1=20,x2=40,x3=80…以此类推。攻击者要么暴露给市场极大的套利机会(规模以级数上升,这种攻击几乎是无效的),要么依据市场价格不断动用极高规模的资产进行自成交,以延缓价格被采纳的机会。
目前在 ETH 上每个区块最多可以报价 20 笔,报价也是分布式随机进入,如果假设每个区块有 1 笔报价,报价规模为 10 个 ETH,T0=5分钟,那么通过攻击,使得 PEND 在一个小时内无价格更新,需要动用的资产规模将接近 2^12*25*10=100 万个 ETH。如果β=3,则该数据趋近于 ETH 的数量极限,这种抗攻击性是任何中心化交易所都做不到的。
8. 激励及经济
矿工通过支付 ETH 佣金,以及承担一定的价格波动风险来获得PEND;而验证者则基于价格的偏差计算直接的获利,并承担成交报价的风险。因此对验证者而言,其成本收益相对较为清晰。对矿工而言,其报价挖矿的模型需要相应的经济学基础。
我们将矿工贡献的所有 ETH,记为 X,定期(一般按周)全部返还给 PEND 持有人。该过程构建了一个自动分配的模型,从而使得每个 PEND 具备了内在价值,该价值在链上可证。但仅仅依靠报价挖矿者的 ETH 是不足以完成逻辑的闭环的,这就回到我们构建价格预言机的初衷:链上的价格事实对所有的 DeFi 产品都是根本需求,是DeFi 最重要的基础设施。因此任何 DeFi 开发者或用户在调用PEND-Price 的时候,都应该支付相应的费用,此部分收益记为 Z。因此 PEND 对应的价值记为 X+Z。
而从总体上来说,获得 PEND 支付的成本为 X,即 PEND 从总体上是创造了价值的。
可以理解成 PEND 的整体价值大于整体成本,但对于每个矿工而言,它的成本是不确定的,这里就存在交易的可能,不同成本的 PEND所有者在整体价值大于整体成本的背景下,进行买卖交易,从而达到均衡,这种均衡类似于股票市场的均衡。
PEND 系统的所有 Token 全部由挖矿产生,不预留或者预挖,产生PEND 的所有成本全部返回给PEND 持有人,PEND 只是用于激励。PEND 模型实现了完全的去中心化,不对任何人设置门槛,其特点与比特币类似。PEND 协议升级采用 DAO 的方式,即提案者发起,社区投票,按照一定比例通过并运行,该比例一般为 51%。
PEND 技术整体架构
PEND Network 分为两层,包含几个关键组件:
· 链上部分:在支持的区块链上部署的一组 PEND 系统合约,主要功能包括请求处理和响应/计算结果验证,节点注册和代币抵押,统计监控,支付处理等功能。
链上系统合约也提供了一个统一的接口给所有支持的区块链上的用户合约使用。
· 链下部分:由第三方用户(即节点运营者)运行的、实现了核心协议的客户端所组成的第二层分布式点对点网络。协议客户端包括几个重要模块:事件监听和链适配器、分布式随机数引擎、链下组内共识模块、请求/计算任务处理模块等,具体包含哪个模块取决于用户节点所提供的预言机服务类型。

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

隐私保护机制
PEND 提出一种基于 zkSNARK 算法的跨链交易隐私保护方法。zkSNARK 零知识证明算法是现有相对较成熟可行的隐私保护技术之一,其匿名性更好,无需信任中心节点,也不需要网络中其他用户的参与,用户通过与匿名货币交互即可实现匿名交易,从而有效地保护用户隐私。
为了将交易验证规则转换成 QAP 形式,首先需要将交易验证规则函数转换成 NP 完全语言 R1CS 形式:首先,将交易验证规则抽象成复杂多项式形式,然后将复杂多项式分解成两种形式:x=y 与x=y(op)z,op 可以是加减乘除等操作符,y 和 z 可以是变量、数字和子表达式;其次,将分解好的表达式转换成一系列三元向量(a,b,c)形式。最后根据拉格朗日插值法将 R1CS 形式转换为 QAP 形式。QAP形式如下:

由于 PEND 的交易验证规则包括验证签名、计算 Merkle 树根哈希值等复杂多项式操作,所以由其构建的 QAP 形式包含大量哈希运算函数,直接计算 QAP 形式中的线性组合会消耗大量计算资源以及时间。为了避免上述情况,需要将 QAP 形式中包含的多项式转换成在某一安全随机变量 rn 处的取值,此时上述 QAP 等式仍然成立。
为了使 PEND 网络中的验证节点在不知晓交易相关隐私信息如交易双方、交易金额的情况下能够验证交易的有效性,需要使用椭圆曲线对函数,该函数需要满足的条件如下:

PEND 作为转发、验证跨链匿名交易的载体,需要能够验证跨链匿名交易的有效性。跨链交易分为跨链透明交易、跨链匿名交易两种类型。跨链透明交易提供交易本身内容以及相关 Merkle 分支证据,PEND 网络中的验证节点可以按照平行区块链注册的验证规则验证该笔交易的有效性。而跨链匿名交易不会透露除该交易有效之外的任何信息,PEND 网络中的验证节点需要知道每一种平行区块链网络启动阶段生成的公共参数,并利用这些公共参数验证来自平行区块链的跨链匿名交易的有效性,零知识证明算法保证 PEND 网络中的验证节点无法知道除该跨链交易有效之外的任何信息。
PEND 的应用场景
1 去中心化金融衍生品
公共智能合约平台使创建和交易金融衍生工具(包括基于区块链的资产)成为可能;例如,Market Protocol 、Decentralized Derivatives Association 和 DyDx Protocol 都在努力推动这类应用向前发展。PEND网络可以通过提供价格、结算值和合同到期时间来确定参与者的得失,从而在去中心化衍生工具中发挥重要作用。
2 稳定币
这里我们指的稳定币不是由中心化公司发行的白条,如 Tether或者 digix,而更多的是去中心化和算法控制的加密货币,例如由bitUSD 和 Dai 等抵押支持的稳定货币,以及以铸币税为基础的股票,如 Basecoin 和 kUSD。所有的稳定币都需要像 PEND 网络这样的预言机系统的帮助才能获得有关稳定币与它们所依赖的资产之间的汇率的外部数据。
3 去中心化借贷平台
去中心化的点对点贷款平台,如 SALT Lending 和 ETHLend 允许匿名用户在区块链上担保加密资产,以换取法币或加密贷款。PEND网络可用于在贷款创造过程中引入市场利率,并监测加密担保与贷款金额比率,如果满足贷款条件,就会触发清算事件。
4 去中心化保险
Etherisc 正在通过提高效率和透明度以及降低运营成本,为去中心化的保险应用(如航班延误保险和作物保险)建立一个平台。用户购买保险单并在以太网中支付保费,如果满足商定条件,他们将根据保障策略获得相应的以太币补偿。通过将外部数据和事件引入智能合约,PEND 网络可以在索赔的时候帮助那些去中心化的保险产品进行保单承保和支付决策,并在保单到期时安排未来检查以实现自动支付。
5 去中心化菠菜
去中心化Du Chang,如 Dice2Win、Etheroll 和 Edgeless 在透明度、几乎即时的安全资金转移以及公平的零庄家优势中受益匪浅,传统Du Chang的庄家优势可以达到 1%-15%。不可预测的和可验证的随机数生成是任何Du Chang游戏的核心,但在纯确定性环境(链上)中产生随机数在理论上是困难的,甚至是不可能的。PEND 网络能够生成安全、可验证、无偏的和不停止的随机数供这些 Dapp 使用。
6 去中心化预测市场
去中心化预测市场,如 Augur 和 Gnosis,利用人群的智慧来预测现实世界的结果,如总统选举和体育菠菜结果。当投票结果受到用户的质疑时,PEND 网络可以提供真实结果,用于快速和安全的解决纠纷。
7. 去中心化计算市场与扩展执行
PEND 网络绕过区块 Gas 限制和昂贵的链上计算成本,将冗杂的第三方计算能力与业务计算密集型任务(如机器学习模型训练、3D绘制、DNA 测序等科学计算)连接起来。
在我们的长期发展路线图中,基于 zkSNARK 的计算型预言机还将支持为私有输入的计算任务提供隐私。此外,对于当前的区块链可扩展性问题,它将为支持的链带来无限的执行可扩展性。
PEND 通证经济模型
PEND 通证是 PEND 网络的内置原生加密数字令牌,可用于链上的交易、结算、以及智能合约的履约。PEND 通证能够方便的表征和度量PEND房产链上的数字化经济活动,其价值基于两点:一是PEND链上的应用需要消耗一定的 PEND 通证作为燃料,二是持有 PEND通证能够参与到 PEND 区块链的社区治理中。
PEND 通证作为维持 PEND 链生态系统运行的重要纽带,是形成大生态圈闭环的保证,承载着价值流通,购买服务,获得回报,鼓励互动的重要作用。