主页 > imtoken 官网 > 《精通比特币》是一本很不错的书

《精通比特币》是一本很不错的书

imtoken 官网 2023-10-04 05:13:20

6.2 节点类型及分工

虽然每个节点的价值或地位完全相等,但它们的功能确实不同,每个节点的分工也不同。一个全节点包括四个功能:

《精通比特币》一本很不错的书

“每个节点都参与整个网络的路由功能,还可能包含其他功能。参与交易和区块信息的验证和传播,发现和维护与点对点网络的连接。”这里所说的路由功能,其实就是每个节点都会主动连接到自己的节点上,为全网服务。这四种功能的任意组合都会产生不同的节点。也就是说,很多节点都不是全节点。比如我们常说的钱包,不具备全节点的所有功能。

6.3 扩展比特币网络

比特币网络本身是符合比特币协议的节点的组合。但是比特币协议本身的一些功能是无法实现的,比如挖矿、钱包等功能。如果需要实现该功能,则需要扩展比特币网络协议。例如:很多接入比特币网络的大公司基于Bitcoin Core客户端运行全节点客户端,拥有区块链和网络节点的完整副本,但不具备挖矿和钱包能力。为了具备这些功能,这些网络公司会在原有的比特币网络协议中加入一些特殊的协议,用于增加上述功能。扩展的比特币网络包括多种类型的节点、网关服务器、边缘路由器、钱包客户端以及将它们相互连接所需的各种协议。这些扩展协议的存在,让整个比特币网络拥有了更多的功能。

6.4 网络发现

比特币网络中的节点存在于复杂的网络中。每个新节点出现后,为了与整个区块链网络中的节点进行合作,节点必须主动联系现有节点。只有这样,我们才能加入比特币网络这个大家庭。新节点与现有节点之间建立联系的过程称为网络发现。这个发现的目的是:找到自己的对等点。网络发现的过程可以类比为:移动后寻找邻居。 (家庭地址是 IP 地址)。我们来看看新节点是如何找到对应的节点并建立连接的。

区块链中有很多网络节点。当一个新节点第一次开始寻找邻居时,很难立即找到它自己的对等节点。为了提高网络发现的效率,整个网络中有一种特殊的节点,这种节点称为:种子节点。如果为新节点寻找对应节点的过程是搬家找邻居,那么种子节点就是你要去的社区居委会的阿姨。作为居委会阿姨的种子节点,它拥有大量的邻里邻居信息。作为一个新节点,您已将基本信息提供给种子节点。作为居委会阿姨的种子节点,它会尽量帮你找到能对应到你的邻居节点。当你找到对应的邻居节点,阿姨就不会理你了。

下一步是在您和您的邻居之间建立更深层次的联系。你会主动向邻居节点发送自己的地址信息(即IP地址)。你的邻居节点是另一个好心人,他会主动把你的地址信息分享给他的邻居节点。你邻居的邻居也会是个善良的人,会主动帮你把你的地址信息再传给他的邻居。这个过程不断重复。最终整个社区都会知道您的地址信息,并且很容易找到您。此外,您还可以向您的邻居节点发送请求,以获取您邻居知​​道的其他邻居节点的地址信息。这样,作为一个新节点,全网所有节点都会知道你的地址,你也会知道全网每个节点的地址。至此,就可以完全找到自己的对等节点最早在淘宝买的比特币从哪查,完成网络发现的目标了。

最后会出现一种特殊情况,即:节点与整个比特币网络失去联系,即离开网络。例如,如果你有一段时间不上班,突然不想干了,也就是你离开了整个比特币网络。每个节点都有随时加入和离开网络的自由,就像你生活在一个社区里一样最早在淘宝买的比特币从哪查,只要你想移动,你就可以随时移动。在这种情况下,节点之间的通信地址通常是不可靠的。因此,比特币网络发明了自己的机制来处理这种情况。比特币网络中的每个节点都必须不断做两件事:在失去现有邻居节点时发现新的邻居节点,并在找到新的邻居节点时提供帮助。

注意:以上网络发现其实是节点间主动帮助的结果。

让我们谈谈节点如何知道他们的邻居是否已经移动。

