李艳鹏:比特币的书籍以及中本聪的架构规划

资讯 10个月前 manoon
0

作者:李彦鹏,蚂蚁金服现任高级技术专家。他是《分布式服务架构:原则、设计和实践》和《可扩展服务架构:框架和中间件》的作者。曾在Epay和花旗银行、甲骨文、新浪微博、路透社等大型IT互联网公司担任技术负责人和首席架构师,现专注于区块链平台的开发和推广,擅长大规模高并发在线和线下整合第三方支付平台的架构规划与实施。

1 背景

对于目前流行的电子货币——比特币系统,朋友圈有很多介绍性文章,也有人试图通过漫画形象地解释比特币的特点,但还是一头雾水,总有一些疑问不清楚。为了澄清这些问题,我最近研究了中本聪本人出版的几本比特币书籍和比特币论文。我觉得我已经准备好了,迫不及待地想和你分享我的理解。希望与您共同探讨,共同进步。

2 个比特币

比特币是一种使用点对点技术实现的电子现金系统。它允许一个组织直接与另一个组织进行在线支付,而无需中间的权威清算机构。

在比特币的世界里,如果你想拥有比特币,你需要申请一个比特币地址,就像你在银行存款时需要开一个账户,然后你就有了这个账户和你自己的账户,您可以存入您的帐户,其他人也可以将钱转入您的帐户。当您需要取款或转账给他人时,您需要出示可以打开该地址的密钥,这就是您的私钥,就像您在ATM取款时需要提供密码一样。

与银行发行的法定货币不同,法定货币的发行由各国中央银行管理。大家都认为央行是可靠的,不会犯错,不会被攻击。但是,比特币的发行不需要央行等权威机构。它允许一笔交易从一个组织直接结算到另一个组织,省去了权威机构的结算环节,提高了交易结算的效率,节省了交易。跨境交易成本,尤其是跨境交易成本。

点对点在线交易系统如何保证交易的匿名性、正确性和不可篡改?如何防止双重支付,防止作弊和攻击?

接下来的章节将以最流行的语言为大家解开比特币的奥秘,让你从逻辑上理解比特币的工作原理,让你学比特币不留死角,让比特币的方方面面都清晰的呈现在你的脑海中。

3 Blockchain3.1 区块链是如何存储的?

李艳鹏:比特币的书籍以及中本聪的架构规划

对于现金账户系统,首先要解决的问题是如何记账,在哪里记账,如何存放账户等等。比如你在中国银行存款,中国银行开户为您开一个账户,您的账户存储在中国银行的服务器上,您在建行存款,建行为您开立账户,您的账户存储在建行。在银行的服务器上。如果您需要将钱转入他人在同一家银行的账户,您需要通过这家银行转账和结算您的账户。如果您需要将钱转入他人在另一家银行的账户,则需要通过银联转账结算您的账户,即使一个普通用户并不感知这么多流程,但这些步骤确实存在。从这个过程中,我们看到记账的会计系统是专门的、集中的、由一个组织拥有和维护的,通常这个组织是权威的、值得信赖的。

而比特币没有中心化的记账系统,而是使用分布式区块链来记录比特币的所有权和交易信息。每个比特币参与者都有一个相同区块链的副本。区块链包含多个随着时间排序的区块。后一个块通过哈希指针指向前一个块,形成一个链。通过这个指针,你总能找到最底层的第一个区块,第一个区块成为创世区块。每个区块都记录了前一个区块的哈希值,实际上就是前一个节点头的哈希值。如果你想改变一个区块中包含的交易比特币交易原理,你必须改变这个区块之后的所有交易 因为每个区块的产生都需要条件和时间,而且条件相当苛刻(会在与共识机制相关的文章中详细说明) , 一个区块一旦产生,就会被区块链的节点接受,并且在这个节点之后产生一定数量的区块,那么这个区块基本上是不可篡改的。

区块链图如下:

李艳鹏:比特币的书籍以及中本聪的架构规划

从上图可以看出,区块链是由多个区块组成的。每个区块由区块头和区块体组成。每个区块头包含区块的元信息,还包含一个指向前一个区块头哈希值的指针。这个指针是防止区块链被篡改的关键信息。区块体包含比特币的交易信息。第一个交易是特殊交易,是对挖矿节点的奖励。这也是产生比特币的唯一途径,即发行比特币。其余交易为转账交易。比特币从一个地址支付到另一个地址。这是实现比特币价值转移的唯一途径。综上所述,比特币只有两种交易:发行和转账。比特币产生后,只能从一个人转移到另一个人,不能凭空消失。比特币发行总量有限,共计2100万枚,属于通缩货币,我们将在后面相关文章中详细介绍比特联盟的通缩特性。

3.2 比特币的所有者如何证明他拥有比特币?

