# 创建多企业联盟链
<font color="6B7280">最近更新时间：2021-10-25 14:21:00</font>

### 背景信息
联盟链，区块链的一种，只有特定的某个群体和被授权的某些节点允许加入。联盟网络中的所有节点信息共享，共同记账和监督，不存在中心化的硬件和机构。

BaaS平台支持在企业控制台创建单企业联盟链，在联盟控制台创建多企业联盟链。单企业联盟链表示联盟链初始节点都属于一个企业，一般由企业的多个部门组成联盟链；多企业联盟链表示联盟初始节点可以属于多个企业，一般是由多家存在供应链关系的公司组成联盟链。

本小节介绍在联盟控制台如何创建多企业联盟链。
![](../../assets/start15.jpg)


### 前提条件
如果需要创建联盟链，请确保已完成以下事项：

+ 当前账户已经在个人控制台添加企业信息，并通过系统管理员审批。如何添加企业信息，请参见创建企业。
+ 当前账户已经在企业控制台创建联盟或被其他账户添加为某个联盟的用户。如何创建联盟和添加联盟用户，请参见创建联盟或添加联盟用户。
+ 请提前将需要添加的联盟节点的所属企业添加为联盟成员。如何添加联盟成员，请参见联盟成员管理。
+ 创建联盟链时需要设置管理员地址和积分地址。如何创建链地址，请参见链地址管理。
+ 如果您需要通过自备节点来部署区块链，请提前准备好节点信息，如IP地址、账号、密码等基础信息。
+ 如果您需要使用云服务器来部署区块链，请提前联系系统管理员申请定制套餐并完成套餐的定价。

### 注意事项
创建联盟链前，您需要知道以下事项：

+ 创建联盟链和添加联盟链节点时，如果设置节点的所有者不是同一个企业，则会生成一个父订单和若干个节点企业的子订单。
+ 支付子订单，表示同意加入联盟链。
+ 当所有子订单交付完成后，您才可以继续执行相关链和节点的后续操作

### 步骤一：创建联盟链
1. 登录复杂美BaaS平台，在页面左上角切换为企业控制台。
2. 在左侧导航栏选择链管理 > 联盟链，然后单击单企业创建。
3. 在基本信息区域，设置链名称，管理员地址和创世地址。 
   
   ![](../../assets/start2.jpg)

   管理员地址即链地址，后续用于联盟链的管理动作签名，如新增联盟节点需要联盟链管理员私钥签名才可以成功；创世地址用于创世积分的私钥签名，默认与联盟链管理员地址相同，但可以选择不同的链地址。
4. 在配置信息区域，选择服务类型、设置节点数量和节点基础信息。
 + 区块链服务：表示使用自备节点搭建区块链。       
  ![](../../assets/start3.jpg) 
  
参数 | 描述
-|-|-
节点数量 | 根据需要设置节点数量，支持设置的节点范围为4~25，默认为4。<br>联盟链使用PBFT共识机制，共识要求节点至少4个。
默认参数配置：为所有联盟节点批量设置参数，后续支持修改。 | 
所有者 | 节点所属企业，单企业联盟链的节点只属于一个企业。
登录类型 | 目前区块链节点支持“账号+密码”和“账号+密钥”两种登录方式，您可以根据实际需求选择其中一种登录方式。<br>账号+密码：请输入自备节点的实际登录账号和密码。<br>账号+密钥：输入自备节点的实际登录账号，然后选择已生成或已导入的私钥。
端口 | 支持用户根据自备服务器开放的实际端口设置。<br>jrpc端口默认为8801；grpc端口默认为8802；SSH端口默认为22，共识端口默认为33001，P2P端口默认为13802。
IP地址 | 请根据实际情况填写每一台自备节点机器的IP地址。
是否为共识节点 | 设置节点角色。勾选为共识节点，去勾选为验证节点。<br>【说明】至少要求4个节点为共识节点。                               
                                      

+ 区块链+云服务：表示使用自动分配的云服务器搭建区块链。                                              
![](../../assets/start4.jpg)

