石墨烯(graphene)区块链底层,也就是比特股(bitshares),在此介绍部署中的一些坑。
在Ubuntu上编译石墨烯(比特股)核心代码
Ubuntu 16.04自带boost1.58,对于编译比特股核心代码相对友好,下面就来说说具体的步骤。
在示例中,我使用win10的ubuntu虚拟机进行操作。
1.安装依赖和编译工具
sudo apt-get install cmake make libbz2-dev libdb++-dev libdb-dev libssl-dev openssl libreadline-dev autoconf libtool git ntp
如果没有安装过基础的编译包
sudo apt-get install build-essential
如果需要启用elastic search插件(默认被启用)
sudo apt-get install libcurl4-openssl-dev
2.安装boost
Ubuntu 16.4可以通过apt安装boost 1.58
sudo apt-ge't install libboost-all-dev
如果是Ubuntu 14.04 LTS,则需要自己安装boost,由于boost1.58需要C++14版本,在14.04上安装会过于复杂,所以这里介绍boost 1.57的安装方法
BOOST_ROOT=$HOME/opt/boost_1_57_0
sudo apt-get update
sudo apt-get install autotools-dev build-essential g++ libbz2-dev libicu-dev python-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
3.获取代码并编译
git clone https://github.com/bitshares/bitshares-core.git
cd bitshares-core
git submodule update --init --recursive
cmake -DCMAKE_BUILD_TYPE=Release .
(如果是14.04,则运行 cmake -DBOOST_ROOT=”$BOOST_ROOT” -DCMAKE_BUILD_TYPE=Release . )
make
4.获取可执行文件
全节点:program/witness_node/witness_node
延时节点:program/delayed_node/deplayed_node
命令行钱包:program/cli_wallet/cli_wallet
创世区块助手:program/genesis_util/get_dev_key
以上就是在Ubuntu系统上编译比特股核心代码的方法,参考 https://www.jianshu.com/p/89d0d52c411c
搭建自己的石墨烯(比特股)测试网
1、新建testnet目录,将witness_node文件拷贝到testnet目录
mkdir testnet
cp program/witness_node/witness_node testnet
2.生成秘钥对和地址
programs/genesis_util/get_dev_key BTS w1 w2 w3 admin
运行以上命令会生成四对秘钥对和地址,分别对应w1,w2,w3和admin的私钥、公钥和地址如下
[{"private_key":"5JjzogP6V1TciYQHthBLPnmj5cyrYLfwfoDeY6rpG4mcNUd7hDq","public_key":"BTS6WqFcNmb8DA8SG2HJDL23TzSKk67HrCf6qTeqXhbCcohi11epm","address":"BTSMZq4SyNoFGraCNuV5ZjbJHMvcYBLSV3rM"},
{"private_key":"5JpX8v4y7HQ9EXLRGPXcPCVCqw5BLzP2drAbwJ94P3QXFxxwzkw","public_key":"BTS8ftmc4mCUjnR43SPtQFg8xuJgUr82MKuBjvegrmdDasohZcpZw","address":"BTSP1gitSEvGzCLCa9rsCCfQiRSzNQquDUxX"},
{"private_key":"5HtEtfFYt1eGpE6uVWMyzMXzh8BBYfPyfH2A8Q8FQvXgdFXsc7N","public_key":"BTS7hKorE5txmsT6qee9NNqcYqNvBU1Umxk1cV93Q1XPEbYCacpfM","address":"BTSCSSgBtAUAGkhFbo6rbUMqtNTJteWaxHdG"},
{"private_key":"5KNP4D9K3FL1gBtRtanhfgLZTpz1wcJVsLEQXonRMeAwzMDL2se","public_key":"BTS51ABY2MWbn3W5NNW3JNJRDraEi4JbzEAmBa3jiTQJ7f99Z7xJ6","address":"BTS21sMK9h93c1i29wLKi29xqKxqjvLSEarw"}]
3.初始化创始区块配置文件
cd /tesnet
./witness_node --create-genesis-json testnet.json
这里我遇到了一个大坑,--create-genesis-json
已在issues 1536中被删除,因此这里会出现witness_node: command not found
,解决办法是使用现有的开发人员genesis.json文件作为示例。参考https://github.com/bitshares/bitshares-core/wiki/private-testnet
在VSC之类的编辑器打开genesis.json:
用你有私钥的公钥替换掉genesis.json里所有的公钥,例如BTS6MRyAjQq8ud7hVNYcfnVPJqcVpscN5So8BhtHuGYqET5GDW5CV
全部替换为BTS6WqFcNmb8DA8SG2HJDL23TzSKk67HrCf6qTeqXhbCcohi11epm
,然后
initial_balances
中的owner地址替换为BTS6WqFcNmb8DA8SG2HJDL23TzSKk67HrCf6qTeqXhbCcohi11epm
的”address”如:BTSMZq4SyNoFGraCNuV5ZjbJHMvcYBLSV3rM
。
对了 这里最好sudo -i 切换到root用户
在witness_node同级目录新建testnet.json:
nano testnet.json
把genesis.json里改过的内容复制进去,保存退出。
然后:
./witness_node --data-dir data --genesis-json testnet.json
这一步会新建data目录,并且运行到最后会打印出chain-id,这时候ctrl-c停止程序运行,并且记录chain-id备用。
打开data目录下的config.ini文件
nano data/config.ini
修改如下:
p2p-endpoint = 0.0.0.0:10101 //seed节点的ip和端口,端口可以自定义
rpc-endpoint = 0.0.0.0:11011 //rpc的ip和端口
genesis-json = testnet.json
enable-stale-production = true
witness-id = "1.6.1"
...
witness-id = "1.6.11"
private-keys = ["BTS6WqFcNmb8DA8SG2HJDL23TzSKk67HrCf6qTeqXhbCcohi11epm","5JjzogP6V1TciYQHthBLPnmj5cyrYLfwfoDeY6rpG4mcNUd7hDq"] //公钥、私钥对
debug-private-keys = ["BTS6WqFcNmb8DA8SG2HJDL23TzSKk67HrCf6qTeqXhbCcohi11epm","5JjzogP6V1TciYQHthBLPnmj5cyrYLfwfoDeY6rpG4mcNUd7hDq"] //公钥、私钥对
保存退出
4.运行网络中的第一个节点
./witness_node --data-dir data