主页 > 安卓版imtoken > 中本聪谈比特币的前世今生(完)

中本聪谈比特币的前世今生(完)

安卓版imtoken 2023-10-07 05:11:05

比特币是未来货币的一种形态_比特币为什么不是货币论文_比特币怎么兑换成货币

目前,有一个网站自称是“中本聪之家基金会”,由中本聪署名的作者发表了长达21页的长文。 这是近年来最像中本聪的人。 我们翻译了这篇长达21页的长文,并陆续与大家分享。 这是最后一部分。

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

我先给 Adam 发了电子邮件,他把我介绍给了 Wei,这两个我都包含在我最初的设计论文中。 我和他们共同设计了一张草稿纸,但我怀疑它们都不见了(其实我知道这是一个事实,如果你不相信我,请继续问),以及我唯一发送给今天的邮件列表是事实。 当我提到设计文件时,我指的是今天众所周知的白皮书。 我在公开发布后重命名了它。

Adam 是邮件列表中的常客,也是为数不多的同时考虑如何找到真正无法追踪的电子现金的人之一。 他是分布式电子现金的主要支持者,许多人都尝试过这种方法,但都没有成功。 对于 Adam,我认为他关心的是如何阻止它以摩尔定律的速度扩张,而在比特币之前,没有人找到一种方法来做到这一点。 cypherpunk 社区中提出的大多数早期想法要么包含在学术论文中,要么已经被使用但从未被认真对待并且由于各种原因而没有奏效(一个显着的例子是 Digicash)。

我通过他在邮件列表上的帖子了解了 Adam,这就是我了解 hashcash 的方式。 他在密码朋克邮件列表上详细描述了它的属性,人们将它比作数字黄金,以及如何实现分布式电子现金的实现。

虽然 Adam 是 Hashcash 的负责人,但它还有其他各种实用程序可以使用,尽管到目前为止它主要用于反垃圾邮件。 其中之一是比特币挖矿功能的一部分,但存在一些关键差异。 Hashcash 专用于整比特,而比特币挖矿扩展到允许分位数,2^32 是比特币的原始和起始难度。这是因为双重哈希,从 SHA1 切换到 SHA256 和比特币,将找到哈希的工作定义为

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

当我联系到 Wei 时,我已经研究了他的 b-money 并试图将其包含在我的论文中。 我希望通过向其他人展示是什么想法帮助塑造了比特币的创造,这将帮助他们更好地理解我的动机。 在他的文章中,Wei 提出将工作量证明作为一种创造货币的方式。 我认为 Wei 的建议是对 Adam 的 Hashcash 的回应,后者在一年前发布了相同的密码朋克邮件列表。 在论文中,Dai 概述了所有现代加密货币应具备的基本要素,包括: • 通过指定数量的计算工作,在本例中为 PoW • 这项工作由更新全球分类帐或“区块链”的社区进行验证 •为员工的最大努力提供资金,在这种情况下为用户 • 通过使用加密散列,资金交换通过合作记录和身份验证实现。 • 合同由节点使用公钥密码术广播和签署带有数字签名的交易来执行。

戴先生清楚地描述了加密货币的优点,以至于早在 1998 年,比特币等货币的基本构建块就已经存在。 事实上,许多不同的迭代都未能为比特币和所有后续加密货币铺平道路。 但 Wei 提供了一个基础,我可以从中借鉴现有的想法,并进一步实现他对去中心化货币的愿景。

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

大多数情况下启动和构建第一个比特币测试网络,虽然事实已经确定并且一切正常,但我担心社区是否会接受或拒绝我的工作,这花了我两年的时间。 在学术界,就像在日常生活中一样,有时您需要上司的支持才能让您的工作顺利通过。

我很确定,如果我只是在没有任何引用或参考的情况下在邮件列表上宣布我的工作(和意图),那么它很可能会被视为对去中心化货币的又一次失败尝试。 但是这里有两个密码学领域的知名(受人尊敬的)个人,从某种意义上说,他们向我保证他们的名字被包含在论文中。 这就是我的推理,所以当它宣布时,已经有一些支持或立足点让它通过大门并落入最严厉的批评者手中。

当我离开社区时(跳过一些,好吧,这里是许多章节的摘录),我将域的所有权转让给了 Martti,并将存储库留给了 Gavin。 4 月是我决定离开的时候(事实上,我比圣诞节早一年离开社区,如果你不相信我,这个时候问问核心开发人员,比如 Mike),因为维护和开发已经由一个熟练的开发团队接管,所以他们不需要我,我真的无意继续。 我向核心开发人员发送了最后一封信,并将责任委托给其他人。 我联系了一段时间,然后迅速抹去了我和中本聪之间的所有联系。 我尽力不留下任何关于我曾经存在过的肯定,我把所有与我联系在一起的东西都放在一系列文件中,所以在我不在的时候,任何人都可以扮演这个角色。