参数 | 描述
-|-|-
套餐类型 | 选择云服务器的套餐类型，即云服务器的规格类型。<br>说明:<br>如果当前所有的套餐均无法满足您的需求，请联系系统管理员申请定制套餐。<br>如果没有可选择的套餐，则可能是系统管理员未设置套餐或为设置套餐定价所导致的，请联系系统管理员处理。
节点数量 | 根据需要设置节点数量，支持设置的节点范围为4~25，默认为4。<br>联盟链使用PBFT共识机制，共识要求节点至少4个。
默认参数配置：为所有联盟节点批量设置参数，后续支持修改 | 
所有者 | 节点所属企业，单企业联盟链的节点只属于一个企业。
登录类型 | 目前区块链节点支持“账号+密码”和“账号+密钥”两种登录方式，您可以根据实际需求选择其中一种登录方式。<br>账号+密码：账号默认为root不可修改，密码可以自定义，支持大小写字母、数字和特殊符号的至少三种的组合，长度为8~26个字符.<br>账号+密钥：账号默认为root不可修改，选择已生成的私钥。
端口 | 系统提供默认端口配置，部分支持修改。<br>jrpc端口默认为“8801”；grpc端口默认为“8802”，共识端口默认为“33001”，P2P端口默认为“13802”，支持修改。<br>SSH端口默认为“22”，不支持修改。
IP地址 | 无需设置云服务器的内网IP地址，采用自动分配模式，如果需要为云服务器绑定外网IP，可以设置自动分配。
是否为共识节点 |设置节点角色。勾选为共识节点，去勾选为验证节点。<br>【说明】至少要求4个节点为共识节点。

+ 区块链+个人公有云托管服务：华为云账号托管并购买服务器。

参数 | 描述
-|-|-
公有云账号 | 选择企业用户对接华为云的账号。
套餐类型 | 选择个人公有云服务器的套餐类型。<br>如果当前所有的套餐类型均无法满足您的需求，请联系企业管理员申请定制套餐。<br>如果没有可选择的套餐。则可能是企业管理员未设置套餐导致的，请联系企业管理员处理。
节点数量 | 根据需要设置节点数量，支持设置的节点范围为4~25，默认为4。<br>联盟链使用PBFT共识机制，共识节点至少4个。
默认参数设置：为所有联盟节点批量设置参数，后续支持修改。 | 
所有者 | 节点所属企业，单企业联盟链的节点只属于一个企业。
登录类型 | 目前区块链节点支持“账号+密码”和“账号+密钥”两种登录方式，您可以根据实际需求选择一种登录方式。<br>账号+密码：账号默认为root不可修改，密码可以自定义，支持大小写字母、数字和特俗字符的至少三种组合，长度为8~26个字符。<br>账号+密钥：账号默认为root，不可修改，选择已生成的私钥；不选择则使用默认的系统公钥。
端口 | 系统提供默认端口配置，支持修改。<br>jrpc端口默认为8801；grpc端口默认为8802，SSH端口默认为22；共识端口默认为33001；P2P端口默认为13802。
IP地址 | 无需设置云服务器的内网IP地址，采用自动分配模式。默认自动分配外网IP，以保证节点互联互通。
是否为共识节点 | 设置节点角色。勾选为共识节点，去勾选为验证节点。<br>【说明】只要要求4个节点为共识节点。
5. 在**高级配置**区域，设置**区块最大打包交易数**、**共识超时时间**和**创世区块时间**。     
  ![](../../assets/start5.jpg)              
6. 在费用计算区域，选择资源计费模式和使用时长.<br>说明：如果是自备服务器则无需设置计费模式和使用时长，仅在使用自动分配云服务器时需要设置计费模式和使用时长                                                                                                                       
  ![](../../assets/start6.jpg)              

请根据需要选择**资源计费模式**和**使用时长**。
+ 支持按天、按月和按年计费，根据实际需求选择计费方式和时长。如果没有某种计费模式，则是当前云资源套餐未开通这种计费模式。
+ 如果有自动续费需求，可勾选开启自动续费。
+ 费用说明：创建联盟链的费用包括链管理费、节点费和云资源费。链管理费由节点所有者的数量决定，单企业联盟只需收取一次费用；节点费则是一个节点收取一次费用；云资源费则是由系统管理员设置的云资源套餐费用。
7. 在**费用配置**区域，确认费用无异常后单击**提交订单**。   
  ![](../../assets/start7.jpg)                                                               
