LOADING...
LOADING...
LOADING...
当前位置: 玩币族首页 > 币圈百科 > 比特币:在区块链上行驶。第10部分

比特币:在区块链上行驶。第10部分

2020-01-18 wanbizu AI 来源:cryptonomist.ch

本文是有关比特币和区块链最精致的技术部分的指南的第十篇,也适用于那些禁食代码的人。本文还继续介绍一种指南,旨在逐步输入许多人所说的“白兔窝”。

在书目层面,必须提到由Andreas Antonopoulos撰写的“ Mastering Bitcoin”(掌握比特币)文本,这是不断引用的内容,是从中获取图像的。任何对深化这些问题感兴趣的人,无论是否集成了与代码相关的动态,都可以在Bcademy提供的培训课程和咨询活动中找到支持。

比特币区块链

区块链是一种数据结构,由交易清单的列表(有序和反向链接)组成,可以存储为平面文件或简单的数据库。 Bitcoin Core使用Google的Level DB数据库存储区块链元数据。每个块由散列(块头SHA256)标识。每个块通过块头中的前一个块哈希字段引用前一个(父)。哈希序列通过创建直到创建的第一个块(生成块)的“向后”链,将每个块与其父对象相连。

尽管每个块只有一个父对象(以前只有一个块哈希字段),但它可能会临时有多个孩子(在派生期间出生),这是在大约两个相同的位置开采两个新块时可能发生的临时情况瞬间。先前的区块哈希字段位于ergo区块标题内,会影响该区块的当前哈希值(如果更改了先前区块的哈希值,则当前区块的哈希值也会相应更改)。

块的结构

块是一种“容器”数据结构,用于汇总交易以包含在公共寄存器(区块链)中。一个块由一个包含元数据的头组成,后面是一个事务列表(一个完整的块约占头空间的10,000倍)。

块头

块头由三组元数据组成:

对前一个块的哈希的引用;

难度,时间戳和随机数(与挖掘相关的值);

默克尔树的根。

标识符:块标题散列和块高度

块的主要指标是通过块头的双重哈希(SHA256)进行的加密哈希,即其指纹。生成的32字节哈希是块的哈希,或更准确地说是块头哈希。这是有史以来的第一个块之一:

000000000019d6689c085ae165831e934ff763ae46a2a6c172b3f1b60a8ce26f

请注意,无论是将区块传输到网络还是将其成为区块链的一部分,区块哈希都不会包含在区块的数据结构中。相反,当网络接收到该块时,它由每个节点计算。识别区块的另一种方法是通过其在区块链中的位置,称为区块高度。创建的第一个块的高度为“ 0”,而在2017年1月1日,它的高度为446,000。与块哈希不同,高度(不是块数据结构的一部分)不是唯一的标识符,因为相同的“高度”可以在派生期间标识多个块。

创世块

第一个块或“零块”称为创世块。每个节点都以区块链开始,或者以一个区块为极限,然后在客户端进行编码,以使其无法更改(这是构建可靠区块链的根源),因此,每个节点都知道创世区块的哈希和结构,当被创建等。

在任何块浏览器中搜索“零块”哈希,您将找到一个描述该块内容的页面,其中包含包含哈希的URL:

https://blockchain.info/block/000000000019d6689c085ae165831e934ff763ae46a2a6c172b3f1b60a8ce26f

该块包含一个隐藏的消息。 coinbase交易的输入包含文本“ 2009年1月3日,英国《金融时报》正处于银行第二次纾困的边缘。”这是要参考《纽约时报》的标题来证明日期的证明,并记住其重要性。独立货币体系。

链接区块链中的区块

一个完整的节点维护一个区块链的本地副本,该副本从创世块开始,在被网络接收并验证后,在发现一个块并连接以延长链时会不断更新。为了建立连接,节点检查进入者的块头中的前一个块哈希。

默克尔树

比特币区块链中的每个区块都使用merkle树或二叉哈希树包含该区块中所有交易的摘要,该数据结构用于有效地总结和验证数据集的完整性大。 Merkle树是包含加密哈希的二叉树。在计算机科学中,术语“树”用于描述分支数据结构,但是这些树通常颠倒显示,图的顶部为“根”,底部为“叶”。

默克尔树在比特币中用于汇总一个区块中的所有交易,产生整个交易集合的整体指纹(哈希),从而提供了一种非常有效的过程来检查交易是否包含在区块中。从一对递归哈希节点构建一个merkle树,直到只有一个哈希(称为merkle根)为止。比特币merkle树中使用的加密哈希算法两次应用SHA256。

当将N个数据项散列并汇总到merkle树中时,可以检查结构中是否包含任何数据项,最多计算2 * log?2?(N),使之成为数据结构非常有效。

由于Merkle树是二叉树,因此需要偶数个“叶”。如果要汇总的事务数量奇数,将复制最后一个事务的哈希值以创建偶数个叶节点,也称为“平衡树”。

构建四事务树的相同方法可以推广到构建任何大小的树。在比特币中,通常在一个块中进行数百至上千笔交易,这些交易以完全相同的方式汇总,仅产生32字节的数据作为单个merkle根。

默克尔树和简化付款验证(SPV)

Merkle树被SPV节点广泛使用。 SPV节点不具有所有事务,也不下载完整的块,仅下载块头。为了验证交易是否包含在一个块中而不必下载该块中的所有交易,它们使用身份验证路径或Merkle路径。

例如,假设有一个SPV节点对向其钱包中包含的地址的收款感兴趣。 SPV节点将在其与对等方的连接上建立一个布隆过滤器,以将仅接收到的交易限制为包含感兴趣地址的交易。当对等方看到与bloom筛选器匹配的事务时,它将使用merkleblock消息发送该块。 merkleblock消息包含块头和一条merkle路径,该路径将感兴趣的事务连接到该块中的merkle根。 SPV节点可以使用此Merkle路径将事务连接到该块,并验证该事务是否包含在块中。 SPV节点还使用区块头将区块连接到区块链的其余部分。交易与区块之间以及区块与区块链之间的这两个链接的组合表明交易已在区块链中注册。总而言之,SPV节点将为块头和Merkle路径接收不到一千字节的数据,该数据量是整个块(大约1兆字节)的一千倍以上。

testnet

除了“主”区块链(主网)外,还有其他用于测试的区块链:目前是testnet,segnet和regtest(目前正在使用simnet)。

—-

原文链接:https://cryptonomist.ch/2020/01/18/bitcoin-guida-blockchain/

原文作者:Alessio Salvetti

编译者/作者:wanbizu AI

玩币族申明:玩币族作为开放的资讯翻译/分享平台,所提供的所有资讯仅代表作者个人观点,与玩币族平台立场无关,且不构成任何投资理财建议。文章版权归原作者所有。

LOADING...
LOADING...