热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

ForesightVentures:从基础TWAP看预言机未来

在未来,一个完美的预言机需要完全来自链上的可验证数据源(那么就是基于TWAP)且支持多链,以及通过ZK或完全链上可信计算进行数据获取和处理。
在未来,一个完美的预言机需要完全来自链上的可验证数据源(那么就是基于 TWAP)且支持多链,以及通过 ZK 或完全链上可信计算进行数据获取和处理。

原文标题:《Foresight Ventures: Crypto-Native 预言机的基础 TWAP》

撰文:msfew@Foresight Ventures

Oracle 原理与问题

区块链的数据来源有两个:一个是链上数据(如地址持有的 ETH 的数量),另一个是链下数据(如 ETH 现在在交易所的价格)。要获取后者,就需要预言机将这个数据告诉给合约。

为什么互联网也需要有 「网下」 数据,但没有预言机问题呢?因为区块链上的数据需要经过共识,因此预言机上传上来的数据也需要是可信的,而互联网 (Web2) 上的数据其实本身都是中心化的。

预言机所需要解决的是从数据源到处理到喂价的信任问题,通常不是数据本身的问题。

链下 Oracle

预言机的信任问题包含了数据源与数据获取与喂价, 针对它们分别有以下解决方案:

a) 数据源: 可信联盟 / 去中心化网络

我认为数据源可信是预言机信任问题最重要的一个点,但是这些数据很多都是链下的,链下的数据其实是无法证明是完全可信的,就像你无法证明 ETH 的价格一定是某个值一样。 无论是采用可信联盟还是去中心化预言机网络,都无法生成一个完全没有套利空间或者 OEV 的价格。

唯一能解决数据源可信问题的就是在未来如果流动性和经济活动大部分都聚集在链上,而不是交易所的时候,去完全采用链上预言机 (Uniswap TWAP),这样可以保证数据源是 「Crypto-native」 和完全可信可验证的。

b) 数据获取与喂价: 可信计算

Town Crier 使用 SGX 来保证数据的获取可信; Empiric 使用 StarkNet 上的合约来保证数据的获取和计算可信,且数据源会直接讲价格数据发送到 StarkNet 上的其他合约中,从而达到第一手数据,保证数据源的可信度; Redstone 通过 SmartWeave 智能合约让任何人都可以成为数据处理者,且使用 Arweave 存储价格数据从而保证数据可信和可以在事后被验证; Chainlink 使用 Chainlink 网络的链上聚合合约来计算出数据结果,再发送到区块链上。

任何应该上链的应用最终都会被上链,这样才能满足区块链透明化,可验证,无需准入门槛,去中心化的特点。

完全链上化的价格预言机会彻底解决数据源和数据获取与喂价问题,让 DeFi 应用给所有人带来经济活动上的自由。

TWAP(Time-Weighted Average Price)

TWAP 是 Uniswap 所推出的价格预言机。 它的数据源完全来自 Uniswap 协议自身的交易数据,数据的获取和处理也是完全在链上进行,开发者也可以直接在链上使用 Uniswap TWAP 进行代币价格计算。

TWAP 的原理是基于每个区块的最后一笔 tx 时的代币价格,结合区块时间,计算出协议整个历史中一个代币的价格总和,从而使用时可以重新计算出一个平均价格。

使用最后一笔 tx 时的价格,是为了让攻击者的攻击成本不可预测,从而增加预言机安全性。 因为就算攻击者在一个区块的最后一笔交易中控制了价格,他也无法预知下一个区块中的相关活动的排序等信息。 根据链上分析,这种跨区块的攻击还没有发生过。(剧透一下,PoS 好像就不一定,后文会说)。

加入时间的变量,是为了进一步增加攻击成本,通过牺牲对即时价格的反映,保持价格的整体稳定性和安全性。

Uniswap V2 TWAP

V2 TWAP 的使用可以是直接拿到一个时间段内的总价变化,除以设定的时间段 t,就可以得出一个平均价格,作为代币的价格。 每隔一段时间(不一定是 t,可以用滑动窗口算法,延迟就更小),则重新获取最新时间段内的价格。

