# 安装说明

## 依赖环境的安装

1.安装Java1.8环境。

例如，在Ubuntu下使用apt-get进行安装：

    apt-get install openjdk-8-jre

在Centos环境下，使用yum进行安装：

    yum install java-1.8.0-openjdk

如果是离线环境，可先下载openjdk的安装包后进行离线安装。

Ubuntu下

    dpkg -i jdk-8uxxxxx.deb

在Centos环境下，使用yum进行离线安装：

    yum localinstall jdk-8u271-linux-xxx.rpm

2.安装wget与unzip。 例如，在Ubuntu下使用apt-get进行安装：

    apt-get install unzip
    apt-get install wget

## 网络拓扑说明

部署数瑞智能合约引擎最小仅需一个节点，此时可用作调试、测试，不能通过多节点模式来实现可信的计算。 单节点部署时，可通过配置账本实现”防抵赖”的计算，但不能实现”难篡改”的计算。

多节点部署时可参考下图，包含三种逻辑节点，同一虚拟机可安装一至三种节点。

1）账本节点。即数瑞图式账本。

2）合约节点。运行代码逻辑，并通过内存缓存实现高响应的模块。与其他合约节点组成可信计算网络。

3）路由节点。各个合约节点的路由信息。一般单个路由节点可支持最高1000合约节点。可视情况部署多个路由节点，并在路由节点之间配置实现更大规模的节点组网。

一般地，同一虚拟机下，会部署合约节点与账本节点。

## 智能合约节点安装

打开安装包下载链接 其中，下载`bdserver-lite.zip`或`bdserver.zip`，其中，`bdserver.zip`包含更多示例和文档。 下载之后解压并启动。

    unzip -d ./bdserver bdserver-lite.zip
    cd bdserver
    chmod +x *.sh
    sh cmstart.sh

## 路由准入节点安装

打开安装包下载链接 其中，下载`bdserver-cluster.zip`。 下载之后解压并启动。

    unzip -d ./bdcluster bdserver-cluster.zip
    cd bdcluster
    chmod +x *.sh
    sh ncstart.sh

## 文件说明

### 智能合约节点

该目录下的文件说明：

1.cmstart.sh 该脚本用于启动合约引擎。合约引擎默认监听8080端口，可通过修改cmstart.sh来修改合约引擎的监听端口。

2.BDWareProjectDir 该目录存放了本节点的所有合约项目。

3.WebContent 该目录存放了本节点的前端代码。

4.cp, 该目录存放了yjs.jar，为启动合约实例所需的jar。

5.bdserver.jar 对外提供http/websocket的服务器逻辑。

6.updateContract.sh 用于升级的脚本。

### 路由准入节点

安装脚本会自动下载安装并解压为bdcluster目录。 该目录下的文件说明：

1.ncstart.sh 该脚本用于启动节点准入中心。默认监听1718端口。可通过修改ncstart.sh来修改监听的端口。

2.WebContent 该目录存放了准入中心的前端代码。

3.bdcluster.jar 准入中心的后端。

## 升级流程

### 合约节点

在命令行中输入：

    sh updateContract.sh

亦可通过public.internetapi.cn，下载最新文件，单独升级yjs.zip/bdserver-jar.zip/AgentWebContent来升级。

### 路由准入节点

    sh updateCluster.sh

亦可通过public.internetapi.cn，下载最新文件，单独升级bdserver-cluster.zip/ClusterWebContent.zip来升级。

## 使用说明

### 通过参考界面使用

当保留了WebContent目录的情况下，可使用浏览器进行配置。 更多请使用见左侧文档BDContract参考界面使用说明。

#### BDWare OnlineIDE

打开BDWare OnlineIDE。

#### BDWare NodePortal

打开BDWare NodePortal。

如需组网，使用跨节点功能，则需安装路由准入中心。并按以下步骤进行配置。涉及两组公私钥。 第一组公私钥为合约节点的、有NodeManager权限的公私钥。 第二组公私钥为路由准入节点的、有CenterManager权限的公私钥。

1.打开NodePortal.html，复制该节点的NodeManager公私钥。

2.打开CenterPortal.html，点击右上角，将上述的NodeManager公私钥导入；并选择”NodeManager”进行身份认证。

3.在CenterPortal.html中切换CenterManager的公私钥，点左侧的”用户管理”，通过NodeManager的认证请求。

4.使用NodeManager权限的公私钥打开NodePortal.html，点击：“节点管理”菜单，并配置加入网络。 其中，加入网络的格式为:ws://centerportal的ip:端口+1。

### 通过SDK使用

#### 基础知识

Websocket

Sm2加密的使用

#### SDK下载

1. Java版本的客户端下载：BDWareJavaClient。具体使用说明请下载后解压，查看README.md，并参考ContractAPI。

2.Javascript版本的客户端下载:BDWareWebClient。具体使用说明请下载后解压，查看README.md，并参考ContractAPI。

3.配置工具BDWareConfigTool。具体说明请下载后解压，使用以下命令查看帮助：

    java -jar java-client.jar -h