互联网到今日已经越来越趋向于中心化,用户的隐私安全以及大公司的行为也日渐引起担忧。去中心化网络是一个应对此问题的重要思想,blockchian,bitcoin,tor 等都是一些具体的技术探索,很多已经有了越来越大的影响力。Namecoin 也是其中的一个。

Namecoin 想要解决的是目前 DNS 存在的一些问题。中央机构控制的 DNS 很容易因为各种原因受到干扰,用户的利益和隐私容易受到侵犯。Namecoin 借助于 bitcoin 的思想,构建了一个去中心化的 DNS 系统。

Zooko’s triangle

类似于分布式系统中的 CAP 理论。类似 DNS 这样的协议,我们期望它具有的三个特性很难满足: 安全,可读性好,去中心化。目前的最常用的 DNS 系统不满足去中心化。DNSSec 对现有的 DNS 做了一些安全性的增强,但仍然是中心化的。.onionbitcoin是去中心化的和安全的,但是可读性很差等等。

Namecoin 是满足上面要求的一个系统。(Aaron Swartz曾经提出过这样的设计思路)

Namecoin

Namecoin 基于 BitCoin,本身就是在 Bitcoin 的代码上实现的(大概做了 400 多行改动)。挖矿的方式跟 bitcoin 一样,只是用的是不同的 block chain.二者的目的不同,bitcoin 主要还是为了成为一种货币系统,Namecoin 是为了成为一种命名系统。所以二者的关注点不同,blockchain 分开也是最合理的。二者有一些不同的规则:

  1. namecoin 要求名字的唯一性(域名),而 bitcoin 不要求
  2. 经济交易以及域名注册使用的货币大小不一样,block size 设的不一样更好
  3. 通货膨胀对 bitcoin 的影响很大,namecoin 则不一样。
  4. namcoin 中,注册域名需要花钱,但这些货币会被销毁(0.01NMC).因为是去中心化的系统,没有收费的中央系统。

Namecoin 里的数据主要分为两种 domain name 和 NameID

Domain

Domain 的格式类似于:

1
2
3
4
5
{ 
    "name" : "d/opennic", 
    "value" : "what you want", 
    "expires_in" : 10227 
}

value的示例:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
{
    "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, "660008F91C07DCF9058CDD5AD2BAF6CC9EAE0F912B8B54744CB7643D7621B787", 1] ],
            "25": [ [1, "660008F91C07DCF9058CDD5AD2BAF6CC9EAE0F912B8B54744CB7643D7621B787", 1] ]
	}
    },
    "map":
    {
        "www" : { "alias": "" },
        "ftp" : { "ip": ["10.2.3.4", "10.4.3.2"] },
        "mail": { "ns": ["ns1.host.net", "ns12.host.net"] }
    }
}

其中d/是一个 namespace,主要是为了应用层的区分,表示这个数据是一个 domain.

  • name: d/开头,后面的字符串应该遵守 domain name 的 regex
  • value: json string.关于此 domain 的一些属性。最大长度 520 bytes.

Identity

用来管理网上的个人身份标识信息。namespace 为 id/testnet 这里可以看到一些在线的信息。

REF

  1. Zooko’s triangle
  2. Squaring the Triangle: Secure, Decentralized, Human-Readable Names
  3. faq
  4. Domain name specification