让我们对之前的场景进行演练。

首先,打开一个终端,通过export NODE_ID=3000命令将NODE_ID设置为3000。后续将使用NODE 3000NODE 3001来表示哪个节点。

$ blockchain_go createblockchain -address CENTREAL_NODE

在节点上创建blockchain之后,blockchain中包含一个genesis block,该genesis block作为该节点的blockchain的标识符(在Bitcoin Core中,genesis block是硬编码的)。我们需要将该block单独保存,其他节点会用到该信息:

$ cp blockchain_3000.db blockchain_genesis.db

在NODE 3001节点上

打开一个新终端,将node ID设置为3001,该节点为钱包节点。使用createwallet命令创建3个钱包地址:WALLET_1, WALLET_2, WALLET_3。

在NODE 3000节点上

向这些钱包地址发送一些货币:

$ blockchain_go send -from CENTREAL_NODE -to WALLET_1 -amount 10 -mine
$ blockchain_go send -from CENTREAL_NODE -to WALLET_2 -amount 10 -mine

-mine参数表示将立即开始进行挖矿,由于初始时网络中没有矿工节点,因此需要该命令行参数。

启动节点:

$ blockchain_go startnode

该节点将一直运行直到该场景结束。

在NODE 3001节点上

将上面保存的genesis block作为该节点的blockchain的初始化信息:

$ cp blockchain_genesis.db blockchain_3001.db

启动节点:

$ blockchain_go startnode

该节点将从中心节点下载所有block。为了检查一切是否正常,停止该节点,然后查看钱包地址的余额:

$ blockchain_go getbalance -address WALLET_1
Balance of 'WALLET_1': 10

$ blockchain_go getbalance -address WALLET_2
Balance of 'WALLET_2': 10

由于NODE 3001中已经有blockchain,因此也可以查看CENTRAL_NODE地址的余额:

$ blockchain_go getbalance -address CENTRAL_NODE
Balance of 'CENTRAL_NODE': 10

在NODE 3002节点上

打开一个新终端,将node ID设置为3002,并生成一个钱包,该节点作为矿工节点使用。同理,将上面保存的genesis block作为该节点的blockchain的初始化信息:

$ cp blockchain_genesis.db blockchain_3002.db

启动节点:

 blockchain_go startnode -miner MINER_WALLET

在NODE 3001节点上

发送一些货币:

$ blockchain_go send -from WALLET_1 -to WALLET_3 -amount 1
$ blockchain_go send -from WALLET_2 -to WALLET_4 -amount 1

在NODE 3002节点上

然后,快速切换到矿工节点所在终端,可以看到正在挖新的block!同样,也可以查看中心节点所在终端有何信息输出。

在NODE 3001节点上

切换到钱包节点所在终端,然后启动该节点:

$ blockchain_go startnode

该节点将下载新的block!

停止该节点并检查余额:

$ blockchain_go getbalance -address WALLET_1
Balance of 'WALLET_1': 9

$ blockchain_go getbalance -address WALLET_2
Balance of 'WALLET_2': 9

$ blockchain_go getbalance -address WALLET_3
Balance of 'WALLET_3': 1

$ blockchain_go getbalance -address WALLET_4
Balance of 'WALLET_4': 1

$ blockchain_go getbalance -address MINER_WALLET
Balance of 'MINER_WALLET': 10

一切如预期!

results matching ""

    No results matching ""