我要投搞

标签云

收藏小站

爱尚经典语录、名言、句子、散文、日志、唯美图片

当前位置:创富心水论坛 > 点对点连接 >

如何建立Bitcoin点对点加密虚拟货币系统

归档日期:05-03       文本归类:点对点连接      文章编辑:爱尚语录

  (Kathy)北京时间12月30日消息,据国外媒体报道,Bitcoin是一种开源的、点对点的(Peer-to-Peer)网络电子货币,由Satoshi Nakamoto开发,并由一小组开发人员维护。知名科技博客读写网(ReadWriteWeb)的克林特芬利(Klint Finley)在制作“分布式网络“专题系列时,就Bitcoin软件的运作方式,采访了该项目的加文安德烈森(Gavin Andresen)。全文摘要如下:

  本文是对Bitcoin的技术性概述。如果你对该软件所涉及的政治经济元素有兴趣,可以参看相关的维基百科条目或尼可拉斯布兰查德(Niklas Blanchard)的论文。

  问(克林特芬利):你能否向那些不太熟悉Bitcoin的人简短地描述一下它?

  答(加文安德烈森):当然可以。 Bitcoin是一种点对点的货币它是由人而不是由中央银行或政府创造的货币。

  答:大家都会试图生产Bitcoin,并且通过一个点对点的网络来交易Bitcoin。大家运行的代码将阻止作弊行为的发生 没有人能创造超量的Bitcoin,也没有人能够把已经支出的Bitcoin再次支付出去,而且只有Bitcoin的合法所有者才能使用它。

  关于Bitcoin,真正的创新理念在于这样一个机制:无需依赖一个中央权威装置就能防止Bitcoin被重复支出。

  另一个的重大新理念则是:无需依赖一个中央权威装置就能限制Bitcoin的供应量。

  问:你门是如何在没有中央权威装置的情况下做到这些事的呢? Bitcoin客户端和服务器又是如何找到对方的呢?

  所有的点对点网络都存在“引导问题(the bootstrapping problem)” 没有中央服务器,网络上的节点(机器)需要能够找到对方。Bitcoin使用以下3种机制来解决这个问题:

  1 在默认情况下,Bitcoin客户端加入了一个IRC聊天通道,并得知加入该通道的其他客户端的IP地址和端口。该通道的名称(和IRC聊天服务器的名称)被写死(Hardcode)在了Bitcoin软件中。

  2一些“知名的”Bitcoin节点也被编写在了软件中,以防IRC聊天服务器由于某种原因无法访问。

  3你还可以手动添加(通过配置文件或命令行选项)可以运行Bitcoin的其他机器的IP地址。

  一旦你连接到了Bitcoin 的点对点网络上,别的机器发送给你的信息中就会包含它们所知道的其他IP地址(及端口),所以那时你将会通过Bitcoin网络自身来找到其他Bitcoin节点。

  人们也在积极讨论其他可能的引导机制,所以如果在未来一年左右出现了新的引导机制,我也不会感到惊讶。

  答:我们对“引导”的想法是定义一个地方,你可以去那里寻找其他的节点,所以建立第二个IRC聊天通道将是毫无意义的。而且现有通道也没有限制可以连接到它的客户端的数量,因此实在没有理由使用多个通道。

  答:几个月前,Bitcoin确实更换过用于引导的IRC服务器我们发布了一个新的客户端,它使用不同的IRC网络。所以如果是IRC服务器暂时关停,全新Bitcoin客户端将使用备份的 “知名的”节点名单。旧的Bitcoin客户端将连接到它们之前连接的节点上在最后一次运行Bitcoin时,相当IP地址被记录在了addr.dat数据库文件中。

  我们不会阻止旧的客户端进行连接。我们支持旧客户端“向上兼容”。但是几个月前出现的一次重大错误,让我们的主要开发人员(Satoshi)决定采用一个机制,通知那些使用不够安全的版本的用户升级。

  问:能谈谈较困难的部分吗在不依靠中央服务器的情况下,如何防止Bitcoin被重复支出,以及如何限制Bitcoin的供应量?

  根据Bitcoin的设计,总共只能有2100万个货币被生产出来。当前货币的生产速率是每10分钟50个左右。

  首先,你要生产Bitcoin,你就要争取成为第一个创造出新的“版块”(Block)的人。一个版块,就是上一个版块出现之后的所有交易(“我给予/销售/交易这些Bitcoin给你”)。因此,要生产Bitcoin,我的机器就要等待并获悉新的交易,把这些交易捆绑成一个版块,然后对这些数据反复运行一个散列算法(hashing algorithm)。我运行散列算法(把任意长度的数据转换成256位),试图找到一个足够小的散列值,以便向整个网络宣布“我赢得了找到下一个有效版块的比赛”。如果成功了,我就得到50个Bitcoin货币。

  目前来说,每一个新版块价值50个Bitcoin。大约每两个星期,网络上的所有节点就会评估这段时间有多少版块被创建出来,并自动(且独立地)调整“难度”。像这样,平均而言,约每10分钟整个网络中就会出现一个新版块。这就是Bitcoin为什么能在没有中央服务器的情况下限制供应量。

  你只有解决“找一个小的散列值”的问题后,才能创建一个版块。据我们所知,解决这样的问题只需要大量的、强大的计算能力(反复运行散列算法)。网络上的每个人都可以进行检查,看你是否确实解决了这个问题(只计算一个散列值真的很容易),也可以确保新版块里只包含有效的交易,而你只能从创建新版块中获得50个Bitcoin货币。

  答:数量不定至少是一个交易,直到一个任意制定的、将来可以很容易改变的数量。你可以去Bitcoin Block Explorer网站看看版块里面是什么。

  所有交易都会被广播到这个点对点网络上的每个节点.....这是解决方案的第一部分。

  如果一笔Bitcoin被支出两次的情况广播出来,那么某些节点将先看到它第一次发生的支付交易,其他节点则看到的是它第二次发生的支付交易。

  究竟是哪一个支付交易“赢”了,则是由恰好创建了下一个版块的那个节点来决定 无论是哪个节点找到了“小的散列值”, 它的板块中包含的那个支付交易被判断为有效的,其他的支付交易被视为无效。

  偶尔会出现网络中的两个节点几乎同时找到有效版块的情况,这样事情会变得很奇怪。

  问:你们有一些开发人员在参与Bitcoin项目那么如何进行项目管理呢?

  我们正处于一个过渡中,从基本上是一个单人制作的项目(Satoshi编写所有的代码,把关所有的变化)过渡来源更开放、由社区主导的模式。我自告奋勇尝试以一种更加分散的方法来改善Bitcoin软件。我们将采取类似于维护Linux的做法,提交(使用Github)上来的补丁会经过审查,然后决定是接受它还是退回去返工。

  答:这是个好问题!分布式计算中的很多问题现在还处于尖端性的研究过程中,我不太确定应该从哪里开始。我个人的背景不是点对点网络,所以我不是合适回答这个问题的人。

  问:你认为分布式计算和强大的密码系统相结合,可以替代“云计算”,为那些交不起服务器租金的人服务吗?

  答:是的,虽然把应用程序放在云上非常便宜。就我自己来说,在Bitcoin相关项目的前端,我使用谷歌的App Engine,在后端的Bitcoin网络节点,我则使用VPSes和亚马逊的EC2。

  使用App Engine创建应用程序,是一种不错的、免费的学习可扩展的分布式计算的方法。

  问:你认为Bitcoin的源代码可能作为建立其他类型的点对点社区的基础吗?

  答:不能,它是专门为Bitcoin设计的,而且效果也很好。其他的点对点社区有不同的网络需求。

本文链接:http://websarmiento.com/dianduidianlianjie/179.html