`

BTS私链搭建

 
阅读更多
https://blog.csdn.net/ggq89/article/details/80234262

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.让新证人节点生产区块

分享到:
评论

相关推荐

    BTS7960 BTS7970 BTN7971原理图.pdf

    根据提供的文档信息,我们可以推断出这是一份关于BTS7960、BTS7970以及BTN7971(可能是笔误,实际应为BTS7971)驱动芯片的原理图。这里我们将重点分析BTS7960芯片的工作原理及其在电路中的应用。 ### BTS7960B概述 ...

    移动基站 BTS概述

    ### 移动基站 BTS概述 #### 1. BTS的地位和作用 移动基站(Base Transceiver Station,简称BTS)作为移动通信系统中的关键组成部分之一,其主要职责在于提供无线信号覆盖区域内的移动通信服务。BTS能够实现小区内...

    BTS原理图及使用方法

    BTS7960 驱动电路 BTS7960 是应用于电机驱动的大电流半桥高集成芯片,它带有一个 P 沟道的高边 MOSFET、一个N 沟道的低边MOSFET 和一个驱动IC。用两片 BTS7960 组成全 H 桥驱动电路,完成控制电机正反转的功能。 BTS...

    华为BTS3012,BTS3006A,BTS3002C+,BTS3006C故障处理手册

    华为BTS3012故障处理手册 BTS3012单板和部件更换分册 华为BTS3006A故障处理手册 华为BTS3002C+故障处理手册 华为故障处理手册

    HUAWEI+BTS3012+硬件结构与工作原理

    HUAWEI BTS3012 的典型配置包括星型、树型和链型及环型组网等多种配置方式。这些配置方式可以满足不同的应用场景和需求。 六、HUAWEI BTS3012 的设备组网 HUAWEI BTS3012 的设备组网主要包括基站、基站控制器、移动...

    BTS7960原理图

    从给定的文件信息来看,我们正在探讨的是一个基于BTS7960芯片的电路设计,这在电机控制、机器人技术以及各种自动化系统中是非常常见的应用。BTS7960是一种高性能的H桥电机驱动芯片,能够提供高达30V、2A的连续电流...

    BTS7970,BTS7960 直流电机驱动模块

    本文将深入探讨飞思卡尔公司的BTS7970和BTS7960直流电机驱动模块,以及它们在智能车应用中的重要性。 BTS7970和BTS7960是飞思卡尔公司推出的高性能半桥驱动器,特别设计用于驱动直流电机。这两款芯片都具备高电流...

    BTS3900&BTS5900 V100R015C00SPC050 性能指标参考.chm

    BTS3900&BTS5900 V100R015C00SPC050 性能指标参考.chm

    BTS7960智能功率芯片中文资料

    ### BTS7960智能功率芯片关键知识点解析 #### 一、概述 BTS7960是一款由NovalithIC公司开发的智能功率芯片,主要用于实现高效的大电流半桥驱动功能。该芯片的设计旨在满足现代电机驱动系统的需求,特别适用于需要高...

    bts7971驱动

    根据提供的信息,我们可以推断出这是一份与BTS7971驱动相关的电路原理图。虽然描述中提到“原理图啊啊自己看看不是问题”,但为了更好地理解这份原理图并提取关键信息,我们将深入分析其中涉及的关键组件、连接方式...

    电路板\BTS7960\BTS7960驱动电路.pdf

    ### BTS7960驱动电路知识点解析 #### 一、BTS7960概述 BTS7960是一款高性能、低导通电阻的全桥驱动器芯片,广泛应用于直流电机驱动、步进电机驱动等领域。其核心优势在于能够提供高达2.5A的连续电流,适用于各种...

    华为bts3900调测软件

    华为BTS3900是一款由华为公司推出的基站通信系统,主要用于移动通信网络的建设与维护。这款设备在4G和3G网络中扮演着重要角色,为用户提供高质量的语音和数据服务。调测软件是确保BTS3900正常运行、优化网络性能的...

    bts7960.pdf

    飞思卡尔智能车专属的BTS7960是一款专为电机驱动设计的芯片,能够处理大电流电机的需求,非常适合飞思卡尔智能车的爱好者使用。由于给定的文件信息内容重复并且未能提供更多的具体技术参数和描述,我们无法直接从这...

    BTS使用手册的改进版

    **BTS 使用手册改进版详解** BTS,全称Bug Tracking System,是一种专门用于软件测试管理和缺陷跟踪的系统。在本文中,我们将深入探讨如何将BUGFEE与TESTLINK进行整合,以创建一个高效的测试环境。这两款工具的集成...

    BTS3900&BTS5900 V100R012C10SPC280 性能指标参考

    包含BTD3900 BTS5900相关的各项性能指标参考,包含指标的信令统计节点,包含指标的介绍,详细作用。指标的相关信令流程图,前后关联的指标项。 对于指标的含义均有详细介绍。 对于指标的统计节点描述,更是图文并茂...

    BTS7906数据资料

    ### BTS7906 数据资料解析 #### 一、概述 **BTS7906 数据资料** 是一份关于BTS7906芯片的技术文档,该文档为英文版本。根据给定的部分内容,我们可以了解到这实际上是一份关于BTS7960的数据手册(DataSheet),但...

    BTS7960B电机驱动PCB&原理图

    《BTS7960B电机驱动PCB与原理图详解》 在现代电子设备中,电机驱动扮演着至关重要的角色,特别是在自动化和机器人技术领域。BTS7960B是一款高性能的直流电机驱动器,它以其强大的驱动能力、高效的工作模式以及全面...

    php bts 部分controller

    BTS(Bug Tracking System)是用于管理软件开发过程中错误和缺陷跟踪的系统。在本案例中,"php bts 部分controller"指的是使用PHP语言开发的BTS系统的部分控制器代码。控制器(Controller)是MVC(Model-View-...

    Flexi EDGE BTS.

    Flexi EDGE BTS.

    BTS6000.rar

    【BTS6000.rar】是一个压缩文件,可能包含了与BTS6000相关的技术资料或软件组件。从标签“c#”我们可以推测,这些内容可能与使用C#编程语言开发的系统或者框架有关,尤其是如果BTS6000是一个基于C#的应用程序或者是...

Global site tag (gtag.js) - Google Analytics