浅谈 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 的原理并非那么熟悉,只是通过自己的想法提出一个可行的方案。你也可以在评论区探讨一下这样做的可行性。
最后的最后,养成写完文章即时润色和修订的习惯,比什么都强!