还有其他更严重的离开原因,我不想在这里讨论,但会在书中提到。

这是倒带时间。

自 2006 年年中以来,我一直在思考一种货币的想法,但直到一年后,我才真正开始考虑如何根据这些想法制作原型。 我对密码学的理解不是特别高深,尽管如此,我还是采用了我所知道的存在和工作,并在我认为合适的地方进行了改进。 我当时研究了研究资料,意识到我认为会持续很长时间的东西。 有些协议和标准刚刚开始实施,我决定将它们纳入未来的保护。

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

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

这里的主要区别之一是它导致了 P2P 文件共享等技术和 Napster 等服务,然后是从 Mnet 中分离出来的 Bittorent。 Mnet 本身是一种点对点文件共享服务,它在完全分布式网络中使用一种名为 Mojo 的数字货币,提供抵御攻击的激励,这是最早的“智能合约”之一。

我简要提到了 USENET,因为当我宣布比特币时,某些事情只是在之前忽略它们之后才引起我的注意,例如直到我发布它们才知道的公共时间戳。 网络太大了,无论从哪个角度看,我都不是什么都知道。

达斯汀·特拉梅尔 (Dustin Trammell) 就是其中之一,他给我带来了深刻的见解,因为尽管我认为我已经涵盖了所有基础知识,但仍有一些东西需要学习。 当他在我公开宣布比特币的那天给我发电子邮件时,他与我分享了一种使用不使用 USENET 的时间戳的惊人方法。 这就是为什么后面我会特别提到一些我可能忽略的其他想法,比如比特币的前身,BitGold。

尽管如此,我还是觉得有些东西我还没有发现。 在那些早期的日子里,Dustin 继续与我保持联系并提出建议,这帮助我使比特币更美观、体积更小、功能更强大。 在接下来的几天里,我们讨论了如何让比特币在公众中流行起来。 我喜欢 Dustin 的地方在于他的开放性,因为我们都对金钱和密码学有着浓厚的兴趣。 人们认为我不是“密码学家”,从最真实的意义上讲,我不是,但这并不意味着我不知道如何将密码学证明应用于比特币。

Dustin 也是为数不多的对稳定版比特币 v.0.1.3 提供反馈的人之一。 在此之前,该软件已经漏洞百出,最初几天我都在按小时工作以修复软件中的漏洞。

他提出的一个更有趣的问题是,如果有一个节点拥有最多的 CPU 能力,如果一个节点比其他节点更强大,那么它将始终如一地赢得大部分比特币。 我用最简单的方式向他解释,就像我过去一直做的那样,打个比方。 正如我尝试解决拜占庭将军问题一样,我觉得向新用户解释它的最好方法是采用更容易理解的现有想法或概念,并将其应用于可能(可行)的情况,在这个case ,这与性能有关。

我用了一辆快车的类比,我可以看出他在考虑马力。 我向他解释说这不是一场比赛,如果一辆车的速度是它的两倍,它就会(假设)总是赢。 相反,它是 SHA-256,只需不到一微秒,并且每次猜测都有均等但独立的成功机会。 每台计算机发现哈希冲突的机会与其 CPU 能力成正比。 因此,虽然计算机的速度可能只有它的一半,但这仅意味着它将获得一半的比特币,而不是什么都没有。 比特币本身并不是一个赢家通吃的系统。

人们应该明白,比特币的核心是它和所有时间戳服务器共享一个基本功能,即定期将东西收集到块中并将它们散列到链中。

当网络 CPU 总量较小时,比特币也处于最脆弱的状态。 但这被一开始就没有攻击它的动机这一事实所抵消。

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

我非常担心密码学社区会怎么想,这让我忽略了任何在原始设计论文中引用 Digicash 作为比特币前身的失败尝试,因为担心人们会在它开始之前就将其解雇,并且继续前进。 因此,我引用了 b-money 等想法的优点和对工作系统的反驳,这些想法本身受到亚当在他的论文中提到的其他人的工作的启发。 抓住好的想法,忽略失败的想法,这是我在如此严厉的怀疑论者眼中看到成功的唯一方式(也许批评家是一个更好的词)。 如果 Digicash 不是基于信任的系统,就会被引用。

