bitshares环境部署-私链

作者: 6017e164c325 | 来源:发表于2018-08-17 11:16 被阅读5次

    获取可执行文件

    • windows
      • github下载可执行文件即可
    • 其他系统
      • github下载源码,根据其wiki的要求进行编译

    执行文件结构简介

    [图片上传失败...(image-ca0098-1534475751728)]

    • witness_node
      • 通过 P2P 方式连接到 BTS 网络,从网络接收最新区块,向网络广播本地签署的交易包
      • 通过 websocket + http rpc 的方式提供 API 供其他程序调用
    • delayed_node
      • 通过 websocket 方式连接到 witness_node ,只包含不可回退的区块
      • 通常情况下最新区块比 witness_node 落后一分钟,异常时可能会落后很多,但可保证不可回退
      • 通过 websocket + http rpc 的方式提供 API 供其他程序调用,API清单与 witness_node 相同,但无法使用交易广播功能
    • cli_wallet
      • 通过 websocket 方式连接到 witness_node 和 delayed_node 其中之一
      • 管理钱包文件,钱包文件里包含经过加密的用户私钥,一个钱包文件可以包含多个私钥
      • 提供交易签名功能,签名后通过 witness_node 向外广播
      • 通过 http rpc 的方式提供 API 供其他程序调用
      • 推荐交易所使用一个连接到 delayed_node 的 cli_wallet 来监测用户充值,使用另一个连接到 witness_node 的 cli_wallet 来处理用户提现请求

    私有链部署

    witness_node 部署

    1. 生成创世块的json
    ./witness_node --create-genesis-json "my-genesis.json"
    

    工作目录下会生成一个文件:my-genesis.json

    1. 启动见证人节点
    witness_node -d data --genesis-json my-genesis.json --seed-nodes "[]"
    
    • 工作目录下会生成一个目录:data,结构为blockchain目录、logs目录、p2p目录、config.ini配置文件。
    • 退出程序尽量不要强制关闭,按ctrl-c,等其优雅退出。数据损坏有可能需要重建索引(启动的时候使用--replay-blockchain参与)
    1. 配置config.ini,以下参数也可作为见证人节点的启动参数
      • --rpc-endpoint rpc监听端口,配置成"127.0.0.1:8090"(配置文件中不带引号)
      • --enable-stale-production 让本节点无视区块链数据的时间,无论如何都生成区块数据,配置成"true"
      • --witness-id(启动参数时可写作-w) 本节点控制的witness列表,(1.6.0-9)是默认的withness
      • --seed-nodes 要连接的peer列表(测试环境务必传此参数,不传的话会走代码里hardcode的正式网的peer列表,会导致测试节点去跟正式网络同步数据)(没有种子节点,一般用户等一年也不一定能连上网络。见证人对网络连接的要求更高,所以,必须与完整数据的种子节点相连,否则数据不完整的钱包会制造分叉)。配置成"[]"
      • --genesis-json 创世块的数据文件,配置成"my-genesis.json"
      • --track-account 参数的意思是我们只关心特别指定的账户的历史交易信息,其他账户的历史交易信息我不需要。这样就可以大大节省内存开支。
    2. 再次启动见证人节点
    witness_node -d data
    

    参数-d data 与 --data-dir data是一样的

    delayed_node 部署

    1. 与 witness_node 雷同

    cli_wallet 部署

    1. 启动钱包节点
    ./cli_wallet --chain-id="97f304dce6fe30cccbdef37cd7899d349297a78ba483375adc3982016ef40c63" -s ws://127.0.0.1:8090 -w my-wallet.json
    
    • -s 或 --server-rpc-endpoint witness_node的地址和端口
    • --chain-id 指的是服务的chain-id,可以不带此参数执行一次命令,程序的报错信息会显示这个id;witness_node启动成功后也会打印出这个id
    • -w 或 --wallet-file 指的是钱包文件
    1. cli_wallet 钱包命令
    • 创建钱包
    new >>> set_password 1111
    set_password 1111
    null
    locked >>> 
    
    • 解锁钱包
    locked >>> unlock 1111
    unlock 1111
    null
    unlocked >>>
    
    • 钱包导入用户
    unlocked >>> import_key nathan 5KQwrPbwdL6PhXujxW37FSSQZ1JiwsST4cqQzDeyXtP79zkvFD3
    

    nathan是在创世文件中定义的帐户名称,5KQwrPbwdL6PhXujxW37FSSQZ1JiwsST4cqQzDeyXtP79zkvFD3是对应的私钥,在data目录下的config.ini中可以查到

    • 导入余额
    unlocked >>> import_balance nathan ["5KQwrPbwdL6PhXujxW37FSSQZ1JiwsST4cqQzDeyXtP79zkvFD3"] true
    

    导入的余额在创世文件中有配置,在initial_balances中,其中owner是指帐号nathan的地址。一个帐号包含三块内容,如nathan帐号{"private_key":"5KQwrPbwdL6PhXujxW37FSSQZ1JiwsST4cqQzDeyXtP79zkvFD3","public_key":"BTS6MRyAjQq8ud7hVNYcfnVPJqcVpscN5So8BhtHuGYqET5GDW5CV","address":"BTSFAbAx7yuxt725qSZvfwWqkdCwp9ZnUama"},而这三个由一组brain_priv_key(16个有序的英文单词)生成。

    • 查看账户信息
    unlocked >>> get_account nathan
    
    • 查看账户余额
    unlocked >>> list_account_balances nathan
    
    • 升级会员
    unlocked >>> upgrade_account nathan true
    

    由于已知的缓存问题,您需要在这个阶段重新启动CLI,否则它将不知道nathan已经升级了。按Ctrl-C命令停止钱包,然后再次使用相同的命令之前启动它。

    然后用get_account nathan查看,看到"membership_expiration_date"已经从"1970-01-01T00:00:00" 变成了 "1969-12-31T23:59:59",意味着升级成功了。

    • 创建帐号
    locked >>> suggest_brain_key
    suggest_brain_key
    {
      "brain_priv_key": "BECURSE VALGOID DEFROCK GODKIN SWITHER WORTH SUIFORM DAKER IPSEAND UPPERER PSALM UNCAST DOTTILY BEFRIZ SCUT BRONC",
      "wif_priv_key": "5KZmzKmP8869Tw26nBTtYzGM4vW55mH9R9ZTeK9wPiTeX495rbn",
      "pub_key": "BTS7KuKh66CdWb1pTRg414ocVXGDQLnrRtJDd4srevt6MRmQPd8Gg"
    }
    

    首先生成新账户的信息。 通过使用suggest_brain_key命令来完成它

    unlocked >>> create_account_with_brain_key "BECURSE VALGOID DEFROCK GODKIN SWITHER WORTH SUIFORM DAKER IPSEAND UPPERER PSALM UNCAST DOTTILY BEFRIZ SCUT BRONC" alpha nathan nathan true
    

    创建帐号的创建者有两个条件,1.必须是终生会员身份(LTM);2.有足够的余额提供注册费用

    • 转账
    unlocked >>> transfer nathan alpha 2000000000 BTS "here is some cash" true
    
    1. 其他钱包

    添加新的witness_node

    1. 使用get_dev_key创建见证人帐号
    programs/genesis_util/get_dev_key BTS w1
    

    运行以上命令会生成一对秘钥对和地址

    [{"private_key":"5JjzogP6V1TciYQHthBLPnmj5cyrYLfwfoDeY6rpG4mcNUd7hDq","public_key":"BTS6WqFcNmb8DA8SG2HJDL23TzSKk67HrCf6qTeqXhbCcohi11epm","address":"BTSMZq4SyNoFGraCNuV5ZjbJHMvcYBLSV3rM"},

    如果要修改创世文件的密钥对,修改以下字段initial_accounts、initial_balances、initial_witness_candidates(见证人)、initial_committee_candidates(委员会)

    1. 使用cli_wallet创建见证人帐号

    使用cli_wallet创建一个帐号w2,保证其有一定余额,并将其升级成终生会员。记录公钥私钥。

    locked >>> suggest_brain_key
    unlocked >>> create_account_with_brain_key "BECURSE VALGOID DEFROCK GODKIN SWITHER WORTH SUIFORM DAKER IPSEAND UPPERER PSALM UNCAST DOTTILY BEFRIZ SCUT BRONC" w2 nathan nathan true
    unlocked >>> transfer nathan w2 2000000000 BTS "here is some cash" true
    unlocked >>> upgrade_account nathan true
    

    详细见 cli_wallet 命令

    1. 成为见证人-配置创世文件(对应1)

    修改创世文件的对应的字段,如initial_accounts、initial_balances、initial_witness_candidates(见证人)、initial_committee_candidates(委员会)

    1. 成为见证人-admin帐号使用客户端申请(对应2)
      在cli_wallet客户端中,创建witness对象,参考wiki
    unlocked >>> create_witness w2 "http://url-to-proposal" true //url-to-proposal可为空
    

    在cli_wallet客户端中,用admin帐号投票

    unlocked >>> vote_for_witness admin w2 true true
    

    投票成功之后,等待下次maintenance(通常是第二天0点)就可以看到我们的witness已经进入列表了,使用以下命令查询witness列表(get_global_properties)

    1. 配置和启动
      • 把公钥和私钥配置到data/config.ini文件中(private-key = [PublicKey, WIF private key])
      • 将witness-id加入config.ini(witness-id = "1.6.12")
      • 重启witness节点,注意seed-nodes的配置

    网页钱包部署

    1. Web钱包搭建
    2. 水龙头服务搭建

    相关文章

      网友评论

        本文标题:bitshares环境部署-私链

        本文链接:https://www.haomeiwen.com/subject/vcuibftx.html