对于 TWAP 来说,时间参数越长,更新越慢,但安全性越高,因为价格操纵的成本基本上就是时间区间内在每个区块上套利和发送交易的开销。

Uniswap V3 TWAP

V2 TWAP 是用时间段内的总价 (price * time),V3 是时间段内的总 tick (tick * time)。

V2 中我们提到了要每隔一段时间去重新获取价格,这可能就需要 Keeper 的参与,Uniswap V3 解决了这个问题。

V3 直接通过一个可定义长度(视需求和网络时间戳行为不同而定)的数组来存储区块时间戳和总 tick,当合约产生 Swap 等交互时,这个数组就会被更新,无需 Keeper 的主动触发。

除此之外,使用时还需要把 tick 转换成价格,稍微比 V2 难用一点。

TWAP 的限制

既然 TWAP 那么好用,那么可信且可验证,完全去中心化,那为什么 Chainlink 被如此广泛采用呢?

写本文的动机其实就是看到了推特上有人说,Euler Finance 从 TWAP 切换到 Chainlink 是一种升级(注意此人 ID… = =)。

他称 TWAP 是非常不安全的,因为 PoS 之后可以进行多区块的预言机操控,这个其实是可以完全被解决的。

相比之下,我认为 TWAP 完全去中心化和完全链上操作的优点会比 Chainlink 好很多,在长期看来,如果没有显著的需求上的差别(比如你要把天气数据搬到链上),那么最好的选择还是 TWAP。

TWAP 和 Chainlink 的对比如下:

TWAP 被全面碾压,但我个人认为,去中心化和安全性是 1,而其他的因素是 0,完全链上化是一种趋势。 任何人都可以做一条比以太坊快非常多,便宜非常多,支持更多语言的智能合约平台,但却无法杀死以太坊。

PoS 后 TWAP 的风险

ChainLinkGod 所说的 PoS 网络中对 TWAP 预言机的攻击问题,Euler Finance 的工程师自己就知道潜在解决方案,Uniswap 的工程师也考虑到了。

PoS 后,因为出块者可预测了,所以更容易结合以下方式进行多区块攻击:

  • 大 Validator 可能被连续分配区块
  • 通过 Flashbot 来发送 Private tx
  • Multi-block bundle

PoW 和 PoS 的不同情况下,针对 V3 ETH/USDC 交易对的 30 分钟时间窗口 (144 个区块)的 TWAP,要操纵价格造成 30% 的波动,需要以下成本:

  • PoW: 23.7 万亿美元
  • PoS(连续控制窗口内 2 个区块情况下): 23.7 万亿美元
  • PoS(连续控制窗口内 3 个区块情况下): 95 亿美元
  • PoS(连续控制窗口内 5 个区块情况下): 1.03 亿美元

控制越多区块,操纵的成本就显著地越低,那么解决方案是啥呢?

暂时性解决 PoS 后 TWAP 的操纵风险的方法是:

  • 选择更大的时间窗口
  • 选择流动性更好的池子。

完全解决 PoS 后 TWAP 的操纵风险的方法是:

  • 用 Median 而不是 Average。

这样操纵者就需要控制超过半数的区块,才能操纵价格,对比上面的情况,就需要控制 73 个区块,这个数字应该大到无法表述了。

未来的预言机

我认为在未来,一个完美的 预言机」 需要:

  • 完全来自链上的可验证数据源(那么就是基于 TWAP),且支持多链。
  • 通过 ZK 或完全链上可信计算进行数据获取和处理。

但是这些可能就需要处理以下几个现存或将会出现的小问题:

  • 满足种类,精度,时效性需求的链上数据(当然 Chainlink 等一样有价格延迟的问题,而且本身就是为了数据安全性而牺牲时效性)
  • 彻底解决 TWAP 数据源价格操纵(更深的池子,更大的窗口,使用中位数而不是平均数)
  • 整个预言机信任短板的消除(多签?网络去中心化程度?不靠谱的 Fisherman 机制?)
  • 数据的跨链获取与喂价,多链场景中链上数据的可信传输
  • 数据源多样性(比如只用 Uniswap V2 或者 V3 不太好)
  • 可信环境下执行的 Keeper(如果需要的话)

