Astrian

巴别塔里的诡骗师,本体是一只朝陇山兔。 发布的文章通常以 CC BY-NC-SA 4.0 协议授权,商业使用联系 copyrights@astrianzheng.cn。

浅谈 Matters 及 IPFS 技术框架下修改文章的办法

最近,一篇《教练,我想修改文章……》的文章,把 Matters 平台最大的「缺陷」暴露无疑:没错,与大多数写作平台不太一致,Matters 并不支持修改文章,最多只能修改关联文章,其他内容——包括标题、正文、标签等等,皆为「一旦发出,概不能改」,致使许多没有细致润色习惯的作者叫苦不迭(包括我,我之前不小心在小说里写了一个 巨大的逻辑错误……)。

另一个与其他平台不太一样的地方,就是 Matters 是为数不多(很有可能也是唯一一个)在这种写作社区使用 IPFS(Inter Planetary File System)的网站,当用户在 Matters 发布文章,Matters 就会将你的大作发布至 IPFS。而这便(有可能)是 Matters 无法修改的重要原因。

IPFS 是什么?为什么有了它就不能修改文章?

维基百科对于 IPFS 有这样一段 介绍

IPFS 是一个对等的分布式文件系统,它尝试为所有计算设备连接同一个文件系统…… IPFS 提供了一个高吞吐量、按内容寻址的块存储模型,及与内容相关超链接…… 文件的分发采用一个基于 BitTorrent 的协议。其他查看内容的用户也有助于将内容提供给网络上的其他人。

如果有兴趣也有余力的话,我个人推荐在互联网上搜索更多有关资料来看看。但这里我们需要知道的是,IPFS 是一个分布存储式系统。

这里我们可以参照同样为分布式计算、存储的区块链系统。区块链系统本身也具有不可篡改的特性,因为区块链系统「每个人都有一份账本」的逻辑本身具有防止篡改的验证机制:当有人试图广播篡改的交易记录时,其他用户核对自己的账本时,就会发现交易异常,而被系统直接抛弃。(当然,实际的验证过程复杂很多,涉及许多区块链的工作机制问题。)

IPFS 的「不可改」特性与其类似:当你发布一篇文章到 IPFS 网络后,网络就会自动将你的文章复制到其他 IPFS 节点中,而且可以预见的是,随着时间增长,接收到你的新文章的节点也就越多。此时,若你需要修改文章,你就需要同时将你的修改广播至其他节点。在这种情况下,100% 保证你的文章能被及时修改,是几乎绝对无法完成的任务(当然,并不代表真的做不到)。

那么,有什么方法可以改文章吗?

对于 IPFS 的「不可改」这个特性,我之前就已经有一个也许可行的方案:在 IPFS 存储的文章不是「文章」本身,而是「文章的版本」。换句话来说,就如同代码管理工具 git 一样,每发布、修改一次文章,都作为文章的一个版本存储至 IPFS 系统。

设想步骤如下:

  • 用户提交文章之后,额外在发布至 IPFS 的文章中注明提交时间及「可能有所修订」的提示,并插入链接至 Matters 原文的链接。
  • 用户选择修改文章,Matters 重新向 IPFS 发布修订后的文章全文,并插入第一个版本的「指纹」或「密钥」。
  • 再次选择修改文章时,只需插入前一个「指纹」或「密钥」即可, 需要插入所有版本的密钥(类似 单向链表)。

这样做,有这些好处:

  • 最显而易见的好处:文章可以做到修订和增补,不受 IPFS 本身缺陷的影响。
  • 文章每一次修改都会自动进行「快照」,避免恶意大幅修改造成信息遮掩和丢失。

当然,也会有这些潜在的坏处:

  • IPFS 原理可能无法很好地处理存储「版本」带来的冗余数据。
  • 在 IPFS 阅读文章时,不能 100% 确定能获取到最新版本的文章(虽然推荐在文章中插入修订提示并指向 Matters,但似乎并非完美解决方案)。

话说回来,我对 IPFS 的原理并非那么熟悉,只是通过自己的想法提出一个可行的方案。你也可以在评论区探讨一下这样做的可行性。

最后的最后,养成写完文章即时润色和修订的习惯,比什么都强!

【Matters】教練,我想修改文章……

發佈評論

看不過癮?

一鍵登入,即可加入全球最優質中文創作社區