Handshake / Trustless Torch · 2020-03-09 0

从比特币上分叉的最好的项目?——了解去中心化名字系统 Handshake

本文要聊的是一个2020年初才刚上线的区块链项目,名叫 Handshake ,它的目标是通过给互联网添加一个区块链层,去掉互联网对中心化组织的依赖,让互联网真正实现自由。

互联网从基础协议层面有两个点是被中心化组织控制的,一个是 DNS 系统,另外一个是数字证书系统,也就是 CA 。到应用层,还有一个中心化瓶颈,那就是每个用户在社交网络上的用户 ID ,是被某个公司控制的。而中心化意味着不安全,中心化的数据库很可能被黑客攻击,或者被强势组织干预。如果美国政府认为一个中国的公司有问题,就可以直接给在美国的中心化 DNS 或者 CA 管理组织施加压力,于是这个公司的域名就可能被关停,数字证书被取消。到应用层,中心化的平台公司当然也是个人自由的一个威胁,例如,微信上有些公号的账户被删除了,那么经营了几年的粉丝也就流失了。所以说不自由的互联网,是不安全的,而 Handshake 的出现就是为了让互联网不被任何中心化组织控制。

本文咱们分三部分来聊。第一部分,聊聊 Handshake 到底是什么?,第二部分聊聊它的三大功能。最后一部分介绍 Handshake 的设计巧妙在什么地方,看看它到底有哪些非常接地气的商业上的考量。

什么是 Handshake ?

进入第一部分,咱们先来说说什么是 Handshake ?

官网上是这么描述的

Handshake 通过一个通过数字货币来实现名字注册的系统。

用大白话说,Handshake 是一个通过去中心化思想来实现域名注册的区块链项目。2011年上线了一个 Namecoin 项目,定位也是类似的,挑战的是现有的 DNS 系统。但是注意,官网写的是”名字注册“而不是域名注册,为啥呢,咱们一会再说。深入一点来说,Handshake 首先是一套协议。所谓协议就是一套做事的规范,是不被任何人把持的游戏规则,例如比特币就是一套协议。Handshake 跟比特币有很多共同点,也使用 UTXO 数据结构和 POW 挖矿。另外,Handshake 也是一个区块链网络。游戏规则需要固化成代码才能执行,比特币有很多代码实现,最知名的一个叫做 Bitcoin Core ,大部分比特币矿工都是安装了这个客户端。但是还有一套名为 bcoin 的代码,而 Handshake 的客户端就是基于 bcoin 来开发的。一台机器,安装了 handshake 客户端之后,就能跟其他的类似机器一起,组成一个区块链网络,这个就是 Handshake 网络了,后面咱们要聊的所有的功能的都要基于这个物理载体。最后,Handshake 背后是一个真正的去中心化的组织。其实很多区块链项目背后都是有公司的,稍微好点的背后也有个半中心化的委员会或者基金会什么的,但是 Handshake 就很个性,背后啥都没有。项目目前估值1.36亿美元,投资方不但包括很多区块链风投,还包括 a16z ,红杉,以及彼得蒂尔的创始人基金等大牌互联网风投。

要理解 Handshake ,首先要区分顶级域名和二级域名这两个概念。其实也很简单,例如 bilibili.com ,其中 com 是顶级域名,bilibili 是二级域名。平常我们口头上的注册域名,其实都是去域名注册商那里去购买一个二级域名,例如去注册 google.com ,taobao.com ,其实 google 和 taobao 都是二级域名。全球的顶级域名并不多,例如常见的有 com net org ,顶级域名要分配给哪个域名注册商,是一个名为 ICANN 的非盈利性组织来统一管理的。例如 ICANN 的数据库中会记录,com 这个域名归美国的威瑞信( verisign )这家域名注册商,注册 xxx.com 的工作是由威瑞信负责的,每年域名持有者要向 ICANN 和威瑞信同时支付一些费用。

