区块链实验设计:XUPERCHAIN的快速入门

实验目的

  1. 了解XuperChain平台的基本框架和作用
  2. . 掌握XuperChain平台的安装
  3. 掌握XuperChain中基本功能的使用

实验环境

运行 Linux 操作系统的计算机(可以在windows系统中使用虚拟机或者直接连接Linux服务器),具有go语 言编译环境。

实验内容

一、XUPERCHAIN平台介绍

XuperChain是百度100%自主研发,拥有完全自主知识产权的区块链底层技术。拥有500+篇核心技术专利。 XuperChain以高性能、自主可控、开源为主要设计目标,响应国家政策,打破了国外技术在区块链技术领域 的垄断,致力于创建最快、 最通用、 最好用的区块链底层技术。2019年5月,XuperChain正式向全社会开 源。2020年9月,百度将XuperChain的内核技术XuperCore捐赠给开放原子开源基金会,以全新的开源治理 模式面向全社会。
XuperChain核心优势在于超高性能、高可拓展性、高度易用以及自主研发。

1. 架构设计

请添加图片描述
XuperChain的系统架构设计,采用模块化架构,基础组件模块化共用,内核层聚合各组件,提供能力实现业 务需求,从而实现核心流程低成本订制。通过对业务抽象分层、划分子领域和模块化,最大限度的提升代码 复用和系统可扩展性。从而做到,通过低成本的定制不同流程来满足不同场景的需求,最大限度的复用核心 基础能力。通过分治降低系统复杂度,提升系统可维护性。
整个系统分成四层,其中下面三层构成整个XuperChain内核的核心组成部分,分别为协议层、核心组件层、 基础组件层。

  1. 协议层
    这一层定义区块链的各个模块API、核心结构和流程,并管理各模块的加载和初始化,聚合和调度各核 心组件实现系统需求。
  2. 核心组件层
    这一层负责区块链核心组件的具体实现,通过实现核心层定义的、接口和加载方式,接入到系统。这层
    的组件可以针对不同的需求场景有多种不同的实现。
  3. 基础组件层
    这一层实现业务无关的通用基础库,各层都可以引用。

2. 生态技术

请添加图片描述

围绕着XuperChain底层核心技术,构建起了整个开源生态技术体系,形成强大的开源技术生态。整个技术生 态主要包括内核技术、核心方向、生态工具、交叉学科、解决方案五大组成部分。

  1. 内核技术
    内核层就是XuperChain内核技术,其定义了一系列标准API,构建一个区块链体系结构,规定了各个模 块的逻辑结构、功能特征和各模块间的交互关系,并提供了各个模块适用不同场景的标准实现。
  2. 核心方向
    核心技术方向是基于内核标准API定义的区块链体系结构之上,各个组成可以独立发展起来的技术方 向,主要包括九大核心技术方向,分别包括共识技术、密码服务、存储账本、节点通信、智能合约、系 统安全、监管治理、隐私保护、跨链技术等。
  3. 生态工具
    生态工具技术是围绕着分布式账本技术的周边技术,主要包括区块链管理工具技术、区块链测试技术、 钱包技术、浏览器技术、业务集成工具集、合约开发工具集(IDE、XDEV)等等。
  4. 交叉学科
    主要是XuperChain技术和其他技术相结合的交叉学科技术,比如去中心化身份技术、可信计算技术、 边缘技术以及5G技术等等。
  5. 解决方案
    行业领域技术主要是区块链应用具体行业所产生的行业领域技术,比如与金融行业、供应链领域、医疗 行业、政务行业等,目前XuperChain已经在30+场景,100+应用落地。

二、XuperChain平台安装

  1. 准备环境

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. 查询交易信息

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

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

5. 查询block信息

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

# 可查询上一步交易所在的block id信息
$ bin/xchain-cli block 7822008e7193a5b3662bd4efdb6e7818aec0fdae2da202bf30ae7d7d7a180397 -H 127.0.0.1:37101


评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值