区块链程序获取

获取可执行程序

用户可以自由选择以下任一方式获取对应的chain33可执行程序。推荐使用官方编译好的版本。

    官方提供的编译文件,可以在Ubuntu 16.04和CentOS 7.2以上版本运行。
    源码编译获取可执行程序。

下载Chain33可执行程序

我们基于Release1.65,提供多种形态的区块链程序,在Windows,Ubuntu和CentOS 7经过测试。

    单节点solo测试链(windows)版本
    单节点solo测试链(linux)版本
    单节点docker联盟链版本
    多节点私有链集群版本
    多节点联盟链集群版本
    平行链(windows)版本
    平行链(linux)版本

软件包下载地址资源下载
源码编译
1 开发环境安装
1.1 Go 环境安装

Go 语言安装包下载地址: https://golang.google.cn/dl/

推荐安装版本为1.13.x以上,各种操作系统对应的包名:
操作系统     包名
Windows     go1.13.5.windows-amd64.msi
Linux     go1.13.5.linux-amd64.tar.gz
Mac     go1.13.5.darwin-amd64.tar.gz
# Linux/Mac 安装

以 Linux 为例

    下载二进制包:go1.13.5.linux-amd64.tar.gz

    将下载的二进制包解压至 /usr/local 目录

    $ tar -C /usr/local -xzf go1.13.5.linux-amd64.tar.gz

    将 /usr/local/go/bin 目录添加至 PATH 环境变量,并设置 GOPATH 环境变量

    export PATH=$PATH:/usr/local/go/bin
    export GOPATH=~/gopath

# Windows 安装

打开对应的 msi 文件进行安装

默认安装在 c:\Go 目录,将 c:\Go\bin 目录添加至 PATH 环境变量

同时设置 GOPATH 环境变量,如 D:\gopath
1.2 Git 环境安装

安装 Git 最新版本
# 在 Linux 上安装

使用 Linux 发行版包含的基础软件包管理工具来安装

基于 Fedora 的发行版使用 yum

    $ sudo yum install git

基于 Debian 的发行版使用 apt-get

    $ sudo apt-get install git

# 在 Windows 上安装

打开 Git 官方下载地址 http://git-scm.com/download/win,下载会自动开始,下载完再手动安装
# 在 Mac 上安装

打开 Git 官方下载地址 http://git-scm.com/download/mac,下载并安装
2 代码下载和chain33启动器建立

Windows: 使用 Git 命令下载代码到本地,这里使用 git bash 命令行工具输入命令:

    $ mkdir -p $GOPATH/src/github.com/33cn
    $ git clone https://github.com/33cn/plugin.git $GOPATH/src/github.com/33cn/plugin
    $ cd $GOPATH/src/github.com/33cn/plugin
    # 开启mod功能
    $export GO111MODULE=on
    # 国内用户需要导入阿里云代理,用于下载依赖包
    $export GOPROXY=https://mirrors.aliyun.com/goproxy
    #编译
    $ go build -o chain33.exe
    $ go build -o chain33-cli.exe github.com/33cn/plugin/cli

在目录下生成 chain33.exe 和 chain33-cli.exe两执行文件

Linux: 使用 Git 命令下载代码到本地,这里使用 git bash 命令行工具输入命令:

    $ mkdir -p $GOPATH/src/github.com/33cn
    $ git clone https://github.com/33cn/plugin.git $GOPATH/src/github.com/33cn/plugin
    $ cd $GOPATH/src/github.com/33cn/plugin
    # 开启mod功能
    $export GO111MODULE=on
    # 国内用户需要导入阿里云代理,用于下载依赖包
    $export GOPROXY=https://mirrors.aliyun.com/goproxy
    #编译
    make

在build目录下生成 chain33 和 chain33-cli两个执行文件

 

硬件要求

下表是chain33区块链节点运行的硬件要求,区块链交易的TPS受限于带宽(会影响交易和区块的广播效率), CPU配置(影响交易的验签)等硬件因素,所以不同的硬件配置会有不同的性能表现。

    +----------+---------+---------------------------------------------+
    | 配置     | 最低配置 | 普通配置|推荐配置                             |
    +==========+=========+========+====================================+
    | CPU      | 1.5GHz  | 2.4GHz |2.4GHz                              |
    +----------+---------+--------+------------------------------------+
    | 内存     | 1GB     | 4GB     | 8GB                               |
    +----------+---------+--------+------------------------------------+
    | 核心     | 1核     | 2核     | 4核                                |
    +----------+---------+--------+------------------------------------+
    | 带宽     | 1Mb     | 2Mb     | 10Mb                              |
    +----------+---------+--------+------------------------------------+

支持的平台

    CentOS 7.2+
    Ubuntu 16.04
    macOS 10.14+
    Windows (一般部署单节点,用于本地开发调试)

支持的CPU架构

    X86
    ARM

 

国密支持
简介

chain33联盟链支持国密标准,集成了国密SM2(非对称加解密,签名,验签)算法, SM3哈希算法, SM4对称加解密算法等一系列国家密码局认定的商用密码算法,适用于所有常用的国密应用场景。
使用方法

用户通过chain33-sdk生成国密公私钥对,构造交易使用国密签名,然后发送到chain33区块链,chain33节点通过国密算法验证签名。
环境搭建

根据具体需要,选择搭建chain33单节点,私链或者联盟链,搭建方法请参考:

    单节点
    私链
    联盟链

节点不需要对国密有额外的配置,节点会根据签名类型自适应验签方式。
构造国密交易

    // 生成公私钥对
    SM2KeyPair keyPair = SM2Util.generateKeyPair();
    // 构造交易
    Transaction transation = createTxRaw(toAddress, execer.getBytes(), payLoad, DEFAULT_FEE);
    // 交易签名
    byte[] msg = encodeProtobuf(transation)
    byte[] priv = keyPair.getPrivateKey().toByteArray()
    byte[] uid = "gm test".getBytes()
    sign(SignType.SM2, msg, priv, uid, transation);
    // 交易发送
    byte[] encodeProtobufWithSign = encodeProtobufWithSign(transation);
    String transationHash = HexUtil.toHexString(encodeProtobufWithSign);
    String hash = chain33client.submitTransaction(transactionHash);

国密签名结合证书校验

国密签名可以结合证书一起使用,使用示例参考chain33 ca
国密接口说明

国密的接口文档,请参考chain33-sdk