USD:简析Aave团队打造的web3社交协议 LensProtocol

BlockBeats 注:Aave打造的 LensProtocol 社交协议并非一个社交产品,而是协议服务层,帮助开发者在其上构建各类社交产品。目前Web3社交产品虽然给予了用户数据所有权,但仍没有解决用户数据在不同 web3 社交产品中互通性的问题。对此,BuidlerDAO 创始人 Jason Chen 在推特对 LensProtocol 社交协议进行简要分析,  BlockBeats 整理如下:

浅研了一下 LensProtocol, 由 Aave 团队打造的 web3 社交协议,它本身不是一个前端的社交产品,而是一个中后端的协议服务层,开发者基于其提供的 API 可以在上面低成本构建出社交产品,这应该也就是为什么 lens 的 logo 是一束花的原因吧,它希望自己成为这片社交花园里的根和土壤,开发者们可以在其之上种出鲜花 。

相信大多数人对于 web3 的主要叙事都在于痛斥 web2 的 facebook、twitter 等公司垄断用户数据权,制造数据孤岛,用户拥有自己的社交数据和关系链也是 web3 原生的重要叙事,于是也冒出了很多号称 web3 twitter 的产品,但到现在为止 web3 的社交产品依然没有出现杀手级应用。

Beosin:SheepFarm项目遭受攻击事件简析:金色财经报道,根据区块链安全审计公司Beosin旗下Beosin EagleEye 安全风险监控、预警与阻断平台监测显示,BNB链上的SheepFarm项目遭受漏洞攻击,Beosin分析发现由于SheepFarm合约的register函数可以多次调用,导致攻击者0x2131c67ed7b6aa01b7aa308c71991ef5baedd049多次利用register函数增大自身的gems,再利用upgradeVillage函数在消耗gems的同时累加yield属性,最后调用sellVillage方法把yield转换为money后再提款。本次攻击导致项目损失了约262个BNB,约7.2万美元。Beosin Trace追踪发现被盗金额仍在攻击者账户,将持续关注资金走向。[2022/11/16 13:10:39]

Web3 社交杀手级应用还未出现,我觉得抛开行业成熟度原因主要在于两点 :

Beosin:EthTeamFinance项目遭受到了漏洞攻击事件简析:据Beosin EagleEye 安全预警与监控平台检测显示,ETH链上的EthTeamFinance项目遭受漏洞攻击,攻击合约0xCFF07C4e6aa9E2fEc04DAaF5f41d1b10f3adAdF4通过LockToken合约的migrate函数没有正确验证_id和params的漏洞,将WTH,CAW,USDC,TSUKA代币从V2流动性池非法升级到V3流动性池,并且通过sqrtPriceX96打乱V3流动池的Initialize的价格,从而获取大量refund套利。共计套利了约1300多万美元。[2022/10/27 11:49:12]

第一,在此之前多数 web3 社交产品依然在走制造数据孤岛的老路。怎么理解呢?基于区块链的社交产品确实可以让用户成为他数据的 owner,但产品数据的边界依然是合约,如果用户使用了 10 个产品,则用户的数据会散落在 10 个独立合约中,且每个产品合约的数据格式和标准都不一样,虽然透明了,但孤岛依然存在。

慢雾:DEUS Finance 二次被黑简析:据慢雾区情报,DEUS Finance DAO在4月28日遭受闪电贷攻击,慢雾安全团队以简讯的形式将攻击原理分享如下:

1.攻击者在攻击之前先往DeiLenderSolidex抵押了SolidexsAMM-USDC/DEI的LP。

2.在几个小时后攻击者先从多个池子闪电贷借出143200000USDC。

3.随后攻击者使用借来的USDC在BaseV1Pair进行了swap操作,兑换出了9547716.9个的DEI,由于DeiLenderSolidex中的getOnChainPrice函数是直接获取DEI-USDC交易对的代币余额进行LP价格计算。因此在此次Swap操作中将拉高getOnChainPrice函数获取的LP价格。

4.在进行Swap操作后,攻击者在DeiLenderSolidex合约中通过borrow函数进行借贷,由于borrow函数中用isSolvent进行借贷检查,而在isSolvent是使用了getOnChainPrice函数参与检查。但在步骤3中getOnChainPrice的结果已经被拉高了。导致攻击者超额借出更多的DEI。

