现在区块链技术越来越火,作为区块链技术鼻祖的比特币无疑是学习区块链技术最好的实例,如果没有运行过一个比特币节点,实在难以体会到比特币的神奇和精妙。
比特币网络每天承载着几十万笔交易,在区块链的不断延长中,交易被万世不移地记录了下来。而完成这一伟大过程的居然只有不到8000个节点,他们分布在全球各地,由部分比特币使用者、矿工、交易平台以及志愿者们运行和维护。
为什么我需要运行一个自己的节点?
- 大多数人只是在交易平台购买比特币,在最终把比特币提取到自己的钱包之前,这些比特币仅仅是交易平台数据库中的一个数值,交易平台完全有可能凭空在数据库中增加数量。当年门头沟(Mt Gox)交易平台被黑客攻击丢失比特币后,就是用这种无中生有的方式欺骗用户,直到用户挤兑,交易平台没有足够的比特币来兑付,最终跑路。长期持有比特币时,出于安全考虑,应该将比特币提取到自己的钱包中,这就需要在本地运行一个自己的比特币节点来确认资金是否到账。
- 比特币网络是一个P2P的结构,只有拥有足够多的节点,才能更好的抵抗各种干扰和攻击,如果没有足够多的节点,比特币安全性将出现严重隐患。
- 区块链中隐藏了很多有意思的信息,挖掘这些隐藏的信息是非常有趣的,运行一个节点将能够获得全部区块链的数据。
安装(以Ubuntu14.04为例):
比特币开发组已经提供了预编译好的二进制文件,开箱即用,很方便是不是。
sudo apt-get update sudo apt-get install software-properties-common sudo add-apt-repository ppa:bitcoin/bitcoin sudo apt-get update sudo apt-get install
安装完成后,使用如下命令启动节点:
bitcoind -daemon -txindex
如果一切顺利,你将看到如下输出:
Bitcoin server starting
节点启动后,将开始自动联网同步区块链信息,现在比特币区块链已经有140G左右,这需要比较长的时间,去睡个觉吧。
使用:
- 查看本地节点状态
bitcoin-cli getinfo { "version": 140200, "protocolversion": 70015, "walletversion": 130000, "balance": 0.00000000, "blocks": 1744, #已经同步了1744个区块,网络上现在总计已经有了近50w个区块 "timeoffset": 2, "connections": 8, "proxy": "", "difficulty": 1, "testnet": false, "keypoololdest": 1500532351, "keypoolsize": 100, "paytxfee": 0.00000000, "relayfee": 0.00001000, "errors": "" }
- 查看指定高度区块的Hash值
bitcoin-cli getblockhash 0 000000000019d6689c085ae165831e934ff763ae46a2a6c172b3f1b60a8ce26f
- 查看区块内容
bitcoin-cli getblock 000000000019d6689c085ae165831e934ff763ae46a2a6c172b3f1b60a8ce26f { "hash": "000000000019d6689c085ae165831e934ff763ae46a2a6c172b3f1b60a8ce26f", "confirmations": 41224, "strippedsize": 285, "size": 285, "weight": 1140, "height": 0, "version": 1, "versionHex": "00000001", "merkleroot": "4a5e1e4baab89f3a32518a88c31bc87f618f76673e2cc77ab2127b7afdeda33b", "tx": [ "4a5e1e4baab89f3a32518a88c31bc87f618f76673e2cc77ab2127b7afdeda33b" ], "time": 1231006505, "mediantime": 1231006505, "nonce": 2083236893, "bits": "1d00ffff", "difficulty": 1, "chainwork": "0000000000000000000000000000000000000000000000000000000100010001", "nextblockhash": "00000000839a8e6886ab5951d76f411475428afc90947ee320161bbf18eb6048" }
PS:
还记得中本聪在创世区块中留下的那句话吗?
The Times 03/Jan/2009 Chancellor on brink of second bailout for banks
这句话就在第一个区块文件的第一个区块中,默认位置在~/.bitcoin/blocks/blk00000.dat