实验目的
- 了解XuperChain平台的基本框架和作用
- . 掌握XuperChain平台的安装
- 掌握XuperChain中基本功能的使用
实验环境
运行 Linux 操作系统的计算机(可以在windows系统中使用虚拟机或者直接连接Linux服务器),具有go语 言编译环境。
实验内容
一、XUPERCHAIN平台介绍
XuperChain是百度100%自主研发,拥有完全自主知识产权的区块链底层技术。拥有500+篇核心技术专利。 XuperChain以高性能、自主可控、开源为主要设计目标,响应国家政策,打破了国外技术在区块链技术领域 的垄断,致力于创建最快、 最通用、 最好用的区块链底层技术。2019年5月,XuperChain正式向全社会开 源。2020年9月,百度将XuperChain的内核技术XuperCore捐赠给开放原子开源基金会,以全新的开源治理 模式面向全社会。
XuperChain核心优势在于超高性能、高可拓展性、高度易用以及自主研发。
1. 架构设计
XuperChain的系统架构设计,采用模块化架构,基础组件模块化共用,内核层聚合各组件,提供能力实现业 务需求,从而实现核心流程低成本订制。通过对业务抽象分层、划分子领域和模块化,最大限度的提升代码 复用和系统可扩展性。从而做到,通过低成本的定制不同流程来满足不同场景的需求,最大限度的复用核心 基础能力。通过分治降低系统复杂度,提升系统可维护性。
整个系统分成四层,其中下面三层构成整个XuperChain内核的核心组成部分,分别为协议层、核心组件层、 基础组件层。
- 协议层
这一层定义区块链的各个模块API、核心结构和流程,并管理各模块的加载和初始化,聚合和调度各核 心组件实现系统需求。 - 核心组件层
这一层负责区块链核心组件的具体实现,通过实现核心层定义的、接口和加载方式,接入到系统。这层
的组件可以针对不同的需求场景有多种不同的实现。 - 基础组件层
这一层实现业务无关的通用基础库,各层都可以引用。
2. 生态技术
围绕着XuperChain底层核心技术,构建起了整个开源生态技术体系,形成强大的开源技术生态。整个技术生 态主要包括内核技术、核心方向、生态工具、交叉学科、解决方案五大组成部分。
- 内核技术
内核层就是XuperChain内核技术,其定义了一系列标准API,构建一个区块链体系结构,规定了各个模 块的逻辑结构、功能特征和各模块间的交互关系,并提供了各个模块适用不同场景的标准实现。 - 核心方向
核心技术方向是基于内核标准API定义的区块链体系结构之上,各个组成可以独立发展起来的技术方 向,主要包括九大核心技术方向,分别包括共识技术、密码服务、存储账本、节点通信、智能合约、系 统安全、监管治理、隐私保护、跨链技术等。 - 生态工具
生态工具技术是围绕着分布式账本技术的周边技术,主要包括区块链管理工具技术、区块链测试技术、 钱包技术、浏览器技术、业务集成工具集、合约开发工具集(IDE、XDEV)等等。 - 交叉学科
主要是XuperChain技术和其他技术相结合的交叉学科技术,比如去中心化身份技术、可信计算技术、 边缘技术以及5G技术等等。 - 解决方案
行业领域技术主要是区块链应用具体行业所产生的行业领域技术,比如与金融行业、供应链领域、医疗 行业、政务行业等,目前XuperChain已经在30+场景,100+应用落地。
二、XuperChain平台安装
- 准备环境
XuperChain主要由Golang开发,需要首先准备编译运行的环境
mkdir ~/project && cd ~/project
wget https://golang.google.cn/dl/go1.15.10.linux-amd64.tar.gz
sudo tar -C /usr/local -xzf go1.15.10.linux-amd64.tar.gz
export PATH=$PATH:/usr/local/go/bin
- 安装go语言编译环境,推荐使用的版本为1.14或1.15 下载地址:golang
官方下载地址:https://golang.org/dl/ (一般官方打开较慢) 推荐下载地址:https://golang.google.cn/dl/
参考教程:https://www.runoob.com/go/go-environment.html - 安装git
下载地址:git
参考教程:https://www.runoob.com/git/git-install-setup.html 如果使用 JAVA 合约,还需先安装 JAVA 和 maven
2. 编译XuperChain
- 使用git下载源码到本地
git clone https://github.com/xuperchain/xuperchain.git - 执行命令
cd xuperchain
git checkout -b v5.3.0 v5.3.0
make
- 在output目录得到bin,conf, data 三个文件夹以及一个 control.sh 脚本
注解
make 时,可能出现拉取失败的情况,可以配置GOPROXY解决此问题
export GOPROXY=https://goproxy.cn,direct
GOPATH问题报错,不推荐使用go1.11版本之前的版本 GCC版本需要升级到4或5以上
在output下,有bin, conf, data三个目录,以及一个control.sh 脚本 各目录的功能如下表:
3. 部署xchain服务
3.1 启动服务
xuper5为我们启动服务提供了方便的脚本,只需要一条命令使用controll.sh即可启动单节点 single 共识的 链。
# 启动xuper链
$ cd output
$ bash control.sh start
这样,我们就成功启动一条链。
control.sh 脚本提供 start | stop | restart | forcestop 四个命令,可以使用 bash control.sh help 查看
3.2 确认服务状态
按照默认配置,xchain服务会监听37101端口,可以使用如下命令查看xchain服务的运行状态
# check服务运行状况
$ bin/xchain-cli status -H 127.0.0.1:37101 {
"blockchains": [
{
"name": "xuper",
"ledger": {
"rootBlockid":
"d93c260ea5639a55e1fcad3df494495efad5c65d46e846b6db3a9194a4212886",
"tipBlockid":
"e49133c3ffd655e1cf28401cb2cdadc33ce03141f0eb3f6611d3c5fa0dbda449",
"trunkHeight": 23
},
"utxo": {
"latestBlockid":
"e49133c3ffd655e1cf28401cb2cdadc33ce03141f0eb3f6611d3c5fa0dbda449",
"lockKeyList": null,
"utxoTotal": "100000000000023000000",
"avgDelay": 0,
"unconfirmed": 0,
"maxBlockSize": 134217728,
"reservedContracts": [],
"forbiddenContract": {
"moduleName": "",
"contractName": "",
"methodName": "",
"args": {},
"resource_limits": null
},
"newAccountResourceAmount": 1000,
"irreversibleBlockHeight": 0,
"irreversibleSlideWindow": 0,
"gasPrice": {
"cpu_rate": 1000,
"mem_rate": 1000000,
"disk_rate": 1,
"xfee_rate": 1
} },
"branchBlockid": [
"e49133c3ffd655e1cf28401cb2cdadc33ce03141f0eb3f6611d3c5fa0dbda449"
] }
],
"peers": null,
"speeds": {}
}
三、基本功能的使用
1. 创建新账号
xchain中,账号类型分为“普通账号”和“合约账号”。
普通账号由程序离线生成,在本地保存;
合约账号是XuperChain中用于智能合约管理的单元,由普通账户发起交易,在链上生成的一个16位数字的 账户,存储在链上。发起合约相关交易,比如合约调用时,需要使用合约账户。
# 创建普通用户, 生成的地址,公钥,私钥在--output 指定位置 $ bin/xchain-cli account newkeys --output data/bob create account using crypto type default
create account in data/bob
# xuperchain 也支持国密算法,关于xuperchain中的密码学,可在 `密码学基础 <../design_documents/crypto.html>` 了解更多
$ bin/xchain-cli account newkeys --output data/alice --crypto gm create account using crypto type gm
create account in data/alice
## 创建合约账号
bin/xchain-cli account new --account 2023050120231001 --fee 2000 contract response:
{
"pm": {
"rule": 1,
"acceptValue": 1.0
},
"aksWeight": {
"TeyyPLpp9L7QAcxHangtcHTu7HUZ6iydY": 1.0
} }
The gas you cousume is: 1000
The fee you pay is: 2000
Tx id: d5d88c2d495a89ff9cdf80b0efa7527755d940bdf39130a5ece360482c074d12
account name: XC2023050120231001@xuper
在data/bob目录下会看到文件address,publickey,privatekey生成
2. 查询资源余额
# 根据账户存储的路径,查询该账户的余额。--keys为要查询的账户的地址,如 bob:--keys data/bob $ bin/xchain-cli account balance --keys data/bob -H 127.0.0.1:37101
0
# 根据地址查询该账户余额
$ bin/xchain-cli account balance TeyyPLpp9L7QAcxHangtcHTu7HUZ6iydY -H 127.0.0.1:37101
100000000000204000000
# 查询合约账户余额
$ bin/xchain-cli account balance XC2023050120231001@xuper -H 127.0.0.1:37101 0
3. 转账
转账操作需要提供源账号的私钥目录,也就类似“创建新账号”中生成的目录,这里注意到并不需要提供目标
账号的任何密钥,只需要提供地址即可
# --keys 从此地址 转给 --to 地址 --amount 金额
$ bin/xchain-cli transfer --to czojZcZ6cHSiDVJ4jFoZMB1PjKnfUiuFQ --amount 10 --keys data/keys/ -H 127.0.0.1:37101 d53f6242a35d42c72e41abe27958040adcb4e5f3a670ce0cacaebf5cdbde5146
命令执行的返回是转账操作的交易id(txid) … note:
转账操作如果不加参数 --keys,即未指定扣款账户,将会默认扣除 data/keys 下账户的资源,该账户 是默认生成的,创建链时会预分配一些资源
给到该账户,具体可以参考 data/genesis/xuper.json
4. 查询交易信息
通过以下命令可以查询交易的信息,包括交易状态、交易的源和目标账号、交易的金额、所在的区块(如果
已上链)等内容文章来源:https://www.toymoban.com/news/detail-855584.html
# 可查询上一步生成的txid的交易信息
$ bin/xchain-cli tx query d53f6242a35d42c72e41abe27958040adcb4e5f3a670ce0cacaebf5cdbde5146 -H 127.0.0.1:37101
5. 查询block信息
通过blockid可以查询区块的相关信息,包括区块内打包的交易、所在链的高度、前驱/后继区块的id等内容文章来源地址https://www.toymoban.com/news/detail-855584.html
# 可查询上一步交易所在的block id信息
$ bin/xchain-cli block 7822008e7193a5b3662bd4efdb6e7818aec0fdae2da202bf30ae7d7d7a180397 -H 127.0.0.1:37101
到了这里,关于区块链实验设计:XUPERCHAIN的快速入门的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!