比特币的历史
2008年10月,在全球经济衰退导致政府出面救助银行系统的情况下,某人以中本聪 (Satoshi Nakamoto)为化名发布了一份名为《比特币:点对点电子现金系统》的白皮书。这份文件总结了多种技术的融合,这些技术结合在一起,创造了第一种成功的数字货币形式。这些技术是40年来创造数字货币尝试失败的产物,以下是大约100次失败尝试的列表:
创造数字货币的尝试,粗体部分将在本文后续讨论 (数据来自普林斯顿)
PayPal处在名单之上,他们最初的想法是在手持设备上进行加密支付。但当时他们无法执行这个想法,并通过转移方向而幸存下来。上表中的许多项目都有一个类似的故事,即试图制作像比特币这样的东西,但结果却都不尽人意。事后看来我们意识到,他们的根本问题是他们一开始就试图成为一家公司。然而随着每次失败后来者都获得了经验,使世界离数字货币又近了一步。
起源于20世纪90年代的赛博朋克运动伴随着互联网的发展催生了许多创建数字货币的尝试。赛博朋克认为:除非创建防御技术,否则互联网将成为政府的监视工具。
1993年5月/6月的《连线》杂志封面
在政府实施国家防火墙之前,在社交媒体网站出售我们的个人数据之前,在国家安全局的棱镜计划之前,以及在大型科技系统地审查政治运动之前,赛博朋克已经开始工作,预测这个新世界。他们之所以能够预测到这一点,是因为他们将各种知识不寻常地结合在一起,包括密码学、计算机科学、奥地利经济学和自由主义。
密码学使数字加密成为可能,从而消除了主权对互联网的影响力。但是还需要一种自主形式的数字货币,使加密的在线经济能够自由转移价值,从而在数字世界中组织起来。
以下是最终导致比特币诞生的主要事件的总结:
1.公钥密码学:始于20世纪70年代,允许在不安全的通信渠道上使用公钥。政府试图通过援引犯罪分子会使用这种技术的说法来控制这种新技术。他们最终输掉了这场战斗,这项技术现在是互联网通信底层安全的一部分,被用于大量的现代加密技术。
2.数字签名:由David Chaum于1989年开发,他用它创建了Digicash公司。这允许个人生成一个签名(如支票上的签名),以证明他们拥有与公钥相关联的私钥,而不会泄露私钥。这允许人们匿名验证他们是谁。然而,Chaum的公司并没有想出一个在不信任第三方的情况下验证签名的方法。
3.数字稀缺性:由于数字货币只是计算机上的一小部分,那有什么可以阻止别人复制它呢?金钱需要稀缺才能具有基本价值。在现实世界中,稀缺的东西数量很少,或者很难找到。Adam Back在1997年提出的HashCash提案中用计算谜题重现了这个现实世界的问题。计算机擅长数学,但有些数学问题只能通过猜测来解决。如果你使用足够大的数字,这些问题对于计算机来说就很难通过猜测来解决。通过将货币的创造与这些数学难题的解决方案联系起来,数字货币变得稀缺。在比特币中,这个概念被称为工作量证明共识算法,它需要被称为矿工的计算机来解决计算要求高的难题以创建新的比特币,这使得比特币的创造成本高昂,因此稀缺。
4.区块链:区块链的概念可以追溯到Haber和Stornetta在1991年的一篇论文。这个想法是让人们随着时间的推移将不同版本的文档发送到服务器。服务器将添加指向先前文档的哈希指针、时间戳和服务器的数字签名以验证它实际上是签署此文件的服务器。这意味着列表中的最新版本与之前的版本有一个链接,从而在它们之间创建了一个链。
哈希指针是一个散列函数,它对文档时间列表中的前一个文档进行散列。这些函数将大型数据库压缩成文本字符串进行存储,数据库任何部分的单一变化都会反映在文本字符串中。如果创建的每个文档都包含指向其先前版本的哈希指针,则对其沿袭的任何更改都将通过当前文档的哈希指针的变化而显现出来。向每个文档添加时间戳会创建一个临时列表,然后使用数字签名可以证明哪个服务器签署了文档更新。所有这些措施结合起来产生了一条经过验证的信息链,任何篡改其历史的行为都会被立即发现。
简而言之,数字签名创建了一种可验证的方法,可以在不公开身份的情况下以数字方式确认身份。这种数字签名,当纳入区块链数据结构时,会创建一个时间链接的、不可变的数据记录。这些技术可用于解决数字货币固有的问题。然而这种数字货币的供应需要稀缺,这个问题是通过使用计算密集型难题(通过哈希函数)来解决的,以调节供应。
然而这些进步都没有找到解决已记录账本上上节点之间分歧的方法,比特币解决了这些最终挑战。比特币利用数字签名、区块链数据结构和计算难题在历史上首次成功创建了去中心化的数字货币。
中本聪说他(她)在 2007年5月左右开始编写比特币,并于2008年5月注册了www.bitcoin.org网站。2008年10月,他发布了比特币白皮书和代码。比特币网络在 2009年初启动并运行,第一笔交易发送给Hal Finney。至此赛博朋克社区开始鼓励使用比特币进行点对点交易。
赛博朋克的远见卓识令人吃惊,他们的所作所为需要勇气。他们对发明互联网货币的大部分探索都受到了奥地利学派经济学家的启发。
1999年诺贝尔经济学奖得主Milton Friedman说:
“我认为互联网将成为削弱政府作用的主要力量之一。有一件还没有但很快就会发展起来的东西,那就是一种可靠的电子现金,这是一种可以在互联网上将资金从 A 转移到 B 的方法,而 A 不知道 B 或 B 不知道 A。”
2008年,这一愿景开始了走向现实的旅程。中本聪站在巨人的肩膀上创造了去中心化的数字货币。
比特币的作用
比特币的作用与它为什么有价值是一个不同的问题。使比特币有价值的是决定使用它的人的网络。要了解为什么这些人决定使用它,你需要了解它的工作原理,这可能具有挑战性,因为比特币的技术包含了大多数人不熟悉的技术概念。
比特币协议允许你向世界上的任何人发送稀缺资金。这个能力听起来很简单,但它很强大。立即致电你的银行,让他们为你将大量资金汇给另一个国家的人,在接下来的一周里,你会享受到试图实现这一目标的“乐趣”,并随后被政府追踪。在几分钟内通过数字网络转移大量价值的能力在其他地方是不存在的。
你可能会问,Paypal、Venmo或Cash App怎么样?
这些都是受信任的第三方,信任第三方是有代价的。
你必须遵守他们的规则
你必须告诉他们你是谁
你必须相信他们会保护你的信息安全
你必须让他们控制你的资产
让我们在前文最后一句话中加上“无信任”:在几分钟内通过无信任数字网络转移大量价值的能力非常强大。它是不可信的,因为你不必信任第三方。这是可能的,因为它是一个去中心化的网络,没有第三方中介,因此没有人可以控制它,下文会详细解释。
2020年4月,一笔交易中转移了11亿美元的比特币,成本为68美分,并且在几分钟内完成,这是廉价而有效的。交易者不必遵守任何人的规则,告诉第三方他们是谁,信任任何人的信息或让任何人控制它。世界上没有任何其他支付系统可以在没有第三方监督的情况下以68美分的成本在如此短的时间内移动巨额资产。
为了了解这是如何实现的,我们需要从技术上进行探讨。
单向计算
比特币在整个协议中以多种方式使用哈希函数。在最简单的意义上,它允许我们进行单向计算——如果A*B=C,你只能找到A或 B,如果你知道它们(例如如果你有A和C,你不能将它们分开来找到B )。
在比特币中,你的公钥是C,A是你的私钥,B是所有人都知道的。
1.A=私钥:你选择的随机数。
2.B=这个变量是公开的,每个人都知道,永远不会改变(在比特币中,它被称为secp256k1)。
3.C=公钥:也被称为你的比特币地址(但两者之间存在细微差别)。
单向计算之所以有效是因为它们取决于一个无法解决的数学问题,即离散对数问题。简而言之,如果你在一个深不可测的大素数域上使用有限域数学,那么除法求解实际上是不可能的。许多现代密码学都依赖于这个无法解决的问题。如果它得到解决,我们的大多数密码系统都会崩溃。计算机理论上可以变得足够快,可以通过迭代(例如通过量子计算)来猜测解决方案。然而这是非常不可能的,为了让你对此有所了解,比特币使用的质数长度为2256位,宇宙中的原子数估计为1080个,一万亿台计算机每万亿分之一秒执行一万亿次计算,持续一万亿年仍然少于1056次计算。
比特币地址和数字签名
哈希函数和数字签名是创建比特币的基础,它们能够创建比特币地址。地址是人们可以发送和接收比特币的地方,数字签名允许你公开,证明你知道解锁地址的私钥而不会泄露它。为此比特币使用椭圆曲线数字签名算法(ECDSA),下面是关于这一切如何联系在一起的描述。
ECDSA 的工作原理如下:
1.私钥是作为随机数生成的,一个好的随机性来源对安全来说是至关重要的。
2.私钥乘以比特币椭圆曲线上的一个标准点,创建一个可以在不泄露私钥的情况下共享的公钥。
3.然后对公钥进行哈希化以创建比特币地址。如果你的私钥使用的随机性较差,则你的地址可能存在安全问题。
4.ECDSA算法根据你的私钥创建数字签名,使用此签名和你的比特币地址,便可以将比特币发送给网络上的其他人。
5.当你发送比特币时,网络上每个感知到你交易的节点都会用你的地址验证你的签名,并检查你拥有的比特币是否至少与你尝试发送的一样多。如果你的签名验证失败,或者你拥有的比特币数量不足,你的交易将从网络中删除。
交易机制
在比特币中,每笔交易都有输入和输出。当你发送比特币时,输入的是你地址的金额,输出是你发送到另一个地址的金额。
假设Kanye West向Mike Tyson发送一个比特币:
比特币存在于地址中,这些地址是任何交易的潜在输入和输出。比特币的参与者维护着一份存在于每个地址的所有比特币清单,称为未使用的交易输出(UTXO)。这个列表是网络参与者参考的内容,以确认Kanye拥有他发送给Mike的一个比特币。交易后Kanye的地址减少了1个比特币,Mike的地址增加了1个比特币。Mike现在有1个比特币可以使用,这可以从更新的UTXO列表中得到验证。
区块链的数据结构
比特币允许人们创建交易,如果交易通过其他节点的验证,就会被汇总成区块。这些区块链接在一起形成区块链,被用作不可篡改的账本。
每个区块都有一个block header,其中包含便于节点之间区块验证的信息。
1.所有交易都形成一棵树(默克尔树),然后组合并散列,直到剩下一个称为默克尔根的散列。
2.前一个区块哈希值是前一个区块中block header的哈希值。
3.其余类别用于挖矿,将在后面讨论。
这种数据结构将所有内容链接在一起,使计算机能够快速验证比特币历史账本彼此之间是否一致。
因此,所有交易都通过树状结构在区块内链接,而之前的区块哈希将所有的区块链接在一起,形成区块链。下面你可以看到一个block header,包括上面显示的所有字段,以及区块的大小和其中的所有交易。
前一个区块的任何变化都会立即反映在当前区块中,因为前一个区块的哈希值会发生变化。这种结构的实施是为了迅速让参与者了解他们都是根据相同的比特币交易历史来工作的,这基本上是一种防止不良行为者的版本控制方法。
最后,了解内存池很重要。从交易的创建到其在区块链中的最终记录之间存在一段时间。在此期间,每个听说过它的参与者都会在各自的内存池中持有一个交易。这就像一个等候室,直到矿工解决了将交易发布到区块链的计算难题为止。每个网络参与者的内存池可能不同。最终找到下一个区块的矿工的内存池是将被插入区块链的内存池;任何已发送但未被该矿工纳入的交易将只需要等待被纳入在下一个区块中。
参考文章
1. Mastering Bitcoin, Andreas Antonopolous,
https://github.com/bitcoinbook/bitcoinbook
作者/ERIC YAKES
翻译/章鱼哥