请选择 进入手机版 | 继续访问电脑版
开启辅助访问
QQ登录|微信登录|登录 |立即注册

盖茨网区块链技术社区

利用API实现简易区块查看器教程0x1

利用API实现简易区块查看器教程

0x1知识补充
比特币客户端
你可以从bitcoin.org下载标准客户端,即比特币核心,也叫“中本聪客户端”(satoshi client)。它实现了比特币系统的所有方面,包括钱包、对整个交易账簿(区块链)完整拷贝的交易确认引擎,和点对点比特币网络中的一个完整网络节点。

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


第一次运行比特币核心
如果你下载了一个安装包,比如.exe、.dmg、或PPA,你可以和安装其它任何应用程序一样,在你的操作系统上安装它。对于Windows,运行.exe文件,按照提示一步步操作。对于Mac OS,启动.dmg文件,然后将Bitcoin-QT 图标拖拽到你的应用程序目录就可以了。对于Ubuntu,在文件资源管理器中双击PPA文件,会打开程序包管理器来安装它。一旦完成了安装,在你的应用程序列表中会有一个新的应用叫Bitcoin-QT。双击这个图标就可以启动比特币客户端了。

第一次运行比特币核心时,它会开始下载整个区块链,这个过程可能需要数天(见下图)。让它在后台运行,直到显示“已同步”,并且余额旁边不再显示“数据同步中”。

比特币核心拥有交易账簿(区块链)的一份完整拷贝,里面记录了自2009年比特币网络被发明以来发生在比特币网络上的每一笔交易。这个数据集有几个GB(在2013年底大约是16GB),并且需要几天的时间完成增量形式的下载(从区块0顺次下载到最新区块)。在整个区块链数据集下载完成前,客户端将不能处理任何交易或是更新账户余额。在下载数据集的过程中,客户端账户余额旁会显示“数据同步中”,底部会显示“正在同步”。请确保你有足够的磁盘空间、带宽和时间来完成初始同步。

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

对于开发者,可以选择下载包含完整源代码的ZIP包,也可以从Github上克隆权威的源码仓库。在GitHub上的比特币页面,在侧边栏选择下载ZIP。或者使用git命令行(git command line)在自己系统上创建源码的本地拷贝。在下面的例子中,我们将通过unix风格的命令行,在Linux或是Mac OS 上克隆源代码:
  1. $ git clone https://github.com/bitcoin/bitcoin.git
  2. Cloning into 'bitcoin'...
  3. remote: Counting objects: 31864, done.
  4. remote: Compressing objects: 100% (12007/12007), done.
  5. remote: Total 31864 (delta 24480), reused 26530 (delta 19621)
  6. Receiving objects: 100% (31864/31864), 18.47 MiB | 119 KiB/s, done.
  7. Resolving deltas: 100% (24480/24480), done.
  8. $
复制代码
终端上的提示和输出结果可能会因版本有所不同。即使你的屏幕上输出的内容跟这里的例子有点不一样,请遵照代码中的文档,这些都是正常的。

在git clone操作完成后,在你本地的bitcoin目录就会有一份完整的源码拷贝。通过在命令提示行输入cd bitcoin切换到这个目录下:
  1. $ cd bitcoin
复制代码

默认情况下,本地拷贝将与最新的代码同步,这可能是bitcoin的一个不稳定或是 beta 版本。在编译这些代码之前,签出发布标签(realease tag)以选择某一特定版本(a specific version)。 这将通过一个关键的标签标记,让本地拷贝与代码仓库的特定快照同步。开发者用标签来标记代码的特定发行版本号(version numBTCer)。首先,要找到可用的标签,可以通过git tag命令:
  1. $ git tag
  2. v0.1.5
  3. v0.1.6test1
  4. v0.2.0
  5. v0.2.10
  6. v0.2.11
  7. v0.2.12

  8. [... many more tags ...]

  9. v0.8.4rc2
  10. v0.8.5
  11. v0.8.6
  12. v0.8.6rc1
  13. v0.9.0rc1
复制代码

列出的标签是bitcoin的所有发行版本。按照约定,带有rc后缀的是预发行版本,可以用来测试。没有后缀的稳定版本可以直接在产品环境上运行。从上面的列表中,选择最新的发行版本,目前是v0.9.0rc1。为了让本地代码跟这个版本一致,我们需要用git checkout 命令:
  1. $ git checkout v0.9.0rc1
  2. Note: checking out 'v0.9.0rc1'.

  3. HEAD is now at 15ec451... Merge pull request #3605
  4. $