事实证明,需要定期在节点之间发送信息以保持连接。和人一样,如果你很长时间不给朋友打电话或聊天,你会觉得这个朋友已经离开了你的朋友圈。节点之间也是如此。如果两个节点之间 90 分钟没有消息发送,则任何一个节点都可以确定其邻居节点已与网络断开连接。这时候就可以去寻找新的邻居节点了。这样的机制保证了整个比特币网络可以自行动态调整节点大小的增减。

6.5 个全节点

维护完整、最新的区块链副本的节点,我们称其为完整节点。全节点可以独立构建和验证整个区块链,即整个比特币网络从第一个创世块到网络中的最新块。因为全节点拥有完整的副本,全节点“可以独立验证所有交易信息,而无需求助或信任其他系统”。由于全节点包含了整个区块链的完整信息。要在您的计算机上拥有一个完整的节点,您的硬盘驱动器至少需要 20G 的存储空间。

6.6 交换“库存清单”

库存清单在这里实际上是一个隐喻。这意味着每个节点将存储一个连接到自身的节点列表。当网络中的两个节点需要建立连接时,两个节点会相互交换自己存储的节点列表信息,这样可以保证一个新的全节点可以构建完整的区块链信息。

最早在淘宝买的比特币从哪查_中国比特币最早交易所_火币网买比特币手续费

其实你可以这样理解:你是一个班的班主任,你想快速认识班里所有的新同学,你想和所有的新同学建立联系。第一个与班主任建立联系的人往往是班长。只要班长给你提供了同学名单,你自然会和全班同学建立联系。作为班主任,你也可以把其他老师的名单给你的同学。这个过程其实就是交换库存清单的过程。

6.7 SPV 简单支付验证节点

只有全节点才有全网区块链的完整副本,也只有全节点才有独立验证能力。许多节点不具备独立验证所有节点的能力。因此,将使用一种称为 SPV 的验证方法。使用 SPV 模式的节点称为 SPV 节点。 SPV 节点不会下载所有新的区块链,而只会下载每个区块的头部信息。通俗的讲就是各个区块之间的关联信息(即区块头中的信息)。 SPV的验证方式是参考区块链中交易的深度,而不是高度来验证交易。简单地说,检查一个块上面是否有 6 个块。如果是,请证明交易确实发生了。这可能暂时不太容易理解。后面看完了区块链的具体结构,你会更容易理解区块链深度的含义。

第 7 章区块链

最低要求知识:区块+链

区块是区块链最基本的单元。每个区块包含大量的交易信息,以及一些与相邻区块相关的信息。你可以简单的把一个区块想象成一个账本,里面包含很多交易信息。

Chain,是区块链中的隐喻。连锁关系是一种非常稳定的关系,也就是说前后关系非常密切。在区块链中,每个区块都是来回连接的。

7.1 区块链

区块链的字面意思是:由包含信息的块从后到前顺序链接的数据结构。区块链是一条链,但整个区块链网络不是一条端到端的环形链,而是一条不连贯的链。为了更好地理解区块链,我们可以将区块链视为一条垂直链。最低的区块称为创世区块。区块链中的高度是指顶层区块与创世区块之间的距离;最上面的区块代表最新加入区块链的区块,也就是离创世区块最远的区块。上面提到的SPV验证方式,取决于区块的深度。

其实从垂直的角度来看,这个块上按照从高到低的顺序叠加了多少块。只要你自己的深度超过6(也就是你自己叠加了6个区块),就可以表明你自己的交易信息是经过验证的。 “从上往下看,超过六个区块后,区块在区块链中的深度越深,被改变的可能性就越小。 100个区块后,区块链足够稳定,然后可以支付Coinbase Transactions(包含新开采的比特币的交易)。几千个区块(一个月)之后,区块链将成为确定性的历史,永远不会改变。”

7.2 块结构

单个区块的具体结构,即单个账本的内部结构。单个区块由两部分组成:一是区块头,二是区块体。区块头由三组元数据组成:父区块的哈希值、挖矿竞争相关数据、默克尔树的根(所有交易信息的数据结构)。

7.3 块头标识符

每个块都有自己的标识符,以便于查找和识别。

第一,识别方式为:区块头的哈希值。

相当于每个区块的唯一ID号。通过SHA256加密算法计算块头中的信息,可以得到块头的唯一哈希值。整个比特币网络中的每个区块都有自己独特的哈希值。这个哈希值,它自己的块没有被存储。整个网络将有一个专门的存储空间。看来你虽然有身份证,但身份证信息是保存在派出所的。

