💡为什么我们会需要一个甚至多个 Pinning DAO

通过 Planet 发布内容,是一种完全去中心化的 local-first 模式。所有的内容不仅存储是在本地,提供对外服务的 IPFS 节点,也是运行在本地机器上。这样的好处是,整个内容的发布和订阅流程,不会受制于外部的大公司的基础架构。

但这样的完全去中心化的做法,也会带来一些挑战:

因为提供对外服务的 IPFS 节点也在本地,因此需要程序一直运行。这对于 Mac mini 或者 Mac Studio 这样的桌面设备可能不是太大的问题,但是对于笔记本电脑的用户就会是一个问题。

对于笔记本电脑的用户,因为不可能让设备保持 24x7 开机及联网,那么最简单的解决方案还是引入服务器来帮助分发。如果你有自己的 Linux 服务器,那么下面是在自己的服务器上启用 IPFS 来帮助 Planet 内容分发的操作步骤和原理。

安装 IPFS for Linux Server

  • 从这里 https://github.com/ipfs/kubo/releases 下载 Linux 版本的 IPFS 服务器端。就是一个可执行文件,我通常的做法就是把这个文件 ipfs 复制到 /usr/local/bin/ipfs,这样就可以随时运行 ipfs 指令。
  • 启动 IPFS 进程 ipfs daemon,可以使用 screen、tmux 或者 supervisord。

IPFS 进程启动之后,就可以通过下面这样的指令来 pin 内容了。

ipfs pin add /ipns/olivida.eth

所谓 pin 内容这个操作,其实很类似 BitTorrent 下载中的「做种」这个概念。就是,如果一份内容被 pin 了,意味着本地保存了一份经过完整性校验的拷贝,如果网络上的其他节点也要请求这份内容,那么就是所有有拷贝的机器来一起提供,就像 BitTorrent 下载时,是所有 seeder 来一起服务下载请求。

你可以在 pin add 使用 IPNS 地址,无论是 k 开头的原生 IPNS 地址,或者是 ENS 地址,都可以支持:

ipfs pin add /ipns/planetable.eth
ipfs pin add /ipns/k51qzi5uqu5dgv8kzl1anc0m74n6t9ffdjnypdh846ct5wgpljc7rulynxa74a

如果你把这样的指令放到 crontab 中,那么就可以实现追踪 IPNS 背后的 CID 的变化,然后一直 pin 最新内容。

Pinning DAO

上面的这个操作过程,对于没有 Linux 服务器的用户来说,还是太麻烦了。我们需要更简单的方式,而这件事情非常适合做成一个 DAO。

DAO 存在的意义,就是服务成员的共同需求。

Pinning DAO 里,这个共同需求就是:成员需要全世界各地的服务器,来保证发布在 IPFS 上的内容,是永远可用的。为了持续实现这一点,于是需要一个或者多个这样的去中心化自治组织。

我希望接下来能够看到这样的组织的出现。

为了完整实现这个愿景,将会需要构建很多新的开源软件。

比如一个用 RainbowKit 或者 ConnectKit 实现登录的网站,ENS holder 登录并且通过 Juicebox 付款成为 DAO Member 之后,就可以通过这个 DAO 部署在全球各地的基础架构来 pin 自己发布在 ENS 上的网站。

而除了提供 pin 服务之外,DAO 也可以为成员提供自建的 Plausible 流量统计之类的服务。

虽然内容通过 DAO 进行了分发,但是权威版本依然是完全控制在用户本地。而不是像之前,因为使用了 Web 2.0 大公司的平台来存储和分发内容,内容的实际存活就完全被大公司所控制了。如果一个 DAO 提供的服务成员不满意,那完全可以发起另外一个,充分的竞争会带来最好的产品和服务。