中国领先的IT技术网站
|
|

1.4.2 比特币核心程序:中本聪客户端(1)

《白话区块链》第1章初识区块链,本章我们将从区块链的原理及分类、技术组成、技术特点等出发来初步介绍区块链的概念,并通过分析比特币的结构让大家对区块链有一个感性的认识。比特币作为区块链技术的第一个应用,它的原理设计影响深远。本节为大家介绍比特币核心程序:中本聪客户端。

作者:蒋勇/文延/嘉文来源:机械工业出版社|2017-11-24 11:34

开发者大赛路演 | 12月16日,技术创新,北京不见不散


1.4.2 比特币核心程序:中本聪客户端(1)

1.客户端程序介绍

我们知道,比特币其实就是一个软件,既然是软件,那还是百闻不如一见,看看到底长什么样。大家可以到https://bitcoin.org/en/download这个地址去下载客户端程序,可以看到,网站提供了多种操作系统的运行版本,选择自己需要的版本下载安装即可运行了,就能看到庐山真面目啦。

在具体介绍之前,咱们先说明一下,为什么这个程序叫比特币核心程序,难道还有非核心程序?我们在上述提供的下载页面上,可以看到比特币程序的名字叫Bitcoin core,这个翻译过来就是比特币核心的意思,这是最经典,也是中本聪一开始发布的那一支程序版本,这个版本也是使用人数最多的。可问题是,比特币程序是开源的,任何一个人或者组织都可以根据需要去修改源码发布出一个新的版本,事实上经过多年的发展,比特币程序已经出现了多个版本,比如Bitcoin Classic、Bitcoin XT以及Bitcoin Unlimited,这些不同的版本实际上都是比特币核心程序的分叉版本,本节使用的是比特币核心程序的客户端。

现在先安装一个比特币核心客户端,按照下载地址进入页面后,在这个页面可以看到针对不同操作系统的下载版本,读者朋友可以自行选择,无论哪个系统环境下,其功能都是一样的,见下图:

我们以Windows版本为例来说明,我们下载图中所示的0.14.1版。大家注意到没有,比特币发展了这么多年,到现在程序都还没进化到1.0版(通常一个软件的1.0版是首个正式版本),某种程度上也是因为比特币是一种实验性的软件吧,因此大家研究学习比特币可以带着一种玩的姿态,不要那么严肃,任何可能性都是有的,我们学习了解比特币是为了更好地应用它的设计思想,而不是去迷信它的神秘和权威。下载完成后,打开软件目录,可以看到有一个bin文件夹,其中有5个文件,如下图所示。

我们一一来说明一下:

(1)bitcoin-qt.exe

包含了比特币的核心节点以及一个钱包的前端功能,这是一个带有图形界面的客户端程序,运行后可以看到有如下提示:

按图中所示,需要选择一个比特币的区块链副本数据存储目录,目前整个区块链账本数据已经很大了,选择一个空间足够大的目录,然后点击OK按钮即可进入主界面了,我们看下主界面的样子:

如图所示,这便是比特币核心客户端了。等等,标题不是钱包吗,怎么又是核心客户端,到底运行的这个程序是什么?是的,这个客户端也叫“中本聪客户端”(satoshi client),它实现了比特币系统的所有方面,包括钱包功能,对整个交易数据也就是区块链账本完整副本的交易确认功能,以及点对点比特币对等网络中的一个完整网络节点。换句话说,这个客户端软件包含除了挖矿以外的其他所有比特币的功能模块,我们当然也可以分别去自己实现一个个的独立功能客户端,比如仅仅实现一个钱包功能,仅仅实现一个核心节点功能,只不过这个官方的客户端都集成在一起了。

通过这个界面,我们也能看到在底部显示有“正在连接到节点”以及“落后8年和16周”的字样,这是指运行中的核心客户端通过发现与连接网络中其他节点进行区块链账本数据的一致同步。如果是首次开始同步,需要花费不少时间,一百几十GB的数据下载真够喝一壶的。需要注意的是,所有的操作都要等到同步完成后才能进行。点击那个“落后8年和16周”的区域可以看到具体的同步进度信息:

图中可以看到有剩余的区块数、进度以及剩余时间等信息,耐心等待就是了。如果想查看一下当前客户端的版本以及网络连接等信息,可以点击“帮助”→“调试窗口”调出如下界面。

在“信息”标签页下可以看到软件版本、当前的网络连接数、数据目录等摘要信息。注意这里的“客户端版本”,比特币是一个分布式的点对点系统,不存在中心服务器来统一管理软件的版本升级,因此不同的节点有可能运行着不同版本的客户端,不同版本的客户端在一些功能支持上可能会有些差异,大家在操作时一定要注意自己的版本。在“信息”标签页旁边有个“控制台”,这可是个很有用的功能,在控制台可以通过命令来访问核心客户端,调取一些信息,进行一些操作,我们来看下控制台。

我们在控制台底部的输入框中输入了一个getinfo命令,回车确认后可以发现返回了一段信息,这是关于当前运行的核心客户端节点的一些摘要信息,比如version表示核心客户端版本,protocolversion表示协议版本,walletversion表示钱包版本,balance表示当前钱包中的比特币余额等。通过这个我们发现,比特币的核心客户端其实是充当了一个服务器的角色,通过控制台可以连接访问,通过界面也能看到提示:“欢迎使用Bitcoin Core的RPC控制台。”实际上比特币核心客户端就是在启动的同时启动了一个本地的RPC服务,以方便外部程序进行相应的数据操作和访问。

有朋友问,比特币一下子要同步这么多的数据,而我只是想看一看,有没有试用的版本呢?还真有,不过不叫试用版,而是测试网络。那么如何连接到测试网络呢?可以通过配置文件来进行配置。比特币的配置文件名为bitcoin.conf,可以在数据目录也就是钱包数据文件wallet.dat所在目录下创建一个文本文件,命名为bitcoin.conf即可,这就是bitcoin-qt默认读取的配置文件了。接下来我们就来配置一下以进入测试网络,只需在bitcoin.conf中写入如下配置项:

  1. testnet=1 

保存即可,然后重新启动bitcoin-qt.exe,我们可见如下画面:


喜欢的朋友可以添加我们的微信账号:

51CTO读书频道二维码


51CTO读书频道活动讨论群:365934973

【责任编辑:book TEL:(010)68476606】

回书目   上一节   下一节
点赞 0
分享:
大家都在看
猜你喜欢
24H热文
一周话题
本月最赞

读 书 +更多

网管员成长手记——网络组建、配置与应用

本书主要以“网管员的成长经历”为线索展开,虚拟出一个“新手”网管员的工作和学习环境,将网管员的成长分为4个阶段,以“网管入职充电→...

订阅51CTO邮刊

点击这里查看样刊

订阅51CTO邮刊
× 51CTO学院双十二活动