白话区块链 之7 - Bitcoin Core之客户端逻辑结构
【编者Peter Ye按】
可以打开如下链接,详细阅读前几篇:
下面的段落是:第1章第7节 《比特币核心程序:中本聪客户端》,对应原书的第1章的1.4.2节的第2部分 - 。第1部分就是《白话区块链 之6 - 比特币核心程序》,也即“客户端程序介绍”。
客户端逻辑结构
通过上述的介绍,我们了解了中本聪客户端程序的基本组成,为了让大家有一个更加清晰的理解,我们来看下,中本聪客户端在逻辑结构上包含了哪些功能模块,见下图:
图中所示的4个功能模块,共同组成了称之为全节点的比特币程序结构,我们看到,”挖矿”部分标记了虚线,这是因为在中本聪客户端中没有包含挖矿功能,挖矿是另外独立的程序。
钱包的功能,我们已经比较了解了,主要是用于管理用户的**以及提供转账操作等功能,是属于比特币的前端部分功能,事实上,钱包功能是可以独立出来的,专门提供一个独立的钱包程序,这部分的阐述在下面章节中有详细描述。
接下来,我们主要对”完整区块链”和”网络路由”部分进行一个说明,刚才说了,钱包只是一个前端功能,那么比特币的后端功能是什么呢,请看下文:
(1)完整区块链
中本聪客户端保留了完整的区块链账本数据,因此能够独立自主地校验所有交易,而不需借由任何外部的调用。当然,另外一些节点只保留了区块链的一部分比如说区块头,可以通过一种名为“简易支付验证(SPV)”的方式来完成支付验证,这样的节点被称为“SPV节点”。
除了中本聪客户端外,一些挖矿节点也保有了区块链的完整数据拷贝,还有一些参与矿池挖矿的节点是轻量级节点,它们必须依赖矿池服务器维护的全节点进行工作。保有完整区块链数据的节点是非常重要的,比特币网络之所以能够成为一个可信任的去中心化网络,就是依赖于这些全节点,目前很多场合为了方便使用,提供了不少的轻量级节点如轻钱包等,但是这些轻量级节点的正常使用都是要通过全节点才能完成的,是一个依赖关系,如果网络中保有完整区块链数据的节点越来越少,那么比特币网络就会受到影响,无论性能、安全性等都会降低。
(2)网络路由
比特币网络是属于P2P网络架构,P2P也就是对等的意思,与此相对的是“客户端-服务器”架构,有一个提供服务功能的中心服务器,其他客户端通过调用服务器的功能来完成操作,比如我们通常使用的微信、支付宝、网银等,如果提供商的服务器关闭了,那也就完全没法使用这些软件了。在对等网中,每个节点共同都提供网络服务,不存在任何所谓的中心服务器,也因此对等网络的网络架构中是没有层次的,大家都平等的,每个节点在对外提供服务的同时也在使用网络中其他节点所提供的服务,我们来看下两者的区别示意图:
相信读者朋友也是一目了然了,在“客户端-服务器”网络架构中,总是有一个中心的,一旦中心服务器出了问题,基本等于天塌了,而“对等”网络结构,显然对于中心化服务器这种单点故障结构有很强的抵抗能力,我们可以看到,“对等”结构中的节点都是可以与其他节点去互联的,而且某个节点出问题也不影响其他节点之间通信,这种结构的好处也是很显然的了。当然,无论是哪种网络结构,底层的网络协议都是一样的,还是TCP/IP那一套。
比特币是属于区块链技术的首创应用,其特点就是去中心化或者说是分布式,由比特币节点组成的网络自然也就是属于“对等”网络了,那么既然没有一个服务器,大家彼此如何来认识对方呢,也就是如何来发现其他的节点呢?
这是需要通过一个协议的,首先节点会启动一个网络端口(通常是8333但也可以参数指定,在上述章节中介绍中本聪客户端时已经说明过),通过这个网络端口与其他已知的节点建立连接,连接时,会发送一条包含认证内容的消息进行“握手”确认,比特币网络中是靠彼此共享节点信息来寻找其他节点的,当一个节点建立与其他节点的连接后,会发送一条包含自身IP地址的消息给相邻的节点,而邻居收到后会再次发送给自己的其它邻居,当然节点也不是只能被动的等别人来告诉自己,也可以自己发送请求给其它节点索取这些地址信息,如果与发现的节点之间能够成功的连接,那么就会被记录下来,下次启动时就会自动去寻找上次成功连接过的节点。
简单的说,作为网络路由的功能,比特币节点在失去已有连接时会去发现新节点,同时自己也为其他节点提供连接信息,没有服务器的对等网络就是这么来认识陌生人的。
至此,大家对于比特币的核心客户端就有了一个较为完整的理解了吧。
---End---
未完待续,下一节将介绍《创世元灵:一切源自比特币》。欢迎持续关注“乐生活与爱IT”。在这个公众号平台上,之前也分享过和区块链相关的如下文章:
雄文:知耻而后勇,数字代币和区块链技术的未来 (修改版-20180213)
诺贝尔物理奖候选人张首晟:区块链技术是互联网世界新的分合转折点
当SDS遇见BlockChain 之二:区块链存储为什么势在必行?(SDS的新赛道 - 暗流涌动的区块链存储)
对《白话区块链》这本书感兴趣的朋友,可以直接在京东等网店购买:
http://item.jd.com/12236097.html#comment
---
微信公众号平台"乐生活与爱IT"在目前阶段,主要是分享区块链(BlockChain)
、软件定义存储(SDS)和超融合架构(HCI)相关的文章,偶尔也会分享虚拟化、云计算、大数据、人工智能、IoT等IT类文章,甚至生活类的好文章。欢迎投稿,特别是原创文章。如果原创文章属于首次发布,根据质量和阅读量的不同,能获得20~500元的稿费。我的QQ号:9269216。另外,如果还有赞赏收入,作者可获得60%。
欢迎对SDS感兴趣的朋友,加入软件定义存储讨论 QQ群:122295009,可下载原创的一些文章,及其他有参考价值的文档。可直接搜索群号,或者扫描如下二维码:
欢迎您通过扫描关注微信公众号:“乐生活与爱IT”。
关注后,可以通过点击左下角的“文章目录”,通过输入三位数(记住!是三位数,目前第一位是0或者1)详细了解如何查看历史文章。
对软件定义存储与区块链感兴趣的朋友,可以添加如下管理员:
xiaoganggang10101
eric0424
liushuan2008
sdg8848
dts0103
加入到微信群“当SDS遇见BlockChain"。希望大家一起学习和讨论,共同进步。添加时,请自我介绍姓名、公司名、所在城市等信息。
点击左下角“阅读原文”,可以跳转到《当SDS遇见BlockChain 之二:区块链存储为什么势在必行?(SDS的新赛道 - 暗流涌动的区块链存储)》