上一节介绍了区块链的存储。区块链实际上是一个比特币账本,它记录了谁拥有多少比特币,但是​​这个账本是存储在互联网上并且是分布式的,而不是由中央组织或服务器存储。有了分类帐,剩下的问题是比特币的所有者如何证明他拥有比特币?就像你在银行开户一样,当你想给别人转账时,你需要把卡插入ATM,然后输入密码。卡相当于比特币的地址,密码相当于比特币的秘钥。使用正确的地址和密钥,您可以声明您对比特币的所有权并将比特币转让给其他人。进行转账交易。

在自动取款机提取一笔现金,输入密码解锁账户。我们相信自动柜员机不会泄露密码。那么在比特币世界中,我们如何通过私钥验证一个地址上比特币的所有权?

比特币的所有权是通过加密领域技术实现的。我们先来了解一下加密领域的原理。加密领域大致经历了三个阶段。第一阶段把算法拼出来,把加密逻辑写在一个非常高级的代码里,后来发现,代码里写的逻辑再复杂,总有高手能破解。结果,产生了对称密钥加密。对称密钥加密使用对称密钥对数据进行加密,然后传输或保存。需要时,使用相同的密钥来解密和恢复原始数据。缺点是密钥是共享的。密钥无法安全存储,尤其是在跨组织场景中。后来,聪明的安全科学家发明了非对称加密算法,如RSA。非对称算法有一对秘密密钥,一个公钥和一个私钥。私钥可以导出公钥,但公钥不能导出私钥。公钥加密的数据可以用私钥解密,私钥加密的数据可以用公钥解密。如果组织A向组织B传输数据,则组织A使用公钥进行加密,组织B使用私钥进行解密。因此,B组织需要谨慎保存私钥,公钥是公开的。这是典型的非对称加密场景,可以有效防止数据被偷窥和篡改。非对称加密还有另一种情况,即签名。签名是加密场景的逆向场景。商户 B 用自己的私钥对数据进行加密,然后将加密后的数据传递给商户 A。商户 A 使用公钥对其进行解密。如果解密后数据正确,则说明数据是A发送的,有效保证了数据的防篡改。从这两个场景可以看出,公钥是公开的,可以发给任何人,私钥是私有的。解密或签名。

比特币证明所有权示意图如下:

李艳鹏:比特币的书籍以及中本聪的架构规划

从上图可以看出,在现实生活中我们用钥匙开锁,在ATM上用密码提现,然后在比特币系统中,我们用密钥来取钱实现比特币的转移,实现价值的转移。

更具体地说,一次比特币交易会将一定数量的脚本锁定到一个地址,并声明拥有该地址的用户将通过密钥的签名证明他拥有该地址,然后花费比特币,比特币用完后不会消失,会被锁在别人的地址里,其他人也可以用同样的方法把比特币花掉。

从上面的过程中,我们总结了加锁和解锁两个动作,分别对应我们平时的加锁和解锁头。在比特币系统中,是通过加锁和解锁脚本实现的。

锁定脚本将比特币与比特币地址相关联,证明比特币属于该地址。解锁脚本证明这个地址是我的,这个比特币也是我的,我可以用它来支付。

下面举个例子来详细解释一下:

用户 Alice 在比特币地址 A 拥有 10 个比特币。 Alice 和 Bob 想要进行交易。鲍勃把她的车卖给了爱丽丝。 Alice 需要支付 Bob 10 个比特币。 Bob 的比特币地址是 B。

在之前的交易中,Alice 拥有的 10 个比特币被锁定在 Alice 的比特币地址 A 上,来源可能是挖矿收益或他人转账。后面会详细介绍如何获取比特币,这里只关注证明Alice拥有比特币交易的锁定脚本。

锁定脚本的逻辑格式为:

比特币金额源锁地址

李艳鹏:比特币的书籍以及中本聪的架构规划

10

挖矿收益

地址 A

如果要使用这个锁定脚本,需要的解锁脚本如下:

解锁地址解锁

地址 A

地址A的公钥和地址A的私钥对上一个区块头的哈希值进行签名

具体解锁过程如下:

使用地址A的公钥推导出地址,并与地址A进行比较,如果一致,则证明公钥提供正确,进行下一步。使用地址A的公钥解密签名。如果得到的值与前一个区块的哈希值一致,则证明解锁成功,可以在该地址上花费10个比特币。

实际上,锁定和解锁脚本是由反向波兰表示法的基于堆栈的脚本实现的。由于本文篇幅有限,这里就不一一介绍了。我们将在后续文章中详细介绍锁定和解锁脚本的原理和过程。

李艳鹏:比特币的书籍以及中本聪的架构规划

4.挖矿

上一节介绍了比特币使用分布式存储区块链作为记账系统,也解决了如何申报比特币的所有权和向他人支付比特币的过程。现在我们遇到了一个新问题。既然区块链是一个分布式记账系统,每个参与节点都有一份副本,那么谁负责在区块链上记录一笔交易?