最早在淘宝买的比特币从哪查_火币网买比特币手续费_中国比特币最早交易所

二、识别方式为:区块链高度。

相当于方块所在的楼层高度。但与区块头哈希不同的是,区块高度并不是区块的唯一标识符。因为有一个区块链分叉(后面会更详细的解释),你可以这样理解:“两个或多个区块可能具有相同的区块高度,并在区块链中竞争相同的位置。”在整个区块链网络中,每个矿工都在生产自己的区块。同时,只有一个区块可以获胜并最终被添加到区块链中。因此,在区块链的顶部,在某些时候,可能会有多个区块高度完全相同。此时,即使知道块的高度,也无法确定是哪个块。因此,高度并不是区块的唯一标识。

你可以这样理解:在《谋士联盟》中,曹操的儿子们都想当太子,所以他们必须为太子的位置而战。虽然你知道,太子在一人之上,万人之下。但你就是不能确定,是曹丕还是曹植太子?

7.4 块连接

如前所述,区块链有两部分:区块+链。链是指块之间的连接。在每个块的头块中,都存储了自己的“父块”的块头的哈希值。 (再次提醒,区块不存储自己的哈希值,它存储的是自己父亲的哈希值。)父区块是指当前区块的前一个区块。从垂直的角度来看,它是其自身下方最近的块。例如,如果当前块是第 3500 个块,那么它的父块是第 3499 个块。以此类推,第二个区块的父区块就是创世区块,也就是第一个区块。这种机制使每个块都可以根据其父块的唯一标识符一路找到创世块。这形成了一个完整的链结构。

7.5 默克尔树

merkle 树,是一种特定的数据结构。该结构主要用于表示每个区块中的所有交易记录。这棵树的目的是快速验证交易的存在。这里涉及到二叉树的算法,不是很清楚。可以简单理解为提高计算效率的数学公式。 Markle树结构的应用大大降低了验证交易是否存在的时间复杂度。

“根据表格,当区块大小从 16 个交易(4KB)急剧增加到 65,535 个交易(16MB)时,证明交易存在的 Merkle 路径的长度增长极其缓慢,仅从 128 字节增加到512 字节”。这样,我们前面提到的SPV(Simple Payment Verification)就成为可能。 “SPV 节点不存储所有交易,也不下载整个区块,只下载区块头。它们使用认证路径或 Merkle 路径来验证区块中是否存在交易,而无需下载区块中的所有交易”。这样节点可以存储最少的信息,但仍然具有整个区块链的连接关系。

第八章挖矿与共识

8.1 比特币是一种通缩货币

比特币的发行总量是固定的,到 2140 年左右,将产生全部 2100 万比特币。这里先题外话。有同学问:区块链的区块扩容会导致比特币数量增加吗?这里的答案很明确:不。区块的扩展,从 1M 到 2M 甚至更多,只是让一个区块可以记录更多的交易信息,仅此而已。它不会影响2100万比特币的总量。至于为什么比特币总量不会改变,学习了挖矿的知识后,你会豁然开朗。

挖21万个区块大约需要4年时间,每4年发币速度会下降50%。

前四年,可能从 2008 年开始,每个区块产生 50 个比特币。

从 2012 年 11 月开始的第二个四年,每个区块产生 25 个比特币。

从 2016 年 7 月开始的第三个四年,每个区块将产生 12.5 个比特币。

从 2020 年的某个时间开始的第四个四年,每个区块将产生 6.25 个比特币。

最早在淘宝买的比特币从哪查_火币网买比特币手续费_中国比特币最早交易所

.

.

到 2140 年,将产生全部 2100 万比特币。从以上规则来看,区块的产生和比特币的产生是两个完全不同的东西。

区块是矿工使用矿机产生的,而比特币是在每个区块中产生的,区块产生的比特币数量会越来越少。简单来说,区块链中的区块数量几乎是无限的,只要有矿工在挖矿,但比特币的总量是有限的。这使得比特币成为一种通缩货币,不存在与人民币相同的通胀风险。

8.2 挖矿的目的和动机

挖矿是增加比特币供应的过程。同时,挖矿也是保护比特币系统安全最重要的一步。