我相信在未来,越来越多的经济活动会发生在链上,越来越多的价格数据和交易对会存在于 DEX 上,Uniswap 也就可以提供更好的 TWAP,也就会有其他方案能基于 TWAP 实现我设想中的完美预言机,最终达成一个 100% 去中心化的金融系统。


关于 Foresight Ventures

Foresight Ventures 押注加密货币未来几十年的创新历程,旗下管理多支基金:VC 基金、二级主动管理基金、多策略 FOF、特殊目的 S 基金「Foresight Secondary Fund l」, 总资产管理规模超过 4 亿美元。Foresight Ventures 坚持“Unique, Independent, Aggressive, Long-term”的理念,通过强大的生态力量为项目提供广泛的支持。其团队来自包括红杉中国,中金公司,谷歌,比特大陆等顶级金融和技术公司的资深人士。

Website: https://www.foresightventures.com/

Twitter: https://twitter.com/ForesightVen

Medium: https://medium.com/@foresightventures-zh

Substack: https://foresightventures.substack.com

Discord: https://discord.com/invite/jYtyfxfB

Linktree: https://linktr.ee/foresightventures

Related Links

0:

https://mirror.xyz/0x8B00cEE42f226B340aF806CD7aaA4c10cc5E0154/C4ik-DIDHZQ8krLB8D9t9-SrdhuTn1W8NKRLqPpoMmg

1b:

https://medium.com/@EmpiricNetwork/empiric-network-the-next-generation-of-oracles-data-directly-from-the-source-514b46a53f3

2:

https://docs.uniswap.org/protocol/V2/concepts/core-concepts/oracles

https://arxiv.org/abs/1912.01798

3:

https://mp.weixin.qq.com/s/h2D4oyq11Q2HwG0SU9SBbQ

4:

https://mp.weixin.qq.com/s/1axeS5XLnZ9wwt4Yix3sfw

5:

https://twitter.com/ChainLinkGod/status/1567529586405310464

https://blog.euler.finance/euler-integrates-chainlink-to-get-ready-for-the-merge-9b97a056f67f

https://smartcontentpublication.medium.com/twap-oracles-vs-chainlink-price-feeds-a-comparative-analysis-8155a3483cbd

6:

https://ethresear.ch/t/median-prices-as-alternative-to-twap-an-optimised-proof-of-concept-analysis-and-simulation/12778

https://drive.google.com/file/d/1fuuKGWdaVdXQoN_d4Riq4rsSB5OtzaJA/view

https://ethresear.ch/t/median-prices-as-alternative-to-twap-an-optimised-proof-of-concept-analysis-and-simulation/12778

7:

https://ercwl.medium.com/whats-wrong-with-the-chainlink-2-0-whitepaper-for-simpletons-d50f27049464

https://twitter.com/matthuang/status/1567383047858966528


