社区
浅研了一下 LensProtocol
由Aave团队打造的web3社交协议,它本身不是一个前端的社交产品,而是一个中后端的协议服务层,开发者基于其提供的API可以在上面低成本构建出社交产品,这应该也就是为什么lens的logo是一束花的原因吧,它希望自己成为这片社交花园里的根和土壤,开发者们可以在其之上种出鲜花。
相信大多数人对于web3的主要叙事都在于痛斥web2的facebook、twitter等公司垄断用户数据权,制造数据孤岛,用户拥有自己的社交数据和关系链也是web3原生的重要叙事,于是也冒出了很多号称web3 twitter的产品,但到现在为止web3的社交产品依然没有出现杀手级应用,我觉得抛开行业成熟度原因主要在于2点。
第一,在此之前多数web3社交产品依然在走制造数据孤岛的老路,怎么理解呢?基于区块链的社交产品确实可以让用户成为他数据的owner,但产品数据的边界依然是合约,如果用户使用了10个产品,则用户的数据会散落在10个独立合约中,且每个产品合约的数据格式和标准都不一样,虽然透明了,但孤岛依然存在。
从而导致用户的社交数据依然无法打通,用户在各个产品中产生的数据虽然属于其自己,因为独立的合约和不一致的数据格式,依然无法“带走”,假设一个产品挂了,那在此之前所产生的社交数据也很难被利用起来,除非其他的产品专门投入资源去做数据同步,所以目前web3社交产品只解决了拥有的问题,而非连接。
第二,开发一个社交产品的成本也是很高的,其实这个成本主要还是在中后端,但是中后端的功能确可以被穷举且标准化,不外乎就是点赞、关注、发帖、收藏等功能,而前端业务层看似纷繁复杂也不过就是基于中后端标准功能的组合拼装。
所以我认为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又是可以买卖的,社交关系可以买卖我觉得还是挺奇怪的。
本文转自Twitter:@jason_chen998