整个区块链网络中的缺席者之所以积极挖矿,主要是因为缺席者可以获得奖励。奖励分为两部分:区块内对应的比特币奖励,以及该区块内所有交易记录的交易手续费。那么在2100万比特币全部挖完之后,如果不上班,他们会停止挖矿吗?不。在挖出 2100 万个比特币后,矿工的所有收入基本都来自交易手续费。只要有更多的交易,区块就会不断增加,并且会不断产生交易费用。

8.3 去中心化共识

去中心化共识是整个区块链网络的信任基础。去中心化共识是由所有网络节点的交互产生的。主要有四种类型:

每个全节点根据综合标准独立验证每笔交易; (部分8.3)

挖矿节点完成Proof-of-work验证,独立将交易记录打包成新区块; (部分8.5、8.6、8.7、8.8)

每个节点独立验证新节点并将其组装到区块链中; (章节8.9)

每个节点选择区块链,选择工作量最大的区块; (第8.11)

8.3.1 笔交易

在上一课中,我在讲解网络发现的时候,想详细讲解一下新节点加入区块链网络的过程。这个交易的独立验证其实发生在新节点寻找新的时候,这里的新节点一般是钱包节点,因为这些节点需要传递:交易信息。

当新节点向邻居节点发送交易时,邻居节点会主动验证这些交易信息是否为有效交易。确认后,它将继续传递给它的邻居节点。这些验证项目是一个长长的列表,每个节点都会一一验证每个需求。已验证的条目。你可以想象,每个节点实际上都是一个质检员,他们严格控制交易信息的质量。当他们得到大量的交易信息时,他们会拿着一份长长的清单,一一检查。这个过程是交易的独立验证。

中国比特币最早交易所_火币网买比特币手续费_最早在淘宝买的比特币从哪查

8.3.2个挖矿节点完成验证并打包交易记录

在整个区块链网络中,挖矿节点同时在做3件事:

监控网络上的交易;发现的区块; (密切关注竞争对手动态)

挖掘新区块; (其实就是寻找算法的解)

在获得区块后,挖矿节点所要做的就是将交易记录打包到这个候选区块中。之所以称为候选区块,是因为网络中的旷工仍处于竞争状态,全网尚未确定旷工挖出的哪个区块可以加入该区块。在区块链中。

经过上一步的交易验证后,比特币节点会将监控到的交易记录暂时放入自己的内存池(也叫交易池)中。你可以把交易池想象成一个临时储藏室,里面存放着经过验证但还没有打包成区块的交易记录。 (这些记录还没有被交易确认,是工作量证明,后面会讲)

挖矿节点,一旦收到并验证了一个区块A,则该节点会去自己的暂存室,查看暂存室中的所有交易记录。将 A 区块中已经出现的交易记录从暂存室中取出。剩余的记录将被打包到下次出现的新块 B 中。说得更清楚一点,A区块将10分钟以内的交易记录打包到自己的区块中,10分钟以上的交易记录会留在下一个B区块。因为每10分钟只能产生一个区块。

#打包过程

以下是整个block的打包过程。

在这里,您可以简单地将矿工视为打包快递的工人。但是,矿工打包的不是快递,而是交易记录。做任何事情都有优先级,矿工打包交易记录也是如此。在区块链中,交易记录有自己的优先级,矿工会优先考虑那些优先级较高的交易记录。那么优先处理什么样的交易记录呢?费用高的交易记录优先级更高。

#构造区块头

前面分享中提到,每个区块都有一个区块头。元数据分为三类:父块的哈希值、与挖矿竞争相关的数据、默克尔树的根(所有交易信息的数据结构)。父块的哈希值和默克尔树的根在前面的课程中讲过。这里我们重点关注与挖矿竞赛相关的数据:难度目标和Nonce。这两个字段本质上都是一个数字。难度目标是指当前区块的工作量证明算法的难度目标。如果你实在看不懂,你就明白目标是一个具体的数字。有点类似:王健林的小目标是让他一亿。只是一个数字目标。不要被来来去去的名词吓倒。

难度目标可以动态调整。动态调整的目的是保证出块的速度始终保持在每 10 分钟出块一个。 (后面会讲)Nonce,主要是工作量证明算法的计数器。

#成功构建新区块