5.最后着攻击者在把用借贷出来DEI兑换成USDC归还从几个池子借出来的USDC,获利离场。

针对该事件,慢雾安全团队给出以下防范建议:本次攻击的原因主要在于使用了不安全的预言机来计算LP价格,慢雾安全团队建议可以参考Alpha Finance关于获取公平LP价格的方法。[2022/4/28 2:37:18]

从而导致用户的社交数据依然无法打通,用户在各个产品中产生的数据虽然属于其自己,因为独立的合约和不一致的数据格式,依然无法「带走」,假设一个产品挂了,那在此之前所产生的社交数据也很难被利用起来,除非其他的产品专门投入资源去做数据同步,所以目前 web3 社交产品只解决了拥有的问题,而非连接。

慢雾:Spartan Protocol被黑简析:据慢雾区情报,币安智能链项目 Spartan Protocol 被黑,损失金额约 3000 万美元,慢雾安全团队第一时间介入分析,并以简讯的形式分享给大家参考:

1. 攻击者通过闪电贷先从 PancakeSwap 中借出 WBNB;

2. 在 WBNB-SPT1 的池子中,先使用借来的一部分 WBNB 不断的通过 swap 兑换成 SPT1,导致兑换池中产生巨大滑点;

3. 攻击者将持有的 WBNB 与 SPT1 向 WBNB-SPT1 池子添加流动性获得 LP 凭证,但是在添加流动性的时候存在一个滑点修正机制,在添加流动性时将对池的滑点进行修正,但没有限制最高可修正的滑点大小,此时添加流动性,由于滑点修正机制,获得的 LP 数量并不是一个正常的值;

4. 随后继续进行 swap 操作将 WBNB 兑换成 SPT1,此时池子中的 WBNB 增多 SPT1 减少;

5. swap 之后攻击者将持有的 WBNB 和 SPT1 都转移给 WBNB-SPT1 池子,然后进行移除流动性操作;

6. 在移除流动性时会通过池子中实时的代币数量来计算用户的 LP 可获得多少对应的代币,由于步骤 5,此时会获得比添加流动性时更多的代币;

7. 在移除流动性之后会更新池子中的 baseAmount 与 tokenAmount,由于移除流动性时没有和添加流动性一样存在滑点修正机制,移除流动性后两种代币的数量和合约记录的代币数量会存在一定的差值;

8. 因此在与实际有差值的情况下还能再次添加流动性获得 LP,此后攻击者只要再次移除流动性就能再次获得对应的两种代币;

9. 之后攻击者只需再将 SPT1 代币兑换成 WBNB,最后即可获得更多的 WBNB。详情见原文链接。[2021/5/2 21:17:59]

第二,开发一个社交产品的成本也很高。其实这个成本主要还是在中后端,但是中后端的功能确可以被穷举且标准化,不外乎就是点赞、关注、发帖、收藏等功能,而前端业务层看似纷繁复杂也不过就是基于中后端标准功能的组合拼装 。

Harvest.Finance被黑事件简析:10月26号,据慢雾区消息 Harvest Finance 项目遭受闪电贷攻击,损失超过 400 万美元。以下为慢雾安全团队对此事件的简要分析。

1. 攻击者通过 Tornado.cash 转入 20ETH 作为后续攻击手续费;

2. 攻击者通过 UniswapV2 闪电贷借出巨额 USDC 与 USDT;

3. 攻击者先通过 Curve 的 exchange_underlying 函数将 USDT 换成 USDC,此时 Curve yUSDC 池中的 investedUnderlyingBalance 将相对应的变小;

4. 随后攻击者通过 Harvest 的 deposit 将巨额 USDC 充值进 Vault 中,充值的同时 Harvest 的 Vault 将铸出 fUSDC,而铸出的数量计算方式如下:

amount.mul(totalSupply()).div(underlyingBalanceWithInvestment());

计算方式中的 underlyingBalanceWithInvestment 一部分取的是 Curve 中的 investedUnderlyingBalance 值,由于 Curve 中 investedUnderlyingBalance 的变化将导致 Vault 铸出更多的 fUSDC;

5. 之后再通过 Curve 把 USDC 换成 USDT 将失衡的价格拉回正常;

6. 最后只需要把 fUSDC 归还给 Vault 即可获得比充值时更多的 USDC;

