姓名:马行健
学号:16020199036
转载于:https://zhuanlan.zhihu.com/p/27981919
【嵌牛鼻子】:比特币是什么?比特币节点是怎么运行的?
【嵌牛导读】:现在区块链技术越来越火,作为区块链技术鼻祖的比特币无疑是学习区块链技术最好的实例,如果没有运行过一个比特币节点,实在难以体会到比特币的神奇和精妙。【嵌牛原文】:

比特币网络每天承载着几十万笔交易,在区块链的不断延长中,交易被万世不移地记录了下来。而完成这一伟大过程的居然只有不到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

网友评论