复制代码

源代码包含文档,可以在多个文件夹中找到。在命令提示行输入more README.md可以在bitcoin目录下的README.md中查看主文档,用空格键可以翻页。在这一章,我们将构建命令行的比特币客户端,在linux上称作bitcoind。在您的平台上,通过输入more doc/build-unix.md,可以阅读编译bitcoind命令行客户端的说明。Mac OSX和Windows平台的说明可以在doc目录下找到,分别是build-osx.md或是build-msw.md。

仔细阅读build文档第一部分中build的必备条件。这些是在你编译之前你的系统上必须具备的库文件。如果缺少这些必备条件,构建过程将会出现错误并导致失败。如果因为缺少一个必备条件而发生这种情况,你可以先安装它,然后在你停下的地方重新构建。假设这些必备条件已经具备,你就可以开始构建过程,通过authgen.sh脚本,生成一组构建脚本。

从v0.9版本开始,比特币核心的构建过程改用autogen/configure/make 体系。旧版本是用一个简单的Makefile,并且和下面的例子稍微有一点不同。请遵照你想要编译版本的说明文档。v0.9版本引入的 autogen/configure/make 构建体系可能用于未来所有版本的代码,是下面的例子中演示的系统
  1. $ ./autogen.sh
  2. configure.ac:12: installing `src/build-aux/config.guess'
  3. configure.ac:12: installing `src/build-aux/config.sub'
  4. configure.ac:37: installing `src/build-aux/install-sh'
  5. configure.ac:37: installing `src/build-aux/missing'
  6. src/Makefile.am: installing `src/build-aux/depcomp'
  7. $
复制代码

autogen.sh脚本创建了一系列的自动配置脚本,会询问你的系统以发现正确的设置,确保你已安装必要的库来编译源码。这里面最重要的是configure脚本,它会提供许多不同的选项来定制构建过程。输入./configure --help 可以查看各种不同的选项:
  1. $ ./configure --help

  2. `configure' configures Bitcoin Core 0.9.0 to adapt to many kinds of systems.

  3. Usage: ./configure [OPTION]... [VAR=VALUE]...

  4. To assign environment variables (e.g., CC, CFLAGS...), specify them as VAR=VALUE.  

  5. See below for descriptions of some of the useful variables.

  6. Defaults for the options are specified in brackets.

  7. Configuration:
  8.   -h, --help              display this help and exit
  9.       --help=short        display options specific to this package
  10.       --help=recursive    display the short help of all the included packages
  11.   -V, --version           display version information and exit

  12. [... many more options and variables are displayed below ...]

  13. Optional Features:
  14.   --disable-option-checking  ignore unrecognized --enable/--with options
  15.   --disable-FEATURE       do not include FEATURE (same as    --enable-FEATURE=no)
  16.   --enable-FEATURE[=ARG]  include FEATURE [ARG=yes]

  17. [... more options ...]

  18. Use these variables to override the choices made by `configure' or to help it to find libraries and programs with nonstandard names/locations.

  19. Report bugs to <info@bitcoin.org>.

  20. $
复制代码

通过使用--enable-FEATURE和--disable-FEATURE选项,configure脚本允许你启用或是禁用某些功能,FEATURE需要被替换成功能名称,在上面的帮助输出中可以找到。在这一章,我们将用默认的功能来构建bitcoind客户端。这里不会使用配置选项,但是你应该检查一遍,明白哪些可选的功能可以作为客户端的一部分。下一次,运行configure脚本就可以自动发现所有必要的库,然后为我们的系统创建一个定制的构建脚本。

如果一切顺利,configure命令将会以创建可定制的构建脚本结束。这些构建脚本允许我们编译bitcoind。如果有缺失的库或是错误,configur命令将会以错误信息终止。如果出现了错误,可能是因为缺少库或是有不兼容的库。重新检查构建文档,确认你已经安装缺失的必备条件。然后运行configure,看看错误是否消失了。下一步,你将编译源代码,这个过程可能需要1个小时完成。在编译的过程中,你应该过几秒或是几分钟看一下输出结果。如果出现了问题,你会看到错误。如果中断了,编译的过程可以在任何时候恢复。输入make命令就可以开始编译了:

  1. $ ./configure
  2. checking build system type... x86_64-unknown-linux-gnu
  3. checking host system type... x86_64-unknown-linux-gnu
  4. checking for a BSD-compatible install... /usr/bin/install -c
  5. checking whether build environment is sane... yes
  6. checking for a thread-safe mkdir -p... /bin/mkdir -p
  7. checking for gawk... no
  8. checking for mawk... mawk
  9. checking whether make sets $(MAKE)... yes

  10. [... many more system features are tested ...]

  11. configure: creating ./config.status
  12. config.status: creating Makefile
  13. config.status: creating src/Makefile
  14. config.status: creating src/test/Makefile
  15. config.status: creating src/qt/Makefile
  16. config.status: creating src/qt/test/Makefile
  17. config.status: creating share/setup.nsi
  18. config.status: creating share/qt/Info.plist
  19. config.status: creating qa/pull-tester/run-bitcoind-for-test.sh
  20. config.status: creating qa/pull-tester/build-tests.sh
  21. config.status: creating src/bitcoin-config.h
  22. config.status: executing depfiles commands
  23. $
复制代码

如果一切顺利,bitcoind现在已经编译完成。最后一步就是通过make命令,安装 bitcoind 可执行文件到你的系统路径下:
  1. $ make
  2. Making all in src
  3. make[1]: Entering directory `/home/ubuntu/bitcoin/src'
  4. make  all-recursive
  5. make[2]: Entering directory `/home/ubuntu/bitcoin/src'
  6. Making all in .
  7. make[3]: Entering directory `/home/ubuntu/bitcoin/src'
  8.     CXX    addrman.o
  9.     CXX    alert.o
  10.     CXX    rpcserver.o
  11.     CXX    bloom.o
  12.     CXX    chainparams.o

  13.     [... many more compilation messages follow ...]

  14.     CXX    test_bitcoin-wallet_tests.o
  15.     CXX    test_bitcoin-rpc_wallet_tests.o
  16.     CXXLD  test_bitcoin
  17. make[4]: Leaving directory `/home/ubuntu/bitcoin/src/test'
  18. make[3]: Leaving directory `/home/ubuntu/bitcoin/src/test'
  19. make[2]: Leaving directory `/home/ubuntu/bitcoin/src'
  20. make[1]: Leaving directory `/home/ubuntu/bitcoin/src'
  21. make[1]: Entering directory `/home/ubuntu/bitcoin'
  22. make[1]: Nothing to be done for `all-am'.
  23. make[1]: Leaving directory `/home/ubuntu/bitcoin'
  24. $
复制代码

你可以通过询问系统下面2个可执行文件的路径,来确认bitcoin是否安装成功。
$ which bitcoind/usr/local/bin/bitcoind$ which bitcoin-cli/usr/local/bin/bitcoin-cli
bitcoind 默认的安装位置是/usr/local/bin。当你第一次运行bitcoind时,它会提醒你用一个安全密码给JSON-RPC接口创建一个配置文件。通过在终端输入bitcoind就可以运行bitcoind了:
  1. $ sudo make install
  2. Making install in src
  3. Making install in .
  4.     /bin/mkdir -p '/usr/local/bin'
  5.     /usr/bin/install -c bitcoind bitcoin-cli '/usr/local/bin'
  6. Making install in test
  7. make  install-am
  8. /bin/mkdir -p '/usr/local/bin'
  9.   /usr/bin/install -c test_bitcoin '/usr/local/bin'
  10. $
复制代码

在你喜欢的编辑器中编辑配置文件并设置参数,将其中的密码替换成bitcoind推荐的强密码。不要使用出现在这里的密码。在.bitcoin目录下创建一个名为.bitcoin/bitcoin.conf 的文件,然后输入用户名和密码:
  1. rpcuser=bitcoinrpcrpc
复制代码

当你正在编辑配置文件的时候,你可能想要设置一些其他选项,例如txindex(见“交易数据库索引及txindex选项”)。通过输入bitcoind --help,可以查看所有可用的选项列表。
现在可以运行比特币核心客户端。当你第一次运行的时候,它会下载所有的区块,重新构建比特币区块链。这是一个好几个GB的文件,可能需要大约2天的时间全部下载完。你可以通过SourceForge上的BitTorrent客户端下载区块链的部分拷贝来缩短区块链的初始化时间。
选项 -daemon 可以以后台模式运行 bitcoind。

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则