BTS私链搭建

[url]https://blog.csdn.net/ggq89/article/details/80234262[/url]

1.安装boost:
BOOST_ROOT=$HOME/opt/boost_1_57_0
sudo apt-get update
sudo apt-get install cmake make libbz2-dev libdb++-dev libdb-dev libssl-dev openssl libreadline-dev autoconf libtool git ntp libcurl4-openssl-dev g++ libcurl4-openssl-dev
wget -c 'http://sourceforge.net/projects/boost/files/boost/1.57.0/boost_1_57_0.tar.bz2/download' -O boost_1_57_0.tar.bz2
[ $( sha256sum boost_1_57_0.tar.bz2 | cut -d ' ' -f 1 ) == "910c8c022a33ccec7f088bd65d4f14b466588dda94ba2124e78b8c57db264967" ] || ( echo 'Corrupt download' ; exit 1 )
tar xjf boost_1_57_0.tar.bz2
cd boost_1_57_0/
./bootstrap.sh "--prefix=$BOOST_ROOT"
./b2 install

2.编译BTS(使用的版本为2.0.180612,也可根据tag/release下的版本自行选择)
cd ..
git clone https://github.com/bitshares/bitshares-core.git
cd bitshares-core
git checkout 2.0.180612
git submodule update --init --recursive
cmake -DBOOST_ROOT="$BOOST_ROOT" -DCMAKE_BUILD_TYPE=Release .
#debug cmake -DBOOST_ROOT="$BOOST_ROOT" -DCMAKE_BUILD_TYPE=RelWithDebInfo .
make