理解 Handshake 的一个关键点是,我们去 Handshake 注册的是顶级域名,而不是二级域名。说明白一点,如果我在 Handshake 上注册 google ,那么我的域名就是叫 google ,是不带任何其他 .com 或者 .org 这样的其他字符的。拥有顶级域名之后,我可以自己去控制对应的二级域名,例如 happy.google hello.google 这些域名我都可以自由使用。后面我们聊商业落地的时候会详细提到,Handshake 的一个设计初衷就是要和当前 DNS 系统保持共生关系的,但是如果非要说竞争,那么 Handshake 也是跟 ICANN 竞争,而不是跟域名注册商们竞争。刚才我们说,当前的顶级域名是比较少的,添加顶级域名是需要 ICANN 层层投票审批才可以添加的。而 Handshake 上,会定期有大量的顶级域名放出来拍卖,任何人都可以竞拍来获得属于自己的新的顶级域名,这是 Handshake 设计的最大特点,鼓励大家直接用顶级域名当域名用,比如,如果我要搭建个人网站,那么我不需要在某个人拥有的顶级域名 wang 下注册 peter.wang 这个子域名,而是可以直接使用 peterwang(如果 Handshake 上有这个域名) 。当然,起码到目前为止主流浏览器是不支持的只有顶级域名的网址的,如果在 chrome 这样的浏览器中直接输入 peterwang 这一个串字符,会被当成搜索关键字,而不是网址来进行处理。所以 Handshake 需要推动各大浏览器支持自己的这种方式,目前,Brave 浏览器,已经正在考虑支持使用顶级域名的网址了。

再来说说实际操作,如何去购买 Handshake 域名并添加 IP 指向呢?最简单的方法是到 namebase.io 网站上去操作。这个网站提供了跟 Handshake 区块链交互的图形界面,这样就不用我们自己去装客户端,然后敲命令了。网络会定期放出一部分域名来进行维克瑞拍卖,大家用 Handshake 区块链的原生代币 HNS 来竞标,最终出价第二高的人会获得想要的域名。另外,拍卖逻辑是写到 Handshake 区块链内部的,拍卖所得会奖励给矿工。获得域名后,如果需要修改域名指向,可以通过 namebase.io 来进行,操作方式跟当前 DNS 没啥区别,通过添加 A 记录即可。你可能会问,那么 IP 地址的信息是不是保存到链上呢?其实并没有。Handshake 上会记录 DNS 服务器的地址,IP 地址是保存到这些 DNS 服务器上的。这部分的详细原理可以去搜”根区域文件“这个概念,Handshake 的作用只是提供根区域文件,而不是 DNS 服务器,懂技术的同学,一听这些可能就比较清楚了。

以上,就是 Handshake 的基本情况了。

Handshake 的三大功能

下面来详细聊聊 Handshake 给用户提供的三大功能。

第一个功能很明显了,就是注册域名,目标用户是网站开发者。谁不想要一个简短酷炫,同时又不可关停的域名呢?这里有必要补充一个问题,如果我要注册一个二级域名,该如何操作?前面也提过了,当代 DNS 系统下,威瑞信从 ICANN 公司的手里分配到了 com 这个顶级域名,于是我可以去威瑞信那里去注册二级域名。而 Handshake 相当于 ICANN 的地位,在 Handshake 区块链上,每个人都可以成为威瑞信这样的域名注册商,如果我注册了 lee ,你需要购买以 lee 为顶级域名的二级域名,例如 bruce.lee 那就需要找我买。注意,二级域名并不是 Handshake 关心的问题。二级域名的售卖,可以到 namebase.io 网站上进行,但是最终的结果不会写的区块链上。

第二个功能是给每个域名绑定公钥。绑定公钥后,能够达成两个效果。第一,任何能出示私钥的人,就是域名的主人。第二,网站安全通信从此就不依赖于中心化 CA 机构了。要理解 CA 的详细原理,可以去 B 站搜 “好奇猫学院 数字证书”。简单来说,浏览器要跟一个网站服务器通信,需要认证对方的身份,当前 DNS 条件下,网站开发者,购买域名之后,还有去赛门铁克这样的 CA 机构去购买证书。而证书的本质是提供了一种有公信力的域名和公钥的绑定关系。有了 Handshake ,这一步就不需要了,因为 Handshake 区块链上直接就给域名绑定了公钥。而且,所谓的公信力的来源从一个不透明的 CA 机构,变成了多个网络节点,实现了去中心化,其实是更安全了。

