Skip to content

Commit

Permalink
Merge pull request #200 from WeBankBlockchain/release-1.2.0
Browse files Browse the repository at this point in the history
Release 1.2.0
  • Loading branch information
JimmyShi22 authored Aug 20, 2021
2 parents fc8986c + 34c2dda commit 7353988
Show file tree
Hide file tree
Showing 19 changed files with 701 additions and 60 deletions.
6 changes: 3 additions & 3 deletions conf.py
Original file line number Diff line number Diff line change
Expand Up @@ -108,9 +108,9 @@ def _patched_fetch_urls(lfs_url, oid_list):
# built documents.
#
# The short X.Y version.
version = '1.1.1'
version = '1.2.0'
# The full version, including alpha/beta/rc tags.
release = 'v1.1.1'
release = 'v1.2.0'

# The language for content autogenerated by Sphinx. Refer to documentation
# for a list of supported languages.
Expand Down Expand Up @@ -169,7 +169,7 @@ def _patched_fetch_urls(lfs_url, oid_list):
"display_github": True, # Integrate GitHub
"github_repo": "WeCross", # Repo name
"github_user": "fisco-dev",
"github_version": "1.1.1", # Version
"github_version": "1.2.0", # Version
"conf_py_path": "/", # Path in the checkout to the docs root
}

Expand Down
4 changes: 2 additions & 2 deletions docs/dev/sdk.md
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ WeCross 跨链路由向外部暴露了所有的UBI接口,开发者可以通过
- gradle:

```gradle
compile ('com.webank:wecross-java-sdk:1.1.1')
compile ('com.webank:wecross-java-sdk:1.2.0')
```

