Namecoin:分散式DNS

本文主要介绍Bitcoin的第一个代币——Namecoin。

这是最好的时代,也是最坏的时代。 是时候打破泡沫,拥抱技术了。

区块链作为一种分布式账本技术日益受到关注。根据Gartner对2017年的战略技术预测可以看到,区块链技术已经越过了人们对其期望值的最高点,正向着成熟、平稳的方向发展,而且日前对虚拟货币交易所的整治措施也为区块链技术的健康发展铺平了道路。是时候打破泡沫,拥抱技术了!本文主要介绍Bitcoin的第一个代币——Namecoin。

Zooko三角猜想

在介绍Namecoin之前,必须要提Zooko三角猜想。Zooko Wilcox-O'Hearn曾推测,任何一种命名系统都无法同时满足三种特性:可读性(Human-meaningful),安全性(Secure),和分散性(Decentralized)。也就是说,任何一种命名系统都要至少像其中一种特性妥协。例如,我们给小孩起名字,可以满足可读性和分散性,但却无法保证名字是唯一的(安全性);满足可读性和安全性的传统DNS,它是中心化的(不满足分散性);Tor暗网满足安全性和分散性,但域名确是随机字符串(无法满足可读性)。但Namecoin的出现,首次打破这个推测,实现了一种分散式的DNS。

Namecoin简介

Namecoin被认为是Bitcoin的第一个代币,也可以说成是区块链技术的第一个应用。虽然Namecoin也是一种加密货币,但它有更加远大的理想,那就是建立分散式的DNS(Domain Name System)。分散式的DNS可以提供以下好处:

  • 安全性:大家都知道2016年美国的“断网事件”就是由于DNS服务商遭受大规模DDoS攻击造成的,这就是中心化DNS所暴露出的单点失效问题。而分散式的DNS就跟Bitcoin网络一样,每个节点都维护着DNS记录,可以在很大程度上抵御DDoS攻击。除了防御DDoS攻击,还可以从根本上杜绝DNS劫持问题。传统的预防DNS劫持的方法是引入CA,并且采用HTTPS协议,但仍然无法避免CA被攻陷的情况。一旦CA被攻陷,攻击者就可以给恶意网站颁发证书,对普通用户实施钓鱼攻击。而分散式的DNS则不需要CA的参与,区块链技术可以保证DNS记录不被篡改,换句话说,区块链技术提供了免费的CA功能。
  • 快速访问:传统的DNS中,一旦有网站更改了配置,通常需要1~2天才能使得全网知晓,而Namecoin提供的分散式DNS的更新周期是大约40分钟。除此之外,由于DNS记录存储在本地,因此查询DNS的时间开销几乎可以忽略不计。
  • 与Tor相结合:匿名网络Tor的域名地址是以onion作为顶级域名的随机字符串,因此分散式DNS可以在保证分散性和安全性的前提下为Tor提供可读的DNS服务。
  • 隐私:传统的DNS服务器通常会记录每个用户访问的网站信息,以供审查。而分散式DNS则是一种无法被审查的网络,因为查询DNS记录的操作在本地完成,不会造成网络流量。

Namecoin实现原理

Namecoin在Bitcoin代码的基础之上添加了新的功能,构建了不同于Bitcoin的新的区块链网络。Namecoin的宗旨是构建一个命名系统,第一要务是保证命名的唯一性,因此在不与此违背的前提下,Namecoin尽量保留了Bitcoin的特性,比如挖矿、共识机制、货币总数等。为了实现这一目标,Namecoin使用一些额外的RPC(Remote procedure call)命令让用户可以发送一些特殊的交易来记录键值对。这些键就是用户注册的名字,它们被分散地保存在区块链中,每个节点都可以检查发生在某个键上的操作的合法性。

在Namecoin中有一些预定义命名空间,例如命名空间"d/"被用来注册和管理域名,其顶级域名是".bit"。一个.bit域名使用RPC命令name_newname_firstupdate创建的。在域名真正创建之前,用name_new命令对其进行预订,这个操作会发送一个带有域名信息(哈希值)的交易保留域名。预订操作的目的是为了防止有人在区块确认之前快速发送注册域名的请求恶意抢夺域名。经过12个区块(大约需要2小时到一天的时间)的确认后,相对应的name_firstupdate命令才会被接受。域名注册成功后,对应的值是有UTF-8编码的JSON对象,最大为520字节,内容大致如下:

{
    "ip"      : "192.168.1.1",
    "ip6"     : "2001:4860:0:1001::68",
    "tor"     : "eqt5g4fuenphqinx.onion",
    "email"   : "hostmaster@example.bit",
    "info"    : "Example & Sons Co.",
    "service" : [ ["smtp", "tcp", 10, 0, 25, "mail"] ],
    "tls": {
        "tcp": 
    {
            "443": [ [1, "660008……7621B787", 1] ],
            "25": [ [1, "660008……7621B787", 1] ]
    }
    },
    "map":
    {
        "www" : { "alias": "" },
        "ftp" : { "ip": ["10.2.3.4", "10.4.3.2"] },
        "mail": { "ns": ["ns1.host.net", "ns12.host.net"] }
    }
}

注册成功的域名的名字和值与价值为0.01的NMC绑定,存储在用户的钱包中,当用户需要转让域名时需要将这笔NMC作为输入。域名在注册后或者最后一次更新后的36,000个区块(大约250天)后会失效,name_update可以用来更新、转让域名或者重置失效时间。

由于在Namecoin上注册的域名并不能被ICANN(Internet Corporation for Assigned Names and Numbers)搜索到,因此用户不能直接访问.bit域名的网站。目前可以通过修改系统配置或者使用额外的软件来访问.bit域名,比如Firfox或者Chrome的插件。

存在的问题

像传统DNS系统初期一样,Namecoin提供的分散式DNS同样面临着“域名抢注”攻击。由于在Namecoin上注册域名的成本很低,很多在初期拥有大量Namecoin的人会占有一些有价值的域名,比如"google.bit"

另外,由于Namecoin上并没有像Bitcoin一样有可以运行在手机或其他嵌入式设备的SPV节点,所有节点都需要保存从创世区块以来的全部区块。而且因为Android和iOS的封闭性,如果没有操作系统权限无法修改DNS配置。

最后,Namecoin面临的51%攻击比Bitcoin更为严峻。在Namecoin创建初期,矿工主要来自Bitcoin使用Merge Ming,时间久了之后由于很多矿工已经退出了Namecoin,剩余的大矿工很可能已经具有了51%以上的计算资源。Namecoin假如收到51%攻击,攻击者就可以修改含有name_firstupdate的交易,从而偷走域名,这对于Namecoin的危害可以说是致命的。

总结

Namecoin作为Bitcoin的第一个应用,一直发展到今天仍然具有比较强的生命力。虽然由于各种各样的问题,业界对Namecoin的关注度在逐渐减弱,但从它的技术实现和历史发展中都可以吸取很多经验,具有很高的参考价值。

扩展阅读

[1] https://namecoin.org

[2] https://github.com/namecoin

[3] 论文 https://www.net.in.tum.de/fileadmin/TUM/NET/NET-2014-08-1/NET-2014-08-1_14.pdf

[4] https://en.wikipedia.org/wiki/Namecoin

本文参与登链社区写作激励计划 ,好文好收益,欢迎正在阅读的你也加入。

  • 发表于 2017-09-18 12:41
  • 阅读 ( 338 )
  • 学分 ( 0 )
  • 分类:比特币

0 条评论

请先 登录 后评论
盖盖
盖盖

区块链研发工程师/在读博士

11 篇文章, 327 学分