第三个作用是注册自主的用户 ID ,或者说是注册不被他人控制的用户身份,这个功能就有意思了,目标用户不是网站开发者,而是每一个普通用户。刚才介绍 Handshake 的时候,我们说它是提供”名字注册“的,Handshake 上注册的名字,除了可以当域名用,也就是当网站的名字用,还可以同时当用户 ID 来用,也就是当人的名字来用。注意,用户 ID 不是昵称,昵称是允许重复出现的,比如微信上可能有很多人都叫”小可爱“,但是用户 ID 要求是唯一的。我在 github 上的用户 ID 是 happypeter ,其他人就不允许再注册这个 ID 了。传统的用户 ID ,都是微信,Facebook ,这样的社交应用提供的,或者说都由中心化的公司提供并控制的。而 Handshake 上注册的用户 ID ,有这么几个特点:

  • 第一个特点,一个 ID 全网通用。如果我在 Handshake 上注册 happypeter 这个名字,就可以用 happypeter 做用户名登录所有支持 Handshake 登录的网站了,而不用像现在这样,每个网站上注册一次。如果把 happypeter 输入到浏览器地址栏中,还可以当网站地址用,真是一箭双雕。
  • 第二个特点,是可以实现通过私钥登录。刚才说了,每个 Handshake 的名字都绑定了公钥,私钥可以用来证明所有人身份,当然也可以用来登录网站。具体方式就是用私钥签名来证明身份了,没有密码学基础知识的同学可能不太好理解。
  • 第三特点,是可以实现点对点的安全通信。前面提到了 Handshake 可以取代 CA ,保证通信双方的身份互信。实际中的通信双方,不仅仅是浏览器和网站服务器,也可以是两个人。当前互联网上,两个人之间的一般是通过微信这样的平台来保证双方的身份的,这样不涉及到 CA 的问题,但是平台本身就是中心化的公司。Email 是一种去中心化的通信方式,但是要想达成安全通信,需要 PGP 加密,过程中也还是离不开中心化的 CA 。而有了 Handshake ,这个问题就就解决了,两个用户 ID 之间可以点对点的进行安全通信了。
  • 第四个特点就是,可以绑定各种数字资产到用户 ID 。Handshake 上的用户 ID ,因为全网唯一,而且可以用私钥来证明所有权,所以可以认为是数字空间的自由人。于是可以用用户 ID 来接受比特币,也可以把一组数据的所有权绑定到这个名字。如果说下一代互联网,也就是 Web3.0 ,是明确了数据私有权的互联网,那么 Handshake 就可以用来作 Web3.0 的支撑。

这里,咱们聊完了 Handshake 的三大作用,第一个是注册域名,第二个是绑定公钥,第三个是注册用户 ID 。关于第三点的意义,我们展开说了一下。

独特优势

也有一些其他区块链项目,想要实现跟 Handshake 类似的功能。但是 Handshake 最大的特点是设计上做了很多接地气的商业上的考量,让项目落地变得容易。下面聊聊几个 Handshake 特有的优势。

第一个最大也是最明显的优势是 Handshake 考虑到了跟当前 DNS 系统的和谐共处。Handshake 是要实现去中心化的域名系统,但是实际上却跟当前的 DNS 系统不形成竞争关系。听起来有点匪夷所思哈,好像在说,我就是要干掉你,但是我却不攻击你。但是实际情况的确是这样,所有当前 DNS 系统的域名,Handshake 上都是不能注册的。例如,我想注册 google.com ,这个是做不到的。原因有两个层面:第一,所有的当前 DNS 的顶级域名,com net org io 等等,Handshake 都预留了。Handshake 不会让用户注册 com 这个域名的,所以如果要注册 xxx.com 的用户,还是去找威瑞信。第二,Alexa.com 上排名前10万个网站的域名都为对应的公司预留了。这个什么意思呢?如果苹果公司有一天想要用 Handshake ,却发现 apple 这个域名已经被注册了,那么肯定很不开心。但是 Handshake 的做法很贴心,什么时候苹果想要使用 apple 这个名字了,只需要到 Handshake 上认领即可,这个逻辑是自动化完成的。注意,这里 Handshake 预留的 apple 是指顶级域名,而不是 apple.com 中的次级域名。刚刚提过了,因为 Handshake 预留了 com ,所以 Handshake 上也同样注册不了 apple.com 。总之,不会发生 Handshake 上注册的域名跟传统 DNS 冲突的情况,所以说 Handshake 和当前 DNS 系统是井水不犯河水。不过,如果未来有一天,苹果网站的域名从 apple.com 变成 apple ,肯定是更清爽了,对吧?对苹果公司也不会造成太多损失,我猜未来最可能出现的情况是,人们会更爱不可关停且更简短的 Handshake 域名,从而慢慢的放弃使用传统 DNS 域名。所以虽然说 Handshake 不攻击当前 DNS ,但是也可以干掉它。

