探索Swarm的“Whisper”通信功能

2021-06-25 18:08:50 2688

Swarm项目是一个储存和通信的基础设施,在存储层面类似的协议如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的加密方法啊,关于他们是怎么打包怎么遍历怎么运作的,或者想要了解更多等等这些可以慢慢翻看白皮书,慢慢品味。

声明:所有在本站发表的文章,本站都具有最终编辑权。本站全部作品均系微算力原创或来自网络转载,转载目的在于传递更多信息,并不代表本站赞同其观点和对其真实性负责,所产生的纠纷与本站无关。如涉及作品内容、版权和其它问题,请尽快与本站联系。

相关推荐

  • 微信:aspcool
  • QQ:580076
  • 手机:18992859886
  • 工作时间:9:00~18:00(周一至周五)