百度超级链基本操作教程

区块链 2022-01-19 1.17K

百度超级链基本操作教程

1、准备环境

百度超级链更新到 5.1 版本了,但是我们使用 3.10 版本,这个版本的功能用起来刚好
官网文档:https://github.com/xuperchain/xuperchain/tree/v3.10

# 下载源码 
git clone https://github.com/xuperchain/xuperchain.git 
# 编译源码 
cd xuperchain 
git checkout v3.10 
make

编译完成后,在 output 下,主要目录有 data, logs, conf, plugins 等,二进制文件有 xchain,xchain-cli,xchain-httpgw 等

make 时,可能出现拉取失败的情况,可以配置 GOPROXY 解决此问题$ export GOPROXY=https://goproxy.cn,direct
GOPATH 问题报错,不推荐使用 go1.11 版本之前的版本
GCC 版本需要升级到 4 或 5 以上

各目录的功能如下表:

output/:节点根目录 
├─ conf:xchain.yaml: xchain 服务的配置信息(注意端口冲突) plugins.conf: 插件的配置信息 
├─ data:数据的存放目录,创世块信息,以及共识和合约的样例 
│ ··· ├─ blockchain:账本目录 
│ ··· ├─ keys:此节点的地址,具有全局唯一性 
│ ··· ├─ netkeys:此节点的网络标识 ID,具有全局唯一性
│ ··· └─ config:包括创始的共识,初始的资源数,矿工奖励机制等 
├─ logs:程序日志目录 
├─ plugins:so 扩展的存放目录 
├─ xchain:xchain 服务的二进制文件 
├─ xchain-cli:xchain 客户端工具 
└─ wasm2c:wasm 工具(智能合约会用到)

2、部署 xchain 服务

2.1 创建链

在启动 xchain 服务之前,我们首先需要创建一条链(创世区块),xchain 客户端工具提供了此功能

# 创建xuper链 
./xchain-cli createChain

这样我们就使用 config/xuper.json 中的配置创建了一条链(此时 data/blockchain 中会生成 xuper 目录,里面即是我们创建的链的账本等文件)

2.2 启动服务

启动服务命令十分简单,还可以配合多种参数使用,详见命令行的 -h 输出

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

2.3 确认服务状态

按照默认配置,xchain 服务会监听 37101 端口,可以使用如下命令查看 xchain 服务的运行状态

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

3、基本功能的使用

3.1 创建账号

xchain 中,账号分为“普通账号”和 “合约账号”,普通账号和合约账号的创建,命令如下:

# 创建普通用户, 包含地址,公钥,私钥 
./xchain-cli account newkeys --output data/bob 
# 在bob目录下会看到文件address,publickey,privatekey生成 

# 创建合约账号 
./xchain-cli account new --account 1111111111111111 # 16位数字组成的字符串

创建合约账号会创建一个名为 XC1111111111111111@xuper 的账号,由于我们没有制定 ACL 的具体内容,其 ACL 被赋值为默认状态,即背后有权限的账号只有当前节点上默认账号一个(地址默认位于 data/keys/address)

创建合约账号的操作需要提供手续费,需要按照命令行运行结果给出的数值,添加一个不小于它的费用(使用 –fee 参数)

3.2 查询账号余额

对于普通账号和合约账号,可使用如下命令查询账号资源余额,其中 -H 参数为 xchain 服务的地址

# 查询普通账号余额 
./xchain-cli account balance --keys data/keys -H 127.0.0.1:37101 

# 查询合约账号余额 
./xchain-cli account balance XC1111111111111111@xuper -H 127.0.0.1:37101

3.3 转账

转账操作需要提供源账号的私钥目录,也就类似 “3.1” 中生成的目录,这里注意到并不需要提供目标账号的任何密钥,只需要提供地址即可,这里既可以给普通账号转账也可以给合约账号转账

# --keys 从此地址 转给 --to地址 --amount 钱 

# 向普通账号转账 
./xchain-cli transfer --to czojZcZ6cHSiDVJ4jFoZMB1PjKnfUiuFQ --amount 1000000000 --keys data/keys/ -H 127.0.0.1:37101 

# 向合约账号转账 
./xchain-cli transfer --to XC1111111111111111@xuper --amount 10000000000 --keys data/keys/ -H 127.0.0.1:37101

命令执行的返回是转账操作的交易 id(txid),这个 txid 也就是交易hash ,通过txid 可以查询交易信息

3.4 查询交易信息

通过以下命令可以查询交易的信息,包括交易状态、交易的源和目标账号、交易的金额、所在的区块(如果已上链)等内容

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

3.5 查询 block 信息

通过 blockid 可以查询区块的相关信息,包括区块内打包的交易、所在链的高度、前驱 / 后继区块的 id 等内容

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

3.6 部署合约

部署合约的操作需要由合约账号完成,部署操作同样需要支付手续费,操作前需要确保合约账号下有足够的余额,否则会报错。

1、部署合约

其中,-a 是 合约的初始参数,counter.wasm 文件是合约编译之后的二进制文件

# 部署 counter 合约,counter 是百度超级链提供部的一个模板合约 
./xchain-cli wasm deploy --account XC1111111111111111@xuper -a '{"creator":"XC1111111111111111@xuper"}' --cname counter ./counter.wasm 

# 部署 filehash 合约,filehash 是百度超级链提供部的一个模板合约 
./xchain-cli wasm deploy --account XC1111111111111111@xuper -a '{}' --cname filehash ./filehash.wasm --fee 160000

运行时会提示手续费的数目,使用 –fee 参数传入即可

2、合约调用

# 调用 counter 合约方法 
./xchain-cli wasm invoke --method increase -a '{"key":"test"}' counter --fee 100 
# The gas you cousume is: 93 
# The fee you pay is: 100 
# Tx id: 141e4c1fb99566ce4b6ba32fa92af73c0e9857189debf773cf5753d64e1416a7 

./xchain-cli wasm query --method get -a '{"key":"test"}' 
# counter contract response: 1


关注微信公众号『极客技术之路

第一时间了解最新动态
关注博主不迷路~

极客技术之路:站内收集的部分资源来源于网络,若侵犯了您的合法权益,请联系我们删除!
分享到:
赞(0)

文章评论

0点赞 0评论 收藏 QQ分享 微博分享

极客技术之路

极客技术之路