常见的比特币命令

钱包的概要信息

1
2
3
4
5
6
7
8
9
10
11
12
13
14
$ bitcoin-cli getwalletinfo
{
"walletname": "wallet.dat",
"walletversion": 159900,
"balance": 0.00000000, # 已确认的账户余额,使用BTC单位
"unconfirmed_balance": 0.00000000, # 支付到该钱包,但尚未确认的交易的总额
"immature_balance": 0.00000000, # 挖矿奖励金额需要等待100次确认后才能使用,在此之前,这部分金额都是immature状态。
"txcount": 0, # 钱包里涉及的交易总个数
"keypoololdest": 1527560439, # 是指最早生成的key的unix时间戳
"keypoolsize": 1000, # 允许预先生成的公钥、私钥对的个数。私钥参与交易的目的是提升安全性和反跟踪。
"keypoolsize_hd_internal": 1000, # 用于内部使用(如找零)的钱包地址个数。
"paytxfee": 0.00000000,
"hdmasterkeyid": "3850de05ae997e53dc5271f4e889aa5f2a6b213b"
}

getblockchaininfo

这个命令用来显示比特币网络概览

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
$ bitcoin-cli getblockchaininfo
{
"chain": "main",
"blocks": 373185, # 已经下载了329136个block,下载进度=373185/524904=71%。
# 截止2018/05/29 11:30,一共挖了524904个block。
# 可以在该地址查看最新数据。https://blockexplorer.com/api/status?q=getBlockCount
"headers": 524904,
# 当前最可信区块的ID,即当前最长链的最后一个有效区块。它可能是被挖掘出来的最新块,也可能不是—这取决于被挖掘出来的最新块是否在正确的分叉上。
"bestblockhash": "0000000000000000056ff4b4bb1579533f3e901e90f6f4966104811df4705823",
"difficulty": 56957648455.01001, # 当前块的难度值
# 每个区块都包含着一个unix time时间戳。只有当这个时间戳大于mediantime,并且小于某个调整后的网络时间[1]时,这个区块才会被确认。
"mediantime": 1441481425, # 过去11个区块的中值时间。注意这里引用的区块是最长链上已确认的区块。
# 在一个新安装的Full Node上,由于区块首先要下载完成才能进行确认,而确认时间较快,所以可以把这个比例当成区块下载完成进度。
# 为什么这个比例不等于blocks/headers?
"verificationprogress": 0.2479860418344433, # 已确认的交易占比,为何这么低?
"initialblockdownload": true,
"chainwork": "00000000000000000000000000000000000000000009e65a3d8485126dc3d47a",
"size_on_disk": 50381675110, #
"pruned": false, # 如果处于pruned模式,则下载的区块可以被删除以节省磁盘空间。
"softforks": [ # 比特币分叉信息
{
"id": "bip34",
"version": 2,
"reject": {
"status": true
}
},
{
"id": "bip66",
"version": 3,
"reject": {
"status": true
}
},
{
"id": "bip65",
"version": 4,
"reject": {
"status": false
}
}
],
"bip9_softforks": {
"csv": {
"status": "defined",
"startTime": 1462060800,
"timeout": 1493596800,
"since": 0
},
"segwit": {
"status": "defined",
"startTime": 1479168000,
"timeout": 1510704000,
"since": 0
}
},
"warnings": ""
}

未验证的交易存在哪?存在局部节点
验证后的交易存在哪?被广播,并加入全局block chain

getblockhash

每个区块是通过其id来标识的,每个id都是一个256位的hash。这个id非常不方便交流。同时我们知道,每一个区块都有一个高度值,而对于主链来说,每一个高度值都对应着惟一一个区块。

我们可以通过这个命令来查找创世块、第一个区块(由中本聪在赫尔辛基的一个服务器上挖出)和其它任意高度的区块的id,并进而得到该区块的信息。

1
2
3
4
$ bitcoin-cli getblockhash 0
000000000019d6689c085ae165831e934ff763ae46a2a6c172b3f1b60a8ce26f
$ bitcoin-cli getblockhash 1000
00000000c937983704a73af28acdec37b049d214adbda81d7e2a3dd146f6ed09

getblock

根据区块的ID,可以查看其详细信息。一般有一下三种方式;

  1. bitcoin-cli getblock命令
  2. web api的方式,例如 https://blockchain.info/rawblock/00000000839a8e6886ab5951d76f411475428afc90947ee320161bbf18eb6048
  3. web界面的方式,例如 https://www.blockchain.com/zh-cn/btc/block/000000000019d6689c085ae165831e934ff763ae46a2a6c172b3f1b60a8ce26f

创世区块(高度为0)

创世区块指区块链上的第⼀个区块,⽤来初始化相应的加密货币。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
$ bitcoin-cli getblock 000000000019d6689c085ae165831e934ff763ae46a2a6c172b3f1b60a8ce26f
{
"hash": "000000000019d6689c085ae165831e934ff763ae46a2a6c172b3f1b60a8ce26f", # 哈希值,也是区块id,256字节。上一区块是000...000
"confirmations": 384844, # 该区块已经过多少次确认。如果该区块属于best chain,则此值等于全链高度,也是本块的深度。
"strippedsize": 285,
"size": 285, # 本块的大小,0.285 kB
"weight": 1140,
"height": 0, # 高度为0
"version": 1,
"versionHex": "00000001",
"merkleroot": "4a5e1e4baab89f3a32518a88c31bc87f618f76673e2cc77ab2127b7afdeda33b", # 默克尔树,一种用来表达链上历史交易记录的数据结构,32 Bytes。
"tx": [
"4a5e1e4baab89f3a32518a88c31bc87f618f76673e2cc77ab2127b7afdeda33b"
], # 交易记录
"time": 1231006505, # 时间戳,2009-01-03 18:15:05
"mediantime": 1231006505,
"nonce": 2083236893, # 随机数,也就是 PoW 要计算的数
"bits": "1d00ffff", # 网络难度
"difficulty": 1, # 难度系数。2018.09.01的难度已经是 6,727,225,469,722.53
"chainwork": "0000000000000000000000000000000000000000000000000000000100010001", # 这是什么鬼?
"nextblockhash": "00000000839a8e6886ab5951d76f411475428afc90947ee320161bbf18eb6048" # 最后一个block的next为空
}
# 1. 为什么没保存上一个区块 previousblockhash?只保存了下一个的?
# 2. 新区块奖励: 50BTC。记录在哪?
# 3. 计算目标 486604799。记录在哪?
# 4. 重量: 0.896 kWU。记录在哪?
# 5. 总输出量、预计交易量、保存在哪?

也可以通过浏览器查看

对应的交易记录

https://www.blockchain.com/zh-cn/btc/tx/4a5e1e4baab89f3a32518a88c31bc87f618f76673e2cc77ab2127b7afdeda33b

1
2


没有输入(新生成的比特币)
新区块奖励 0

区块#1

https://www.blockchain.com/zh-cn/btc/block/00000000839a8e6886ab5951d76f411475428afc90947ee320161bbf18eb6048

最新区块

可以在 https://www.blockchain.com/zh-cn/explorer 查看

这样得到的信息并不包含交易信息,也即我们得到的是区块的头。要得到全部的信息,需要传入verbosity参数,当参数值为2时,即可得到全部信息: