搭建比特币私链

一步一步搭建比特币私链,并进行挖矿

Posted by HonorJoey on March 2, 2020

编译安装准备

环境准备

以下兼在Linux环境下

sudo apt-get install build-essential libtool autotools-dev automake pkg-config bsdmainutils python3
sudo apt-get install libevent-dev libboost-system-dev libboost-filesystem-dev libboost-chrono-dev libboost-test-dev libboost-thread-dev

创建文件夹

cd ~
mkdir btctest
cd btctest

创建数据目录

mkdir data

下载源码

git clone https://github.com/bitcoin/bitcoin.git

编译可执行文件

cd bitcoin/
./autogen.sh
./configure --disable-wallet
make
make install # optional

复制可执行文件到btctest/

mv /root/btctest/bitcoin/src/bitcoind /root/btctest/
mv /root/btctest/bitcoin/src/bitcoin-cli /root/btctest/

具体安装见https://github.com/bitcoin/bitcoin/blob/master/doc/build-unix.md

比特币配置文件准备

vi bitcoin.conf

将以下文本复制到bitcoin.conf

# 数据存储目录,此处为上面创建的`data`目录
datadir=/root/btctest/data
# 使用测试网络testnet为官方测试网络,需同步数据,regtest为私链
#testnet=1
regtest=1
# 告知 Bitcoin-Qt 和 bitcoind 接受JSON-RPC命令
server=1
listen=1
# 设置 gen=1 以尝试比特币挖矿
gen=1
# 后台执行
daemon=1
# txindex允许查询链上的交易数据
txindex=1
# reindex允许查询链上最新区块以前的交易数据
reindex=1
# 监听 RPC 链接,正式默认端口8333 测试默认18333
#rpcport=18332
#rpcbind=0.0.0.0
rpcuser=btc
rpcpassword=btcbtc
rpcallowip=0.0.0.0/0
rpcconnect=0.0.0.0/0

运行私链

启动节点

./bitcoind -conf=/root/btctest/bitcoin.conf -daemon

测试节点

启动节点
./bitcoin-cli -rpcuser=btc -rpcpassword=btcbtc -rpcport=18443 getmininginfo

返回如下

{
  "blocks": 251,
  "difficulty": 4.656542373906925e-10,
  "networkhashps": 0.0112999670417628,
  "pooledtx": 3,
  "chain": "regtest",
  "warnings": "This is a pre-release test build - use at your own risk - do not use for mining or merchant applications"
}

PS:此处的18443为私链模式的默认rpc端口,-rpcuser=btc -rpcpassword=btcbtcbitcoin.conf中设置的rpc连接用户及密码

创建账户
创建新地址
./bitcoin-cli -rpcuser=btc -rpcpassword=btcbtc -rpcport=18443 getnewaddress

返回如下

bcrt1qhc9geyzr8p5ztkwcr2g2d00kddax46uy0z02ey
导出私钥
./bitcoin-cli -rpcuser=btc -rpcpassword=btcbtc -rpcport=18443 dumpprivkey bcrt1qhc9geyzr8p5ztkwcr2g2d00kddax46uy0z02ey

返回如下

cQudjfVEAgZiZm6aqz4UhdnyneVw34GS2iYCEzmUTDLSKNWA2NvA
挖矿
./bitcoin-cli -rpcuser=btc -rpcpassword=btcbtc -rpcport=18443 generatetoaddress 101 bcrt1qhc9geyzr8p5ztkwcr2g2d00kddax46uy0z02ey

PS: 因为前100个块没有奖励,挖不到比特币,所以此处选择挖矿101

查看余额

####### 按地址分组查询余额

./bitcoin-cli -rpcuser=btc -rpcpassword=btcbtc -rpcport=18443 listaddressgroupings

返回

[
  [
    [
      "bcrt1qp9gq52muvdzdmlhdd9xtg22vz7rfd033zewz4v",
      39.99998000,
      ""
    ]
  ],
  [
    [
      "bcrt1q7e2pdzpr50eftum29h9rtvfcj763hwq02jjlhr",
      7459.99981000,
      ""
    ]
  ]
]
查询钱包余额
./bitcoin-cli -rpcuser=btc -rpcpassword=btcbtc -rpcport=18443 getbalance "*" 6

返回

7379.99983000
转账
./bitcoin-cli -rpcuser=btc -rpcpassword=btcbtc -rpcport=18443 sendtoaddress "bcrt1qp9gq52muvdzdmlhdd9xtg22vz7rfd033zewz4v" 10

返回

a2a2eb18cb051b5fe896a32b1cb20b179d981554b6bd7c5a956e56a0eecb04f0

比特币rpc文档
官方https://bitcoincore.org/en/doc/0.18.0/rpc/
中文http://cw.hubwiz.com/card/c/bitcoin-json-rpc-api/1/7/33/