主页 > 比特币资讯 >

比特币前世今生:中本聪谈比特币的前世今生

比特币前世今生 2018-10-08 15:13 比特币前世今生 BTG比特币

         比特币前世今生:中本聪谈比特币的前世今生
  目前,有网站自称是“中本之家基金会”,并有一篇署名为中本聪的作者发表了21页的长文。这是近些年最像中本聪的人。我们对这篇21页的长文进行了翻译,并陆续分享给大家,此为最后部分。

  一开始,我给两个人写过邮件,是关于比特币的。这两个人是亚当和魏。

  我先给亚当发了电子邮件,他把我介绍给了魏,我把这两件事都写进了我最初的设计论文里。我与他们共同设计的预演草稿纸,但我怀疑他们都没有了(其实我知道这个事实,如果你不相信,接着问),和唯一的纸,今天是我发送到邮件列表,这是事实。当我提到设计论文时,我指的是今天所知的白皮书。在公开发布后,我重新命名了它。

  亚当是邮件列表上的常客,也是为数不多的几个人之一,他们在思考如何能在同一时间找到一个真正无法追踪的电子现金。他是分布式电子现金的主要支持者,这是许多人曾经尝试过的,但没有一个成功。对亚当来说,我认为他关心的是如何阻止它以摩尔定律的速度膨胀,直到比特币,没有人找到方法来做这件事。在密码朋克社区中提出的大多数早期想法要么被包含在学术论文中,要么已经被使用了,但却从来没有得到重视,而且由于各种原因都不起作用(一个值得注意的例子是Digicash)。

  我通过他在邮件列表上的帖子了解了亚当,这也是我了解哈希现金的方式。他曾在密码朋克邮件列表中详细描述了它的属性,人们将它与数字黄金进行比较,以及如何实现分布式电子现金的实现。

  尽管亚当是哈希现金的负责人虽然到目前为止它主要用于反垃圾邮件,但它还有其他各种实用工具可以使用。其中之一是作为比特币挖矿功能的一部分,但其中还是有一些关键的区别。哈希现金致力于整个比特,而比特币挖矿是扩展到允许分位,2^32是比特币的原始和启动的困难。这是因为一个双哈希,从SHA1切换到SHA256和比特币,定义了找到哈希的工作为<2^x,其中x是log2(difficulty)+32bits。尽管比特币的难度是用指数来表示的,但它也可以用比特来表示,因为比特币的数量更小,可读性更强,这在很大程度上是约定俗成的。

  当我决定联系他,问我是否可以引用他的论文时,我已经建立并设计了一个原型,并且已经使用了哈希现金作为挖矿功能。在这一刻,他指出了我论文中的相似之处,并建议我应该看看魏的b-money。

  当我联系到魏的时候,我已经研究了他的b-money,并试图把它包含在我的论文中。我希望,让其他人看到是什么想法帮助塑造了比特币的诞生,帮助他们更好地理解我的动机。在他的文章中,魏提出将工作证明作为一种创造货币的手段。我认为,魏的建议是对亚当的哈希现金的回应,该公司在一年前发布了同样的密码朋克邮件列表。在这篇论文中,戴概述了所有现代加密货币应该具备的基本要素,包括: •通过指定数量的计算工作,在本例中为PoW •该工作由更新全球总账或“区块链”的社区进行验证 •为员工的最大努力提供资金,在这种情况下是用户 •通过使用加密哈希的方式,通过合作记录和认证来实现资金的交换。 •通过使用公钥加密技术,通过节点广播和签署带有数字签名的交易,合同是强制性的。

  戴先生很清楚地描述了加密货币的优点,因此早在1998年,比特币这样的货币的基本组成部分就已经存在了。事实上,许多不同的迭代都必须失败,才能为比特币和所有后来的加密货币铺平道路。但魏提供了一个基础,我可以利用现有的想法,更进一步,实现他对去中心货币的愿景。

  有些人可能会问,为什么我在论文中提到他们的工作时我已经在论文中引用了。

  在大多数情况下启动和建立第一个测试网络的比特币,虽然事实上已经解决了,一切都运行良好,但我担心社区是否会接受或拒绝我的工作,我花了两年的工作。在学术界,就像在日常生活中,有时你需要上级的支持才能让你的工作通过大门。

  我很确定,如果我只是在邮件列表中宣布我的工作(和意图)没有任何引用或参考,那么它很可能会被认为是另一种分布式的货币失败的尝试。但是在这里,有两个著名的(受人尊敬的)个人在密码学领域,他们在某种意义上,为我担保他们的名字被包含在报纸上。这是我的推理,所以当它来宣布的时候,已经有了一些支持或立足点,让它通过门,进入那些最严厉的批评它的人的手中。

  当我离开这个社区时(跳过了一些,好了,这里有很多章节的摘录),我把这个域名的所有权转移给了Martti,并把存储库留给了加文。4月我决定现在应该离开的时候(事实上,我已经离开社区更早在圣诞节前一年,如果你不相信,问问核心开发人员关于这个时间,像迈克),因为维护和开发已经由一个熟练的开发团队接管了,所以他们不需要我了,我真的无意继续。我给核心开发人员发了最后的信件,并把责任分配给了其他人。我又联系了一会儿,很快就把我和中本聪的一切联系都抹去了。我尽力不留下任何关于我曾经存在过的肯定,所有能把我联系起来的东西我都放进了一系列文件中,所以在我离开的情况下,任何人都可以扮演这个角色。

  还有其他更严肃的离开理由,在这里我不想谈论,但会在书中提到。

  这是复卷的时间。

  从2006年中期开始,我就一直在思考一种货币的想法,但直到一年后,我才真正开始思考如何从这些想法中制造出一个原型。我对密码学的理解并不是特别先进,尽管如此,我还是把我所知道的、存在的和已经在工作的东西拿来用了,并在我认为合适的地方做出了改进。我研究了当时的研究材料,并实现了我认为将会持续很长时间的研究。一些协议和标准刚刚开始执行,我还是决定将它们包括在未来的防护中。

  我知道很容易想象比特币是凭空而来的,但实际上,事实并非如此。它是由许多团体多次失败的尝试产生的,它成功的唯一原因是它在正确的时间。尽管我并没有预测到金融危机的发生——谁能预测到这一点(尽管好奇答案),但它确实起到了推动作用,我认为如果不是这样的话,比特币就不会像现在这样迅速发展。其他的想法——使用密码算法、工作证明、时间戳,已经存在了。但是,没有人把所有这些东西联系在一起,以一种反映互联网结构形式的方式。在我深入研究之前,我阅读了过去15年的每一篇学术论文,并评论说,在每一次试图制造比特币这样的东西的失败尝试中,都遗漏了一个关键因素。所有的人都有一些零碎的东西,但不是完整的图像。

  点对点是比特币的一个基本方面,使其优于此前的所有尝试。它的优点是网络架构可以在对等点之间卸载工作负载,形成了一个节点网络。每个节点都对这个网络做出了贡献,不需要中央权威或第三方,也不需要任何服务器。点对点本身是出于去中心的需要而产生的,而ARPANET允许任何人请求和提供内容,除了提供简单的路由之外,它还提供了其他任何东西。USENET是一个在1979年设计的系统,它是BBS系统的前身,它允许分散式和分布式系统。但是,与当时的其他BBS或web论坛不同的是,USENET是分布式的,没有中央服务器和专门的管理员。USENET相反,是分散的。

  这其中一个关键的区别在于,它导致了P2P文件共享等技术,以及像Napster这样的服务,以及随后从Mnet中剥离出来的Bittorent。Mnet本身就是一个对等文件共享服务,它使用了一种名为Mojo的数字货币,在一个完全分布的网络中,它提供了一种抵御攻击的动机,这是最早的“智能合约”之一。

  我简单地提到了USENET,因为当我宣布比特币的时候,某些东西只有在之前忽视之后才会引起我的注意,比如公共时间戳在我发布之前是不知道的。互联网是如此之大,以至于无论从什么角度来看,我都不知道一切。

  达斯汀·特拉梅尔是其中之一,他给我带来了深刻的领悟,因为尽管我认为我已经涵盖了每一个基础,但仍有一些东西需要学习。当他在我公开宣布比特币的那一天给我发邮件时,他和我分享了一个惊人的使用时间戳的方法,而这些时间戳并没有使用USENET。这就是为什么后来我特别提到了其他一些我可能忽略了的想法,比如比特币的前身BitGold。

  尽管如此,我还是觉得有些事情我还没有发现。在最初的日子里,达斯汀继续与我保持联系,提出建议,这帮助我让比特币变得更像样,不那么笨重,更实用。在接下来的几天里,我们讨论了如何让比特币在公众中流行起来。我喜欢达斯汀的地方是他的开放性,因为我们都对金钱和密码学有很深的兴趣。人们认为我不是一个“密码学家”,从最真实的意义上说,我不是,但这并不意味着我不知道如何将密码证明应用到比特币中。

  达斯汀也是为数不多的对比特币(bitcoin)稳定版v.0.1.3提供反馈的人之一。在此之前,软件已经被bug缠身,在最初的几天里,我每小时都在解决软件中的bug。

  他提出的一个更有趣的问题是,如果有一个节点具有最多的CPU算力,如果一个节点比其他节点更强大,那么它就会一直赢得大部分的比特币。我用最简单的方式向他解释,就像我过去一直做的那样,用一个类比。正如我曾试图与拜占庭将军的问题,我觉得给新用户的最好的解释方式是将现有的想法或概念,更容易理解,并应用到可能(可行)的情况下,在这种情况下,它是相对于性能。

  我用了一辆快速汽车的比喻,我可以看出他是在考虑马力的问题。我向他解释说,这不是一场比赛,如果一辆车的速度是两倍,(假设)它总是会赢的。更确切地说,它是一个SHA-256,它需要不到一微秒的时间,每个人的猜测都有一个平等但独立的成功机会。每台计算机找到哈希碰撞的几率与它的CPU算力成正比。因此,尽管一台电脑的速度可能是原来的一半,但这仅仅意味着它将得到一半的比特币,而不是没有。比特币本身并不是一个赢家通吃的系统。

  人们应该了解比特币的核心,就是它和所有的时间戳服务器都共享了周期性地将东西收集到块中并将其哈希到一个链中的基本功能。

  比特币在网络CPU总量很小的时候也处于最脆弱的阶段。但这被一个事实抵消了,即在一开始就攻击它的动机也很小。

  我认为人们不知道为什么花了这么长时间研究比特币达到临界质量,但事实是,这项技术实现了比特币,至少正在成熟,虽然有很多人感兴趣的90年代,经过十年多的基于可信第三方的系统失败(Digicash等等),他们认为这是一个令人失落的原因。我担心的是他们(“他们”是密码学社区)不会做出区分。但比特币与之前的所有尝试都有很大的不同,我认为比特币是他们做出这种区分的一个要点。他们会意识到这是我第一次将一个完全非信任的系统提出。

  我非常关心密码学社区会怎么想,它导致我忽略了任何失败的尝试,在最初的设计论文中引用Digicash作为比特币的先驱,因为害怕人们会在它开始之前就把它忽略掉,然后继续前进。因此,我引用了b-money和工作系统的反证等思想的优点,这本身就是受到他人作品的启发,亚当在他的论文中提到了这一点。把握好的想法,忽略那些失败的想法,是我在如此严厉的怀疑论者的眼中看到成功的唯一方法(也许批评家是更好的词)。如果不是基于信任的系统,Digicash就会被引用。

  哈尔曾提到,到2019年,比特币及其成功的机会将是一项“孤独的投资”,换句话说,不太可能。它要么工作得很好,要么流行起来,要么失败得惊人。比特币,虽然我看到许多用途以外的传统方法,如狭窄的领域,传统的货币并没有真正融入,奖励点,捐赠令牌,在游戏货币,类似这样的事情,我从来没有指望比特币抓那样,与法定货币直接竞争。但事实就是如此。它超出了预期。

  无论从哪个角度来看,比特币都是非常安全的,几乎没有什么失败的地方,而且大部分都是为了长期而建的,然而,有些人质疑我所达到的方法。

  许多人可能想知道为什么比特币的核心是用C++设计的,答案主要与内存有关。不能拒绝弹性和适应能力。我最关心的是在考虑使用什么编程语言时的可靠性和攻击,对网络的攻击是最主要的关注点。

  我将攻击分为两类: 1)攻击只能由某人在通信链中进行 2)任何人在互联网上的攻击都可以在任何地方进行

  第一个攻击方法将你暴露在你的房子或公司的本地局域网中,在互联网服务提供商之间的管理员,以及接受者的局域网。第二种方法让你接触到10亿人,他们可以自我选择成为攻击者,当他们开发一种技术来攻击多个受害者时,就能获得规模经济。

  第二种攻击方式是比特币是用C++设计的。你看,比特币必须对所有形式的攻击都有弹性,因为它有一个巨大的攻击范围。由于它对互联网开放,它必须对一致性有很强的要求。c++提供。它意味着对内存使用的严格控制,这意味着像比特币这样的安全关键应用程序直接暴露在互联网上,仍然可以为本地客户提供可靠性,同时与大量不受信任的端点进行通信。这需要对内存等资源进行严格的控制,而C++很好地解决了这一问题。与其他编程语言不同,C++提供了对内存使用的一致控制,同时也对速度和性能进行了优化。选择C++的其他原因是什么?不提上面提到的,C++有坚实的基础和基础,技术是坚如磐石的,并且一直在增加新的功能。这是一个显而易见的选择。

  我给他写了一封电子邮件,进一步解释:

  IP请求发送一个新的公钥,所以,是的,它很容易在中间输入1。如果这是一个令人担忧的问题,那么发送到一个比特币地址就不会有这样的漏洞,尽管这是一个小小的隐私权衡。我有一种感觉,大多数时候,人们会从非ssl网站和无符号的明文电子邮件中获得比特币地址,而这类电子邮件已经很容易受到DNS中毒的影响。

  一种解决方案是在发送时使用IP地址和比特币地址(可能是1.2.3.4-1Kn8iojk…),在这里,接收者使用比特币地址的公钥来签署新的公钥,以证明你正在发送给你认为你是谁的人。如果系统开始被用于真正的业务目的,我肯定会实现它。另一个解决方案是使用SSL。

  目前,很明显,如果你发送到一个IP,你没有给出任何关于接收者的识别信息,所以你将会盲目地发送给任何回答这个IP的人。

  稍后的另一个功能是加密你的钱包。

  现在,我想在这里说明有一个人他的奉献最大,他应该被认为是最初成功的主要功臣,因为他们的帮助是有帮助的。我几乎不承担任何责任,因为这个人真的是应该感谢的人。

  哈罗德芬尼(简称哈尔)是我见过的最聪明的人之一。他不仅是负责第一个可重复使用的工作系统证明的人,而且他是真正的熟练。他还参与了PGP的持续开发(为了记录,我从来没有使用PGP来做任何事情,我也怀疑我这次也不会)。我对他非常尊敬,尤其是他致力于确保比特币的生存,因为即使在早期其他人对比特币不感兴趣的时候,哈尔是唯一一个与我并肩作战的人。

  我从密码朋克的邮件列表中了解哈尔有一段时间,所以我尊重他的思维过程,因为他是我非常尊敬的人。

  哈尔是第一个在工作量证明上建立起来的人,也是第一个提出可重复使用的工作证明的人。这对于比特币的原型来说是至关重要的,因为他在RPOW上的工作,就像电子货币一样,是激发我最初使用POW的灵感。令今天的人们懊恼的是,我仍然相信工作量证明的优点(我将在书中解释原因)。哈尔确保了RPOW代币的价值与铸造POW代币所需的真实世界资源的价值相对应。在他的例子中,POW代币是一种哈希现金,它是由亚当开发出来的。

  尽管他的RPOW没有看到明显的吸引力,也没有真正的使用,但它就像比特币,基于POW的哈希现金。这意味着两者都来自同一个起源,但都取得了不同的结果。尽管RPOW的设计是基于POW的哈希现金的,但它依赖于硬件可信的计算功能,这意味着计算机将始终以预期的方式运行,而这些行为是由计算机硬件执行的,而比特币则依赖于一个去中心化的P2P协议。从这个意义上说,比特币得到了更好的保护,并且可以得到更好的信任,因为虽然RPOW是由存储在TPM(可信平台模块)硬件中的私钥保护的,但是任何持有这些密钥的人都有可能破坏这种信任。

  不同之处在于,比特币是通过单个矿工使用的哈希现金的POW功能挖掘出来的,并由节点本身在P2P网络中进行验证。

  哈尔也是我第一个发送比特币的人,他是我的第一个收件人,也是第一个官方的bug报告者,也就是第一个报告bug的人。

  我与哈尔对话一开始主要包括在调试软件的第一个版本,v0.1.0α,虽然我没有任何实例使用软件的经历,我知道其对更多的用户开放有助于认识和解决问题,我不能仅仅靠我的经验或复制。

  比特币是一种安全密集型应用,尤其是因为它面向互联网。为了使它能够工作,所有的bug都必须在发布之前从软件中得到解决,或者尽可能多的被发现。调试包括在软件中搜索“bug”,直到您找到故障发生的地方,然后确定错误的参数或代码是为了进行必要的更改。

  GDB只读取足够的符号数据,以知道在调用时在哪里找到其余的部分,而GCC避免为正在编译的源文件中未使用的类型生成调试符号输出。

  在这种情况下,应用程序在调试构建中工作,但是在发布版本中失败了,很可能是编译器优化是原因,而罪魁祸首是源代码中的缺陷。在调试构建中,优化被打开,调试符号不会被释放。因此,为了隔离bug,您必须禁用编译器优化,直到找到问题文件为止。在要点中,这就是调试的工作原理。

  在哈尔的案例中,没有任何符号出现。这是因为我已经剥夺了他们,因为它使可执行文件的大小增加了近45mb。当时我不能证明,因为我完全没有遇到任何异常,但后来我意识到这是一个错误,同时软件仍然有很多错误。

  当时,哈尔正在使用MSVC(Visual Studio),并在启动比特币时经历了崩溃。运行cygwin,一个类似于UNIX的命令界面,它允许你在它上面启动windows特定的应用程序,在这个例子中,应用程序是比特币,哈尔没有发生崩溃。

  这导致我在我这边复制了这个bug,并将其隔离到“map地址”。这对软件来说不是必需的,所以我愿意删除这部分,关闭优化,直到我能弄清楚到底发生了什么,因为我不能再复制它了。

  这个(似乎)小问题困扰了我很多,以至于我开始花接下来的几个小时试图对软件进行压力测试,并重新创建这个问题。三个小时后,我终于明白了问题的症结所在。问题是,当我启动一个线程并执行map地址时,内存访问冲突。这通常发生在一个程序试图访问一个它不允许的内存位置时。

  我最后添加的一个代码片段,甚至根本不需要它,这让我感到很痛苦,也让我很沮丧,所以我决定推出一个新版本v0.1.1,省略了mapaddress.count。一旦我删除了那个单实例和一行代码并关闭了优化,一切都运行良好。从早上的混乱到那天结束的“一切都很好”。

  我们继续在v0.1.2版本中工作,我将它发送给他进行测试,软件仍然存在问题,他的节点变得没有响应,我将其归因于ThreadSocketHandler或ThreadMessageHandler。我让他通过一个调试构建来查找原因,并将其缩小到一个选择失败的错误,这决定了一个或多个套接字的状态,特别是“选择失败:10038”。我经历了如此艰难的一天,感觉被打败了,我告诉哈尔,互联网是一个残酷、粗暴和混乱的地方。最终我找到了一个解决方案,选择错误本身并不是一个主要问题,但是它确实导致了通信线程在套接字上被阻塞。如果我没有修正这个错误,节点的通信将是断断续续的,有时会死掉。连接仍然建立,但是没有数据通过。

  这就是为什么任何生成的块都没有被接受,因为他不能广播它们,迫使其他节点离开分支。这也是他无法产生的原因,因为他似乎没有被联系起来。当我给他发送v0.1.3时,一切都是肯定的,这次运行良好。为了表示我的感激,我给哈尔寄了一些比特币,这样他就可以玩了。在几天的时间,我已经完全确定了第一个版本中的主要bug,我整个时间都在试图找出方法来解决它,让它工作。

  哈尔想把他的一些比特币寄给我,不幸的是(因为我的端口8333已经关闭),我无法从我所在的地方接收到任何的连接,这让事情变得很困难。

  (我想花点时间来解释一下比特币,这不是我选择的端口,而是2222号端口。TCP端口的工作方式是IANA(因特网分配的数字权限)是为特定用途分配端口号的实体。换句话说,端口8333就像是按惯例成为比特币的非官方指定端口——它不是,也从来没有在IANA注册过。)

  所以,我告诉他把它寄到我的地址,这意味着我下次上网时就会收到这笔钱。向一个地址发送付款包括将其发送到他们的公钥的哈希,以便下一次用户连接时,他们会看到支付。这有一个缺点,即不发送任何评论信息,如果您想保持匿名,地址应该只使用一次。这是有用的,但是当接收者不在网上时,如果他们是,那只是输入他们的IP地址,获得一个新的公钥并发送带有注释的交易。

  那天晚上,在哈尔的计算机上的v0.1.3又一次崩溃了。似乎我已经决定不间断地修正错误了。我给他发送了调试构建版本,我们都得出了一个结论,那就是磁盘满是罪魁祸首。我一直不喜欢那些由大的依赖关系组成的项目,但是没有回避它,因为每个项目都是必不可少的。我向哈尔建议,如果他确实建立了依赖关系,让我知道它是如何进行的。我很困惑,他是如何得到一个读取的异常,而不是在他的磁盘被填满时的一个写异常。我认为这可能会破坏他的块文件,并建议如果问题再次发生,他会直接删除它们。删除块文件不会永久删除它们,因为它会重新下载块链。即使没有备份整个目录,包括数据库子目录,下载的最关键的文件是钱包。这是存储私钥信息的地方。

  数据库有一个不幸的例子,它将其文件命名为“log”。对于那些熟悉数据库的人来说,这意味着删除和删除所有的文件。我试着把它们放在数据库子目录中,使它们脱离险境。后来,我想通过编写代码来避免这种情况,因为每个钱包都在更换钱包。数据是安全的。

  大多数人都不知道,但真正让比特币在头几天保持稳定的是哈尔,他唯一的一个节点接收到的连接,这是在第一天或两天内保持网络运行的主要原因。如果不是因为哈尔,我不知道在最初的几天里我会做什么。

  直到今天,我仍然在思考哈尔是多么的优秀,如果不是他,比特币将不会像它那样成功。当我没有支持的时候,只有我的时候,哈尔是唯一一个相信我想要做的事情的人。如果任何一个人都应该获得比特币的功劳,以及它最初的成功,那就是他。2014年8月,哈尔不幸去世,他患上了一种令人衰弱的疾病——ALS。但在最后,哈尔继续战斗,尽管有困难,他还是很高兴。他意识到自己的死亡,并坦然接受了一切。

  他那句著名的名言经常出现在他解释他对密码学的兴趣的地方,强调了我们所共有的相似的信念。这就是我们团结起来的原因。

  “这对我来说太明显了。在这里,我们面临着隐私的丧失、计算机化的缓慢、庞大的数据库、更集中的问题,而Chaum提供了一个完全不同的方向,一个将权力交到个人手中而不是政府和公司的方向。计算机可以作为一种工具来解放和保护人们,而不是去控制他们。”

  哈尔很聪明,能够猜到加密货币的未来会是什么样子,他猜对了,最终大多数人会意识到它是什么——它不会长久地保持一个小众市场。同样的,10年前,我也得出了同样的结论,我们也会以某种形式使用数字货币,就像许多人想象的那样,它可以被使用。我没有预料到的是,比特币将会有多快,或者比特币会成为刺激它的动力。

本文地址:BTG比特币http://www.btglotto.com/bitebizixun/1086.html