8. 在**确认订单**导航页签下，确认订单信息，然后单击**确认**。
9. 在**付款**导航页签下，确认订单支付金额，确认无误后单击确认付款。<br>如果您的当前余额不足以支付该订单金额，支持直接在当前页面进行充值。

### 步骤二：支付订单（企业控制台）
支付订单即同意加入联盟，所有联盟节点企业都需要完成创建联盟链的订单支付，才可以继续部署联盟节点。

1. 登录复杂美BaaS平台，在页面左上角切换为企业控制台。
2. 在左侧导航栏选择费用中心 > 订单管理。
3. 在订单管理页面，搜索目标订单，在该订单操作列下单击去付款。                                                   
![](../../assets/start14.jpg) 
4. 在订单详情导航页签下，确认订单信息，确认无误后单击去付款。
5. 在付款导航页签下，确认付款金额，确认无误后单击确认付款。<br>如果您的当前余额不足以支付该订单金额，支持直接在当前页面进行充值。

### 步骤三：部署节点
联盟链创建并完成订单支付后，可以在联盟链页面查看链基础信息，此时的联盟节点为创建完成状态，链为未运行状态，需要部署联盟节点后，链才能正常运行。

目前BaaS平台支持手动部署和自动部署两种部署方式，请跟据实际情况选择部署方式。

+ 自动部署：自动分配云服务器、自备节点和BaaS平台网络双向互通，这两种情况采用自动部署。
+ 手动部署：自备节点和BaaS平台网络无法双向互通，这种情况采用手动部署。如公共云BaaS平台和局域网节点服务器无法双向互通，可以在局域网节点服务器上手动部署。

**自动部署**

1. 登录复杂美BaaS平台，在页面左上角切换为联盟控制台。
2. 在左侧导航栏单击**链管理 > 联盟链**，然后在页面左上角切换到未运行的联盟链。
3. 在联盟链基础信息区域右上角，单击**节点部署**。
   ![](../../assets/start8.jpg)
   注意：部署节点前，节点状态必须为**创建完成**，否则部署将会失败。                                                                                     
4. 在**节点部署**对话框的**确认部署方式**导航页签，单击**开始自动部署**。
   注意：初始化部署时至少选中四个共识节点。
5. 查看节点部署实时日志，待提示部署成功后单击**关闭**。 
  ![](../../assets/start9.jpg)

**手动部署**

注意：手动部署仅支持在Linux环境下运行，且Ansible版本必须大于2.7。

1. 下载手动部署包。
   1. 登录复杂美BaaS平台，在页面左上角切换为联盟控制台。
   2. 在左侧导航栏选择链管理 > 联盟链，然后在页面左上角切换到未运行的联盟链。
   3. 在联盟链基础信息区域右上角，单击节点部署。
   ![](../../assets/start10.jpg)
   
   注意：部署节点前，节点状态必须为待部署，否则部署将会失败。                                                                     
   4. 在节点部署对话框的确认部署方式导航页签下，下载手动部署包。
   ![](../../assets/start11.jpg)
2. 在自备节点上手动部署。
     1. 登录自备节点。一般可使用SSH、PuTTY、Xshell等工具远程连接服务器。
     2. 将下载好的手动部署包上传到自备节点。
     3. 进到存放部署包的节点目录中并解压压缩包。
      ```Shell
      cd /**                        //**为真实的存放部署包的路径。
      tar zxvf filename.tar.gz    //filename需要替换为真实的部署包压缩包名称。
      ```
     4. 进到解压缩后的文件目录中并执行部署命令.
      ```Shell
      cd /**                       //**为解压缩后的文件目录。
      bash deploy.sh manual       //手动部署命令。
      ```
     5. 根据提示输入节点登录密码。
     6. 等待自动部署，成功后返回如下类似日志。
   ![](../../assets/start12.jpg)

### 结果验证
在联盟链页面查看目标联盟链运行状态，显示为运行中，即表示部署成功。  

![](../../assets/start13.jpg)

除了查看联盟链运行状态外，您还可以查看联盟链的监控指标数据（区块高度、总交易、TPS、活跃节点数等）、各个节点的实时监控指标（CPU使用率、硬盘使用率等）以及一段时间内的指标数据时序图。