- maven:
Expand All @@ -28,7 +28,7 @@ compile ('com.webank:wecross-java-sdk:1.1.1')
<dependency>
<groupId>com.webank</groupId>
<artifactId>wecross-java-sdk</artifactId>
<version>1.1.1</version>
<version>1.2.0</version>
</dependency>
```

Expand Down
5 changes: 4 additions & 1 deletion docs/manual/config.md
Original file line number Diff line number Diff line change
Expand Up @@ -39,6 +39,7 @@ WeCross Router的配置位于`conf`目录下,分为:
[common]
zone = 'payment'
visible = true
enableAccessControl = false

[chains]
path = 'classpath:chains'
Expand Down Expand Up @@ -75,7 +76,7 @@ WeCross Router的配置位于`conf`目录下,分为:
caCert = 'classpath:ca.crt'
maxTotal = 200
maxPerRoute = 8

allowNameToken = false

#[[htlc]]
# selfPath = 'payment.bcos.htlc'
Expand All @@ -90,6 +91,7 @@ WeCross Router的配置位于`conf`目录下,分为:
- `[common]` 通用配置
- zone:字符串;跨链分区标识符;通常一种跨链业务/应用为一个跨链分区
- visible:布尔;可见性;标明当前跨链分区下的资源是否对其他跨链分区可见
- enableAccessControl:布尔;是否开启权限控制,开启后,仅admin账户可访问所有资源,普通账户需admin账户在网页管理台中为其授权后才可访问相应资源
- `[chains]` 链配置
- path:字符串;链配置的根目录;WeCross从该目录下去加载各个链的配置
- `[rpc]` RPC配置
Expand Down Expand Up @@ -123,6 +125,7 @@ WeCross Router的配置位于`conf`目录下,分为:
- caCert:字符串;WeCross Router私钥路径
- maxTotal(可选):整型,连接Account Manager的连接池maxTotal参数,默认200
- maxPerRoute(可选):整型,连接Account Manager的连接池maxPerRoute参数,默认8
- allowNameToken (可选):布尔类型,用于适配外部登录系统,设置为true后router取消对登录token的校验,直接将token作为登陆者id,在大多数场景下此配置应为false
- `[htlc]` htlc配置(可选)
- selfPath:本地配置的htlc合约资源路径
- account1:可调用本地配置的htlc合约的账户
Expand Down
7 changes: 4 additions & 3 deletions docs/manual/console.md
Original file line number Diff line number Diff line change
Expand Up @@ -157,7 +157,7 @@ cd ~/wecross/WeCross-Console
bash start.sh
# 输出下述信息表明启动成功
=============================================================================================
Welcome to WeCross console(v1.1.1)!
Welcome to WeCross console(v1.2.0)!
Type 'help' or 'h' for help. Type 'quit' or 'q' to quit console.

=============================================================================================
Expand Down Expand Up @@ -339,8 +339,9 @@ username: org1-admin
pubKey : 3059301306...
uaID : 3059301306...
#添加Fabric链账号
[WeCross.org1-admin]> addChainAccount Fabric1.4 conf/accounts/fabric_admin/account.crt conf/accounts/fabric_admin/account.key Org1 true
#添加Fabric链账号,机构名请以实际为准,这里的机构名以Org1MSP为例
[WeCross.org1-admin]> addChainAccount Fabric1.4 conf/accounts/fabric_admin/account.crt conf/accounts/fabric_admin/account.key Org1MSP true
Universal Account info has been changed, now auto-login again.
Result: success
=============================================================================================
Expand Down
2 changes: 2 additions & 0 deletions docs/manual/webApp.md
Original file line number Diff line number Diff line change
Expand Up @@ -221,6 +221,8 @@ WeCross网页管理平台共包含以下功能模块:

添加Hyperledger Fabric链类型的账户方式如下图所示,目前只支持自行上传私钥、公钥证书的方式添加Fabric链类型账户。**注意:** Hyperledger Fabric账号只支持上传`PEM、KeyStore`类型的私钥、`CRT`格式的证书。

MSPID为Fabric链账户所在的MembershipID,请以实际情况为准,这里以Org1MSP为例。( **注意:** 输入错误将导致不能使用该链账户发起Fabric交易调用)

![](../images/webApp/addFabricAccount.png)

点击链账户中的任意一行,可查看该链账户的详细信息,如下图所示。可点击红框1查看私钥详细信息,点击红框2删除该链账户。
Expand Down
1 change: 0 additions & 1 deletion docs/stubs/fabric.md
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,6 @@

```eval_rst
.. important::
- 目前支持的Fabric链版本为1.4
- 若还未完成WeCross搭建,请参考 `部署指南 <../tutorial/deploy/index.html>`_
- 以下教程的目录结构基于 `部署指南 <../tutorial/deploy/index.html>`_ 搭建的WeCross环境作介绍
```
Expand Down
288 changes: 288 additions & 0 deletions docs/stubs/fabric2.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,288 @@
# 接入Hyperledger Fabric 2

[WeCross-Fabric2-Stub](https://github.com/WeBankBlockchain/WeCross-Fabric2-Stub)作为WeCross的插件,让跨链路由具备接入Hyperledger Fabric 2的能力。本章节将介绍如何基于Fabric插件接入Hyperledger Fabric链,内容包括:

* 搭建区块链
* 安装插件
* 配置内置账户
* 配置插件
* 部署系统合约

```eval_rst
.. important::
- 若还未完成WeCross搭建,请参考 `部署指南 <../tutorial/deploy/index.html>`_
- 以下教程的目录结构基于 `部署指南 <../tutorial/deploy/index.html>`_ 搭建的WeCross环境作介绍
```

WeCross-Fabric2-Stub源码访问地址:

* [GitHub访问地址](https://github.com/WeBankBlockchain/WeCross-Fabric2-Stub)
* [Gitee访问地址](https://gitee.com/WeBank/WeCross-Fabric2-Stub)

## 1. 搭建区块链

如果已存在Fabric链,不需搭建新链,可跳过本节内容。

为方便Fabric链的搭建,WeCross Demo包中提供了Fabric链搭建脚本。若下载较慢,可选择[更多下载方式](../version/download.html#wecross-demo)

``` bash
mkdir -p ~/wecross-networks/fabric && cd ~/wecross-networks/fabric

# 下载Demo包
bash <(curl -sL https://github.com/WeBankBlockchain/wecross/releases/download/resources/download_demo.sh)

# 若出现长时间下载Demo包失败,请尝试以下命令重新下载:
bash <(curl -sL https://gitee.com/WeBank/WeCross/raw/master/scripts/download_demo.sh)

# 拷贝其中的Fabric demo链环境
cp ./wecross-demo/fabric2/* ./

# 搭链,若出错,执行 bash clear.sh 后重新 bash build.sh
bash build.sh
```

搭建成功,查看Fabric链各个容器运行状态。

``` bash
docker ps
```

可看到各个容器的状态:

``` bash
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
22355c5e1cb5 hyperledger/fabric-tools:2.3.0 "/bin/bash" 2 minutes ago Up 2 minutes cli
43749216ed56 hyperledger/fabric-peer:2.3.0 "peer node start" 2 minutes ago Up 2 minutes 7051/tcp, 0.0.0.0:9051->9051/tcp peer0.org2.example.com
5d8e86ea87d2 hyperledger/fabric-orderer:2.3.0 "orderer" 2 minutes ago Up 2 minutes 0.0.0.0:7050->7050/tcp, 0.0.0.0:7053->7053/tcp orderer.example.com
a510273be2fb hyperledger/fabric-peer:2.3.0 "peer node start" 2 minutes ago Up 2 minutes 0.0.0.0:7051->7051/tcp peer0.org1.example.com
```

## 2. 安装插件

基于[部署指南](../tutorial/deploy/index.html)搭建的WeCross,已完成插件的安装,位于跨链路由的`plugin`目录,可跳过本节内容。

```bash
plugin/
|-- bcos2-stub-gm-xxxx.jar
|-- bcos2-stub-xxxx.jar
|-- fabric1-stub-xxxx.jar
└-- fabric2-stub-xxxx.jar # Fabric2插件
```

用户如有特殊需求,可以自行编译,替换`plugin`目录下的插件。

### 2.1 下载编译

```shell
git clone https://github.com/WeBankBlockchain/WeCross-Fabric2-Stub.git

# 若因网络原因出现长时间拉取代码失败,请尝试以下命令:
git clone https://gitee.com/WeBank/WeCross-Fabric2-Stub.git

cd WeCross-Fabric2-Stub
bash gradlew assemble # 在 dist/apps/ 下生成 fabric2-stub-XXXXX.jar
```

### 2.2 拷贝安装
在跨链路由的主目录下创建plugin目录,然后将插件拷贝到该目录下完成安装。

``` bash
cp dist/apps/* ~/wecross-networks/routers-payment/127.0.0.1-8251-25501/plugin/
```

**注:若跨链路由中配置了两个相同的插件,插件冲突,会导致跨链路由启动失败。**

## 3. 配置内置账户

在跨链路由中需配置用于与Fabric链进行交互的内置账户。内置账户需配置多个:

- admin账户:必配,一个admin账户,用于接入此Fabric链
- 机构admin账户:选配,每个Fabric的Org配置一个admin账户,用于在每个Org上部署系统合约

### 3.1 生成账户配置框架

```shell
# 切换至对应跨链路由的主目录
cd ~/wecross-networks/routers-payment/127.0.0.1-8251-25501/

# 用脚本生成Fabric账户配置:账户类型(Fabric1.4),账户名(fabric_admin)
# 接入Fabric链,需要配置一个admin账户
bash add_account.sh -t Fabric2.0 -n fabric2_admin


# 为Fabric链的每个Org都配置一个admin账户,此处有两个org(Org1和Org2),分别配两个账户

# 配Org1的admin
bash add_account.sh -t Fabric2.0 -n fabric2_admin_org1

# 配Org2的admin
bash add_account.sh -t Fabric2.0 -n fabric2_admin_org2
```

### 3.2 完成配置

**修改账户配置**

生成的账户配置,默认的`mspid`为Org1MSP,需将Org2的账户的`mspid`配置为Org2MSP的。此处只需修改fabric2_admin_org2账户的配置。

```shell
vim conf/accounts/fabric2_admin_org2/account.toml

# 修改mspid,将 'Org1MSP' 更改为 'Org2MSP'
```

**拷贝证书文件**

Fabric链的证书位于`organizations`目录,请参考以下命令并**根据实际情况**完成相关证书的拷贝。

```shell
cd ~/wecross-networks/routers-payment/127.0.0.1-8251-25501

# 配置fabric_admin
# 拷贝私钥
cp xxxxxx/peerOrganizations/org1.example.com/users/[email protected]/msp/keystore/*_sk conf/accounts/fabric2_admin/account.key
# 拷贝证书
cp xxxxxx/peerOrganizations/org1.example.com/users/[email protected]/msp/signcerts/[email protected] conf/accounts/fabric2_admin/account.crt

# 配置fabric_admin_org1
# 拷贝私钥
cp xxxxxx/peerOrganizations/org1.example.com/users/[email protected]/msp/keystore/*_sk conf/accounts/fabric2_admin_org1/account.key
# 拷贝证书
cp xxxxxx/peerOrganizations/org1.example.com/users/[email protected]/msp/signcerts/[email protected] conf/accounts/fabric2_admin_org1/account.crt

# 配置fabric_admin_org2
# 拷贝私钥
cp xxxxxx/peerOrganizations/org2.example.com/users/[email protected]/msp/keystore/*_sk conf/accounts/fabric2_admin_org2/account.key
# 拷贝证书
cp xxxxxx/peerOrganizations/org2.example.com/users/[email protected]/msp/signcerts/[email protected] conf/accounts/fabric2_admin_org2/account.crt
```

完成证书拷贝后,账户目录结构如下:

```shell
tree conf/accounts/
conf/accounts/
├── fabric2_admin
│   ├── account.crt
│   ├── account.key
│   └── account.toml
├── fabric2_admin_org1
│   ├── account.crt
│   ├── account.key
│   └── account.toml
└── fabric2_admin_org2
├── account.crt
├── account.key
└── account.toml
```

## 4. 配置插件

### 4.1 生成插件配置框架

进入跨链路由的主目录,用`add_chain.sh`脚本在`conf`目录下生成Fabric链的配置框架。

```shell
cd ~/wecross-networks/routers-payment/127.0.0.1-8251-25501

# -t 链类型,-n 指定链名字,可根据-h查看使用说明
bash add_chain.sh -t Fabric2.0 -n fabric2
```

执行成功,输出如下。如果执行出错,请查看屏幕打印提示。

```shell
SUCCESS: Chain "fabric2" config framework has been generated to "conf/chains/fabric2"
```

生成的目录结构如下:

```shell
tree conf/chains/fabric2/ -L 2
conf/chains/fabric2/
├── chaincode
│   ├── WeCrossHub # 桥接合约代码目录
│   └── WeCrossProxy # 代理合约代码目录
└── stub.toml # 插件配置文件
```

### 4.2 完成配置

**拷贝证书**

相关证书同样位于`organizations`目录,请参考以下命令并**根据实际情况**完成相关证书的拷贝。

```shell
# 假设当前位于跨链路由的主目录
# 拷贝orderer证书
cp xxxxxx/ordererOrganizations/example.com/orderers/orderer.example.com/msp/tlscacerts/tlsca.example.com-cert.pem conf/chains/fabric2/orderer-tlsca.crt

# 拷贝org1证书
cp xxxxxx/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/tls/ca.crt conf/chains/fabric2/org1-tlsca.crt

# 拷贝org2证书
cp xxxxxx/peerOrganizations/org2.example.com/peers/peer0.org2.example.com/tls/ca.crt conf/chains/fabric2/org2-tlsca.crt
```

**编辑配置文件**

插件配置文件`stub.toml`配置项包括:

- 配置资源信息
- 配置SDK连接信息,与链进行交互

根据实际情况编辑`[fabricServices]``[orgs]`的各个配置项。

```toml
[common]
name = 'fabric2' # 指定的连接的链的名字,与该配置文件所在的目录名一致,对应path中的{zone}/{chain}/{resource}的chain
type = 'Fabric2.0' # 插件的类型

[fabricServices]
channelName = 'mychannel'
orgUserName = 'fabric2_admin' # 指定一个机构的admin账户,用于与orderer通信
ordererTlsCaFile = 'orderer-tlsca.crt' # orderer证书名字,指向与此配置文件相同目录下的证书
ordererAddress = 'grpcs://localhost:7050' # orderer的url

[orgs] # 机构节点列表
[orgs.Org1] # 机构1:Org1
tlsCaFile = 'org1-tlsca.crt' # Org1的证书
adminName = 'fabric2_admin_org1' # Org1的admin账户,在下一步骤中配置
endorsers = ['grpcs://localhost:7051'] # endorser的ip:port列表,可配置多个

[orgs.Org2] # 机构2:Org2
tlsCaFile = 'org2-tlsca.crt' # Org2的证书
adminName = 'fabric2_admin_org2' # Org2的admin账户,在下一步骤中配置
endorsers = ['grpcs://localhost:9051'] # endorser的ip:port列表,可配置多个
```

## 5. 部署系统合约

每个Stub需要部署两个系统合约,分别是代理合约和桥接合约,代理合约负责管理事务以及业务合约的调用,桥接合约用于记录合约跨链请求。在跨链路由主目录执行以下命令:

```shell
# 部署代理合约
bash deploy_system_contract.sh -t Fabric2.0 -c chains/fabric2 -P

# 部署桥接合约
bash deploy_system_contract.sh -t Fabric2.0 -c chains/fabric2 -H

# 若后续有更新系统合约的需求,首先更新conf/chains/fabric下的系统合约代码,在上述命令添加-u参数,执行并重启跨链路由
```

部署成功,则输出如下内容。若失败可查看提示信息和错误日志。

``` bash
SUCCESS: WeCrossProxy has been deployed to chains/fabric2
SUCCESS: WeCrossHub has been deployed to chains/fabric2
```

重启跨链路由

``` bash
bash stop.sh
bash start.sh
```



Loading

0 comments on commit 7353988

Please sign in to comment.