3.创建目录(我的工作目录是在/home/code/bitshares-core)
mkdir -p testnet && cd testnet/
生成创世区块的配置文件
../programs/witness_node/witness_node --create-genesis-json=my-genesis.json
加快活跃证人的更新时间,修改如下:
"maintenance_interval": 600,
修改初始金额:
"initial_balances": [{
"owner": "BTSFAbAx7yuxt725qSZvfwWqkdCwp9ZnUama",
"asset_symbol": "BTS",
"amount": "10000000000"
}

4.初始化证人节点
../programs/witness_node/witness_node --data-dir data/ --genesis-json my-genesis.json --seed-nodes "[]"
记录生成的Chain ID,并按CTRL+C结束
Chain ID:95ca3eec4739d90c5b8e99ba4efa97e666cca06308cba85f271d6adf04850178

5.配置证人节点
vim data/config.ini

p2p-endpoint = 0.0.0.0:31066
seed-nodes = [] #这里先不填
rpc-endpoint = 0.0.0.0:38066
genesis-json = my-genesis.json
enable-stale-production = true

# ID of witness controlled by this node (e.g. "1.6.5", quotes are required, may specify multiple times)
witness-id = "1.6.1"
witness-id = "1.6.2"
witness-id = "1.6.3"
witness-id = "1.6.4"
witness-id = "1.6.5"
witness-id = "1.6.6"
witness-id = "1.6.7"
witness-id = "1.6.8"
witness-id = "1.6.9"
witness-id = "1.6.10"
witness-id = "1.6.11"

参数相关:
p2p-endpoint,指定开启的p2p监听端口,以方便其他节点连接,可以作为其他节点的seed-node。
rpc-endpoint,指定开启的rpc监听端口,以方便cli-wallet和web钱包与证人节点连接。
genesis-json,设置genesis.json的路径,通常只在创建新链生产创世区块时设置。
enable-stale-production,让本节点无视区块链数据的时间,无论如何都生成区块数据。该字段通常只在创建新链生产创世区块时设为true。当已存在区块链时,一定要将本参数设为false或者不管,否则会因数据不完整导致分叉。
seed-nodes,设置种子节点集合,以方便快速连接到区块链网络和同步区块链数据。在创建新链生产创世区块时设为空,以防止连接到正式网络(代码)中的默认种子节点。当连接已有区块链网络时,尽可能多的设置种子节点以加快同步速度。
witness-id,用于授权本证人节点所代表的证人id产生区块,可指定多个。一般来说一个证人节点授权一个证人id,私链第一个节点指定了11个。

../programs/witness_node/witness_node --data-dir=data
当出现以下,表示成功,否则可能某步配置错误,可删除掉testnet文件夹,从第3步重新开始
********************************
* *
* ------- NEW CHAIN ------ *
* - Welcome to Graphene! - *
* ------------------------ *
* *
********************************

6.创建钱包
mkdir -p wallet && cd wallet

../programs/cli_wallet/cli_wallet --wallet-file my-wallet.json --server-rpc-endpoint ws://10.0.0.19:38066 --rpc-endpoint 0.0.0.0:38099 --rpc-http-endpoint 0.0.0.0:38092 --chain-id 95ca3eec4739d90c5b8e99ba4efa97e666cca06308cba85f271d6adf04850178

参数相关:
--wallet-file:指定钱包json文件,该文件用于保存本钱包中所有加密后的私钥;
--server-rpc-endpoint:rpc服务器终端地址,指定钱包要连接的区块链全节点所需要的协议、地址和端口;
--rpc-endpoint:指定命令行钱包要监听的websocket RPC的ip地址和端口号;
--rpc-http-endpoint:指定命令行钱包要监听的HTTP RPC的ip地址和端口号;
--chain-id:指定要连接的区块链ID。不指定的话,钱包连接到bitshares的正式链上。

设置钱包密码并解锁钱包:
new >>> set_password abc123
set_password abc123
null
locked >>> unlock abc123
unlock abc123

7.导入帐号和资金,这里使用的nathan的私钥就是下面这个值,可以不用改
import_key nathan 5KQwrPbwdL6PhXujxW37FSSQZ1JiwsST4cqQzDeyXtP79zkvFD3

将资金在genesies.json文件中的initial_balances字段已经设置好的值导入钱包
import_balance nathan ["5KQwrPbwdL6PhXujxW37FSSQZ1JiwsST4cqQzDeyXtP79zkvFD3"] true

将nathan升级为LTM(终身管理员)
upgrade_account nathan true

CTRL+C退出控制台,重启钱包

../programs/cli_wallet/cli_wallet --wallet-file my-wallet.json --server-rpc-endpoint ws://10.0.0.19:38066 --rpc-endpoint 0.0.0.0:38099 --rpc-http-endpoint 0.0.0.0:38092 --chain-id 95ca3eec4739d90c5b8e99ba4efa97e666cca06308cba85f271d6adf04850178

unlock abc123
get_account nathan

"membership_expiration_date": "1969-12-31T23:59:59", #是这样的时间则表示账户升级成功,如是是1970-01-01T00:00:00,则没成功

8.创建新帐号
生成公钥:
unlocked >>> suggest_brain_key
suggest_brain_key
{
"brain_priv_key": "QUERN COGHLE OATBIN DECAGON FOOTLE KUNG UPROOT BESNEER GRILL TWEEZE SMURRY KOKRA SISSOO BURT RESAY ALGEDO",
"wif_priv_key": "5JpsPGZGy3CjUCZN4C4YnkqUokraTj118yQSznoLhbekE1noeGb",
"pub_key": "BTS7ouH4gtywtA2LsBiH8SCrgBExY4kmQktnKBmgUugn6EH8WAXr2"
}

通过上面的公钥,注册新帐号,推荐人为nathan
register_account xiangjie BTS7ouH4gtywtA2LsBiH8SCrgBExY4kmQktnKBmgUugn6EH8WAXr2 BTS7ouH4gtywtA2LsBiH8SCrgBExY4kmQktnKBmgUugn6EH8WAXr2 nathan nathan 0 true

转账
transfer nathan xiangjie 100000 BTS "here is some cash!" true

导入新帐号
import_key xiangjie 5JpsPGZGy3CjUCZN4C4YnkqUokraTj118yQSznoLhbekE1noeGb

可以查看当前钱包的账户及其余额:
list_my_accounts
list_account_balances xiangjie

升级终身会员
注册终身会员需要消耗10000BTS,才能升级为证人账户.而新账户升级为LTM需要的资金只能通过其他账户转账。
upgrade_account xiangjie true

9. 注册为证人并投票为活跃证人,需消耗5000BTS
create_witness xiangjie "http://www.xiangjie" true

可运行get_witness 来获得新证人的id和signing_key。
get_witness xiangjie
get_witness xiangjie
{
"id": "1.6.12",
"witness_account": "1.2.18",
"last_aslot": 0,
"signing_key": "BTS8Wrh8aAd2tsGUoyatqWTzgtxcLcitv5iAqeWqRkPwecogAmzz2",
"vote_id": "1:22",
"total_votes": 0,
"url": "http://www.xiangjie",
"total_missed": 0,
"last_confirmed_block_num": 0
}

witness_node需要signing_key和对应的私钥,并联合id才能生成区块。通过get_private_key获取该签名密钥的私钥:
unlocked >>> get_private_key BTS8Wrh8aAd2tsGUoyatqWTzgtxcLcitv5iAqeWqRkPwecogAmzz2

10.让新证人节点生产区块
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值