快速搭建Xuperchain超级链
1.快速建链1.1准备环境XuperChain主要由Golang开发,需要首先准备编译运行的环境安装go语言编译环境,版本为1.13.12(不要使用1.14)下载地址:golang安装git下载地址:git安装 g++yum install gcc-c++打通防火墙端口37101,37102,37103①sudo firewall-cmd --permanent --add-port=37101/
1.快速建链
1.1准备环境
XuperChain主要由Golang开发,需要首先准备编译运行的环境
-
安装go语言编译环境,版本为1.13.12(不要使用1.14)
下载地址:golang
-
安装git
下载地址:git
安装 g++
yum install gcc-c++
-
打通防火墙端口37101,37102,37103
①sudo firewall-cmd --permanent --add-port=37101/tcp
sudo firewall-cmd --permanent --add-port=37102/tcp
sudo firewall-cmd --permanent --add-port=37103/tcp
(如果想删除的话:sudo firewall-cmd --permanent --remove-port=xxx/tcp)
–zone= public 不写也行,默认就是。
②重启防火墙:firewall-cmd --reload
③查看目前的设置:firewall-cmd --list-all
1.2编译XuperChain
-
使用git下载源码到本地src文件夹
git clone https://github.com/xuperchain/xuperchain.git
-
执行命令
-
cd $GOPATH/src/github.com/xuperchain/xuperchain make
在output目录得到产出xchain和xchain-cli
-
1.3创建xuperunion
-
在其他文件夹创建3个node文件夹可以在任意路径
mkdir node1 && mkdir node2 && mkdir node3
-
将xuperchain/output的文件拷贝到3个node文件夹下
-
cp -r ../xuperchainsrc/xuperchain/output/* node1 cp -r ../xuperchainsrc/xuperchain/output/* node2 cp -r ../xuperchainsrc/xuperchain/output/* node3
-
-
为了把node1/node2和node3分别开,因此需要修改conf/xchain.yaml部分数据
node1:[port:37101 metricPort: 37200 port: 47101]
node2:[port:37102 metricPort: 37202 port: 47102]
node3:[port:37103 metricPort: 37203 port: 47103]
#将node2和node3文件夹下keys和netkeys文件夹删除,并重新生成公钥和私钥
rm -rf data/keys/ data/netkeys/
./xchain-cli account newkeys
./xchain-cli netURL gen
#修改conf/xchain.yaml的相关内容
tcpServer:
port: :37101
metricPort: :37200
...
p2pV2:
port: 47101
bootNodes://此配置由node1生成后填写到node2和node3中,node1可以不配置
- "/ip4/192.168.x.x/tcp/47100/p2p/Qmdfasdfatersafd"
-
创建修改node1节点的配置文件data/config/xuper.json
... "genesis_consensus": { "name": "tdpos", "config": { "timestamp": "1592386746000000000",//tdpos共识时间,建议设置一个过去不久的时间 "proposer_num": "2",//每一轮出矿工的个数 "period": "3000", "alternate_interval": "3000", "term_interval": "6000", "block_num": "20", "vote_unit_price": "1", //指定第一轮矿工,第一轮矿工必须和proposer_num相同 "init_proposer": { "1": ["dpzuVdosQrF2kmzumhVeFQZa1aYcdgFpN","VJXhSsFdtY3q4JukioFNocXtkfbhbCQG5"] } } }
1.4操作node1节点
#修改xuper.json文件,并创建xuper链:
./xchain-cli createChain
#后台守护启动节点,如果报错查看节点下nohup.out文件查看(vm=ixvm 用于虚拟机上)
rm -rf nohup.out && nohup ./xchain vm=ixvm &
#获取node1的节点url
./xchain-cli netURL get
#将返回的url地址配置到node2和node3节点的conf/xchain.yaml的bootNodes:上
#"/ip4/192.168.204.1/tcp/47101/p2p/QmVxeNubpg1ZQjQT8W5yZC9fD7ZB1ViArwvyGUB53sqf8e"
#并将node2和node3分别创建链并启动,注意可以使用与node1相同的xuper.json
1.5查看node2或node3节点的状态
./xchain-cli status -H 127.0.0.1:37102
当peers中出现其他两个节点的端口时,则说明节点配置成功
2.配置TDPOS的共识机制
2.1提名候选人
创建nominate.json文件到relatefile文件夹(自创建)下
{
"module": "tdpos",
"method": "nominate_candidate",
"args": {
"candidate": "WwLgfAatHyKx2mCJruRaML4oVf7Chzp42"//测试采用node3的address
}
}
提名候选人#amout最少需要区块链总金额的十万分之一
./xchain-cli transfer --to=dpzuVdosQrF2kmzumhVeFQZa1aYcdgFpN --desc=./relatefile/nominate.json --amount=1100000000027440 --frozen=-1
查询提名者
./xchain-cli tdpos query-candidates
2.2投票候选人
创建vote.json文件到relatefile文件夹(自创建)下
{
"module": "tdpos",
"method": "vote",
"args": {
"candidates": ["VJXhSsFdtY3q4JukioFNocXtkfbhbCQG5","dpzuVdosQrF2kmzumhVeFQZa1aYcdgFpN"]
}
}
投票候选人#amout代表投票的个数
./xchain-cli transfer --to=dpzuVdosQrF2kmzumhVeFQZa1aYcdgFpN --desc=./relatefile/vote.json --amount=100 --frozen=-1
#查询候选人信息:--name=$chain -H=$host后面省略
./xchain-cli tdpos query-candidates --name=$chain -H=$host
#查看某一轮的出块顺序
./xchain-cli tdpos query-checkResult -t=$term
#查询提名信息
./xchain-cli tdpos query-nominate-records -a=$address
#被提名查询:某个候选人被提名的记录
./xchain-cli tdpos query-nominee-record -a=$address
#某候选人被投票记录
./xchain-cli tdpos query-voted-records -a=$address
3.智能合约
3.1智能合约账号
3.1.1创建合约账号用于后期合约部署
./xchain-cli account new --account 1111111111111111 --fee 2000
返回情况如下:
给合约账号转账,作为基础费用
./xchain-cli transfer --to XC1111111111111111@xuper --amount 100000000
3.1.2通过account.json文件创建合约账户
{
"module_name": "xkernel",
"method_name": "NewAccount",
"args": {
"account_name": "1111555566661111",
"acl": "{\"pm\": {\"rule\": 1,\"acceptValue\": 0.6},\"aksWeight\": {\"dpzuVdosQrF2kmzumhVeFQZa1aYcdgFpN\": 0.5,\"VJXhSsFdtY3q4JukioFNocXtkfbhbCQG5\": 0.5}}"
}
}
创建账号命令
./xchain-cli account new --desc ./relatefile/account.json --fee=1000
创建./data/acl/addr文件,将以下数据写入
XC1111555566661111@xuper/dpzuVdosQrF2kmzumhVeFQZa1aYcdgFpN
XC1111555566661111@xuper/VJXhSsFdtY3q4JukioFNocXtkfbhbCQG5
为账户XC1111555566661111@xuper转账
./xchain-cli wasm deploy --account XC1111555566661111@xuper --cname math1 -m --multiAddrs=./data/acl/addrs --runtime go ./relatefile/math.wasm --fee 5510613
3.2合约编译
Go合约编译命令,在同一目录下生成
GOOS=js GOARCH=wasm go build -o counter counter.go
Go合约部署,添加–runtime go参数,完整参数如下:
./xchain-cli wasm deploy --account XC1111111111111111@xuper --cname math1 --runtime go ./relatefile/math.wasm --fee 5510613
Go合约调用
./xchain-cli wasm invoke math -a '{"action":"actionmove"}' --fee 100070
Go合约查询
./xchain-cli wasm query -a '{"action":"querytx","id":"7223a686b84739867f61cac7da3d655b761be36ec175d41ebd4886f36301525e"}' math
GO合约使用
./xchain-cli wasm invoke math -a '{"action":"actionmove"}' --method increase --fee $fee
4.Xuper-java-sdk
4.1下载帮助代码并配置
Xuper-java-sdk代码下载
git clone https://github.com/xuperchain/xuper-java-sdk
项目路径展示:
将node2中data/keys下private.key,public.key和address文件拷贝到resources/keys中作为备用
更多推荐
所有评论(0)