主页 > imtoken钱包安卓版下载步骤 > 区块链系列教程:比特币中的网络与区块链

区块链系列教程:比特币中的网络与区块链

介绍

比特币的底层是区块链技术,区块链也因比特币而广为人知。 与其他区块链技术相比,比特币的区块链有哪些特点? 作为区块链的鼻祖,有哪些鲜明的特点? 快来和我们一起看看吧。

比特币网络

比特币采用P2P(点对点)网络,这个P2P不是另一个P2P,这里是点对点网络架构,不是个人对个人的借贷模式。

P2P是指同一个网络中的每一台计算机都是平等的,各个节点共同提供网络服务,没有“特殊”的节点。 每个网络节点以“扁平”拓扑相互通信。 P2P 网络中没有服务器、中心化服务和等级结构。

比特币网络_巨人网络持股比特币_比特币需要网络吗

传统的网络结构是客户端-服务器模型。 所有客户端都与服务器交互以获取信息。 只要服务器挂了,客户端就没用了。

在P2P网络中,没有服务器的概念,每个节点都可以作为一个服务器。 相比之下,P2P 网络在稳定性方面要比基于 CS 的系统稳定得多。

网络发现和同步

既然是P2P网络,那么问题来了,这个P2P网络是怎么建立的呢? 如何发现节点?

做过P2P下载的同学应该都听说过种子的概念,里面存放着其他活跃节点的地址。 通过下载种子,可以连接到相应的节点。

比特币需要网络吗_巨人网络持股比特币_比特币网络

并且每个节点都保存了最近连接或活跃的节点,从而形成了一个庞大的P2P网络。

比特币的 P2P 网络也是如此。

新节点如何发现网络中的对等节点? 虽然比特币网络中没有特殊的节点,但客户端会维护一份长期稳定运行的节点列表。 这样的节点被称为“种子节点”

节点必须不断地做两项工作:当它们失去现有连接时发现新节点,并在其他节点出现时帮助它们。

SPV节点

我们之前介绍过,在比特币的世界里,没有账户也没有余额比特币网络,只有散落在区块链中的UTXO(Unspent Transaction Outputs)。

那么,如果要对这笔交易进行验证,就需要从历史交易中找出与该交易相关的所有交易,从而进行完整、全面的验证。

这样做的问题是,如果下载所有的历史记录,需要几百G的硬盘空间,这对于手机或者其他轻量级客户端来说是不可想象的。

于是SPV出现了。 SPV全称Simplified payment verification,简称简单验证支付。

巨人网络持股比特币_比特币网络_比特币需要网络吗

SPV保存的不是整个区块链,而是区块链的头部。 因为每个区块链头只有80字节,所以即使把所有头都下载保存也不会很大。

区块链负责人

区块头由三组区块元数据组成。 第一个是引用父块哈希的一组数据。 这组元数据用于将这个块连接到区块链中的前一个块。

第二组元数据,难度、时间戳和随机数,与挖矿竞争有关。

第三组元数据是默克尔树根(一种用于有效汇总区块中所有交易的数据结构)。

挖矿过程中使用Nonce、难度目标和时间戳,Merkle根用于索引和组织区块中的所有交易信息。

比特币需要网络吗_巨人网络持股比特币_比特币网络

比特币网络_巨人网络持股比特币_比特币需要网络吗

上图是由区块链头部组成的一条链。

巨人网络持股比特币_比特币网络_比特币需要网络吗

默克尔树

Merkle Tree是树的一种(数据结构中提到的树),网上多称为Merkle Hash Tree,因为它构建的Merkle Tree的所有节点都是Hash值。 默克尔树具有以下特点:

它是一种树,可以是二叉树,也可以是多叉树。 不管有多少叉树,它都具有树结构的所有特性; Merkle树的叶子节点上的值是你指定的,取决于你。 例如,Merkle Hash Tree 会使用数据的 Hash 值作为叶子节点的值; 非叶子节点的值是根据它下面所有叶子节点的值,按照一定的算法计算出来的。 例如Merkle Hash Tree的非叶子节点值的计算方法就是将节点的所有子节点进行组合,然后对组合结果进行哈希计算,得到哈希值。

巨人网络持股比特币_比特币需要网络吗_比特币网络

有了Merkle Tree,我们只需要知道其他Merkle Trees中与待验证交易相关的信息,就可以计算出整个Merkle Tree的价值,这样就可以直接使用header信息进行验证了。 这就是SPV的原理。

比特币中的区块链

区块链是一种数据结构,由包含交易信息的区块从后向前依次链接。 它可以存储为平面文件(包含没有相关关系的记录的文件),或存储在简单的数据库中。

Bitcoin Core 客户端使用谷歌的 LevelDB 数据库来存储区块链元数据。

它由一个包含元数据的块头组成,后跟一长串构成块体的交易。 区块头80字节,平均每笔交易至少250字节,每个区块平均至少包含500多笔交易。

比特币网络_比特币需要网络吗_巨人网络持股比特币

巨人网络持股比特币_比特币网络_比特币需要网络吗

块标识符

那么如何表示一个块呢? 我们使用块标识符。

区块主标识是其加密后的哈希值,是通过SHA256算法对区块头进行两次哈希处理得到的数字指纹。 得到的 32 字节哈希称为区块哈希,但更准确的名称是:区块头哈希,因为只使用区块头进行计算。

识别区块的第二种方法是通过其在区块链中的位置,称为“区块高度”。 第一个区块,区块高度为0

与块哈希不同,块高度不是唯一标识符。 虽然单个块将始终具有确定的、固定的块高度比特币网络,但反之则不然,块高度并不总是标识单个块。 两个或多个区块可能具有相同的区块高度并竞争区块链中的相同位置。

创世块

区块链中的第一个区块创建于 2009 年,称为创世区块。 它是区块链中所有区块的共同祖先,这意味着如果你从任何一个区块开始追溯,最终都会到达创世区块。

因为创世块被编程到比特币客户端软件中,每个节点都从一个至少包含一个区块的区块链开始,这确保了创世块不能被更改。 每个节点都“知道”创世块的哈希值、其结构、创建时间以及其中的交易。 因此,每个节点都将这个区块作为区块链的第一个区块,从而构建一个安全可信的区块链根。

比特币需要网络吗_巨人网络持股比特币_比特币网络

创世块的哈希值为:

0000000000 19d6689c085ae165831e934ff763ae46a2a6c172b3f1b60a8ce26f

创世块包含一条隐藏消息。 在其 Coinbase 交易的输入中包含一句话“The Times 03/Jan/2009 Chancellor on brink of second bailout for banks”。 这句话是当天泰晤士报头版文章的标题。 对出块时间的描述,也可以算是半开玩笑地提醒人们独立货币体系的重要性,同时告诉人们,随着比特币的发展,一场前所未有的世界范围内的货币革命将会发生。 该消息由比特币创造者中本聪嵌入到创世块中。

比特币需要网络吗_巨人网络持股比特币_比特币网络

COINBASE的:04FFFF001D01044545468652054696D657320303232F4A616E2F32F339204392303366363656566C6656266E66E66E266E66E66E66E66E66E66E66E66E66E276F66E26E66EF66EMENG66EF66EMEN

解码方法如下:

在蟒蛇壳下:

"04ffff001d0104455468652054696d65732030332f4a616e2f32303039204368616e63656c6c6f72206f6e206272696e6b206f66207365636f6e64206261696c6f757420666f722062616e6b73".decode('hex')

输出:

'x04xffxffx00x1dx01x04EThe Times 03/Jan/2009 Chancellor on through the second bailout for banks'

总结

本文介绍了比特币网络和比特币区块链的概念。 我希望你会喜欢。