Building planetable.xyz

Pinning
 
Planet Feature Update 12

更新了对 WalletConnect 的支持,众多针对 IPFS 的改进和新功能,全新的 Monochrom 头像图片集,及其他使用体验上的改进。

WalletConnectV2

Planet 更新了对 WalletConnect 的支持,升级到了 WalletConnectV2 版本。现在你可以使用手机钱包,比如 Rainbow,OKX 在 Planet 里登录,并用来向你关注的内容创作者打赏 ETH。同时,作为一个重要的基础架构,这也让将来 Planet 支持其他更复杂的合约调用或是 L2,成为可能。

新的 IPFS+ENS 网关

当你为站点生成分享链接时,现在可以使用一个新的高性能 IPFS+ENS 网关 eth.sucks。在设定了 content hash 的 ENS 末尾加上 .sucks 就可以访问上面的 IPFS 网站,比如:

可以从设置中选择这个新的网关。

前段时间,Cloudflare 宣布他们会停止维护 cf-ipfs 网关。所以,目前,还能用的 IPFS+ENS 网关,就是这些了:

一个健康的生态系统需要更多的参与者。

IPFS 控制面板

现在点击左下角显示 Online 的区域,会看到一个新的 IPFS 控制面板:

显示 IPFS 的版本信息,空间占用,及实时的带宽消耗。如果需要,甚至可以从这个控制面板里暂时关闭 IPFS 进程。

用本地 IPFS 网关打开任意 IPFS 资源

现在可以从 File 菜单下找到一个新的 Open 选项,用它来打开任意的 IPFS 或者 ENS 资源地址。

复用 Tags

在为内容选择 tag 时,现在可以从之前已经用过的 tag 里点击选择。

新的站点头像图片集 Monochrom

99 个全新设计的站点头像图片。

在站点设置中,可以选择在保存新的站点头像图片时,存储为圆形图片。这样做的用途是,如果你希望在浏览器的收藏夹中也显示圆形图片,而不是默认的方形。

新的快速分享拖拽

可以用拖拽任意图片放到文章列表,就可以打开一个新的快速分享发帖方式。

新的短文本输入发送

按下 CMD+D 就可以打开一个新的短文本输入发送框,配合 Sepia 主题,很适合用来记录和分享一些简短的想法。

比如这是一个使用 Sepia 主题的 microblog 站点:

sepia.olivida.eth

其他修复和改进

  • 修复了一个会发生在 macOS 12/13 上的文章列表异常。如果你使用的是 macOS 14 那么不会遇到这个问题。
  • 可以在搜索结果列表中使用键盘上下选择结果打开。
  • 模版中现在可以读取到文章主图(hero image)的高宽信息。
  • 站点 IPNS 发布完成时,会用本地通知方式显示最新的 CID。
  • 新的站点设置:Do Not Index。写入一个 robots.txt 规则文件告知搜索引擎不要索引网站。
  • 新的站点设置:Prewarm。每次新文章发布时,Planet 可以自动在当前选择的公共网关上访问一次新文章地址,这样新文章在公共网关的 IPFS 节点里就会有一份新鲜的副本,让其他访问者可以更快打开内容。
  • Insider 版本现在会有一个单独的二进制文件名称 Planet-Insider 以更方便地和其他版本共存。
  • 增加了 Filebase 节点的 Peering,如果你使用 Filebase 的 Pinning 服务,那么可以让 Filebase 的节点更容易完成同步。
 
💡为什么我们会需要一个甚至多个 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 提供的服务成员不满意,那完全可以发起另外一个,充分的竞争会带来最好的产品和服务。