哈尔提到比特币及其成功机会在 2019 年将是一项“孤独的投资”,换句话说,不太可能。 它要么工作得很好,流行起来,要么失败得很惨。 比特币,虽然我看到了传统方法之外的许多用途,例如传统货币无法真正融入的狭窄领域、奖励积分、捐赠代币、游戏内货币,诸如此类,但我从没想过比特币会以这种方式出现,它直接与法定货币竞争。 但是它就是这样啊。 它超出了预期。

比特币从各个角度来看都非常安全,几乎没有失败的可能,而且主要是为长期而构建的,但是,有些人质疑我所采用的方法。

很多人可能会疑惑为什么比特币的核心是用C++设计的,答案主要是和内存有关。 不能否认弹性和适应性。 在考虑使用哪种编程语言时,我最关心的是可靠性和攻击,其中主要关注的是对网络的攻击。

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

第一种攻击方法将您暴露在您家或公司的本地局域网、Internet 服务提供商之间的管理员和接收者的局域网中。 第二种方法让您可以接触到 10 亿人,他们可以自行选择成为攻击者,当他们开发出一种攻击多个受害者的技术时获得规模经济。

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

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

IP 请求发送一个新的公钥,所以是的,很容易在中间放一个 1。 如果这是一个问题,那么发送到比特币地址就没有这样的漏洞,尽管这是一个小的隐私权衡。 我有一种感觉,大多数时候人们从非 SSL 站点和未签名的明文电子邮件中获取比特币地址,这些已经很容易受到 DNS 中毒的攻击。

一种解决方案是发送时使用IP地址和比特币地址(大概是1.2.3.4-1Kn8iojk...),接收方使用比特币地址的公钥签署新的公钥证明你发送给某人你以为你是谁。 如果系统开始用于真正的商业目的,我肯定会实施它。 另一种解决方案是使用 SSL。

目前,显然,如果您发送到一个 IP,您不会提供任何关于收件人的身份信息,因此您将盲目地发送给任何回答该 IP 的人。

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

现在,我想在这里声明,有一个人的奉献是最大的,应该算是初成的主要贡献者,因为他们的帮助是有帮助的。 我几乎不承担任何责任,因为这个人才是真正值得感谢的人。

Harold Finney(简称 Hal)是我见过的最聪明的人之一。 他不仅负责第一个可重复使用的工作证明系统,而且他真的很熟练。 他还参与了 PGP 的持续开发(郑重声明,我从未将 PGP 用于任何用途,而且我怀疑这次我也不会)。 我非常尊敬他,尤其是他为确保比特币生存而付出的努力,因为即使在早期其他人对比特币不感兴趣的时候,哈尔也是唯一一个与我并肩作战的人。

我在密码朋克邮件列表中认识 Hal 有一段时间了,所以我尊重他的思考过程,因为他是我非常尊重的人。

Hal 是第一个建立工作量证明的人,也是第一个提出可重复使用的工作量证明的人。 这对比特币的原型至关重要,因为他在 RPOW 方面的工作,就像电子货币一样,是最初启发我使用 POW 的原因。 令今天的人们非常懊恼的是,我仍然相信工作量证明的优点(我在书中解释了原因)。 Hal 确保 RPOW 代币的价值对应于铸造 POW 代币所需的现实世界资源的价值。 在他的示例中,POW 令牌是哈希现金的一种形式,由 Adam 开发。

虽然他的 RPOW 还没有看到明显的吸引力,也没有真正的用处,但它就像比特币,基于 POW 的哈希现金。 这意味着两者同源,却有不同的结果。 RPOW的设计虽然是基于POW的hash cash,但是依赖于硬件的可信计算功能,也就是说计算机总是会按照预期的方式进行行为,而这些行为都是由计算机硬件来执行的,而比特币不依赖分散的 P2P 协议。 从这个意义上说,比特币受到更好的保护并且可以得到更好的信任,因为虽然 RPOW 受到存储在 TPM(可信平台模块)硬件中的私钥的保护,但持有这些私钥的任何人都有可能破坏这种信任。

不同的是,比特币是通过个人矿工使用的hashcash的POW功能进行挖矿,并由P2P网络中的节点自己验证。

Hal 也是我第一个发送比特币的人,他是我的第一个收件人,也是第一个官方漏洞报告者,第一个报告漏洞的人。

我与 Hal 的谈话最初主要包括调试软件的第一个版本 v0.1.0α,虽然我没有使用该软件的任何实际经验,但我知道向更广泛的受众开放它可以帮助识别和解决问题,我不能仅仅依靠我的经验或复制。

