比特币私有(Regtest)网络搭建

 

1、Bitcoin网络介绍

Bitcoin有三个独立的网络:Mainnet、Testnet、Regtest。

Mainnet(主网)是作为官方版本使用的网络,它具有一定的价值。所有真实的交易都发生在这个网络上,人们通过mainnet获得报酬。

 

Testnet(测试网),一个与主网具有几乎相同规则的网络(一些操作码在mainnet上是禁止的,而在Testnet上取消了这个限制)。它有对等点发现功能,即它可以在testnet网络上找到类似于mainnet的对等点,并且运行它的是一个对等点(p2p)网络。

 

Regtest是一个私有的区块链,它具有与testnet相同的规则和地址格式,但是没有要连接到的全局p2p网络。该网络下可以使用一个简单的命令在没有使用挖矿硬件下挖掘区块。

 

2、编译安装

 

首先在github上下载bitcoin源码:

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

编译:

./ autogen.sh

./configure --prefix=/usr_dir --enable-wallet

make && sudo make install

Configure过程中会提示缺少对应的库,按照提示按照即可。如果出现兼容的问题,请在./configure的参数中加上:--with-incompatible-bdb

为了方便测试,可以把bitcoin对应的命令通过软链接的方式创建到bin目录下:

sudo ln -s /your_dir/bitcoind /usr/local/bin/bitcoind

sudo ln -s /your_dir/bitcoin-cli /usr/local/bin/bitcoin-cli

 

3、启动网络

启动Mainnet:bitcoind -daemon 启动后会通过内置的地址去寻找其他节点。

启动Testnet:bitcoind -testnet -daemon 启动后,它也会根据内置其他节点地址去P2P学习链接其他节点。

启动Regtest:bitcoind -regtest -daemon 启动后,它是一个本地私有节点,不会同步数据。

不过在启动网络时一般都会加入其它参数,可以通过配置文件或者命令行的方式配置参数,以下是启动regtest网络的配置文件:

#配置文件默认在user/.bitcoin/下,如果需要指定数据文件的路径加入datadir即可

regtest=1

rpcbind=127.0.0.1

rpcallowip=127.0.0.1

rpcuser=test

rpcpassword=test

server=1

daemon=1

txindex=1

然后执行执行bitcoin命令便可启动

bitcoind

Bitcoin Core starting

4、基本操作

bitcoin-cli stop                       #关闭网络

bitcoin-cli getnetworkinfo              #查看网络状态

bitcoin-cli getpeerinfo                 #查看网络节点

bitcoin-cli getblockchaininfo           #查看区块链信息:如同步进度

bitcoin-cli help                        #查看所有命令

1)bitcoin-cli getnewaddress [label] [address_type]

生产一个用于接收付款的bitcoin地址

bitcoin-cli getnewaddress

2MvFrKgUR8xYLzYD6dR5mAuySULqgL8MEcF

2)Generatetoaddress nblocks [address] [maxtries]

为指定地址立即生产指定数量区块。

注意bitcoin-0.18版本之后,regtest网络不再使用generate命令生产区块,用以代替的是generatetoaddress命令

Generatetoaddress nblocks [address] [maxtries]

参数:

Nblocks:生产的区块数量;

Address:将新生成的比特币发送到的地址;

Maxtries:重复次数

bitcoin-cli generatetoaddress 10 2MvFrKgUR8xYLzYD6dR5mAuySULqgL8MEcF 

[

  "4d98b03ef7cc9e6074db11685a298059ed4aa942b08949d080067e3f490b6569",

  "6738a949c6039b7c4760514c299b0206da26bbd503847da92e30c98a7407b7d9",

  "0713a96da679d7274143cc5c045efb8bd311d1979290c4c5ccfde0810b1ff865",

  "7ad0d6f65df41435909d281d9d99405a43b487b17c3f7fa6f7305884b294f154",

  "00f66d0e4495bc2f4fb1714e4b2470b1bb8b64287453d7fb1efb9550c2c13cdc",

  "58c69c45026cd1f179d526b3f1df8f0d6869a10ad81762df4d73c498e64d0f3b",

  "4c43bcd992d4f47b6fa3f21e6f342e98a3b49eb278ccc2853e0e1a89655c59b2",

  "4ef2e0a6e39950060fc6570f4f5fb0b4bbcc4311556212b2c329c113541cbf24",

  "2cf103f36f77a98a1097dd7bae834909542010fcc4e8270a16ea3eeb2ecd3001",

  "7a6e56731f890a26190de403ccd62659dbb782c54c3ba81500341686deba4b70"

]

