# Lens Protocol ：Web3 去中心化社交网络的设计与实现

By [mm](https://paragraph.com/@mm-2) · 2022-05-06

---

![](https://storage.googleapis.com/papyrus_images/312f340a817df3d48789dbfabb76649c2bafbb01b71a6ee186180eef7114273d.png)

### 什么是 Lens 协议？🌿

Lens 是一个部署在 Polygon 区块链网络的 Web3 社交图谱协议。

设计目标是让创作者拥有自己和粉丝之间的链接关系，形成一个完全可组合的、用户拥有的社交网络。

协议从一开始就考虑到了模块化，允许添加新的功能和修复问题，同时确保用户拥有的内容和社交关系不会改变。

> 关于 `Lens` 名称的含义，不是直译的「镜头」，而是`Lens Culinaris`。
> 
> Lens Culinaris 🌿 （小扁豆）是一种高大的分枝植物，会结出透镜状的豆荚种子。它与某些土壤细菌有共生关系，地下的根部会为邻近的植物提供氮源。

### 有何不同？

Lens 协议试图解决现有社交媒体网络中的主要问题：Web2 社交网络都是从其专有的、中心化的数据库中读取数据，没有可移植性。

你的个人资料、朋友关系和内容都被锁定在一个特定的网络中，并由网络运营者拥有，例如 Twitter 和 Facebook。这导致每个社交网络平台都在为争取你的注意力进行零和游戏。

Lens 协议纠正了这一点，它是一个用户拥有的、开放的社交网络，任何应用都能以可拔插的方式加入其中。

由于用户可以掌控自己的数据，他们可以把数据带到任何建立在 Lens 协议之上的应用中。作为内容的真正所有者，创作者们不再需要担心个别平台的算法和政策变动，从而失去内容、粉丝以及以此为基础的生计。

此外，使用 Lens 协议的每个应用程序都会使整个生态系统受益，将零和游戏变成协作游戏。开发者可以设计有价值的社交体验，而不是利用各种机制来锁定用户的注意力，使其留在自己的平台。

### 架构设计

首先看看一下 Profile 主页的创建和发布：

用户可以在 `LensHub`上创建个人主页，创建后将收到一个按顺序自增 ID 的 Profile NFT，成为该 Profile 主页的实际控制者。

Profile 主页所有者可以：

*   发布内容到 Profile 主页，发布类型包括：
    
    *   Post（帖子）：图文或者其他内容
        
    *   Comment（评论）：包含评论内容，同时有一个指向 Post（帖子）的指针。由于 Comment（评论）包括一个指针，这将触发被指向内容的 `Reference Module` 逻辑（如果被评论 Post 有设置的话）
        
    *   Mirror（转发）：相当于传统意义上的 "分享"，没有内容，但有一个指向被转发 Post（帖子）的指针。由于 Mirror（转发）包括一个指针，这将触发被指向内容的 `Reference Module` 逻辑（如果被转发 Post 有设置的话）
        
*   设置 Profile 主页的 `Follow Module`：
    
    *   `Follow Module`可以设置为经过协议管委会认证通过的智能合约（也就是白名单列表，防止恶意代码），包含了当主页被关注时必须执行的逻辑：例如，你可以在`Follow Module`加上必须付费才能关注的功能
        
*   设置 Profile 主页的图片 URI
    
*   设置 Profile 主页的 "分发者"：
    
    *   可以将 Profile 主页授权给「dispatcher」，让其可以发布内容到你的 Profile 主页或者设置 Profile 主页的 URI
        

其他用户可以：

*   关注 Profile 主页：
    
    *   关注时将执行该主页的 `Follow Module` 逻辑（如果有配置的话）
        
    *   关注后将铸造一枚按顺序自增 ID 的 `Follow NFT`。`Follow NFT` 有一个由主页所有者设置的 URI
        
*   收藏发布内容：
    
    *   收藏时将执行 Post（帖子）的 `Collect Module` 逻辑（如果有配置的话）
        
    *   收藏后将铸造一枚按顺序自增 ID 的 `Collect NFT`。`Collect NFT`的 URI 指向被收藏内容的 URI
        

### 测试网体验

访问基于 Lens 协议开发的社交网络平台：[https://lenster.xyz/](https://lenster.xyz/)

![image.png](https://storage.googleapis.com/papyrus_images/903a7ecad8c7dc147174d06e82c9fb3a6f72415c5fa5d55f91d7977d67a8ff0d.png)

image.png

使用你的 `MetaMask` 小狐狸浏览器插件钱包登录网站，会提示切换到 `Polygon Testnet` 测试网，如果你的钱包内没有测试币，可以点击页面右边的`Get testnet tokens` 获取

登录成功后就可以创建个人主页，相当于 Web2 社交平台的注册：

![image.png](https://storage.googleapis.com/papyrus_images/0f36c6d4a6c26f0f469f682fd89dff084039df58e3b203bc0632c648393b3c2a.png)

image.png

注意这里的 `Handle` 就是你在社交平台的 ID，具有协议级别的唯一性，类似于 `ENS` 的域名，就像 `Twitter` 上可以通过 `@elonmusk` 圈人，存在的投资套利的空间，可以大量囤起来转售。

按照 Lens 协议规范，每个主页都是一份 ERC721 兼容的 NFT ，未来可能直接挂到 OpenSea 出售：

![image.png](https://storage.googleapis.com/papyrus_images/2a21ba8f919206395e6d309f5b6fcfc82664b1c8e61190f2ca72e032684852b2.png)

image.png

创建个人主页 Profile 后，就可以开始发布帖子，就像 `Twitter` 或者 `微博` 一样，也可以评论、转发、收藏他人的帖子：

![image.png](https://storage.googleapis.com/papyrus_images/7a4910bacc22e71a2beab0f59b4f8c80cb357fbd3ca6d772f98f6f2017683614.png)

image.png

注册、发帖、评论、收藏、转发、关注操作都在链上执行，需要消耗 gas fee，这也是 Lens 协议部署在 Polygon 区块链网络的原因：毕竟和以太坊主网相比，Polygon 网络交易费用要便宜很多

需要注意的是，发布的内容是存储在 `IPFS` 或 `Arweave` 等去中心存储网络，或者类似 Amazon S3 等中心化存储平台中，区块链上只保存内容链接

上文说到 Lens 协议是模块化设计，用户可以自定义关注、评论、转发需要执行的逻辑，这里就有一个很有趣的示范：

![image.png](https://storage.googleapis.com/papyrus_images/c929e4397544e5c12704dd2c5920f807777ee431835784a94d5f65b21248d20f.png)

image.png

在关注之前，需要付费，从而拥有更多权限，包括：

*   允许在博主内容下评论；
    
*   允许收藏博主内容；
    
*   将获得专属徽章；
    
*   获得更高的投票权限；
    
*   ......
    

### 结束语

Lens 设计了一种去中心化的社交网络协议，将用户的关键社交行为和内容上链，从而实现用户控制自己社交图谱和内容的目标

用户可以自由地在基于 Lens 协议实现的社交平台上无缝迁移，不用再担心个人资料、关注人、粉丝或者发布的内容丢失

开发者可以更容易地实现一个社交网络平台，没有了冷启动的问题，也不存在 Web2 的巨头垄断。更重要的是每个不同的社交应用都会给整个网络带来价值，不再重复建设，将零和游戏变成了协作游戏，实现用户、开发者、协议三方共赢的局面

Web3 已来，加速上车，快去体验一下这个全新的社交网络平台吧。也许这些交互记录就是 Lens 协议上线主网后，空投治理 Token 的依据

最后，在此公众号回复关键词 「Lens」联系管理员进群交流

参考资料：

*   [https://lens.dev](https://lens.dev)
    
*   [https://lenster.xyz](https://lenster.xyz)
    
*   [https://twitter.com/LensProtocol](https://twitter.com/LensProtocol)

---

*Originally published on [mm](https://paragraph.com/@mm-2/lens-protocol-web3)*
