最近看了几个基于区块链实现聊天、或者邮箱的项目,包括:
- MetaMail
- Dmail
- Blockscan
- Secretum
- Jabber
- OpenChat
前面三个是一类,后面三个是一类。我认为长期应该是后面三者的实现方式。
更进一步,我研究了区块链之间的的消息机制,包括XMCP、IBC,以及LayerZero。后面我们写文章专门分析,零碎的一些想法和研究的点,都记录在知识星球里。
这篇文章我们聚焦到Web3版本的Email。主要聚焦几个问题
- 需求够刚么
- 当前的实现问题
- 如何基于以太坊实现
需求够刚么

Web2下的Email,其实挺Web3的。

Email应用非常广泛,不像社交网络那么火。但其实也是我们Web2世界里的一个身份标识了。我们有很多网站的服务,都是使用Email登录的,就如同我们现在使用钱包地址登录DApp一样。不过Email的登录方式更简单,用户体验更好。
所以,很多开发者在进入Web3的时候,选择的方向就是通过邮箱和钱包的绑定,来实现更好的体验,降低更多人进入加密世界的门槛。例如blockto这个项目就不错。
说会Email,传统Email的最大问题就是垃圾邮件一直无法解决,似乎无论我们的AI识别程序多么的强大,仍然无法准确识别垃圾邮件。
这问题背后是否有强大的利益链条我们不去讨论,现实就是被垃圾邮件骚扰的大家苦不堪言。类似的iMessage,Telegram,Discord等都是垃圾信息泛滥。
国内的产品在这方面做得还不错,但根本原因并不是技术做得更好。
所以,垃圾邮件是最大的痛点。而这个痛点,区块链比较擅长解决。
至于其他的安全、隐私、以及邮件服务掌握在几家大的服务商手里等等,都是需求点,但并不是只有区块链才能够实现的,只是区块链可以做得更好。
前面说Web2下的Email其实挺Web3的,原因有几点:

1. 邮件采用的是开放标准的协议
2. 用户可以选择不同的客户端
3. 用户可以选择不同的服务商
4. 用户可以选择自己保存邮件
用户可以选择,可以拥有。哪怕不是只有自己拥有。
用户可以拥有自己的邮件,已经比大多数的Web2应用先进了。不过,控制权仍然没有在用户手里,如果想要控制权在用户手里,那需要通过区块链来实现。
这样的实现,用户的需求会比较小。希望拥有的用户数量少一些,希望能够掌控的用户数量要更少一些。
有时候,少才可能显得珍贵。
对比传统Email,区块链版本的Email可以这样:
1. 邮件账号归属是自己的,不需要服务商的担保
1. 邮件内容归属是自己的,不需要服务商担保
2. 不会再有垃圾邮件泛滥
3. 邮件内容私密在自己掌控下
4. 邮件的永久存储,不需要在线下自己备份管理数据
Web2的邮件服务是免费的,Web3的邮箱不是,甚至在一些时候还是很贵的。用户需要什么,看各自的喜好。
所以,Web3的mail目前不是一个广泛的刚需,探讨Web3版本的Email的意义在于,我们需要了解WEb3版本能够带来什么,如何实现。也许创新就在这其中萌发。
当前实现的问题

其实在讨论Web3的Email之前,有一个很区块链的问题。链上的地址都是公开的,我如果想联系地址背后的人,想给地址背后的人发消息,要如何实现?
这叫address to address message,或者wallet to wallet message,叫法有差别,也带来了实现上的差异。
基于特定的钱包的实现比较好做,但是不同通用,大家感兴趣可以自行搜索。
基于地址的实现,有很多的尝试,有一些是中心化的方案,例如上面列的Etherscan,或者Metamail,很大程度上,只是把钱包的地址和现在的邮件系统做了整合,可以给钱包地址+邮箱的后缀发消息、或者发邮件。
这样其实并没有解决我上面提到的问题,有些鸡肋。
这里有一个经验分享:很多人担心Web3的产品用户量少,所以想借助Web2的东风,和Web2的做兼容。降低用户迁移的门槛。我认为这不是一个好的思路。
和Web3的兼容,势必会牺牲Web3的特性。而且,没有用户使用,根本原因还是在于没有解决实际的需求。所以,从Web3出发做设计,不要搞一些四不像的东西。
前面提到的例子中的后三个,完全是区块链来实现的,思路基本上差不多,具体的分析不在这里展开(项目简单的叨叨会发在知识星球),接下来一段,我们以eth为例,讨论如何做一套实现,原理上差不多。
如何基于以太坊实现

我们把问题做一个抽象,邮件或者消息就是:把一段数据从一个钱包,发送到另外一个钱包的地址。最基本的机制是,数据要能够传递,至于数据本身如何解析,如何使用,是上层DApp的事情。邮件的DApp就可以按照邮件的格式解析;微信的DApp,就可以按照微信的方式解析。
那在区块链上,如何发一段数据发送到另外一个钱包地址?这就是:交易。
我们可以通过对交易附加一些数据,使得数据可以伴随着交易,通过区块链的机制,发送到接受者的地址。接受者收到了一个“特定”的交易,就是收到了某种数据,然后用不同的DApp打开,就可以查看数据。
大家都知道区块链上的存储很贵,尤其是以太坊,被称为贵族链。一封邮件的内容会比较大,甚至有的会传输文件附件。这些都放在链上传输,这得多么土豪?
所以,术业有专攻,我们可以把邮件的内容发送到IPFS网络,比如通过web3.storage,然后获取到邮件的唯一标识。我们保存在IPFS网络中的数据,都有一个唯一标识,这是基于IPFS的内容寻址机制实现的。
然后,这个唯一标识相对于原始数据就小很多,可以便宜的链上存储。
再具体一些,当用户在Etherscan,或者小狐狸上,看到自己收到了新的交易的时候,如何知道这个一个邮件的通知,或者消息的提醒?
所以,这个交易最好是特别的,容易作出区分的。
比如,我们可以把邮件作为NFT?每次发送邮件的过程,就是一个铸造的过程。这样用户的Etherscan上看到的是nft铸造的交易,可以跟着这个交易找到邮件的内容。
再比如,我们地址不好记忆,我们可以给钱包地址创建别名,类似域名,或者ENS的机制。这也是一个NFT。
这样看,一个完整的系统就有了雏形,但这里没有双向加密,大家可以想象如何实现,比较简单。
当然,可以在实现合约的时候绑定ENS作为别名,但ENS为了对标传统的域名,在一个区块链的世界里,竟然做了有时间限制的实现,也就是某一个时刻你们给zhangcheng.eth转账,收到的人可能不是我。so sad。
所以,如果我来实现这个邮箱的别名机制,一定是永久的。但转账和交易自由。
另外,IPFS并不能保证存储的可靠,免费的嘛。如果想让邮件的内容永久存储,可以考虑Arweave。但如果从Arweave的角度看,做一个Web3的email,太简单了,是天然就可以实现的。
我们上面讨论的是以太坊内的实现,那么区块链之间呢?就涉及到了我前面提高的XCMP和IBC等,这些机制更加重要,在需求上也更加迫切。更值得我们深入得探讨。
我本来是想写XCMP这些的,但是Web3的Email就说了这么多,所以可以尝试的真的很多。
希望可以和大家一起交流Web3的相关内容。

下面是我的知识星球,不定期分享项目心得、技术随想。希望在浮躁的当下,有一个客观的、激烈的Web3的讨论空间。
继续阅读
阅读原文