探索Swarm的“Whisper”通信功能
WantPoolSwarm项目是一个储存和通信的基础设施,在存储层面类似的协议如IPFS,而在通讯层面就是Whisper。本文将着重探讨Swarm项目中Whisper及一些其他有关的高级功能。
本文结构如下:
- Whisper是什么
- PSS是什么
PSS下的有趣应用之一:Swarm Feed - Hight-level有关的小功能
“我今天早上要吃豆浆和油条”
Passphrase加密
域名解析和URL寻址 - 总结
Whisper是什么
Whisper是什么?这是一个曾经无比高大的组件之一,是一个“gossip-based” dark 通信系统,和Swarm,eth站在同一高度,可惜因为明显缺乏可伸缩性导致从未被广泛使用,以致于不再开发了。
了解Swarm项目的朋友,相信大家到现在都知道Swarm要做的就如同它在白皮书封面上就写了“它是一个储存和通信的基础设施”。
Swarm和IPFS不同的是,Swarm用的储存方式是DISC,而IPFS用的是DHT。
稍微解释下:
“gossip-based”是一种“流言”机制,不理解的但有兴趣的,我这有一篇11年的一篇帖子:https://blog.csdn.net/zhangxinrun/article/details/7087541。
DHT(Distributed Hash Table)是分布式哈希表?,简单来说它就是一种分布式的存储和寻址技术,是将用户正在查找的内容映射到实际存储匹配内容的对等点。
DISC(Distributed Immutable Storage of Chunks)是分布式不可变储存块。是 Swarm 的底层存储模型。
PSS
在我看来PSS是“Whisper+Swarm”的一个组合。
PSS是Swarm中的一个直接点到点传递消息的解决方案。借助了Swarm本来就有的分布式存储,再借鉴了Whisper的crypto,信封结构和API。
依靠PSS,可以做到真正的零泄漏消息传递,匿名和保密,甚至连传递消息的动作也可以不被第三方发现。同时API也允许发布和订阅一个topic。
比如邮政服务一样,当你人在家,就会送过来,你人不在家,就寄存起来等你回来拿。
在通讯中,发送给存储者的消息时,Swarm使用一个叫“特洛伊木马程序”来将消息伪装,特洛伊木马程序的区块是内容寻址形成的,他只有当收件人成功打开特洛伊木马消息时,才知道区块是pss消息,需要其中私钥与公钥相对应,并进行完整性检查/主题匹配,帮你转发的节点是无法区分的这是哪一种消息,也就意味着通信会完全被混淆为通用区块的通信。
也是通过特洛伊木马,pss会有自动邮箱功能,你就算不在线,脱机了也什么都不用做,未送达的消息也会被保留,当你联机了就能看了。当然,邮箱的持续时间是用邮票来控制的,意味着邮票价值的大小决定储存时间的长短。对于其他PSS的功能比如密钥交换,如何处理信封等等可以有兴趣的去看看白皮书,里面介绍的还是蛮详细的。
Swarm Feed
下面我要介绍个用PSS的一个好玩的东西,Swarm Feed
Swarm Feeds是Swarm非常独有的一个特殊功能,Swarm Feeds 提供了一种无需使用 ENS 即可拥有用于更改数据的持久标识符的方法。我把他理解成Twitter或者微博或者不给别人看的微博twitter设置密码这种也许更能理解,在上面,你可以发布有关某个主题的更新,可以阅读其他人关于特定主题的最新信息,还可以看到较旧的帖子。或者存东西的,你就只能写入自己的密钥空间,可以读取您和其他用户的密钥空间。
Feed 被addressed只要两样东西。
1.你的以太坊地址
2.你的主题
因此,每个用户每个主题有一个Feed。
Feed这么好玩,他好处是在Swarm中即时更改内容,无需在上链进行反复操作,使DAPP能够轻松保存内容,快速检索内容的旧版本,真运行后效果不错的的话,那也许一个好玩的推特形DAPP就越来越近了吧。
Hight-level的有关小功能
“我今天早上要吃豆浆和油条”
?现如今,因为很多人对信息文件的私密性感到很担忧,哪天就泄露了,在Swarm中,他提供这个API让你可以存很多私人的信息 (不可告人的小秘密?),就像我们钱包一样,这些信息就和你的钱一样需要密钥才能被解密, 还能管理访问权限,比如我这刚开始在用的石墨文档(没打广告)一样,可以授予别人权限,去更改内容。或者别的不同特权,也可以自行弄个Passphrase,这和password还是有那么点区别,Passphrase的密码可以是“我今天早上要吃豆浆和油条”。
域名解析和URL寻址
先简单介绍一些东西
Swarm Hash 是一个组合块,是用来表示一种更大的结构化数据集。比如files;
Swarm manifest 是 一种结构,用来定义随意path和files之间的映射以表示集合,包含了与集合和对象关联的元数据;而manifest entry是一个reference对files表示形式的根区块。还能指定mime类型(互联网媒体类型),便于浏览器知道怎么处理它。
要是你这三个看的云里雾里也没关系,我再解释下,就是要经过这三个关键的东西,Swarm就可以实现网站,文件系统目录或者键值储存,manifest提供了在Swarm中启用基于URL的寻址的主要机制,同时呢manifest高级APi还提供上传下载目录文件的功能。刚刚说到URL寻址的事,再说下,就是Swarm manifest可以给Swarm提供了索引集合内文档的方法,先是域名解析manifest,然后路径映射到manifest entry,然后从中文件被检索和呈现在浏览器。
BTW,Swarm的话,用的当然是ENS。
总结
本文介绍了Swarm通信方面的基本信息和在Swarm上的一些高级小功能,对于DISC对比DHT要时间来考验,因为DISC要能完美运作也是要依靠团队设计好的激励设计。
而在今天的当下时刻,不仅Swarm的激励措施并未完全上线,其激励措施还有待观察。而木马块和Feeds可以一起使用,形成一个完整的通信系统,具有非常强的隐私功能。关于域名解析啊,Passphrase的加密方法啊,关于他们是怎么打包怎么遍历怎么运作的,或者想要了解更多等等这些可以慢慢翻看白皮书,慢慢品味。