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. 创建链
# 创建xuper链
./xchain-cli createChain
2.1.4. 启动服务
# 启动服务节点
nohup ./xchain &
2.1.5. 观察区块
# check服务运行状况
./xchain-cli status -H 127.0.0.1:37101
2.1.6. 测试基本功能
2.1.6.1. 创建新账户
# 创建普通用户, 包含地址,公钥,私钥
./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. 查余额
./xchain-cli account balance --keys data/accounts/bob -H 127.0.0.1:37101
2.1.6.3. 转账
# --keys 从此地址 转给 --to地址 --amount 钱
./xchain-cli transfer --to czojZcZ6cHSiDVJ4jFoZMB1PjKnfUiuFQ --amount 10 --keys data/keys/ -H 127.0.0.1:37101
2.1.6.4. 查询交易信息
# 查询上一步生成的txid的交易信息
./xchain-cli tx query cbbda2606837c950160e99480049e2aec3e60689a280b68a2d253fdd8a6ce931 -H 127.0.0.1:37101
2.1.6.5. 查询block信息
# 可查询上一步交易所在的block id信息
./xchain-cli block 0354240c8335e10d8b48d76c0584e29ab604cfdb7b421d973f01a2a49bb67fee -H 127.0.0.1:37101
2.1.6.6. 发起多重签名交易
# 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文件如下:
{
"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文件如下
{
"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"
}
}
}