推荐阅读
  • 拥抱Android Design Support Library新变化(导航视图、悬浮ActionBar)
    转载请注明明桑AndroidAndroid5.0Loollipop作为Android最重要的版本之一,为我们带来了全新的界面风格和设计语言。看起来很受欢迎࿰ ... [详细]
  • [译]技术公司十年经验的职场生涯回顾
    本文是一位在技术公司工作十年的职场人士对自己职业生涯的总结回顾。她的职业规划与众不同,令人深思又有趣。其中涉及到的内容有机器学习、创新创业以及引用了女性主义者在TED演讲中的部分讲义。文章表达了对职业生涯的愿望和希望,认为人类有能力不断改善自己。 ... [详细]
  • 波卡上最新的 Staking 介绍(下)
    波卡上最新的 Staking 介绍(下) ... [详细]
  • 本文介绍了数据库的存储结构及其重要性,强调了关系数据库范例中将逻辑存储与物理存储分开的必要性。通过逻辑结构和物理结构的分离,可以实现对物理存储的重新组织和数据库的迁移,而应用程序不会察觉到任何更改。文章还展示了Oracle数据库的逻辑结构和物理结构,并介绍了表空间的概念和作用。 ... [详细]
  • CSS3选择器的使用方法详解,提高Web开发效率和精准度
    本文详细介绍了CSS3新增的选择器方法,包括属性选择器的使用。通过CSS3选择器,可以提高Web开发的效率和精准度,使得查找元素更加方便和快捷。同时,本文还对属性选择器的各种用法进行了详细解释,并给出了相应的代码示例。通过学习本文,读者可以更好地掌握CSS3选择器的使用方法,提升自己的Web开发能力。 ... [详细]
  • 20211101CleverTap参与度和分析工具功能平台学习/实践
    1.应用场景主要用于学习CleverTap的使用,该平台主要用于客户保留与参与平台.为客户提供价值.这里接触到的原因,是目前公司用到该平台的服务~2.学习操作 ... [详细]
  • Oracle分析函数first_value()和last_value()的用法及原理
    本文介绍了Oracle分析函数first_value()和last_value()的用法和原理,以及在查询销售记录日期和部门中的应用。通过示例和解释,详细说明了first_value()和last_value()的功能和不同之处。同时,对于last_value()的结果出现不一样的情况进行了解释,并提供了理解last_value()默认统计范围的方法。该文对于使用Oracle分析函数的开发人员和数据库管理员具有参考价值。 ... [详细]
  • 本文介绍了RPC框架Thrift的安装环境变量配置与第一个实例,讲解了RPC的概念以及如何解决跨语言、c++客户端、web服务端、远程调用等需求。Thrift开发方便上手快,性能和稳定性也不错,适合初学者学习和使用。 ... [详细]
  • 本文介绍了南邮ctf-web的writeup,包括签到题和md5 collision。在CTF比赛和渗透测试中,可以通过查看源代码、代码注释、页面隐藏元素、超链接和HTTP响应头部来寻找flag或提示信息。利用PHP弱类型,可以发现md5('QNKCDZO')='0e830400451993494058024219903391'和md5('240610708')='0e462097431906509019562988736854'。 ... [详细]
  • Oracle seg,V$TEMPSEG_USAGE与Oracle排序的关系及使用方法
    本文介绍了Oracle seg,V$TEMPSEG_USAGE与Oracle排序之间的关系,V$TEMPSEG_USAGE是V_$SORT_USAGE的同义词,通过查询dba_objects和dba_synonyms视图可以了解到它们的详细信息。同时,还探讨了V$TEMPSEG_USAGE的使用方法。 ... [详细]
  • 本文介绍了响应式页面的概念和实现方式,包括针对不同终端制作特定页面和制作一个页面适应不同终端的显示。分析了两种实现方式的优缺点,提出了选择方案的建议。同时,对于响应式页面的需求和背景进行了讨论,解释了为什么需要响应式页面。 ... [详细]
  • Java 11相对于Java 8,OptaPlanner性能提升有多大?
    本文通过基准测试比较了Java 11和Java 8对OptaPlanner的性能提升。测试结果表明,在相同的硬件环境下,Java 11相对于Java 8在垃圾回收方面表现更好,从而提升了OptaPlanner的性能。 ... [详细]
  • 本文介绍了H5游戏性能优化和调试技巧,包括从问题表象出发进行优化、排除外部问题导致的卡顿、帧率设定、减少drawcall的方法、UI优化和图集渲染等八个理念。对于游戏程序员来说,解决游戏性能问题是一个关键的任务,本文提供了一些有用的参考价值。摘要长度为183字。 ... [详细]
  • Flow 生态案例学习 | Emerald City为Flow上DAO、教育和开发铺平道路
    原文链接:https://www.onflow.org/post/emer ... [详细]
  • [币萌研究院] 项目简报Agoric (BLD)
    [币萌研究院] 项目简报Agoric (BLD) ... [详细]
author-avatar
手机用户2502875023
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有