7. 随后攻击者开始重复此过程持续获利;

其他攻击流程与上诉分析过程类似。参考交易哈希:0x35f8d2f572fceaac9288e5d462117850ef2694786992a8c3f6d02612277b0877。

此次攻击主要是 Harvest Finance 的 fToken(fUSDC、fUSDT...) 在铸币时采用的是 Curve y池中的报价(即使用 Curve 作为喂价来源),导致攻击者可以通过巨额兑换操控预言机的价格来控制 Harvest Finance 中 fToken 的铸币数量,从而使攻击者有利可图。[2020/10/26]

所以我认为 lens 也是基于这两点认为如果他们再做一个社交产品,也不过就是市面上的 10 个产品变成了 11 个,继续增加孤岛,所以他们把自己向下藏了一层,首先制定了标准,将什么样的行为需要铸造为 NFT,发布的内容需要用什么样的数据格式等问题都标准化,能够保证基于其标准所开发出的产品是不存在孤岛问题。

其次通过阅读其开发者文档会发现 lens 的模块化设计非常充分,将能力拆分的颗粒度很细,尽可能做了解耦,从而便于开发者在上面去灵活的拓展业务逻辑。 

如下图所示,这是 lens 的主合约,可以看到其上面已经产生了 540 万条社交数据,包含了发布、收藏、关注等动作,所以 lens 打造了一个大陆,而不是一个孤岛。 

关于标准,分为接口标准和数据标准,首先说一下接口标准,如下图 1 所示这是 lens 提供的所有一级 API,基本上社交关系的主要能力都包括了,图 2 是单关注这一个能力所拆分出来的二级 API,可见其颗粒度是做的很细的,开发者可以基于这些 API 自由拼装组合。

数据标准则又细分为 NFT 和非 NFT 两类,lens 的核心数据围绕 NFT 展开,首先每个用户需要一个.lens 域名才能拥有个人主页,其他的数据都是挂在这个域名下的,这个域名本身是一个 721 类型的 NFT,从这个角度也算是 DID 的范畴。

除了域名外用户的关注、收藏等动作也会被铸造为 NFT,如图 1 当用户进行关注时,触发了合约的 follow 函数,从所产生的链上数据可以看到 mint 了一个 NFT,如图 2 当取关的话则会将该 NFT 销毁掉 。

社交数据其实是索引关系非常复杂的,lens 的接口对于开发者也非常方便,将链上数据包了一层不需要开发者自己去分析数据,而是如下图为例,如果需要查询某个人的关注者,通过接口可以直接以很清晰的以拉清单的形式将数据获取到并层层下钻。

另外对于 post 内容发布,首先它不是作为 NFT 呈现的,我在此之前还以为用户发的内容都会铸造成 NFT,如图 1 所示就是正常的链上数据写入的过程,这里我还没有理解清楚为什么 lens 不把他们做成 NFT。如图 2 这是 post 的写入数据,包含的数据有挂载在谁身上,挂载的内容是什么,发布内容用 contentURI 一个外链来索引 。

具体内容则是存储在链下的,contentURI 会指向一个存储地址,但是 lens 对于数据的存储格式也是有一套标准规范的,这样就可以达到上文中提到的各产品基于 lens 构建后可以互通的效果,如图 1 为解析出来的一个数据格式,包括名称、内容、类型等。图 2 为枚举的数据格式,图文音视频等都包括,从而结构化内容数据。

以上就是对于 lens 的浅研,不愧是 Aave 出来的,确实对 web3 的原生很透彻,基于 lens 诞生出来 web3 原生 twitter 的可能性还是很大的,也许是研究还不够深,也存一些疑惑,比如个人主页是一个.lens 的 nft 域名,而所有的数据和关系链都挂在上面,但是该 nft 又是可以买卖的,社交关系可以买卖我觉得还是挺奇怪的。    

区块律动BlockBeats

媒体专栏

阅读更多

金色财经

CertiK中文社区

虎嗅科技

web3中文

深潮TechFlow

念青

DeFi之道

CT中文

郑重声明: 本文版权归原作者所有, 转载文章仅为传播更多信息之目的, 如作者信息标记有误, 请第一时间联系我们修改或删除, 多谢。

地球链

[0:15ms0-1:41ms