主页 > imtoken官网怎么找到 > 解密比特币核心技术原理

解密比特币核心技术原理

imtoken官网怎么找到 2023-01-17 02:32:51

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

1 背景

对于目前流行的电子货币——比特币系统,朋友圈里有很多介绍文章,也有人试图通过漫画形象地解释比特币的特性,但还是没看明白,总有一些无法清楚理解的问题。 知道了这些问题,我最近研究了几本中本聪本人发表的比特币书籍和比特币论文。 我感到豁然开朗,迫不及待想与您分享我的理解。 希望与您共同探讨,共同进步。

2比特币

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

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

与银行发行的法定货币不同,法定货币的发行由各国央行管理。 大家都相信央行是靠谱的,不会记错账,不会被黑。 但是,比特币的发行不需要中央银行这样的权威机构。 它允许一笔交易从一个组织直接结算到另一个组织,无需经过权威机构进行结算,提高了交易和结算的效率,节省了交易成本。 成本,尤其是跨境交易。

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

下面的章节将通过最流行的语言来揭开比特币的神秘面纱,让你从逻辑上理解比特币的运作方式,让你不留死角地学习比特币,让你在脑海中清晰地呈现比特币的方方面面。

3 区块链 3.1 区块链是如何存储的?

对于一个现金账户系统,首先要解决的是怎么记账,在哪里记账,怎么存账等等。比如你在中国银行存款,中国银行给你开一个账户,您的账户将存储在中国银行的服务器上。 如果您在中国建设银行存款,中国建设银行将为您开立账户,您的账户将存储在中国建设银行的服务器中。 在银行的服务器上。 如果您需要向他人同一银行账户转账,需要通过本行为您转账结算,如果您需要向他人其他银行账户转账,需要您通过本行为您转账结算通过银联,虽然普通用户感知不到那么多流程,但这些步骤确实存在。 从这个过程中可以看出,会计账务系统是专用的、集中的,由一定的组织拥有和维护。 通常这个组织是权威和值得信赖的。

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

区块链图如下:

解密比特币的那些核心技术原理

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

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

上一节介绍了区块链的存储。 区块链其实就是比特币的账本,记录了谁拥有多少比特币。 然而,这个账本是存储在互联网上并被分发的,而不是由一个中心。 机构或服务器来存储。 账本在手,剩下的问题就是比特币的拥有者如何证明自己拥有比特币? 就像你在银行开了一个账户,当你想给别人转账的时候比特币区块体记录了哪些信息,你需要把卡插到ATM上,然后输入密码。 卡片相当于比特币的地址,密码相当于比特币的秘钥。 有了正确的地址和秘钥,你就可以声明你对比特币的所有权,并将比特币转移给他人进行转账交易。

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

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

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

解密比特币的那些核心技术原理

从上图可以看出,现实生活中我们是用钥匙开锁,我们是用密码在ATM机上取现。 那么在比特币系统中,我们使用秘钥来实现比特币的转移,实现价值的传递。

更具体地说,一次比特币交易会将一定数量的脚本锁定在一个地址中,声明自己拥有该地址的用户通过密钥的签名证明自己拥有该地址,然后花费比特币,之后比特币被花费了,它不会消失,它会被锁定在其他人的地址中,其他人可以用同样的方法来花费比特币。

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

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

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

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

在之前的交易中,爱丽丝的10个比特币被锁定在爱丽丝的比特币地址A中,这些比特币可能是挖矿获得的,也可能是从别人那里转来的。 后面我们会详细介绍如何获取比特币。 这里我们只关注证明爱丽丝拥有比特币的交易的锁定脚本。

锁定脚本的逻辑格式为:

比特币数量来源锁定地址

10

挖矿收益

地址A

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

解锁地址解锁

地址A

地址A的公钥,以及上一个区块头的哈希值用地址A的私钥签名

具体解锁流程如下:

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

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

4.挖矿

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

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

工作量证明图如下:

解密比特币的那些核心技术原理

工作量是通过计算符合一定标准的比特币区块头的哈希值来体现的。 试图争夺记账权的节点称为挖矿节点。 挖矿节点会对网络节点发送过来的交易进行验证(网络传播机制将在下一节介绍),验证后会存储在缓冲区中,形成一定的交易存储结构(交易使用默克尔树存储,后面会介绍),放在区块体中,然后根据区块的基本信息构造区块头。 区块头通常包含前一个区块的哈希值、Merkle根(后续文章会详细介绍)、时间戳、难度目标和一个填充的随机值。 这里的随机值是随机生成并填充的。 挖矿的过程就是找到一个可以填充区块头的随机值,使得区块头的哈希值满足一定的标准,例如:区块头的哈希值有的前几位为0,而后difficulty target用于表示哈希值标准的难度系数。 通过概率算法可以计算出难度值和挖矿成功的可能性。

网络上的每台矿机接收并验证一批交易,然后开始挖矿,尝试计算出满足一定难度值的区块头的hash哈希值。 如果计算成功,则挖矿成功。 网络广播挖矿收入。 经过全网节点的验证,将区块连接到区块顶部,在全网达成共识。 矿机需要反复尝试随机填入值才能解决问题。 一般采用随机数生成,尝试将生成的随机数填充到区块头中,然后计算哈希值。 后续文章会介绍矿机联盟,矿机联盟会把随机数分成多个小区域,分发给联盟成员,共同解决。

除了上面介绍的工作量证明机制外,还有权益证明和基于份额的权益证明共识机制等,我会在共识机制的专题文章中与大家分享。

5.P2P网络

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

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

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

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

P2P网络传播示意图如下:

解密比特币的那些核心技术原理

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

6.总结

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

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

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