体验比特币节点环境的搭建
2020-04-01 13:02:02 #比特币网络 #比特币节点搭建 #比特币是什么

什么是比特币?
比特币诞生于2009年,是一种基于P2P网络的点对点现金支付系统,创始人中本聪。比特币是区块链技术的首个大规模应用,其在坊间有很多传说,尤其是近两年的资本炒作,让比特币的热度逐年增加。比特币和我们常见的电子货币,虚拟币都不同。
区别之一是因为比特币没有中心化的组织发行,需要通过在比特币的去中心化网络中去贡献算力,才能获得比特币,而QQ币游戏币,这些是由中心化的公司发行,由发行方背书。QQ币被盗,或许可以让腾讯找回,但是比特币丢失就是永久丢失了。
区别之二在于比特币的总量是恒定的。但是虚拟币游戏币这些可以根据具体需要来增发。另外由于一些人为的因素,我们有可能会造成比特币永久的丢失,比如说忘记私钥,那么可以认为比特币是通缩的比特币网络基于P2P,也就是常说的点对点网络,P2P网络中所有的节点都是对等的,与之相对应的其他的网络架构。由于比特币去中心化的特性决定了它只能使用P2P这种对等的架构,从2009年比特币诞生开始,已经在P2P网络下稳定运行长达11年之久。
下面我们来看一下比特币的节点分布。
从图和表格上可以看出来,节点的分布范围比较广泛,遍布在世界各地,主要集中在北美、欧洲和中国。其中美国的节点数是最多的,其次是德国,法国,荷兰,加拿大,英国和中国。所有的节点共同组成了比特币的网络。只要有一个全量的节点还在运行,比特币和比特币的账本就能够正常使用,在2017年有区块链公司声称使用了专用的卫星向比特币网络发送交易。也就是说卫星也是比特币的节点,比特币的节点已经不限于地球上,这也充分说明了比特币节点分布的广泛,以及比特币网络的健壮。
所有的节点在网络中都是对等的,但不同的节点也会有不同的功能,总的来说,比特币节点主要有4种功能,包含比特币钱包、共识挖矿、区块链数据库存储、节点路由。
根据具有功能的不同,我们把比特币节点也分为几种:全量节点、矿工节点、轻钱包节点。全量节点,4种功能都有;而矿工节点,一般只有挖矿和区块链数据库的功能;轻钱包节点,一般就只有钱包的功能。
比特币网络有三种,分别是公共真实链,也就是现实中我们使用的主网,只有一条链,链上有超过200G的区块数据,是从2009年开始运行到现在11年的交易数据。第二个是公共测试链,用于公共测试开发,是由比特币社区维护的一条测试链,也只有一条链,有大约18G的测试区块数据,第3个是单机测试链,是本地的一个私有链,可用于个人在本地测试开发,不需要同步数据,这三者也称为Mainnet,Testnet,Regtest
Mode。
平时我们的比特币转账用的是主网Mainnet,一般应用开发我们不会选择在主网,因为主网上面的比特币都是真实的。我们在自己应用开发的时候,一般会选择后两者,接下来我们会实际操作演示,如何搭建一个本地私有链的节点。环境我们选择一台14.04的主机或者虚拟机,也可以是其他的操作系统。
我们先到这来看一下主要步骤,首先安装比特币核心程序bitcoind。
sudo add-apt-repository ppa:bitcoin/bitcoin
sudo apt-get update
sudo apt-get install bitcoind
接下来的三个安装命令仅仅适用于示例操作系统。对于其他操作系统,大家可以自行在比特币的官网了解。
第二,配置比特币的配置bitcoind.conf。
第三,启动比特币网络。
sudo bitcoind-conf=/home/jpeng/.bitcoin/bitcoin.conf
第四,生成创世区块。
bitcoin-cli generate 101 生成101个区块,区块coinbase交易需要100个区块确认
第五,查询创世区块的奖励。
接下来我们切换到一个演示环境。
首先安装比特币程序。由于安装过程可能会稍微比较耗时,并且这里的安装命令都是示例操作系统,我们常用的一些安装命令。大家安装完了之后呢,可以使用bitcoind来查看它的版本。如果查询到这些信息就说明bitcoind已经安装成功了。
然后我们来看一下配置文件。我们新建一个文件,bitcoind.conf。
这里演示环境已经提前把配置项配置好了,我们一起来看一下各个配置项的含义。
第一个daemon。这个配置项是用来配置bitcoind是否运行在后台。
第二个server,是配置是否接受rpc请求,我们后续的命令都是通过rpc来发送,所以这里我们需要配置server=1。
接下来的两个是网络配置,testnet regtest.
这两个我们前面提到过,一个是公共测试链,另一个是本地私有链。
这里我们使用的是本地私有链,所以testnet=0 regtest=1。
然后是rpc配置,配置rpc的用户名和密码。
最后一个配置项是datadir。
这是第二是配置一个目录,这个目录用来存储bitcoind,比特币的区块数据。这个目录如果没有的话,我们需要提前创建。
为了方便管理,我们再创建一个目录,叫.bitcoin可以。用来存放刚才配置的配置文件。
然后我们把刚才配置的配置文件。放在bitcoin目录下面去。
然后再创建另外一个目录,就是刚才配置软件里面配置的datadir btc data。配置完了之后,我们即可启动bitcoind。
我们用root权限启动bitcoind,带上刚才的配置文件路径。
这边提示bitcoin server starting。
我们可以用PS命令来看一下进程是否成功启动。下面我们可以看到进程已经在了。说明我们的程序已经启动。
我们用命令来生成区块,我们使用bitcoind-cli,bitcoind-cli 是bitcoind对应的一个客户端程序,它支持很多命令。
我们可以用help来查看它支持的所有命令。
这边我们使用generate来生成区块。我们生成了101个区块。由于挖矿交易需要100个区块确认,在第101个区块之后,我们的创世区块的奖励才有效。
我们可以看到这边生成了很多串数字,这些就是我们刚才生成了101个区块的哈希。
因为这里我们使用的是私有链,所以区块生成是比较快的,在主网里面,需要矿工挖矿才生成一个新的区块,大约是10分钟一个块。
我们来查询一下我们的创世区块的挖矿奖励。
还是使用bitcoind-cli getbalance,会显示50,也就是50个btc就是创世区块挖矿奖励。
太壹信息科技作为一家区块链全生态解决方案技术服务商,拥有顶尖的技术和丰富的行业经验专注技术研发和产品创新,先后斩获多项证书,综合实力位居行业前三,太壹业务覆盖类金融、区块链应用、交易所、供应链金融、电商系统、社交IM、汽车金融、消费金融、互联网金融等多个领域,凭借成熟的产品和优质的服务为国内外多家客户提供定制化信息化解决方案,赢得业界口碑。
相关文章:
在線客服
申請試用
設置