只有看见未来的人,才能抵达未来——《精通比特币》第三章比特币客户端

96
且听风吟闲翻书 Excellent
2018.08.06 09:35* 字数 2806

只有看见未来的人,才能抵达未来。

郎咸平曾经说过:比特币白给我都不要。
也有人说:比特币底层技术——区块链是最伟大的发明,堪比互联网。
到底比特币是什么?如何判断?难道我们能做的就是人云亦云?
如何能有自己的独立判断?

一起来《精通比特币》!

今天是我们共读《精通比特币》一书的第3章 比特币客户端,让我们一起走向数字货币新旅程。

每天早上10:24发文,欢迎关注支持,一起加油!

照搬的信念,无法抵御波动的冲击,只有行动铸就的思想体系,并在行进中不断修正,才能让我们不断变得更好。——Scalers《投资赚钱就是信念变现》

《精通比特币》一书,英文原名为Mastering Bitcoin ,国内译做《精通比特币》,本书四个电子版的链接如下,点击蓝色字可跳转阅读:

本书四个电子版的链接如下,点击蓝色字可跳转阅读:

  1. 英文原版,Bitcoin Core: The Reference Implementation链接

  2. 推荐阅读:中文版PDF链接

  3. 推荐阅读:知笔墨中文版,第3章 比特币客户端链接

今天,我们开始《第3章 比特币客户端链接 》的学习。

对于科技书籍我有一个阅读小技巧分享一下,就是看不懂的内容,直接跳过,看完全书之后,再回头来看,就会更清楚,也更节约时间。

如果全书看完,回头再看还是看不懂的内容,那就说明 这些内容是需要另外的知识补充才能看懂的,比如,第三节中出现的大段程序代码,没有学过编程的同学,或者象我这样学过编程,但是没有学过这种语言的同学,也是会看不懂的,这很正常,不用纠结,看自己看得懂的那部分内容就好啦。

3.1 比特币核心:参考实现

3.1

跟其他大型网络游戏,需要下载安装客户端,才能登录中心服务器进行游戏的玩耍一样,比特币这个网络游戏也有客户端,要下载和安装之后就可以开始玩“数独解题赢比特币游戏“了。

在Bitcoin网站的选择钱包页面,下载参考客户端比特币核心。

根据操作系统不同,你将下载不同的可执行安装工具。对于Windows,它是一个ZIP归档文件或.exe格式的可执行文件。对于Mac OS,它是一个.dmg格式的磁盘映像。Linux版本包括用于Ubuntu系统的PPA包,或是 tar.gz格式的压缩包。图3-1所示的Bitcoin.org页面上列出了一些推荐的比特币客户端。

图3-1 选择比特币客户端

3.1.1 第一次运行比特币核心

我们在比特矿网站进行选择下载安装,对于windows来说是一个zip的压缩文件或者是exe的可执行文件。这一点跟我们平时在网站下载游戏客户端是完全相同的。不同的操作系统,这个文件不同,苹果系统是一个dmg格式的磁盘映像。

选择好比特币客户端之后,就要进入到安装运行比特币客户端。

一旦完成了安装,在你的应用程序列表中会有一个新的应用叫Bitcoin-QT。双击这个图标就可以启动比特币客户端了。

第一次运行比特币核心时,它会开始下载整个区块链,比特币核心拥有交易账簿(区块链)的一份完整拷贝,里面记录了自2009年比特币网络被发明以来发生在比特币网络上的每一笔交易,这个数据集有几个GB,在2013年底大约是16GB,所以这个过程可能需要数天。

在整个区块链数据集下载完成前,客户端将不能处理任何交易或是更新账户余额。在下载数据集的过程中,客户端账户余额旁会显示“数据同步中”,底部会显示“正在同步”。让它在后台运行,直到显示“已同步”,并且余额旁边不再显示“数据同步中”。请确保你有足够的磁盘空间、带宽和时间来完成初始同步。

3.1.2 从源码编译比特币核心比特币核心

对于开发者,可以选择下载包含完整源代码的ZIP包,也可以从Github上克隆权威的源码仓库。在面GitHub上的比特币页面,在侧边栏选择下载ZIP。或者使用git命令行(git command line)在自己系统上创建源码的本地拷贝。

书中给出了一个例子,通过unix风格的命令行,在Linux或是Mac OS 上克隆源代码,默认情况下,本地拷贝将与最新的代码同步,这个代码会是bitcoin的一个不稳定或是 beta 版本。

感兴趣或者有需要的同学可以去自行查阅原文 知笔墨中文版,第3章 比特币客户端链接

当第一次运行比特币核心客户端的时候,会下载所有的区块,重新构建比特币区块链。这是一个好几个GB的文件,可能需要大约2天的时间全部下载完。我们可以通过SourceForge上的BitTorrent客户端下载区块链的部分拷贝来缩短区块链的初始化时间。