比特币是一种安全密集型应用程序,尤其是因为它是面向互联网的。 为了让它工作,必须从软件中解决所有错误,或者必须在发布之前发现尽可能多的错误。 调试涉及在软件中搜索“错误”,直到找到故障发生的位置,然后识别错误的参数或代码以进行必要的更改。

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

在这种情况下,应用程序在调试版本中工作,但在发布版本中失败,很可能是编译器优化的原因,而罪魁祸首是源代码中的缺陷。 在调试版本中,优化被打开并且调试符号没有被释放。 因此,要隔离错误,您必须禁用编译器优化,直到找到问题文件。 简而言之,这就是调试的工作原理。

在 Hal 的例子中,没有符号出现。 这是因为我删除了它们,因为它使可执行文件的大小增加了将近 45mb。 我当时无法证明,因为我根本没有得到任何异常,但后来我意识到这是一个错误,软件仍然有很多错误。

当时,Hal 使用的是 MSVC (Visual Studio),在启动比特币时遇到了崩溃。 运行 cygwin,一个类似 UNIX 的命令界面,允许您在其上启动特定于 Windows 的应用程序,在本例中是应用程序比特币,Hal 没有崩溃。

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

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

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

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

这就是为什么任何生成的块都不被接受,因为他不能广播它们,迫使其他节点离开分支。 这也是他无法被生成的原因,因为他似乎没有连接。 当我给他发 v0.1.3 时一切正常,这次工作正常。 为了表示感谢,我给哈尔送了一些比特币让他玩。 几天后,我完全确定了第一个版本中的主要错误,并且我花了全部时间试图弄清楚如何修复它并让它工作。

Hal 想给我发送他的一些比特币比特币为什么不是货币论文,不幸的是(因为我的端口 8333 已关闭)我无法从我所在的位置接收到任何连接,这让事情变得很困难。

(我想花点时间解释一下比特币,它不是我选择的端口,它是2222端口。TCP端口的工作方式是IANA(Internet Assigned Numbers Authority)是为特定用途分配端口号的实体。换句话说,端口 8333 就像按照惯例为比特币指定的非官方端口——它没有也从未在 IANA 注册过。)

于是,我就让他寄到我的地址,这样我下次上网就可以拿到钱了。 向地址发送付款涉及将其发送到其公钥的哈希值,以便用户下次连接时,他们将看到付款。 这样做的缺点是不会发送任何评论信息,如果您想保持匿名,则地址只能使用一次。 这行得通,但是当收件人不在线时,如果他们在线,只需输入他们的 IP 地址,获取新的公钥并发送带注释的交易即可。

那天晚上,v0.1.3 在 Hal 的电脑上再次崩溃。 好像我已经决定不间断地修复错误。 我向他发送了调试版本,我们都得出结论,一个完整的磁盘是罪魁祸首。 我一直不喜欢由大量依赖项组成的项目,但没有回避它,因为每个项目都是必不可少的。 我向哈尔建议,如果他确实建立了依赖关系,请告诉我进展情况。 当他的磁盘已满时,我很困惑他是如何获得读取异常而不是写入异常的。 我认为这可能会破坏他的块文件,并建议如果问题再次出现,他会简单地删除它们。 删除块文件不会永久删除它们,因为它会重新下载块链。 即使不备份整个目录,包括数据库子目录,下载的最关键文件也是钱包。 这是存储私钥信息的地方。

不幸的是,数据库将其文件命名为“log”。 对于熟悉数据库的人来说,这意味着删除和删除所有文件。 我尝试将它们放在数据库子目录中以将它们移开。 后来想通过写代码来避免这个,因为每个钱包都在换钱包。 数据是安全的。

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

时至今日,我仍然在想哈尔是多么的优秀,没有他,比特币就不会像现在这样成功。 当我没有支持,只有我一个人时,哈尔是唯一相信我想做的事的人。 如果有人因比特币及其最初的成功而值得称赞,那非他莫属。 2014 年 8 月,Hal 不幸死于一种名为 ALS 的衰弱性疾病。 但最后,哈尔继续战斗,尽管困难重重,但他很开心。 他意识到自己的死亡并接受了这一切。

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

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

Hal 很聪明地猜测了加密货币的未来会是什么样子,他是对的,最终大多数人都会意识到它是什么——它不会长期保持一个利基市场。 同样,10 年前,我得出了同样的结论,即我们也会以某种形式使用数字货币,正如许多人想象的那样。 我没有预料到的是比特币会走多快,或者比特币会如何成为推动它的燃料。

至此,这个惊天动地的故事将载入史册,画上句号。