如何实现Web3版本的Email科技2022-05-16 06:05 最近看了几个基于区块链实现聊天、或者邮箱的项目,包括:- 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的讨论空间。 微信扫码关注该文公众号作者戳这里提交新闻线索和高质量文章给我们。来源: qq点击查看作者最近其他文章