65 分布式域名服务器
有人建议创建一种比特币克隆版(一种替代币),以运行分布式点对点域名服务器系统(DNS)。除了货币以外,存储在区块链中的交易也包含DNS信息, 并且可以用新的交易更新。
被称为域名币(参见http://www.namecoin.org/)的替代币现在已经出现,允 许人们注册以.bit结尾的域名并与IP地址关联。中本聪在这里分享了他对这类系统 的见解。
回复:比特域名服务(BitDNS)和泛比特币
中本聪发表,2010年12月9日,下午09:02:42
我认为BitDNS有可能成为完全独立的网络和单独的区块链,但与比特币共享计算能力。唯一重叠的是矿工能够同时搜索两个网络的工作量证明。
网络间不需要任何协调。矿机会同时加入这两个网络。它们扫描SHA寻找目标,如果找到就可以同时解决两边的问题。如果一个网络的难度更低,目标也许只适用于该网络。
我认为外部矿工可以调用两边的getwork合并工作。也许调用比特币从中得到工作,再交给BitDNS的getwork,合并成为一个工作。
这些网络不但不会出现碎片化,而且可以通过分享来增强彼此的总计算能力 。这会解决多网络共存可能出现的相互威胁问题,避免可用计算能力勾结起来共同反对某个网络。世界上所有的网络共享联合计算能力从而提升整体强度。使小型网络更容易在现有矿工的基础上启动。
回复:比特域名服务(BitDNS)和泛比特币
nanotube发表,2010年 12月9日,下午09:20:40
引自:中本聪,2010年12月9曰,下午09:02:42
我认为BltDNS有可能成为完全独立的网络和单独的区块链,但与比特币共享 计算能力。唯一重叠的是矿工能够同时搜索两个网络的工作量证明。
理论上听起来很棒
引自:中本聪,2010年12月9曰,下午09:02:42
网络间不需要任何协调。矿机会同时加入这两个网络。它们扫描SHA寻找目标,如果找到就可以同时解决两边的问题。如果一个网络的难度更低,目标也许只适用于该网络。
我认为外部矿工可以调用两边的getwork合并工作。也许调用比特币从中得到工作,再交给BltDNS的getwork,合并成为一个工作。
看上去矿工要做些“额外的工作”。如果在BitDNS额外挖矿没有获得奖励(当然这份工作减慢比特币挖矿的主业),那矿工参与BitDNS (以及其他的侧链)的动机是什么呢?
我对此非常好奇,希望听到您进一步的想法。
回复:比特域名服务(BitDNS)和泛比特币
中本聪发表,2010年12月9日,下午10:46:50
引自:nanotube, 2010年12月9日,下午09:20:40
看上去矿工要做些“额外的工作”。如果在BitDNS额外挖矿没有获得奖励(当然这份工作减慢比特币挖矿的主业),那矿工参与BitDNS (以及其他的侧链)的动机是什么呢?
动机是同一份工作也能从额外的侧链中获得奖励。
为什么在铸币时不用同一份工作获得免费的域名呢?
如果当前每周铸50枚比特币,那么未来就可以得到50枚比特币外加一些域名 。
如果完成一件工作,得到铸币和产生BitDNS新区块两个结果。在概念上,它们由一棵默克尔树绑在一起的。把它交给比特币,就切断了BitDNS的分支,而将它交给BitDNS,就切断了比特币的分支。
在实践中,为了改造比特币,BitDNS部分可能需要额外的200字节,但这没什么大不了的。既然已经计划在每个区块存储50个域名,那么为了向后兼容而在每个区块中增加小小的200字节也就没什么大不了的。如果真的在意节省那几个字 节,我们可以预先安排一个遥远未来的区块,那时候可以把比特币升级为默克尔树在最顶部的更现代化安排。
请注意,区块链处于这个新默克尔树的下面。也就是说比特币和BitDNS在自己的区块内分别有各自的区块链链接。这与区块链在顶部然后是默克尔树的公共时间戳服务器排列相反,因为这种方式创建的是一条公共主链。而这两个时间戳服务器并不共享一条区块链。
回复:比特域名服务(BitDNS)和泛比特币
中本聪发表,2010年12月10日,下午05:29:28
把世界上所有工作量证明系统都堆到一个数据集不具备可扩展性。
比特币和BitDNS可以使用独立的数据集。用户不必下载全部两套数据集然后选择其中的一个使用。BitDNS用户可能也不想下载其他那些打算加入进来的不相关网络的全部数据。
这些网络需要有各自不同的安排。BitDNS用户也许能完全自由地添加任何大的数据项,因为域名注册的需求相对较少,而比特币用户所面临的区块链大小限制可能越来越严,因为只有这样才能方便大量用户和小型设备。
担心用比特币购买域名的安全性只是掩人耳目。很容易用比特币交易其他不可抵赖的商品。
如果仍然担心,基于加密的无风险交易也是可能的。双方同时在两边安排交易,当双方为交易签名时,第二个签名触发两方同时执行。第二位签名者不能选。
回复:比特域名服务(BitDNS)和泛比特币
哈尔发表,2010年12月10日,下午07:14:04
中本聪,您是否赞同额外的区块链会创造各自风格的币,这些币可以在交易所中与比特币进行交易?用基于这些链的币来奖励链上的矿工,并用于购买该链范围内的一些权益?
回复:比特域名服务(BitDNS)和泛比特币
中本聪发表,2010年12月10日,下午07:55:12
引自:哈尔,2010年12月10日,下午07:14:04
额外的区块链会创造各自风格的币,这些币可以在交易所中与比特币进行交易?
用基于这些链的币来奖励链上的矿工,并用于购买该链范围内的一些权益?
对,不同领域的币和比特币之间的兑换率会浮动。
BitDNS更适合比10分钟长的时间间隔。
迄今为止的讨论已经需要很多内部数据。如果能自由使用所需的全部空间, 而不必担心为比特币链的昂贵空间支付费用,那就容易多了。例如下面这些交易IP记录变更。
域名变更。域对象可以赋予一个域,您可以随意将它更改为尚未使用的域名。这会鼓励用户释放他们不想要的域名。生成的域开始是空白的,矿工将其售出后,买家按自己的意愿更改。
续订。可能是免费的,也可能需要消耗另一个域的对象来更新。在这种情况 下,域的对象(叫域链币?)可以代表一个域名一年的所有权。将在下一个区块把支付费用将交给矿工。
回复:比特域名服务(BitDNS)和泛比特币
哈尔发表,2010年12月10日,下午08:12:02
那好,如果要有BitDNS币(又名DCC,域链币),那么它们必须具有某些用途。否则每个区块全都是BitDNS矿工自己的域名注册信息,而不会用其他人的注册信息取而代之来交换以无用的货币所代表的交易费。
必须设定这样的规则,即注册域名或进行其他的BitDNS交易必须支付一定数额的域链币。这是使这种替代币有吸引力和富有价值的唯一途径。
(我们也可以像比特币那样,宣称最终只会有2200万枚域链币,这样它们就会像比特币一样从稀缺性中获得价值。但这样的安排很牵强。)
回复:比特域名服务(BitDNS)和泛比特币
中本聪发表,2010年12月10日,下午08:19:39
我同意。所有的交易、IP变更、续订等都应该付给矿工一些费用。
您可以考虑为域的生成设定一定的工作量,而不是固定的总发行量。每个域的工作量可以设定为跟随摩尔定律增长。这样,域的数量就会随着需求和使用人 数的增长而增长。
回复:比特域名服务(BitDNS)和泛比特币
dtvan发表,2010年12月11日,上午07:43:08
阅读了整组讨论后,我想发表几条自己认为会有所帮助评论:
1. 讨论中的每个人似乎都打算一举取代整个DNS基础设施,我认为这是错误的。目前DNS系统的真正问题是必须有人拥有根服务器。最终还是要信任ICANN 。域链或BitDNS系统应该完全致力于确定域名的所有权。所需做的全部事情就是确定密钥持有者A拥有域名foo.bar。一旦建立了这种共享的信任,就可以支持许多不同的DNS基础设施,这些基础设施可以独立于这个项目来实现。无论创建什么新系统,都要使用域链或BitDNS来确定哪个密钥拥有这个域名,并且只允许有密钥的这个人为该域名插入记录。这样行之有效,因为系统中的所有参与者都可以验证自己查到的域名记录的有效性。现在很容易陷入DNS记录的各种管理细节当中,而此时我们需要做的是建立一个可信的、分布式的权威,能形成DNSSEC 、一些新p2p DNS或者其他什么系统的根服务器。
我也认为这可以用来解决HTTPS的CA问题,因为用相同的密钥签署证书可以证明已经到达了正确的服务器。这有点离题了……
2. 应该限制TLD。如果该系统无法通过防止域名冲突来与现有DNS基础设施兼容,那将削弱试图建立的信任。如果新来的人得到www.mylocalbank.com域名,结果引起混乱,甚至我都不确定是否愿意在分布式DNS系统上注册。我有一个不成熟的建议,用.web作为TLD,这样可以使用任何域名,只要够短且未用过。
现在的焦点应该是建立这套系统并以与现有系统不冲突的方式运转。如果将来有一天这个系统占据了主导地位,需要处理其他的TLD,那就是未来要处理的问题了。
3. 我认为域名必须要有有效期。即使今天续订费用相对昂贵,仍然存在大量的垃圾域名。无法想象如果永久拥有域名的情况会有多么糟。定期为域名续费的要求不算高,尤其是与现有体系相比一点都不黑。
最后我想说,这件事情太令人兴奋了。我看过很多解决DNS问题的不同想法,这是我看到的第一个能真正解决问题的方法(而不是用新的仁慈独裁者取代ICANN)。
回复:比特域名服务(BitDNS)和泛比特币
中本聪发表,2010年12月11日,下午01:08:30
@dtvan:三个观点都太棒了。
1.IP记录不需要入链,只做注册不做DNS。这样CA问题也解决了,干净漂亮。
2. 选一个TLD,.web+1。
3. 截止时间和续订费用非常重要。
引自:joe,2010年12月11日,上午 10:53:58
然而,深入考虑之后,我支持在主网络中加入额外的币种及跟踪系统。这么做是为了避免将计算能力打散到多个网络。我们需要一个强大的网络,所以网络应该是多用途的。
避免计算能力碎片化不再是重要原因。独立网络或链可以共享计算能力,其他的就不太需要共享了。要了解具体信息参见可以参考下述文档:
http://bitcointalk.org/index.phptopic=1790.msg28696#msg28696
和
http://bitcointalk.org/index.phptopic=1790.msg28715#msg28715
(注意,中本聪的两个早期帖子也包含在这组讨论中。)
下面是同一主题的另一组讨论。
回复:比特域名服务(BitDNS)收费的困惑
galeru发表,2010年12月9日,下午07:45:38
目前关于BitDNS或BitX的一系列争论,都是假定矿工会包含这些交易,而非基于某些详细定义的条件,然而标准代码中并没有任何能让程序员以外的人作出上述判断的依据。作为用户,我怎么知道一笔交易的费用是多少?
回复:比特域名服务(BitDNS)收费的困惑
Jgarzik发表,2010年 12月 9日,下午 11: 07: 04
引自:davout,2010年 12月9日,下午09:08:55
刚想到下面的例子:我广播一笔交易,发送X枚比特币到某地址。结果过了段时间还没有包含到区块里,因为我没有包含交易费。
有没有办法取消这笔交易,包含交易费后再重新广播呢?
对替换交易,请参靠关于锁定时间的讨论:
回复:比特域名服务(BitDNS)收费的困惑
中本聪发表,2010年12月9日,下午11:58:54
不是锁定时间。
以后可能会有这样的设计:
故意发起一笔双重消费。第二笔交易有相同的输入和输出,只是这一次付费了。这笔交易进入区块后,第一笔交易就失效了。收款人也不会注意到,因为此时第二笔交易生效,第一别交易失效,于是新交易简单地取代了旧交易。
说起来容易做起来难。要让客户端正确地提交双重消费,管理钱包里的两个版本的交易直到其中一个被选中,处理所有这些极端情况的工作量相当大。现有代码中的所有假设都是建立在不提交双重消费的基础上。
也需要对比特币矿工做些修改,让双重消费进入交易池成为可能,但仅限于输入和输出匹配且交易费更高的情况。目前从不接受双重消费进入交易池,所以每个节点见证最先看到交易的方式是将它放入一个区块。