第二个优势是,Handshake 上真正承载了稀缺性数字资源,具有炒作的价值,给币价提供了支撑。数字资源通常是不具备稀缺性的,例如以前炒的很火的数字收藏品,加密猫,其实稀缺性都是人为规定的。但是简短好记的名字,是真正的数字稀缺资源。不然,多年来也不会有那么多人靠炒域名发财。

第三个优势是,可以保护每个人拥有好名字的权力。一个全网通吃的,同时又容易让人类记忆的 ID 是非常难得的。社交应用的 ID 通常比较容易记忆,例如我的 github ID 是 happypeter ,但是这样的 ID 都不是全网通吃的,我后来去 Twitter 上,也想要注册 happypeter ,但是却被别人占用了,只能注册了 happypeter1983 ,这个就很恶心。以前的全网唯一的,同时去中心化生成的 ID 通常都是非常长的,例如 W3C 的 DID 或者写程序时经常用到的 UUID 。看上去都是长长的一大串数字,很难记在脑子里。区块链项目 Blockstack 基于 DID 提供了 Blockstack ID ,例如我的 Blockstack ID 是 happypeter ,也是简短好记的。但是对比 Handshake ,结构上多了一层封装,似乎没有 Handshake 这么清爽。另外 Handshake 上的好名字都是每隔一段时间逐步放出来的,而且要经过拍卖获得,而 Blockstack ID 是缺乏这方面的细致考量的,基本上就是先到先得,也不要钱,如果前期好名字都被别人抢注了,其后来人迁移过来的意愿就很低了。

总之,我们可以看到 Handshake 考虑到了很多的现实因素,让落地变得相对容易了很多。

总结

最后总结几句,聊一下我自己对这个项目的感受。Handshake 的设计中有很多大巧若拙的地方,例如,通过鼓励使用顶级域名直接做网址,使得原本不相干的两个东西,域名和用户 ID 达成了统一。而正是由于这个统一,也使得传统上需要 CA 颁发的两种不同类型的证书:一种是网站和浏览器之间通信使用的 SSL 证书,另一种是用于两个用户之间通信使用的 PGP 证书,也达成了统一,而且因为每个域名都绑定了公钥,实际上就完成了证书的功能。更有意思的是,绑定公钥,也不仅仅是取代 CA ,而是还可以达成这么几个功能:第一,让用户通过私钥证明自己对名字的所有权;第二,接收数字货币,第三,绑定数据资产。

总之,Handshake 让我想起了那句话,最简约的设计可能来自最深刻的思考。当前互联网的很多本质上就是一回事的不同的复杂的机制在 Handshake 的设计下变得更统一,更简单。一个名字既可以当用户 ID ,又可以当域名用,绑定了公钥后,既不需要 CA 颁发证书了,又可以用私钥去证明身份或者登录网站。当然,最重要的是所有这一切都是去中心化实现的,解决了中心化机构对互联网的控制,还给互联网本来就该拥有的自由。

参考链接:

  • https://www.namebase.io/faq/
  • https://handshake.org/faq/

作者:王广忠,网名 happypeter,硕士,2006年开始进行 Linux Kernel 开发,是开源运动的坚定支持者。Git 版本控制工具的早期布道者,目前他的 GIthub 上有3.6K的 follower 。曾就职于中科红旗与亚洲各国联合成立的 Asianux 实验室,从事系统升级器的研发,使用过 C/C++/Python/PHP/Ruby/JS 等多种编程语言,精通 RubyOnRails 和 React 框架。欢迎到 Bilibili.com 关注他,好奇猫学院。

 

欢迎加入我们的微信群,请添加微信 ljyxxzj,之后做个简单的介绍,我们会拉你入群。