这就不得不引入一个新的概念,就是共识机制。比特币通过工作量证明的共识机制来决定记账权。一般来说,谁证明自己的工作量最大,谁就负责记录。帐户。

工作量证明示意图如下:

李艳鹏:比特币的书籍以及中本聪的架构规划

工作量通过计算满足一定标准的比特币区块头的哈希值来体现。试图争夺帐户保留权的节点称为挖矿节点。挖矿节点将验证网络节点发送的交易(网络传播机制将在下一节介绍)。经过验证后,将它们存储在缓冲区中,形成一定数量的Transaction存储结构(交易使用Merkle树存储,后面会问各种介绍),放在块体中,然后是块头根据区块的基本信息构造。区块头通常包含前一个区块的哈希值。 , Merkle root(在后续文章中详述)、时间戳、难度目标和填充的随机值。里面的随机值是随机生成和填充的。挖矿过程就是找一个可以填充区块头的随机值,使区块头的哈希值符合一定的标准,例如:哈希值的第一位为0比特币交易原理,难度目标用于表示哈希值标准的难度系数,通过概率算法可以计算出难度值和挖矿成功的概率。

网络上的每台矿机接收并验证一批交易,然后开始挖矿。视图计算满足一定难度值的区块头的哈希值。如果计算成功,则挖矿成功,将挖矿收益广播到全网,全网节点验证后,将该区块连接到区块顶部,并在全网达成一致。矿机需要反复试验随机填充值才能解决问题。一般都是生成随机数,尽量将生成的随机数填入区块头,然后计算hash。后续文章会介绍矿机联盟,矿机联盟会用随机数分成多个cell,分配给联盟成员,一起解决。

除了上面介绍的工作量证明机制,还有股权证明、股权证明等共识机制,后续我会在共识机制的专题文章中与大家分享。

5.P2P 网络

前两节介绍了比特币的账户体系和记账机制。在本节中,我们将讨论比特币的分布式区块链账本如何在网络上传输,以及交易如何在网络上传输和验证。 .

李艳鹏:比特币的书籍以及中本聪的架构规划

比特币网络中的节点都是点对点的。没有中央服务器。节点有不同的类型,不同的类型有不同的职责。我们将在以后的文章中详细介绍它们。这里只介绍整个Node,也就是Bitcoin Core客户端的工作机制。

比特币中的全节点除了存储完整的区块链外,还具有矿工钱包路由节点等角色,其职责如下:

矿工:就像矿工一样,他们从事体力劳动。他们不断地尝试在构造的区块头的随机字段中填充数字,以找到符合一定标准的哈希值。如果找到,把这个块连接到区块链的顶端,合法的区块链被发送到相邻的节点。钱包:区块链记录硬币创建交易和转移交易。这与通常的帐户系统不同。通常的账户系统记录账户余额,而区块链只记录交易。没有平衡。钱包用于从区块链计算某个地址所拥有的区块的余额。如果你研究过关系数据库,你可以将区块链理解为数据库的索引,或者书籍的目录。路由节点:负责在去中心化的网络环境中传输交易和区块。一个节点创建一个事务并将其发送到相邻节点。邻居节点验证通过后,发送给邻居节点。很快就会传遍网络。如果一个节点通过挖矿找到了符合标准的区块,这个节点也会以同样的方式传递给相邻节点,然后相邻节点继续传播,让网络中的所有节点达成一致。

P2P网络传播示意图如下:

李艳鹏:比特币的书籍以及中本聪的架构规划

我们将在后续文章中详细介绍比特币 P2P 网络的工作机制,包括节点分类、节点发现、节点连接和广播。

6.总结

由于篇幅所限,本文介绍了比特币的三个基本概念,包括区块链、挖矿和P2P网络。后续会详细讲解比特币的方方面面,包括如何防止双重支付和智能合约。 , 区块链分叉, 通货紧缩特性, 锁定和解锁脚本, 交易的 Merkle 树存储, 交易存储格式, 区块链被攻击的概率, 挖矿难度和挖矿成功时间, 更多共识机制, 创新货币交易和转账交易, 比特币性能, 不同挖矿节点类型,比特币应用场景。

本文来自【云时代架构】公众号。

作者,李彦鹏,“云时代架构”技术社区创始人,《分布式服务架构:原理、设计与实践》、《可扩展服务架构:框架与中间件》作者,目前知名支付平台架构组长,曾在花旗银行、甲骨文、路透社、新浪微博等大型IT互联网公司担任技术负责人和架构师。现专注于大规模高并发线上线下支付平台的应用架构和应用架构。技术架构规划与实施,负责移动支付、聚合支付、合规账户、扫码支付、代币化支付中的交易、支付、渠道、提现、风控、对账等核心支付系统的设计与实施,等产品应用架构规划及业务场景落地实践经验。

版权声明:manoon 发表于 2021-09-05 10:00:06。
转载请注明:李艳鹏:比特币的书籍以及中本聪的架构规划 | 198区块链导航

暂无评论

暂无评论...