3.2 通过命令行使用比特币核心的JSON-RPC API接口

3.2

比特币核心客户端实现了JSON-RPC接口,这个接口也可以通过命令行帮助程序bitcoin-cli访问。命令行可以使用API进行编程,让我们有能力进行交互实验。

郑重提醒,学习区块链编程的同学,可以仔细研究一下,下面的代码实现手法,做为没有编程基础的小白们,就可以跳过这一部分内容。这个是需要其他基础铺垫才能完成阅读和理解的,没有任何编程基础,你看100遍也看不懂,所以跳过不谈,不信?可以看看下面这段程序代码

$ bitcoin-cli dumpwallet wallet.txt
$ more wallet.txt
# Wallet dump created by Bitcoin v0.9.0rc1-beta (2014-01-31 09:30:15 +0100)
# * Created on 2014-02- 8dT20:34:55Z
# * Best block at time of backup was 286234
(0000000000000000f74f0bc9d3c186267bc45c7b91c49a0386538ac24c0d3a44),
# mined on 2014-02- 8dT20:24:01Z

KzTg2wn6Z8s7ai5NA9MVX4vstHRsqP26QKJCzLg4JvFrp6mMaGB9 2013-07- 4dT04:30:27Z
change=1 # addr=16pJ6XkwSQv5ma5FSXMRPaXEYrENCEg47F
Kz3dVz7R6mUpXzdZy4gJEVZxXJwA15f198eVui4CUivXotzLBDKY 2013-07- 4dT04:30:27Z
change=1 # addr=17oJds8kaN8LP8kuAkWTco6ZM7BGXFC3gk
[... many more keys ...]

$

上面这是一段dumpwallet 命令,是用来将钱包转储为人类可读的文本文件的,但是没有编程基础,小白读起来一头雾水,所以,初读时可以干脆地跳过。当你需要学习区块链编程的知识,可以再回头来查看相关资料。

3.2.1 获得比特币核心客户端状态的信息
3.2.2 钱包设置及加密
3.2.3 钱包备份、纯文本导出及恢复
3.2.4 钱包地址及接收交易
3.2.5 探索及解码交易
3.2.6 探索区块
3.2.7 基于UTXO(未花费的交易输出)的建立、签名与提交

3.3 其他替代客户端、资料库、工具包

除了参考客户端(bitcoind),还可以使用其他的客户端和资料库去连接比特币网络和数据结构。这些工具都由一系列的编程语言执行,用他们各自的语言为比特币程序提供原生的交互。

3.3

其他的执行方式在书中列出了七种,请自行查阅原文 知笔墨中文版,第3章 比特币客户端链接

在其他的编程语言中,还有许多形式的比特币(程序)库。开发者也尽其所能,一直在尽力创造新的比特币工具。

3.3.1 Libbitcoin和sx Tools

Libbitcoin程序是一款基于C++层面,可扩展、多线程、模块化的执行工具。它可以支持全节点客户端和一款叫做sx的命令行工具,并可以提供我们本章所讨论的比特币命令相同的功能。Sx工具同时提供了管理和操作工具,是bitcoind所不能提供的,包括type-2型确定性密钥和密码助记工具。

3.3.2 pycoin

pycoin最初由Richard Kiss创立并维护,是一款基于Python库,并可以支持比特币密钥的操作和交易的客户端,甚至可以支持编译语言从而处理非标准交易。

Pycoin库同时支持Python2(2.7x)与Python3,以及一些便于使用的命令行工具,比如ku和tx。如果在Python3的虚拟环境下安装 pycoin0.42,可以输入原书中所提供的程序代码,请自行查阅原文 知笔墨中文版,第3章 比特币客户端链接
书中还提供了一个简单的Python脚本,通过pycoin库来交易比特币,更多内容请参阅原书的附录2。

3.3.3 btcd

btcd是一款基于Go语言的全节点比特币工具,btcd与bitcoind的一个主要区别是btcd不包含比特币钱包的功能,其实这是一个精心的设计。这意味着你不能直接通过btcd进行比特币交易。

根据书中代码我们可以安装和调试btcd,在此不多说。


第三章的内容很大一部分,是针对有编程基础的同学,小白同学不要被吓到,看不懂就跳过,有需要回头再来学习。

第三章的全部内容到此结束,明天我们开始《第四章密钥、地址、钱包》的学习。

今天就到这里吧,明天我们继续,祝大家夏天快乐!

274/365
20180806首发简书


第三章整体结构:

第3章

参考文献:

1、 知笔墨中文版,第3章 比特币客户端链接

2、爱莉莎:【区块链科普——课表放这里】

3、比特币白皮书原版:Bitcoin: A Peer-to-Peer Electronic Cash System

4、比特币白皮书——巴比特网站中译版

5、Scalers:《比特币白皮书解析 | 从零开始区块链》a

365一疗程
Web note ad 1