只有看见未来的人,才能抵达未来——《精通比特币》第三章比特币客户
只有看见未来的人,才能抵达未来。
郎咸平曾经说过:比特币白给我都不要。
也有人说:比特币底层技术——区块链是最伟大的发明,堪比互联网。
到底比特币是什么?如何判断?难道我们能做的就是人云亦云?
如何能有自己的独立判断?
一起来《精通比特币》!
今天是我们共读《精通比特币》一书的第3章 比特币客户端,让我们一起走向数字货币新旅程。
每天早上10:24发文,欢迎关注支持,一起加油!
照搬的信念,无法抵御波动的冲击,只有行动铸就的思想体系,并在行进中不断修正,才能让我们不断变得更好。——Scalers《投资赚钱就是信念变现》
《精通比特币》一书,英文原名为Mastering Bitcoin ,国内译做《精通比特币》,本书四个电子版的链接如下,点击蓝色字可跳转阅读:
本书四个电子版的链接如下,点击蓝色字可跳转阅读:
今天,我们开始《第3章 比特币客户端链接 》的学习。
对于科技书籍我有一个阅读小技巧分享一下,就是看不懂的内容,直接跳过,看完全书之后,再回头来看,就会更清楚,也更节约时间。
如果全书看完,回头再看还是看不懂的内容,那就说明 这些内容是需要另外的知识补充才能看懂的,比如,第三节中出现的大段程序代码,没有学过编程的同学,或者象我这样学过编程,但是没有学过这种语言的同学,也是会看不懂的,这很正常,不用纠结,看自己看得懂的那部分内容就好啦。
3.1 比特币核心:参考实现
3.1跟其他大型网络游戏,需要下载安装客户端,才能登录中心服务器进行游戏的玩耍一样,比特币这个网络游戏也有客户端,要下载和安装之后就可以开始玩“数独解题赢比特币游戏“了。
在Bitcoin网站的选择钱包页面,下载参考客户端比特币核心。
图3-1 选择比特币客户端根据操作系统不同,你将下载不同的可执行安装工具。对于Windows,它是一个ZIP归档文件或.exe格式的可执行文件。对于Mac OS,它是一个.dmg格式的磁盘映像。Linux版本包括用于Ubuntu系统的PPA包,或是 tar.gz格式的压缩包。图3-1所示的Bitcoin.org页面上列出了一些推荐的比特币客户端。
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章参考文献: