Commit 85483f59 authored by Zhang Xiaojie's avatar Zhang Xiaojie

feat:bass docs

parent 389705d2
This diff is collapsed.
# 上架应用市场
最近更新时间:2021-09-16 15:00:06
公开发布的应用,支持将应用上架到应用市场,后续可供其他账户购买应用,应用开发者可获得相应的奖励。
**前提条件**
系统管理员已经审批通过应用发布流程。
**操作步骤**
1. 登录[复杂美BaaS平台](https://baas.33.cn/),切换为企业控制台。
2. 在左侧导航栏选择**应用管理 > 我的应用** **> 我发布的**。然后单击**待上架**状态页签。
3.**待上架**状态页签下,选择目标应用,在**操作**列下单击**上架应用市场**
![](../../assets/cc35.jpg)
4. 在提示对话框中,单击**确定**
\ No newline at end of file
# 下架应用市场
最近更新时间:2021-12-22 09:46:12
应用开发者将自己的应用发布到应用市场,可供其他账户购买,并从中获得奖励。同理,BaaS平台也支持应用开发者将自己发布的应用从市场中下架。
1. 登录[复杂美BaaS平台](https://baas.33.cn/),切换为企业控制台。
2. 在左侧导航栏选择**应用管理 >** **我的应用 > 我****发布****的**,然后单击**已****上架**状态页签。
3.**已上架**状态页签下,选择待下架应用,单击**操作**列下的**下架应用市场**
![](../../assets/cc45.jpg)
说明:下架应用,只是从应用市场中下架,不会影响已部署到链的应用。应用下架后,该应用回到**待上架**状态页签下,如有需要,可以重新上架。
# 应用部署到链
最近更新时间:2021-09-16 15:00:27
应用可能是来源于文件上传和从应用市场购买,根据应用的来源不同,选择正确的部署流程。
若部署到联盟链,需要联盟链管理员审批通过后才能部署;若部署到平行链,无需审批,直接部署。
**应用来源于文件上传**
1. 登录[复杂美BaaS平台](https://baas.33.cn/),切换为企业控制台。
2. 在左侧导航栏选择**应用管理 > 我的应用** **> 我发布的**,然后单击**已上架**状态页签。
3.**已上架**状态页签下,选择目标应用,单击**操作**列下的**部署到链**
4.**部署到链**对话框,选择目标链和私钥地址,自定义设置部署参数,然后单击**部署**
![](../../assets/cc36.jpg)
**应用来源于应用市场**
1. 登录[复杂美BaaS平台](https://baas.33.cn/),切换为企业控制台。
2. 在左侧导航栏选择**应用管理 > 我的应用** **> 已购买的**
3.**已****购买的**状态页签下,选择目标应用,单击**操作**列下的**部署到链**
4.**部署到链**对话框,选择目标链和私钥地址,自定义设置部署参数,然后单击**部署**
![](../../assets/cc37.jpg)
\ No newline at end of file
# 应用离线部署
最近更新时间:2021-12-22 14:09:52
在应用部署时,如果BaaS系统与自备应用节点无法双向互通,那么必须选择离线部署的方式部署应用。
**前提条件**
- 已购买或发布应用。更多信息,请参见[购买应用](https://baas.33.cn/doc/detail/194)[发布应用](https://baas.33.cn/doc/detail/195)
- 已提前准备好自备节点服务器的基础信息,如IP地址、登录用户、密码和SSH端口。
- 自备节点服务器已安装Ansible工具,且在2.7版本及以上。
**生成应用部署包下载地址**
1. 登录BaaS平台,切换企业控制台。
2. 在左侧导航栏选择**应用管理 > 我的应用**,选择目标应用并单击**部署到链**
![](../../assets/cc38.jpg)
3.**安装信息**区域,选择关联链,然后设置自备应用节点信息。
![](../../assets/cc39.png)
| **参数** | **描述** |
| -------- | ------------------------------------------------------------ |
| 关联链 | 从下拉列表中选择应用关联的链。 |
| 最低配置 | 部署应用的服务器最低配置要求。1GiB内存\|20GiB SSD\|Centos:7.6或Ubuntu:18.04操作系统 |
| IP地址 | 输入自备服务器IP地址。 |
| 登录类型 | 目前区块链节点支持**账号+密码****账号+密钥**两种登录方式,您可以根据实际需求选择其中一种登录方式。账号+密码:请输入自备节点的实际登录账号和密码。账号+密钥:输入自备节点的实际登录账号,然后选择已生成或已导入的私钥。 |
| SSH端口 | 输入准备好的服务器SSH端口。 |
1. 单击底部的**离线部署**,然后确认使用离线部署方式。 说明:如果是关联联盟链,则需要联盟链管理员审批应用部署流程,相关文档请参见[审批应用部署](https://baas.33.cn/doc/detail/246)
2. 生成下载地址。在**我部署的 > 部署中**目录下,选择应用,单击**查看下载地址**,系统自动上传部署文件并生成下载地址。
![](../../assets/cc40.jpg)
6. 查看并获取部署包下载地址。单击**查看下载地址**,可拷贝部署包下载地址。
![](../../assets/cc41.jpg)
**在节点服务器上手动部署应用**
1. 登录节点服务器,在任意目录下下载应用部署包。
wget 部署包下载地址
2. 解压部署包,手动部署应用。
```shall
tar zxvf 部署包 //解压缩
bash instaill.sh //手动部署应用。
```
手动部署应用完成后,返回如下类似的日志:
![](../../assets/cc42.jpg)
说明:离线部署的应用,不支持在BaaS系统卸载应用。如需卸载,需在应用节点服务器上执行“uninstall.sh”脚本,手动卸载应用。
**确认离线部署完成**
在应用节点服务器上完成手动部署应用后,需要在BaaS平台**我部署的 > 部署中**目录下,单击目标应用的**离线安装完成**
![](../../assets/cc43.jpg)
**结果验证**
应用离线部署完成后,可以在BaaS平台调用应用,以验证应用部署是否成功。
本例是以离线部署区块链浏览器为例,可通过是否能正常跳转区块链浏览器页面判断是否部署成功。
\ No newline at end of file
# 合约应用包说明
最近更新时间:2021-12-31 16:33:27
**应用包介绍**
合约应用包,以zip压缩包的形式存在,包含应用描述文件(metadta.xml)和solidity合约文件。
- 应用描述文件
```xml
<?xml version="1.0" encoding="UTF-8"?>
<metaData>
<name>合约名</name>
<symbol>contract</symbol>
<version>版本号</version>
<developer>开发者</developer>
<releaseDate>发布时间/releaseDate>
<language>语言</language>
<codeType>solidity</codeType>
<description>智能合约描述</description>
<size>文件大小</size>
<config>
<file>solidity文件名</file>
<proxy>代理合约名</proxy>
<proxyFile>代理合约文件名</proxyFile>
</config>
</metaData>
```
- 合约文件
合约文件是用Solidity语言编写的智能合约。一个应用包内可以包含多个合约文件,一般情况下只能属于同一个智能合约;如果是proxy应用包,则合约文件属于两个智能合约,一个代理合约,一个实现合约。
注意:合约名和合约文件名需要和应用描述文件的内容一致。
**合约应用包类型**
- 普通合约应用包
只包含普通合约,不包含管理合约和proxy合约。普通合约没有生命周期管理接口,合约升级数据会清空。
```solidity
pragma solidity ^0.6;
// 普通合约示例
contract MyStore {
uint value;
constructor() public{
​ value=9999999;
}
function set(uint x) public {
​ value = x;
}
function get() public returns (uint){
​ return value;
}
}
```
- 管理合约应用包
包含普通合约和管理合约。管理合约实现合约冻结,解冻,销毁等生命周期接口和管理员的权限控制控制接口;普通合约导入管理合约,对外还是一个合约地址。
```solidity
pragma solidity > 0.6.0;
//管理合约示例
contract manage {
// 合约部署人(超级管理员)
address private _owner;
// 合约管理员
address [] private _managers;
// 操作员
address [] private _operators;
// 审计人员
address [] private _auditor;
bool private _freezeFlag;
constructor() public {
_owner = msg.sender;
_freezeFlag=false;
}
// 添加管理员
function addManager(address manager) internal {
require(msg.sender == _owner, "require owner address");
_managers.push(manager);
}
// 删除管理员
function removeManager(address manager) internal {
require(msg.sender == _owner, "require owner address");
​ bool flag = false;
​ uint index = 0;
​ for(; index < _managers.length; index++) {
​ if (manager == _managers[index]) {
​ flag = true;
​ break;
​ }
​ }
​ if(flag) {
​ _managers[index] = _managers[_managers.length-1];
​ _managers.pop();
​ }
}
// 查询管理员
function queryManager() internal view returns (address[] memory) {
require(msg.sender == _owner, "require owner address");
address[] memory res = new address[](_managers.length);
for(uint i = 0; i < _managers.length; i++) {
res[i] = _managers[i];
}
return res;
}
// 检查是否管理员地址
function checkAdminAddress(address op) internal view returns (bool) {
if(msg.sender == _owner) return true;
for(uint i = 0; i < _managers.length; i++) {
if (op == _managers[i]) {
return true;
}
}
return false;
}
// 添加操作员
function addOperator(address operator) public {
bool flag = checkAdminAddress(msg.sender);
require(flag, "require owner or manager address");
_operators.push(operator);
}
// 删除操作员
function removeOperator(address manager) public {
bool flag = checkAdminAddress(msg.sender);
require(flag, "require owner or manager address");
flag = false;
uint index = 0;
for(; index < _operators.length; index++) {
if (manager == _operators[index]) {
flag = true;
break;
}
}
if(flag) {
_operators[index] = _operators[_operators.length-1];
_operators.pop();
}
}
// 查询操作员
function queryOperator() public view returns (address[] memory) {
bool flag = checkAdminAddress(msg.sender);
require(flag, "require owner or manager address");
address[] memory res = new address[](_operators.length);
for(uint i = 0; i < _operators.length; i++) {
res[i] = _operators[i];
}
return res;
}
// 检查是否操作员地址
function checkOperatorAddress(address op) internal view returns (bool) {
for(uint i = 0; i < _operators.length; i++) {
if (op == _operators[i]) {
return true;
}
}
return false;
}
// 合约冻结
function freeze() public returns (bool) {
bool flag = checkAdminAddress(msg.sender);
require(flag, "require owner or manager address");
_freezeFlag=true;
return true;
}
// 合约解冻
function release() public returns (bool) {
bool flag = checkAdminAddress(msg.sender);
require(flag, "require owner or manager address");
_freezeFlag=false;
return true;
}
// 查看合约冻结状态
function isFreeze() internal view returns (bool) {
return _freezeFlag;
}
// 合约销毁
function destroy() public returns (bool) {
bool flag = checkAdminAddress(msg.sender);
require(flag, "require owner or manager address");
selfdestruct(payable(address(msg.sender)));
return true;
}
}
```
- proxy合约应用包
包含代理合约和实现合约,代理合约用于数据存储,实现合约用于逻辑操作。代理合约通过delegatecall调用实现合约。
合约升级只需要升级实现合约,代理合约地址不变。
注意:实现合约的构造函数不会生效;实现合约的变量定义需要和代理合约顺序一致。
```solidity
pragma solidity >=0.6.8 <0.9.0;
// 代理合约示例
contract proxy {
uint value;
address public owner;
address internal _implementation;
// 构造函数,参数为实现合约的地址
constructor(address impl) public {
owner = msg.sender;
_implementation = impl;
}
modifier onlyOwner() {
require(msg.sender == owner, "Not owner");
_;
}
function getOwner() public view returns (address) {
return owner;
}
function implementation() public view returns (address) {
return _implementation;
}
// 合约升级,参数为新合约的地址
function upgradeTo(address impl) public onlyOwner {
require(impl != address(0), "Cannot upgrade to invalid address");
require(impl != _implementation, "Cannot upgrade to the same implementation");
_implementation = impl;
}
// 回调函数
fallback() external {
address _impl = _implementation;
require(_impl != address(0), "implementation contract not set");
​ assembly {
​ let ptr := mload(0x40)
​ calldatacopy(ptr, 0, calldatasize())
​ let result := delegatecall(gas(), _impl, ptr, calldatasize(), 0, 0)
​ let size := returndatasize()
​ returndatacopy(ptr, 0, size)
​ switch result
​ case 0 { revert(ptr, size) }
​ default { return(ptr, size) }
​ }
}
}
```
# 购买应用
<font color="6B7280">最近更新时间:2021-09-16 14:59:33</font>
**背景信息**
应用市场中预置了一些应用,可直接供用户购买;同时也支持用户购买应用开发者发布到应用市场的应用,购买过程中需要支付一定费用,以奖励应用开发者。
如果需要购买开发者应用,则应用开发者需要提前将自己的应用发布到应用市场,以供其他账户购买。应用发布到应用市场的具体操作,请参见[上架应用市场](https://baas.33.cn/doc/detail/196)
**操作步骤**
1. 登录[复杂美BaaS平台](https://baas.33.cn/),切换为企业控制台。
2. 在左侧导航栏选择**应用管理 >** **应用市场**
3. 在应用市场页面,搜索目标应用,然后单击应用右下角的**购买。**
![](../../assets/cc34.jpg)
4. 确认应用信息和费用信息,单击**立即购买**
5.**付款**导航页签下,确认订单支付金额,单击**付款**
如果您的当前余额不足以支付该订单金额,支持直接在当前页面进行充值。
\ No newline at end of file
# 升级应用版本
最近更新时间:2021-12-22 09:46:15
应用开发者将自己的应用发布到应用市场,可供其他账户购买,并从中获得奖励。如果后续应用开发者将应用程序升级,则需要将应用市场中的应用也升级。
1. 登录[复杂美BaaS平台](https://baas.33.cn/),切换为企业控制台。
2. 在左侧导航栏选择**应用管理 >** **我的应用 > 我****发布****的**,然后单击**已****上架**状态页签。
3.**已上架**状态页签下,选择待升级应用,单击**操作**列下的**升级版本**
4.**升级应用**对话框,设置新版本应用的版本号、售价,上传代码文件,选择编译器版本,然后单击**发布应用**
![](../../assets/cc44.jpg)
说明:发布应用升级版后,进入审批中状态,需要联系系统管理员审批发布应用升级版流程。待审批通过后,进入待上架状态,需要上架到应用市场,上架后自动替换旧版本应用。如何上架应用市场,请参见[上架应用市场](https://baas.33.cn/doc/detail/196)
\ No newline at end of file
# 发布应用
最近更新时间:2021-09-16 14:59:47
支持发布合约类、工具类和应用类应用。支持上传源代码或编译好的二进制应用文件发布到应用市场并部署上链。
**前提条件**
- 如需将应用部署上链,则需要提前创建链。
- 提前准备好应用源代码或编译好的二进制应用文件,并妥善保存到本地。
**操作步骤**
1. 登录[复杂美BaaS平台](https://baas.33.cn/),切换为企业控制台。
2. 在左侧导航栏选择**应用管理 > 我的应用** **> 我发布的**
3.**我发布的**页签下,单击**发布应用**
4.**发布应用**对话框,选择应用的类型、语言和分类,设置应用的名称、版本号等基础信息,上传应用的代码文件,然后单击**发布应用**
| **参数** | **描述** |
| ---------- | ------------------------------------------------------------ |
| 是否公开 | 公开发布的应用将会发布到应用市场,可供其他账户购买使用。私有发布不会发布到应用市场,仅供当前账户一次性发布使用。 |
| 类型 | 支持合约类、工具类和应用类应用,请根据真实情况选择。 |
| 语言 | 仅选择合约类才有该参数,BaaS平台目前暂时仅支持Solidity开发语言。 |
| 分类 | 不同类型的应用们可以选择不同的分类,请根据真实情况选择。合约类:包含Storage、Token、Game和DEFI分类。工具类:仅有工具分类。应用类:包含链应用和其他分类。 |
| 名称 | 应用的名称,与应用代码中的应用名称保持一致。 |
| Logo | 上传本地图片作为应用的logo,支持PNG格式图片,大小不超过5MB。 |
| 版本号 | 自定义设置应用版本号,如“v1.0.0”。 |
| 售价(元) | 仅选择公开发布才有该参数,请设置该应用的价格。其他账户可以在应用市场购买应用,此时需要支付该应用的相应费用。此费用被扣减部分服务费后,剩余部分将会直接转到应用发布者账户,作为开发者奖励。应用服务费由系统管理员设置。 |
| 内容 | 单击**上传代码文件**,从本地选择应用代码文件。支持上传源代码或编译好的二进制应用文件。 |
| 编译器版本 | 选择Solidity编译器版本,支持0.6、0.7和0.8。注意:选择的编译器版本需要与编写合约时使用的版本一致,否则会提示编译失败。 |
| 描述 | 自定义设置应用的描述性语言,建议包含应用的作用、场景等信息。 |
发布应用后,处于**待审批**状态,需要联系系统管理员审批应用发布流程。系统管理员审批通过以后,处于**待上架**状态,此时可以将应用上架到应用市场。
# 部署区块链浏览器
<font color="6B7280">最近更新时间:2021-09-16 14:38:37</font>
### 创建部署申请
1. 登录复杂美BaaS平台,在页面左上角切换为企业控制台。
2. 在导航栏中选择应用管理 > 我的应用,单击已购买的页签。
3. 在已购买的页签下,单击explorer应用的操作列下的部署到链。
4. 在部署到链页面的安装信息区域,选择关联链和服务器类型,然后设置服务器信息。
+ 自备服务器:自备服务器用于部署区块链浏览器。
![](../../assets/start23.jpg)
参数 | 描述
-|-|-
关联链 | 从下拉列表中选择区块链浏览器关联的链,此处选择需要关联的联盟链。
最低配置 | 安装区块链浏览器的服务器最低配置要求。<br>1GiB内存|20GiB SSD|Centos:7.6或Ubuntu:18.04操作系统
IP地址 | 输入准备好的服务器IP地址。
登录类型 | 目前区块链节点支持“账号+密码”和“账号+密钥”两种登录方式,您可以根据实际需求选择其中一种登录方式。<br>账号+密码:请输入自备节点的实际登录账号和密码。<br>账号+密钥:输入自备节点的实际登录账号,然后选择已生成或已导入的私钥。
SSH端口 | 输入准备好的服务器SSH端口。
+ 云服务器:自动分配云服务器用于部署区块链浏览器。
![](../../assets/start24.jpg)
参数 | 描述
-|-|-
关联链 | 从下拉列表中选择区块链浏览器关联的链,此处选择关联的联盟链。
最低配置 | 安装区块链浏览器的服务器最低配置要求。<br>1GiB内存|20GiB SSD|Centos:7.6或Ubuntu:18.04操作系统
套餐 | 选择云服务器的套餐类型,即云服务器的规格类型。<br>说明:如果当前所有的套餐均无法满足您的需求,请联系系统管理员申请定制套餐。
计费方式 | 支持按天、按月和按年计费方式,根据实际需求选择计费方式。
选择时长 | 选择计费周期。
价格(元) | 自动计算选定套餐、计费方式和时长后需支付的费用。
自动续费 | 请根据需求选择是否自动续费。<br>自动续费:云资源到期时,自动从账户余额扣除云资源相应的续费费用。<br>手动续费:云资源到期前,需要及时手动续费,云资源到期时,如果未及时续费,BAAS平台将释放所有到期云资源。
IP地址 | 自动分配IP地址,无需设置。
外网IP | 默认为自动分配外网IP地址,可供外网访问区块链浏览器。<br>如果没有外网访问需求,也可设置为不分配外网IP。
登录类型 | 目前区块链节点支持“账号+密码”和“账号+密钥”两种登录方式,您可以根据实际需求选择其中一种登录方式。<br>账号+密码:账号默认为root,密码可以自定义。支持大小写字母、数字和特殊字符中的至少三种的组合,长度为8~26个字符。<br>账号+密钥:账号默认为root不可修改,选择已生成的私钥。
SSH端口 | 设置SSH端口,一般设置为22。
5. 设置好服务器信息后,单击页面下方的提交,然后单击确认对话框中的确定。
### 审批部署申请
说明:如果区块链关联的是联盟链,部署区块链浏览器时需要联盟管理者审批部署浏览器的申请。
1. 登录复杂美BaaS平台,在页面左上角切换为联盟控制台。
2. 在导航栏中选择应用管理 > 链应用,然后单击审批中页签。
3. 在审批中页签下,选择explorer应用,单击操作列下的通过或者拒绝。
![](../../assets/start25.jpg)
4. 在确认审批对话框,输入备注信息,然后单击确定。
### 支付订单
说明:如果是部署到自动分配的云服务器上,则需要支付云服务器的费用订单。如果是部署到自备服务器,则无需支付额外费用直接可以进行下一步骤(部署区块链浏览器)。
1. 登录复杂美BaaS平台,在页面左上角切换为企业控制台。
2. 在导航栏中选择应用管理 > 我的应用,然后单击我部署的状态页签。
3. 在我部署的页签下,单击部署中状态页签。
4. 在部署中状态页签下,选择explorer应用,单击操作列下的去支付。
![](../../assets/start26.jpg)
5. 在订单详情页面,确认订单信息,然后单击去付款。
6. 在付款页面,单击确认付款。<br>如果您的当前余额不足以支付该订单金额,支持直接在当前页面进行充值。
### 部署区块链浏览器
说明:如果是使用自动分配的云服务器,则需要先支付订单,才可以开始部署区块链浏览器;如果使用自备服务器,则可以直接开始部署。
1. 登录复杂美BaaS平台,在页面左上角切换为企业控制台。
2. 在导航栏中选择应用管理 > 我的应用,然后单击我部署的状态页签。
3. 在我部署的页签下,单击部署中状态页签。
4. 在部署中状态页签下,选择explorer应用,单击操作列下的开始部署。
![](../../assets/start27.jpg)
5. 在确认对话框,单击确定,系统开始自动部署区块链浏览器,部署需要需要一定的时间,请耐心等待。您可以在应用部署对话框查看部署日志,直到界面提示安装结束。
![](../../assets/start28.jpg)
### 结果验证
在已部署区块链浏览器的联盟链页面,可以直接单击浏览器,进入区块链浏览器页面查看交易数据。
![](../../assets/start29.jpg)
# 购买区块链浏览器
<font color="6B7280">最近更新时间:2021-09-16 14:38:24</font>
BaaS平台支持从应用市场购买区块链浏览器应用并部署到链,购买过程中需要支付一定费用。
操作步骤
1. 登录复杂美BaaS平台,切换为企业控制台。
2. 在导航栏中选择**应用管理 > 应用市场**
3.**应用市场**页面,筛选应用类应用,单击explorer应用的**购买**
![](../../assets/cc16.jpg)
4. 确认应用信息和费用信息,然后单击**立即购买**
5.**付款**页面,确认付款金额,确认无误后单击**付款**。如果您的当前余额不足以支付该订单金额,支持直接在当前页面进行充值。
# 卸载区块链浏览器
<font color="6B7280">最近更新时间:2021-09-16 14:38:52</font>
1. 登录复杂美BaaS平台,在页面左上角切换为企业控制台。
2. 在左侧导航栏选择应用管理 > 我的应用,然后单击我部署的状态页签。
3. 在我部署的页签下,单击已部署状态页签。
4. 在已部署状态页签下,选择explorer应用,单击操作列下的卸载。
![](../../assets/cc17.jpg)
5. 在确认对话框中,单击确定。
\ No newline at end of file
# 创建单企业联盟链
<font color="6B7280">最近更新时间:2021-10-26 16:18:45</font>
### 背景信息
BaaS平台支持创建单企业联盟链和多企业联盟链。单企业联盟链表示联盟链初始节点都属于一个企业,一般由该企业的多个部门组成联盟链;多企业联盟链表示联盟节点属于多个企业,一般是由多家存在供应链关系的公司组成联盟链。
单企业联盟链在企业控制台创建,多企业联盟链在联盟控制台创建。单企业联盟链创建并完成订单支付后,会生成一个以“企业名称+时间戳”命名的联盟,您需要切换到该联盟完成节点部署相关操作。
本小节介绍如何创建单企业联盟链。
![](../../assets/start-1.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个节点为共识节点。
1.**高级配置**区域,设置**区块最大打包交易数****共识超时时间****创世区块时间**
![](../../assets/start5.jpg)
6. 在费用计算区域,选择资源计费模式和使用时长.<br>说明:如果是自备服务器则无需设置计费模式和使用时长,仅在使用自动分配云服务器时需要设置计费模式和使用时长
![](../../assets/start6.jpg)
请根据需要选择**资源计费模式****使用时长**
+ 支持按天、按月和按年计费,根据实际需求选择计费方式和时长。如果没有某种计费模式,则是当前云资源套餐未开通这种计费模式。
+ 如果有自动续费需求,可勾选开启自动续费。
+ 费用说明:创建联盟链的费用包括链管理费、节点费和云资源费。链管理费由节点所有者的数量决定,单企业联盟只需收取一次费用;节点费则是一个节点收取一次费用;云资源费则是由系统管理员设置的云资源套餐费用。
7.**费用配置**区域,确认费用无异常后单击**提交订单**
![](../../assets/start7.jpg)
8.**确认订单**导航页签下,确认订单信息,然后单击**确认**
9.**付款**导航页签下,确认订单支付金额,确认无误后单击确认付款。<br>如果您的当前余额不足以支付该订单金额,支持直接在当前页面进行充值。
支付订单完成后,返回联盟链页面,可以查看到已创建的单企业联盟链。创建单企业联盟链会自动生成一个以“企业名称+时间戳”命名的联盟,在企业控制台无法部署联盟链节点,您需要切换到联盟控制台进行操作,相关操作,请参见管理联盟链节点。
\ No newline at end of file
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment