公允排序服务:建立可验证的公允DeFi生态
Chainlnk Labs的Ari Juels、Lorenz Breidenbach和Florian Tramèr三人展开研究并撰写本文。
以太坊的发展最初是由通证推动的,之后是去中心化交易所,而现在则是DeFi。随着以太坊上的交易量越来越大,网络中的gas费也不断突破新高。这意味着以太坊获得了巨大的成功,但与此同时也意味着交易成本升高,且挖矿延时增长。内存池中交易萎缩,也产生了另一个副作用,那就是出现抢跑交易现象。
用户交易会通过内存池,即使在gas价格较低时,精明的交易者或算法也可以在挖矿前先查看交易内容。因此,有经验的玩家可以有策略地创建交易,并通过这种高级玩法获利。他们可以支付比当前交易更高的gas价格,以确保自己的交易排在最前面。
这个问题不只存在于想象中。Danian等人近期开展的一项研究(注:其中包括本文的作者)发现DeFi合约每年通过抢跑交易产生的收益高达几百万美元。
现如今,抢跑交易的收益肯定要高于研究中显示的数据。目前大部分交易仍来自中心化交易所,而中心化交易所的运营商或其他参与方可能会抢跑,因此研究中的发现很可能只是冰山一角。[1]华尔街多年以来一直通过抢跑交易赚取巨额回报,公司会定期将客户订单卖给高频交易者。下面的例子详细阐述了这个问题及其对智能合约可能产生的影响。 DeFi等领域的排序问题 DeFi合约运营商希望为客户提供公平透明的服务,因此通常会采取一些措施约束抢跑行为,比如设置gas上限,但是这些机制仍然存在漏洞。除此之外,并没有任何机制防止矿工发起恶意攻击,比如操纵排序机制。预言机报告和其他交易类型的抢跑也会导致同样的威胁。
Daian等人发明了“矿工可提取价值”(MEV)一词,用来形容矿工通过操纵交易顺序从智能合约系统中获利的机会。MEV这个词本身有一些误导成分,因为不止矿工,普通用户也可以提取一部分(或大部分)MEV。矿工在区块中为交易排序的权力不受约束,因此MEV仅代表了各类攻击者可以提取的最大价值。MEV之所以会存在,是因为大多数区块链有一个潜规则,那就是它们在一段时间内是中心化的,也就是说某一名矿工可以完全决定每个区块中的交易顺序。
最近有人提出要建立MEV提取系统,也有人称之为MEV拍卖。对于MEV拍卖这个概念,支持和反对的观点都有一些道理,而我们认为MEV拍卖将不利于社区的发展。点击此处可以查看详细内容。
目前推出了rollup等交易处理方案,这个方案可以很好地实现可扩展性和交易隐私,但可惜还是无法解决MEV问题。Rollup方案将交易排序权交到了打包交易的人手中。基本上就是将MEV变成了REV,即“打包者可提取价值”。 Chainlink推出公允排序服务(FSS) Chainlink Labs在制定Chainlink下一步发展计划时,提出在去中心化(或甚至中心化)系统中建立公允交易排序机制。这个方案可以解决rollup机制以及整个DeFi领域存在的交易排序问题,同时解决gas成本过高和交易排序不公平的问题。这个方案的名称叫做公允排序服务(FSS)。
FSS可以服务于所有智能合约,无需改变合约所在的layer1区块链。
FSS的底层逻辑简而言之就是:使用预言机网络为发送至某一智能合约SC的交易排序,包括用户交易和预言机报告。预言机节点网络获得交易并针对交易排序达成共识,任何一个节点都无法单独做出决定。然后,节点网络将交易发送至智能合约SC中。节点会在交易中添加nonce值或序列号,或批量发送,以对交易进行排序。
FSS与MEV拍卖一样,将提取MEV能力与挖矿能力分离,但与MEV拍卖不同的是,FSS本质上不会导致任何抢跑行为。总的来说,FSS消除了挖矿过程中的中心化因素,并实现了去中心化的交易排序机制。
既然gas费用决定了交易排序,那么预言机节点应该建立什么样的排序标准呢?最符合逻辑的标准是“先到先得”,即根据交易达到的时间来排序。那么具体应该怎么做呢? 排序公平性 交易排序问题至关重要,实际上这是一个非常棘手的问题。
几十年来大家在研究拜占庭容错机制(注:许可制系统的共识机制)时一直忽略了“排序公平性”问题。大多数BFT系统的目标都是活跃度和一致性,即交易需要及时处理,且所有节点需要对交易排序达成共识。但是这个原则并没有具体说明当交易时间接近时应该如何排序。即使所有节点都先收到T1再收到T2,根据BFT机制规定,T2是可以排在T1前面的。
Kelkar等人(其中包括本文的作者之一)近期的研究首次在共识中加入了“排序公平性”维度。具体细节非常复杂,但大致逻辑是:如果大部分节点先收到T1再收到T2,则T1不能排在T2后面。这其中包括名为“Aequitas”的一整套协议,共同实现了这个功能。尽管目前这些协议的运行成本很高,但我们相信未来将产生更高的实用价值。
FSS为执行交易排序政策提供了框架,其中一个案例就是Aequitas。它还可以支持更简单的方案,比如直接将交易加密,节点可以在排序后使用门限签名的方式进行解密。除此之外,它还支持其他方案将预言机报告插入交易中。(注:如果有需要,它甚至可以支持MEV拍卖。)
简而言之,FSS的目的是帮助DeFi开发者建立标准,为用户保障公平性。 交易如何发送到FSS? 用户可以将交易直接发送到预言机网络。用户需要同时向多个节点发送交易,让所有节点都参与交易排序,以保证公平性。[3]
我们目前正在探索创新,让预言机能够监控目标区块链上的内存池,并代表SCON合约从区块链获取交易。预言机节点通常将web服务作为数据源,但是它们也可以将内存池作为数据源,并响应用户交易,生成报告。详情请参照下方图示。
这个方案具有两大优势:
-
兼容性高
:用户可以直接将交易传输至区块链,无需为其与预言机网络交互提供任何专门的软件。
-
gas成本低
:如果将交易传输至内存池就可以保障送达,那么用户无须担心区块确认速度,即:可以降低交易传输成本。交易打包成区块后,将创建可审查的记录,证明交易没有被操纵。[4]预言机网络可以出较高的gas价格,将经过排序的用户交易重新发送到智能合约中,以保障交易及时得到处理。不过,预言机网络可以通过批量发送、打包等各种技术降低单位交易的gas成本。
可以监控内存池的公允排序服务。用户向SCON合约发送两个交易,先发送T1再发送T2,预言机网络发现两笔交易,按照交易到达内存池的时间进行排序,并发送给SCON。
P2P网络非常复杂,网速快且对等节点多的攻击者可能会成为抢跑者。如果预言机节点的对等节点遍布整个网络,并积极监测洪水攻击(flooding)等各种攻击,这样能大幅提高抢跑的难度。
另外,预言机节点还应尝试其他类似方案,在智能合约中直接应对抢跑问题(如:commit-reveal机制或可验证延迟函数)。这个方案的关键优势是预言机节点可以在链下执行防御,更快避免抢跑问题(因为网络造成延时而非区块确认造成延时)。
公允排序服务是一种更创新更简单的方案,可以在网络层面解决抢跑问题。举个例子,用户可以对发送到预言机节点的交易进行门限加密,只有在节点对交易排序达成共识后才会显示交易内容。在交易排序前先进行加密能够简单有效地解决去中心化交易所和其他DeFi系统中的抢跑问题,但这只能隐藏交易内容,而无法隐藏交易元数据,因此基于交易元数据进行抢跑交易仍无法被杜绝。(比如:只知道某个用户发布了一个交易,也可以导致其他用户插队抢跑,或与负责排序的人合谋抢跑)在以太坊上可以利用潜艇交易等机制防止更高级的抢跑现象,现在还不知道在网络层面能否部署类似的防御机制,这个问题很值得探究。 总结 虽然有些系统在单独运行时可以实现公平性(比如批量拍卖),但却无法与其他系统兼容。[6]广义的公平性在目前和未来都会是一个棘手的问题。FSS的目的是为DeFi开发者提供所需工具,自定义交易排序原则,保障系统的公平性和用户体验,我们会在之后发布的白皮书中详细阐述FSS的技术细节。总而言之,我们希望建立公允的交易排序机制,实现DeFi的初衷,那就是建立比华尔街更公正透明的金融体系。
感谢Andrew Miller、Dan Moroz、Fan Zhang和Sergey Nazarov为本文初稿提供意见。
[1]按字面意思理解。冰山只有10%的部分浮在水面。去中心化交易所的交易量占所有类型交易所交易量总和的0.1%。
[2]拉丁语,意思是“公平性”。
[3]如果用户担心审查问题,可以同时建立一个慢速通道连接智能合约,并通过预言机发送。
[4]用户可以出更高的gas费重新发送交易,覆盖原有交易。内存池如何处理覆盖交易取决于具体政策。比如,预言机网络可以只承认第一次发送的交易是合法的,并禁止用户覆盖交易,以充分保障可审核性。
[5]Khalil等人针对中心化交易所提出了一个不错的方案。
[6]如果批量拍卖系统出售的资产也在连续时间市场出售,那么后者中的参与者可以进行拍卖阻击,即在最后一秒基于最新市场价格决定是否参与批量拍卖。