2. 单节点网络

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

2.1.1. 获取编译产出

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

2.1.2. 建立目录

目录名

功能

node/

根节点目录

├─ conf

xchain.yaml:xchain服务的配置信息,plugins.conf: 插件的配置信息 (防止冲突,部署时根据需要修改端口号)

├─ data

数据的存放目录,创世块信息,以及共识和合约的样例

│ ├─ blockchain

账本目录

│ ├─ keys

此节点的地址,唯一性

│ ├─ netkeys

此节点的网络标识ID,唯一性

│ └─ config

创始的共识采用single模式,指定单一地址有权利出块

├─ logs

程序日志目录

├─ plugins

so的存放目录

├─ xchain

服务的二进制文件

├─ xchain-cli

客户端工具

└─ wasm2c

wasm工具

2.1.3. 创建链

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

2.1.4. 启动服务

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

2.1.5. 观察区块

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

2.1.6. 测试基本功能

2.1.6.1. 创建新账户

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

2.1.6.4. 查询交易信息

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

2.1.6.5. 查询block信息

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

2.1.6.6. 发起多重签名交易

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

2.1.7. 常见问题

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

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

single共识,json文件如下

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