0.中间件安全性问题
现有的Indexing协议和Keeper网络都不是完全trustless的,而是trusted,或者看似trustless的.开发者和用户需要以“Trust,NotVerify”的方式来信任这些产品不会作恶.它们都是上一代的基础设施,在当时可能确实没有太好的解决方案,所以用了Fisherman机制或者DAO治理(SocialConsensus…),来保证数据的可信和协议的安全运行.在当前,各个zk方案已经进入性能优化的收尾阶段,这些前朝的剑,就不能再来斩本朝的官了.通过zk,可以实现Web3中间件的所有革新,确保安全性,去中心化,和性能被同时满足,就如同OptimisticRollup在未来很可能会被zkRollup抢走Layer2的主导地位一样.1.Web3Indexing
a)Web3索引
我们首先需要了解为什么需要Web3特制的索引协议:Web3是地址模型,智能合约数据以交易形式存在,需要索引来让数据结构更加易用;Web2的数据结构开发者自己处理.Web3的很多数据都是交易相关数据;Web2被索引的数据很大一部分都是搜索引擎索引的网页或者图片等数据.Web3需要通用索引协议来发挥可组合性;Web2开发者自己根据自己的中心化应用搭建索引服务.对于这几点,如果你在DApp的开发中,硬是要自己来进行索引,那么每当去提取合约中的特定数据,需要非常大的前端代码量,以下是一个例子,真的要建立一套服务的话需要无数个不同的函数:
于是在我们之前的DApp架构图中,前端要使用和获取智能合约的数据时,就必备一个通用的Indexing协议作为中间层,来让智能合约的数据能被前端所轻松使用.b)GraphQL索引
Clone X Forging SZN 1系列NFT近24小时交易额增幅超2400%:金色财经消息,OpenSea数据显示,Clone X Forging SZN 1系列NFT近24小时交易额为642 ETH,24小时交易额增幅达2418%。近24小时交易额排名位列OpenSea第2。[2022/9/1 13:02:27]
我们需要一个Indexing协议作为中间层,那么这个协议该如何选型呢(TheGraph19年有讲过Web3为什么要用GraphQL,但是感觉说得不太清楚)?我们有四个潜在选择.
首先,排除SOAP.因为它的采用率非常少,学习曲线也非常陡峭.甚至有人说“RESTisking,andSOAPistrash”.其次,排除RPC.RPC是客户端对区块链,或者Web2服务与服务之间的常用调用规范,以操作(动词)为核心,接口的更新更加麻烦一些,适合客户端与区块链网络的通信.但对于我们的智能合约开发场景来说,太重,不是最适合,性能也因为请求数量多,和需要依赖正在运行的程序,而导致不太好.接着,排除REST.REST风格算是以资源(名词)为核心来操作的规范.但是Web3应用中,对任何资源进行更新操作的动作都需要用户或者其他方授权触发,我们在索引协议中的请求全部是GET请求,那就没必要REST了.最后,选择了GraphQL:GraphQL协议本身的构建工作量相比其他标准更小,更不需要变化,更容易搭建通用的协议.GraphQL的交互形式给了前端更多的自由度,由前端定义结果,符合DApp结构中的无后端思想.GraphQL非常适合区块链中完全开放且不易变,同时有非常多树状结构数据的智能合约场景,性能上也会因此更好.GraphQL在区块链中已经有TheGraph针对单个智能合约的索引制定了成熟标准,也早就有对整条链的GraphQL接口(ethql,Clear),成熟度高,开发者生态也被培养得很好.除此之外,我并不认为我们需要花非常多的时间去开发新的存储网络的GraphQL协议和Query协议(当然这些索引的聚合是有意义的):存储网络大多都自带可用的索引协议,如Arweave的GraphQL服务,开发新的协议是在重复造轮子.存储网络上的数据相对于合约数据或者Web2数据量都非常小,同时所承载的价值也相对来说更小.Web2已经有更加成熟的协议和方案来进行这些数据的索引,开发新的协议依然类似是重复造轮子.当我们讨论索引协议的时候,默认的都是从前端直接获取区块链智能合约的数据,这是因为我们在前文中就阐述过,消除后端服务器对Web3Crypto-native可信DApp的意义.硬要加上针对智能合约链的后端的话反而徒增架构复杂度和暴露更多的不可信因素(目前有zk-sql等项目在专注于相关问题,但无法完全解决;也有Sqlidity这样有趣的链上SQLite方案),当然对于基于存储协议的DApp来说,SQL化的语句对开发熟悉度和流程来说是有必要的.索引协议需要关注的结构应该是前端能直接使用的GraphQL结构.
Celo推出“DeFi for the People”项目:Celo正式推出“DeFi for the People”联盟协作项目,该项目将提供超过1亿美元的资金用于宣传、资助和激励措施,包含Aave、Curve、Sushi、PoolTogether、0x、UMA、Valora、Ubeswap、Moola Market在内的创始合作伙伴,以及Chainlink、RabbitHole、The Graph和Wrapped.com在内的教育宣传和基础设施合作伙伴。Celo基金会及合作伙伴基金会将为激励项目各提供一半资金,旨在实现DeFi在移动端的使用。
目前,PoolTogether、Sushi、Moola Market、Ubeswap和Valora已上线Celo,PoolTogether将在Celo平台上提供奖励,其他DeFi项目的激励池将在未来数月内启动。此外,Celo将于三季度推出跨链通信互操作机制 Optics,实现以太坊和Celo间的资产交易。[2021/8/31 22:47:49]
c)现有Web3GraphQL索引协议问题
现有的IndexingProtocol的龙头必然是去中心化的TheGraph和PocketNetwork和中心化的Alchemy.无论是中心化还是去中心化,它们都各有各的问题:中心化IndexingProtocol问题:无法抗审查无法保证服务高可用性现有去中心化IndexingProtocol问题:信任模型和安全性依旧差(攻击Subgraph的成本非常低,机制和Chainlink2.0一样,是靠“更可信”的Fisherman来举报)性能无法满足需求对于安全性的问题,Fisherman机制在OptimisticRollup中的体现与IndexingProtocol所不同,OptimisticRollup的数据是链上的,更大的群体可以通过执行轻松验证,而Indexing的过程是链下的,如果并非Subgraph的indexer的话,很难去对错误数据进行挑战.这就导致信任模型更不稳固.这几个缺陷结合在一起,就导致了大的DeFi应用因为性能和安全性而很少使用这些索引协议,这个市场有着巨大的空缺.d)ZK解决智能合约索引协议问题
Fork Finance将于5月5日开启质押CHECK挖LOWB:据官方消息,ForkFinance项目方为感谢loser coin社区的帮助和回馈loser coin社区和fork社区用户的支持。
Fork Finance决定由项目方出资再次自费购买1亿枚LOWB,并且将用所购买的LOWB全部由挖矿形式发放给用户,我们将开启为期十天的快闪池,第一期快闪池包括LOWB-LOWB矿池和CHECKE-LOWB矿池。矿池将于5月5号 12:00 UTC时间(北京时间20:00)开启,详情请查看官网。[2021/5/5 21:25:43]
ZK其实是个非常好的解决方案,任何的Optimistic机制的问题都可以通过转为ZK来解决,比如Rollup这个最显著的领域.ZK化之后的索引协议兼具了中心化和去中心化协议的所有优点,包括高可用性和抗审查(多个节点保证uptime),性能极佳(因为ZK的存在所以可以选用中心化高性能节点),安全性(ZK的数学密码学很好地保证安全性)对于一个索引协议来说,ZK的方案:不需要EVM兼容性.注重整体性能,需要保证VerifiableQuery的速率.TheGraph自己也意识到了自己的机制安全性的不足,正在琢磨Shellproof.
但是我认为TheGraph目前的研究和开发进度还是慢,不知道Shellproofs是否能支持全部subgraph的运行.而且TheGraph已经在现有的机制上花了这么多功夫,去替换这个机制的难度甚至比重新建立一套还要高.一个真正实现了zk化的TheGraph的应用可以构建出新的应用与开发范式:任何DeFi应用都可以信任这个索引协议的数据,大大简化了开发流程.多链应用可以同时可信使用多链和多协议的数据,用户体验上会得到巨大提升(+StandardizedSubgraph).通过这样的思路,我们可以理解zk化的TheGraph实际上是一个去中心化RPC,这远比TheGraph的叙事宏大,而是真正能实现Infura所在追求的去中心化.2.Web3KeeperNetwork
Force DAO 代币增发漏洞简析:据慢雾区消息,DeFi 量化对冲基金 Force DAO 项目的 FORCE 代币被大量增发。经慢雾安全团队分析发现: 在用户进行 deposit 操纵时,Force DAO 会为用户铸造 xFORCE 代币,并通过 FORCE 代币合约的 transferFrom 函数将 FORCE 代币转入 ForceProfitSharing 合约中。但 FORCE 代币合约的 transferFrom 函数使用了 if-else 逻辑来检查用户的授权额度,当用户的授权额度不足时 transferFrom 函数返回 false,而 ForceProfitSharing 合约并未对其返回值进行检查。导致了 deposit 的逻辑正常执行,xFORCE 代币被顺利铸造给用户,但由于 transferFrom 函数执行失败 FORCE 代币并未被真正充值进 ForceProfitSharing 合约中。最终造成 FORCE 代币被非预期的大量铸造的问题。 此漏洞发生的主要原因在于 FORCE 代币的 transferFrom 函数使用了`假充值`写法,但外部合约在对其进行调用时并未严格的判断其返回值,最终导致这一惨剧的发生。慢雾安全团队建议在对接此类写法的代币时使用 require 对其返回值进行检查,以避免此问题的发生。[2021/4/4 19:45:30]
在之前Crypto-Native应用架构的文章中,我们提到过Keeper.它本质上就是,一个链下定时器到了特定时间就触发智能合约的某个功能,类似:Linux里的CronJobWebAPI(不是JS)里的setTimeout和setInterval它的用处具体包括:链上预言机价格更新(之前提到的UniswapV2TWAP)交易,投票,清算机器人自动化挖提卖然而,和我们之前提到的TheGraph类似,它的安全性机制是很落后的,甚至还不是TheGraph这样的链上治理,而是链下通过DAO和SocialConsensus的举报机制人工检举揭发非法节点.比如下图中,Gelato的架构图,整体功能很清晰,但每个组件都没有体现出有任何安全性的保证.
动态 | 印度即将推出加密脱口秀节目Hard Fork,将探讨加密监管等问题:据bitcoin.com消息,印度本月即将推出名为Hard Fork的加密电视脱口秀节目。根据制片人的说法,该节目“将深入探讨加密领域的问题、主题的复杂性以及区块链和加密货币领域领导者的远见。”,包括印度现在亟待解决的加密监管问题。[2019/4/9]
以两个典型的KeeperNetwork为例,它们的安全性机制是:Gelato:目前的Keeper服务执行节点不是Permissionless的,而是在白名单上的节点才可以参与.Gelato预计在未来去中心化之后,通过StakeandSlash机制和DAO来保证网络安全性.但是去通过DAO来惩罚一个非法节点需要一周,这样缓慢的决策对一个需要高频运转的服务来说,我认为是完全没法接受的.Keep3rNetwork:和Gelato类似,也是Watcher监督,发现非法行为则举报给DAO.但机制阐述得更加详细,虽然依旧是很差的机制,需要大量的人工交流和漫长的步骤.就像我们刚才提到的Indexing协议一样,Keeper也完全可以通过zk化来解决安全性的问题,同时甚至可以Gelato的off-chainresolver也是用GraphQL定义的一个subgraph,但和TheGraph没有安全性保证.这两个问题就可以被一起解决了.这样一个带可信off-chainresolver的zk化Keeper可以解锁无数新的应用场景:复杂策略的交易机器人跨Cluster/跨链/跨区块/跨DEX的套利/做市机器人ProgrammableLiquidity(调整区间,JIT,复投,Rebalance)3.Crypto-NativeZKInfra
在zkEVM和通用zkVM的最底层infra成熟的过程中,我们已经可以尝试去基于和使用它们来建立开发者可以直接使用的infra,包括我们构想中的这些zk化中间件.ZK作为一个典型方案,是像AMM一样的创新驱动重要因素.ZK和AMM分别解锁了比Optimistic和OrderBook机制更自动化和更可信的应用运转,让安全性在链上完全透明公开可验证,同时也分别解锁了证明外包和Swap聚合器的额外赛道,解锁了无数新的应用.除了扩容/跨链轻节点/隐私/机器学习以外,ZK作为完全适合区块链场景(网络全体做验证,极其自动化,甚至比网络共识更强的安全性)的密码学方案,在Indexing协议与Keeper网络这些中间件赛道中也大有可为.我们也将持续关注ZK在更多领域中的应用.关于ForesightVentures
ForesightVentures押注加密货币未来几十年的创新历程,旗下管理多支基金:VC基金、二级主动管理基金、多策略FOF、特殊目的S基金「ForesightSecondaryFundl」,总资产管理规模超过4亿美元。ForesightVentures坚持“Unique,Independent,Aggressive,Long-term”的理念,通过强大的生态力量为项目提供广泛的支持。其团队来自包括红杉中国,中金公司,谷歌,比特大陆等顶级金融和技术公司的资深人士。Website:https://www.foresightventures.com/Twitter:https://twitter.com/ForesightVenMedium:https://medium.com/@foresightventures-zhSubstack:https://foresightventures.substack.comDiscord:https://discord.com/invite/maEG3hRdE3Linktree:https://linktr.ee/foresightventuresRelatedLinks
1a:https://youtu.be/L2Cb_BljErY?t=20215https://github.com/timoth-y/zk-SQL1b:https://levelup.gitconnected.com/comparing-api-architectural-styles-soap-vs-rest-vs-graphql-vs-rpc-84a3720adefahttps://medium.com/graphprotocol/graphql-will-power-the-decentralized-web-d7443a69c69ahttps://www.youtube.com/watch?v=NFw0HznpLlMhttps://twitter.com/graphprotocol/status/1580218576933253121/photo/1https://github.com/ConsenSys/ethqlhttps://medium.com/dsys/ethereum-meet-graphql-c28f3402fe8fhttps://github.com/hananbeer/sqlidityhttps://www.youtube.com/watch?v=dh-Dj7otGy01c:https://ercwl.medium.com/whats-wrong-with-the-chainlink-2-0-whitepaper-for-simpletons-d50f270494641d:https://www.youtube.com/watch?v=B2X7D-hxVtQ
郑重声明: 本文版权归原作者所有, 转载文章仅为传播更多信息之目的, 如作者信息标记有误, 请第一时间联系我们修改或删除, 多谢。