区块头中的三种元数据都是在构建新区块之前预先确定的。它们是以下 6 个字段:

《精通比特币》一本很不错的书

中国比特币最早交易所_最早在淘宝买的比特币从哪查_火币网买比特币手续费

有了以上6个字段,矿工要做的就是挖出这个候选块,也就是解决工作量证明算法。得到解决方案后,就可以将区块实际添加到区块链中。挖掘的本质其实就是对一个复杂的方程进行大量计算,最终得到方程正确解的过程。这个过程是一个随机试验过程。这里需要补充的是,区块头中的难度目标实际上是动态变化的,是由整个区块链动态调整的。

#难度目标和难度调整

难度目标决定难度,进而影响解决工作量证明算法所需的时间。这个难度目标值是可以调整的。比特币区块平均每 10 分钟生成一次。这个速度不仅是短期的,而且在接下来的几十年里都会保持同样的速度。为了保证这个平均速度,我们的难度目标必须动态调整。根据摩尔定律,未来计算机的计算性能肯定会快速提升,参与挖矿的矿工数量也会不断变化,因此整个网络的计算能力会在不同时期发生变化。为了保持出块率不变,必须根据变化调整挖矿难度。

这个难度目标会定期调整。大致的规律是这样的:

1、全网挖一个区块需要10分钟。

2、每发现2016个区块,整个区块链网络都会根据2016个区块的完成时间动态调整后续2016个区块的难度目标。

8.3.3 快速验证新区域

这一步是交易记录的验证。这是形成区块的重要步骤。 “当一个节点收到一个新区块时,它会根据一长串标准验证该区块,如果验证失败,该区块将被拒绝。”

8.3.4 区块链选择

验证新区块的指标后,该区块还需要找到工作量证明最大的链。区块链的选择涉及到一个重要的概念:区块链分叉。关于区块链的分叉,书中引用的图是比较直观的。我在这里提供另一个模型供您参考。记得与书中的例子进行比较和理解。

《精通比特币》一本很不错的书

当两个矿工在相对较短的时间内各自拥有工作量证明解决方案时,就会发生区块链分叉。即上图中,矿工 A 挖出红色区块 n+1,矿工 B 挖出绿色区块 n+1。封装在红色区块和绿色区块中的交易记录是一样的,父区块是区块n。唯一不同的是,挖区块的矿工不同。至此,整个区块链被分叉,有两条完全相同的链。这称为区块链分叉。此时无法解决分叉问题。

那么,我们可以认为整个区块链网络的算力分为两个阵营:红色阵营和绿色阵营。但是,即使全网的算力平均分布在这两个阵营之间,也总会有一个阵营先于另一个阵营找到工作量证明的解决方案,并提前发现新的黄色区块n+2。这样一来,绿色阵营的链条就比红色阵营的链条要长。这意味着绿营的链是目前全网工作量证明最大的链。此时,即使红阵营的矿工挖出一个新的区块n+3,他也不会把新的区块放在红块的后面。因为,所有矿工总是:选择并尝试扩展代表工作量证明累积最多的区块链,即累积难度最长或最大的链。至此,区块链分叉问题解决。也就是说,主链已经确定为绿色区块链。

《精通比特币》一本很不错的书

理论上,块 n+1 的分叉也是可能的。但是,当由于先前的分叉而相互竞争的矿工几乎同时找到两个不同区块的解决方案时,就会发生这种情况。这种情况发生的几率非常低。每周都会发生单块分叉,而双块分叉非常罕见。

8.4 次共识攻击

比特币的共识机制是基于绝大多数矿工出于自身利益最大化的考虑,都会诚实挖矿以维护整个比特币系统的前提。 “理论上,一个区块链分叉可以变得很长,但在实践中,实现一个很长的区块链分叉所需的计算能力非常非常大,随着整个比特币区块链逐渐增长,过去的区块基本上可以认为是不可分叉的并被篡改。” “一群矿工控制着整个比特币网络 51% 的算力。如果他们联合起来,他们可以攻击整个比特币系统。”但随着比特币网络的算力成倍增长,上述理论上可行的攻击场景在实践中越来越难以操作。 “理论上来说,比特币是目前最安全的共识机制系统。

由于时间关系,第9章和第10章我就不解释了,大家可以自己看书