2. 单节点网络

2.1. 启动单节点模拟的测试网络

2.1.1. 获取编译产出

在当前目录下: 主要获取目录为data, logs, conf, plugins, 二进制文件为xchain,xchain-cli

2.1.2. 建立目录

目录名功能
node/根节点目录
├─ confxchain.yaml:xchain服务的配置信息,plugins.conf: 插件的配置信息 (防止冲突,部署时根据需要修改端口号)
├─ data数据的存放目录,创世块信息,以及共识和合约的样例
│ ├─ blockchain账本目录
│ ├─ keys此节点的地址,唯一性
│ ├─ netkeys此节点的网络标识ID,唯一性
│ └─ config创始的共识采用single模式,指定单一地址有权利出块
├─ logs程序日志目录
├─ pluginsso的存放目录
├─ xchain服务的二进制文件
├─ xchain-cli客户端工具
└─ wasm2cwasm工具

2.1.3. 创建链

  1. # 创建xuper链
  2. ./xchain-cli createChain

2.1.4. 启动服务

  1. # 启动服务节点
  2. nohup ./xchain &

2.1.5. 观察区块

  1. # check服务运行状况
  2. ./xchain-cli status -H 127.0.0.1:37101

2.1.6. 测试基本功能

2.1.6.1. 创建新账户

  1. # 创建普通用户, 包含地址,公钥,私钥
  2. ./xchain-cli account newkeys --output data/accounts/bob
  3. # 在bob目录下会看到文件address,publickey,privatekey生成
  4. # 创建合约账户
  5. # 通用方式
  6. ./xchain-cli account new --desc account.des
  7. 其中,account.des内容如下
  8. {
  9. "module_name": "xkernel",
  10. "method_name": "NewAccount",
  11. "args" : {
  12. "account_name": "1111111111111111", //说明:16位数字组成的字符串
  13. "acl": "{\"pm\": {\"rule\": 1,\"acceptValue\": 0.6},\"aksWeight\": {\"AK1\": 0.3,\"AK2\": 0.3}}"
  14. }
  15. }
  16. # 简易方式
  17. ./xchain-cli account new --account 1111111111111111 // 说明:16位数字组成的字符串

2.1.6.2. 查余额

  1. ./xchain-cli account balance --keys data/accounts/bob -H 127.0.0.1:37101

2.1.6.3. 转账

  1. # --keys 从此地址 转给 --to地址 --amount 钱
  2. ./xchain-cli transfer --to czojZcZ6cHSiDVJ4jFoZMB1PjKnfUiuFQ --amount 10 --keys data/keys/ -H 127.0.0.1:37101

2.1.6.4. 查询交易信息

  1. # 查询上一步生成的txid的交易信息
  2. ./xchain-cli tx query cbbda2606837c950160e99480049e2aec3e60689a280b68a2d253fdd8a6ce931 -H 127.0.0.1:37101

2.1.6.5. 查询block信息

  1. # 可查询上一步交易所在的block id信息
  2. ./xchain-cli block 0354240c8335e10d8b48d76c0584e29ab604cfdb7b421d973f01a2a49bb67fee -H 127.0.0.1:37101

2.1.6.6. 发起多重签名交易

  1. # generate raw tx
  2. # data/acl/addrs维护好涉及到操作权限的所有的address信息,默认从此地址文件读取,可用参数指定自己文件
  3. ## 某个address发起
  4. ./xchain-cli multisig gen --to YDYBchKWXpG7HSkHy4YoyzTJnd3hTFBgG --amount 100 --desc contract.desc -H 127.0.0.1:37101
  5. # 从账户发起
  6. ./xchain-cli multisig gen --to YDYBchKWXpG7HSkHy4YoyzTJnd3hTFBgG --amount 100 --desc contract.desc -H 127.0.0.1:37101 --from XC11111111111111
  7. # 各方在签名之前可以check 原始交易是否ok
  8. ./xchain-cli multisig check --input tx.data --ouput visual.out
  9. # 各方签名生成签名文件
  10. ./xchain-cli multisig sign --keys data/account/bob --output bob.sign
  11. # 组装成带有签名的完整tx,并更新账本,同时发送到周边节点
  12. ./xchain-cli multisig send --tx tx.out a.sign,b.sign c.sign,d.sign

2.1.7. 常见问题

tdpos默认共识,json文件如下:

  1. {
  2. "version" : "1"
  3. , "predistribution":[
  4. {
  5. "address" : "dpzuVdosQrF2kmzumhVeFQZa1aYcdgFpN"
  6. , "quota" : "100000000000000000000"
  7. }
  8. ]
  9. , "maxblocksize" : "128"
  10. , "award" : "1000000"
  11. , "decimals" : "8"
  12. , "award_decay": {
  13. "height_gap": 31536000,
  14. "ratio": 1
  15. }, "genesis_consensus":{
  16. "name": "tdpos",
  17. "config": {
  18. "timestamp": "1556444792000000000",
  19. "proposer_num":"1",
  20. "period":"3000",
  21. "alternate_interval":"3000",
  22. "term_interval":"6000",
  23. "block_num":"20",
  24. "vote_unit_price":"1",
  25. "init_proposer": {
  26. "1":["dpzuVdosQrF2kmzumhVeFQZa1aYcdgFpN"]
  27. }
  28. }
  29. }
  30. }

single共识,json文件如下

  1. {
  2. "version" : "1"
  3. , "predistribution":[
  4. {
  5. "address" : "dpzuVdosQrF2kmzumhVeFQZa1aYcdgFpN"
  6. , "quota" : "100000000000000000000"
  7. }
  8. ]
  9. , "maxblocksize" : "128"
  10. , "award" : "428100000000"
  11. , "decimals" : "8"
  12. , "award_decay": {
  13. "height_gap": 31536000,
  14. "ratio": 1
  15. },"genesis_consensus":{
  16. "name": "single",
  17. "config": {
  18. "miner":"dpzuVdosQrF2kmzumhVeFQZa1aYcdgFpN",
  19. "period": "3000"
  20. }
  21. }
  22. }