3)getbalance [dummy] [minconf] [include_watchonly]

查看余额总数,即挖矿奖励

参数:

dummy:向后兼容,必须设置为“*”;

minconf:只包括至少确认了指定次数的交易

include_watchonly:包括在watch-only地址中的余额

bitcoin-cli getbalance                                               

14724.21875000

4)bitcoin-cli listaddressgroupings

分组显示每个地址余额信息

bitcoin-cli listaddressgroupings                                   

[

  [

    [

      "2MvFrKgUR8xYLzYD6dR5mAuySULqgL8MEcF",

      14732.03125000,

      ""

    ]

  ],

  [

    [

      "2MyHZ8Ep3GFFb8zj8Rekvk48mxgaG2CEQ8E",

      0.00000000,

      ""

    ]

  ]

]

5)walletpassphrase passphrase timeout

将钱包解密密钥存储在内存中timeout秒。

在执行与私钥相关的事务前,这是必须操作。

 

参数:

passphrase:必须项。钱包密码。

timeout:必须项。保存解密密钥的时间(以秒为单位)。限制在最多1073741824(2^30)秒。任何大于1073741824秒的值将被设置为1073741824秒。

注意:

在钱包已经解锁时发出walletpassphrase命令将设置一个新的解锁时间并覆盖旧解锁时间。

bitcoin-cli walletpassphrase "my passphrase" 60        #解锁钱包60秒

bitcoin-cli walletlock          #锁定钱包。在调用此方法之后,您需要再次调用walletpassphrase,然后才能调用需要解锁钱包的任何方法。

6)bitcoin-cli sendtoaddress address [amount] [comment] [comment_to] [subtractfeefromamount] [replaceable] [conf_target] [estimate_mode]

参数:

address:字符串,要发送到的比特币地址

amount:数值,发送数量

comment:字符串,用于存储事务用途的注释。这不是交易的一部分,只是放在你的钱包里。

comment_to:字符串用于存储要向其发送事务的人或组织的名称的注释。

subtractfeefromamount:布尔值,费用是否从发送的金额中扣除,如果是接收者收到的比特币将少于你在“金额”栏中输入的比特币。

replaceable:布尔值,允许通过BIP 125用更高费用的交易代替此交易

conf_target

estimate_mode:字符串,费用估算模式:UNSET,ECONOMICAL,CONSERVATIVE三种模式

注:1,2项为必须,其余为可选项

bitcoin-cli sendtoaddress  2MyHZ8Ep3GFFb8zj8Rekvk48mxgaG2CEQ8E 1.5  #项该地址转1.5个币

437d17fc8cbb869baf7263c4931e55ea47c70038c648f296b4f3ba0c8d4ad426

#查询结果

bitcoin-cli listaddressgroupings                                 

[

  [

    [

      "2MuRGmAPbuVUDqh6hd3nH2d1CoppF1ZxXZf",

      0.06246680

    ],

    [

      "2MvFrKgUR8xYLzYD6dR5mAuySULqgL8MEcF",

      14730.46875000,

      ""

    ]

  ],

  [

    [

      "2MyHZ8Ep3GFFb8zj8Rekvk48mxgaG2CEQ8E",

      1.50000000,

      ""

    ]

  ]

]

7)bitcoin-cli getblockchaininfo

查看有关区块链处理的各种状态信息。

bitcoin-cli getblockchaininfo                                    

{

  "chain": "regtest",

  "blocks": 1020,

  "headers": 1020,

  "bestblockhash": "4bd12c2c27a1c8e61a0dd68993a9b31bd541bd182e16439d3451b9348952168a",

  "difficulty": 4.656542373906925e-10,

  "mediantime": 1572588071,

  "verificationprogress": 1,

  "initialblockdownload": false,

  "chainwork": "00000000000000000000000000000000000000000000000000000000000007fa",

  "size_on_disk": 307170,

  "pruned": false,

  "softforks": {

    "bip34": {

      "type": "buried",

      "active": true,

      "height": 500

    },

    "bip66": {

      "type": "buried",

      "active": false,

      "height": 1251

    },

    "bip65": {

      "type": "buried",

      "active": false,

      "height": 1351

    },

    "csv": {

      "type": "buried",

      "active": true,

      "height": 432

    },

    "segwit": {

      "type": "buried",

      "active": true,

      "height": 0

    },

    "testdummy": {

      "type": "bip9",

      "bip9": {

        "status": "active",

        "start_time": 0,

        "timeout": 9223372036854775807,

        "since": 432

      },

      "height": 432,

      "active": true

    }

  },

  "warnings": ""

}

 

你可能感兴趣的:(区块链)