手动组网

本文档介绍以手动的方式,一步步搭建一个与Demo相同的跨链网络。

../../_images/demo.png

快速部署

本章指导完成跨链路由跨链控制台的部署。

  • 跨链路由:与区块链节点对接,并彼此互连,形成跨链分区,负责跨链请求的转发
  • 跨链控制台:查询和发送交易的操作终端

../../_images/routers.png

操作以~/wecross/目录下为例进行。若Demo未清理,请先清理Demo环境

  1. mkdir -p ~/wecross/ && cd ~/wecross/

部署 WeCross Router

下载WeCross,用WeCross中的工具生成跨链路由,并启动跨链路由。

下载WeCross

WeCross中包含了生成跨链路由的工具,执行以下命令进行下载(提供三种下载方式,可根据网络环境选择合适的方式进行下载),程序下载至当前目录WeCross/中。

  1. bash <(curl -sL https://github.com/WeBankFinTech/WeCross/releases/download/resources/download_wecross.sh)

生成跨链路由

本例将构建两个跨链路由。首先创建一个ipfile配置文件,将需要构建的两个跨链路由信息(ip:rpc_port:p2p_port)按行分隔,保存到文件中。

:请确保机器的82508251, 2550025501端口没有被占用。

  1. cd ~/wecross
  2. vim ipfile
  3.  
  4. # 在文件中键入以下内容
  5. 127.0.0.1:8250:25500
  6. 127.0.0.1:8251:25501

生成好ipfile文件后,使用脚本build_wecross.sh生成两个跨链路由。

  1. # -f 表示以文件为输入
  2. bash ./WeCross/build_wecross.sh -n payment -o routers-payment -f ipfile
  3.  
  4. # 成功输出如下信息
  5. [INFO] Create routers-payment/127.0.0.1-8250-25500 successfully
  6. [INFO] Create routers-payment/127.0.0.1-8251-25501 successfully
  7. [INFO] All completed. WeCross routers are generated in: routers-payment/

注解

  • -n 指定跨链分区标识符(zone id),跨链分区通过zone id进行区分,可以理解为业务名称。
  • -o 指定输出的目录,并在该目录下生成一个跨链路由。
  • -f 指定需要生成的WeCross跨链路由的列表,包括ip地址,rpc端口,p2p端口,生成后的router已完成互联配置。

在routers-payment目录下生成了两个跨链路由。

  1. tree routers-payment/ -L 1
  2. routers-payment/
  3. ├── 127.0.0.1-8251-25501
  4. ├── 127.0.0.1-8252-25502
  5. └── cert

生成的跨链路由目录内容如下,以127.0.0.1-8250-25500为例。

  1. # 已屏蔽lib目录,该目录存放所有依赖的jar包
  2. tree routers-payment/127.0.0.1-8250-25500/ -I "lib"
  3. routers-payment/127.0.0.1-8250-25500/
  4. ├── add_account.sh # 账户生成脚本
  5. ├── add_chain.sh # 区块链配置文件创建脚本
  6. ├── apps
  7.    └── WeCross.jar # WeCross路由jar包
  8. ├── build_wecross.sh
  9. ├── conf # 配置文件目录
  10.    ├── accounts # 账户配置目录
  11.    ├── application.properties
  12.    ├── chains # 区块链配置目录,要接入不同的链,在此目录下进行配置
  13.    ├── log4j2.xml
  14.    ├── ca.crt # 根证书
  15.    ├── ssl.crt # 跨链路由证书
  16.    ├── ssl.key # 跨链路由私钥
  17.    ├── node.nodeid # 跨链路由nodeid
  18.    └── wecross.toml # WeCross Router主配置文件
  19. ├── create_cert.sh # 证书生成脚本
  20. ├── download_wecross.sh
  21. ├── plugin # 插件目录,接入相应类型链的插件
  22.    ├── bcos-stub-gm.jar
  23.    ├── bcos-stub.jar
  24.    └── fabric-stub.jar
  25. ├── start.sh # 启动脚本
  26. └── stop.sh # 停止脚本

启动跨链路由

  1. # 启动 router-8250
  2. cd ~/wecross/routers-payment/127.0.0.1-8250-25500/
  3. bash start.sh # 停止: bash stop.sh
  4.  
  5. # 启动 router-8251
  6. cd ~/wecross/routers-payment/127.0.0.1-8251-25501/
  7. bash start.sh # 停止: bash stop.sh

启动成功,输出如下:

  1. WeCross booting up .........
  2. WeCross start successfully

如果启动失败,检查8250, 25500端口是否被占用。

  1. netstat -napl | grep 8250
  2. netstat -napl | grep 25500
  3. netstat -napl | grep 8251
  4. netstat -napl | grep 25501

部署WeCross控制台

WeCross提供了控制台,方便用户进行跨链开发和调试。可通过脚本build_console.sh搭建控制台。

下载WeCross控制台

执行如下命令进行下载(提供三种下载方式,可根据网络环境选择合适的方式进行下载),下载完成后在当前目录下生成WeCross-Console目录。

  1. cd ~/wecross/
  2. bash <(curl -sL https://github.com/WeBankFinTech/WeCross/releases/download/resources/download_console.sh)

配置控制台

  1. cd ~/wecross/WeCross-Console
  2. # 拷贝连接router所需的TLS证书,从生成的routers-payment/cert/sdk目录下拷贝
  3. cp ~/wecross/routers-payment/cert/sdk/* conf/ # 包含:ca.crt、node.nodeid、ssl.crt、ssl.key
  4. # 拷贝配置文件,并配置跨链路由RPC服务地址以及端口。此处采用默认配置,默认连接至本地8250端口。
  5. cp conf/application-sample.toml conf/application.toml

重要

  • 若搭建WeCross的IP和端口未使用默认配置,需自行更改WeCross-Console/conf/application.toml,详见 控制台配置

启动控制台

  1. bash start.sh

启动成功则输出如下信息,通过help可查看控制台帮助

  1. =================================================================================
  2. Welcome to WeCross console(v1.0.0-rc2)!
  3. Type 'help' or 'h' for help. Type 'quit' or 'q' to quit console.
  4. =================================================================================

测试功能

  1. # 查看连接的router当前支持接入的链类型
  2. [WeCross]> supportedStubs
  3. [BCOS2.0, GM_BCOS2.0, Fabric1.4]
  4.  
  5. # 退出控制台
  6. [server1]> q

更多控制台命令及含义详见控制台命令

接入区块链

完成了WeCross的部署,如何让它和一条真实的区块链交互,相信优秀的您一定在跃跃欲试。本节包括

  • 接入BCOS链:在router-8250上接入,配置交易发送账户
  • 接入Fabric链:在router-8251上接入,配置交易发送账户

../../_images/demo.png

搭建区块链

在接入区块链前,先给出BCOS和Fabric链的搭建过程。

搭建BCOS链

FISCO BCOS官方提供了一键搭链的教程,详见单群组FISCO BCOS联盟链的搭建

详细步骤如下:

  • 脚本建链
  1. # 创建操作目录
  2. mkdir -p ~/wecross/bcos && cd ~/wecross/bcos
  3.  
  4. # 下载build_chain.sh脚本
  5. curl -LO https://github.com/FISCO-BCOS/FISCO-BCOS/releases/download/v2.4.0/build_chain.sh && chmod u+x build_chain.sh
  6.  
  7. # 搭建单群组4节点联盟链
  8. # 在fisco目录下执行下面的指令,生成一条单群组4节点的FISCO链。请确保机器的30300~30303,20200~20203,8545~8548端口没有被占用。
  9. # 命令执行成功会输出All completed。如果执行出错,请检查nodes/build.log文件中的错误信息。
  10. bash build_chain.sh -l "127.0.0.1:4" -p 30300,20200,8545
  • 启动所有节点
  1. bash nodes/127.0.0.1/start_all.sh

启动成功会输出类似下面内容的响应。否则请使用netstat -an | grep tcp检查机器的30300~30303,20200~20203,8545~8548端口是否被占用。

  1. try to start node0
  2. try to start node1
  3. try to start node2
  4. try to start node3
  5. node1 start successfully
  6. node2 start successfully
  7. node0 start successfully
  8. node3 start successfully

部署HelloWeCross合约

通过FISCO BCOS控制台部署HelloWeCross合约,控制台的安装和使用详见官方文档配置及使用控制台

HelloWeCros合约位于~/wecross/routers-payment/127.0.0.1-8250-25500/conf/chains-sample/bcos/

控制台安装配置完后启动并部署HelloWeCross.sol,详细步骤如下:

  • 安装控制台
  1. # 获取控制台
  2. cd ~/wecross/bcos/nodes/127.0.0.1/
  3. bash download_console.sh -v 1.0.9
  4.  
  5. # 拷贝控制台配置文件
  6. # 若节点未采用默认端口,请将文件中的20200替换成节点对应的channle端口。
  7. cp -n console/conf/applicationContext-sample.xml console/conf/applicationContext.xml
  8.  
  9. # 配置控制台证书
  10. cp ~/wecross/bcos/nodes/127.0.0.1/sdk/* console/conf/
  • 拷贝合约文件

HelloWeCross合约拷贝至FISCO BCOS控制台目录。

  1. cp ~/wecross/routers-payment/127.0.0.1-8250-25500/conf/chains-sample/bcos/HelloWeCross.sol console/contracts/solidity/
  • 启动控制台
  1. bash console/start.sh

输出下述信息表明启动成功,否则请检查conf/applicationContext.xml中节点端口配置是否正确。

  1. =============================================================================================
  2. Welcome to FISCO BCOS console(1.0.9)!
  3. Type 'help' or 'h' for help. Type 'quit' or 'q' to quit console.
  4. ________ ______ ______ ______ ______ _______ ______ ______ ______
  5. | \| \ / \ / \ / \ | \ / \ / \ / \
  6. | $$$$$$$$ \$$$$$$| $$$$$$\| $$$$$$\| $$$$$$\ | $$$$$$$\| $$$$$$\| $$$$$$\| $$$$$$\
  7. | $$__ | $$ | $$___\$$| $$ \$$| $$ | $$ | $$__/ $$| $$ \$$| $$ | $$| $$___\$$
  8. | $$ \ | $$ \$$ \ | $$ | $$ | $$ | $$ $$| $$ | $$ | $$ \$$ \
  9. | $$$$$ | $$ _\$$$$$$\| $$ __ | $$ | $$ | $$$$$$$\| $$ __ | $$ | $$ _\$$$$$$\
  10. | $$ _| $$_ | \__| $$| $$__/ \| $$__/ $$ | $$__/ $$| $$__/ \| $$__/ $$| \__| $$
  11. | $$ | $$ \ \$$ $$ \$$ $$ \$$ $$ | $$ $$ \$$ $$ \$$ $$ \$$ $$
  12. \$$ \$$$$$$ \$$$$$$ \$$$$$$ \$$$$$$ \$$$$$$$ \$$$$$$ \$$$$$$ \$$$$$$
  13.  
  14. =============================================================================================
  • 部署合约
  1. [group:1]> deploy HelloWeCross
  2. contract address: 0x19a70c01e801d3cac241de5f11686e3aa01e463b
  3. # 退出控制台
  4. [group:1]> quit

HelloWeCross的合约地址记录下来,后续步骤中使用:

contract address: 0x19a70c01e801d3cac241de5f11686e3aa01e463b

搭建Fabric链

为方便Fabric链的搭建,WeCross Demo包中提供了Fabric链搭建脚本。若下载较慢,可选择更多下载方式

  1. mkdir -p ~/wecross/fabric && cd ~/wecross/fabric
  2.  
  3. # 下载Demo包
  4. bash <(curl -sL https://github.com/WeBankFinTech/WeCross/releases/download/resources/download_demo.sh)
  5. cp demo/fabric/* ./
  6.  
  7. # 搭建
  8. bash build.sh # 若出错,执行 bash clear.sh 后重新 bash build.sh

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

  1. docker ps

可看到各个容器的状态:

  1. CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
  2. 3b55f9681227 dev-peer1.org2.example.com-mycc-1.0-26c2ef32838554aac4f7ad6f100aca865e87959c9a126e86d764c8d01f8346ab "chaincode -peer.add…" 13 minutes ago Up 13 minutes dev-peer1.org2.example.com-mycc-1.0
  3. 2d8d660c9481 dev-peer0.org1.example.com-mycc-1.0-384f11f484b9302df90b453200cfb25174305fce8f53f4e94d45ee3b6cab0ce9 "chaincode -peer.add…" 13 minutes ago Up 13 minutes dev-peer0.org1.example.com-mycc-1.0
  4. b82b0b8dcc0f dev-peer0.org2.example.com-mycc-1.0-15b571b3ce849066b7ec74497da3b27e54e0df1345daff3951b94245ce09c42b "chaincode -peer.add…" 14 minutes ago Up 14 minutes dev-peer0.org2.example.com-mycc-1.0
  5. 441ca8a493fc hyperledger/fabric-tools:latest "/bin/bash" 14 minutes ago Up 14 minutes cli
  6. de0d32730926 hyperledger/fabric-peer:latest "peer node start" 14 minutes ago Up 14 minutes 0.0.0.0:9051->9051/tcp peer0.org2.example.com
  7. ad98565bfa57 hyperledger/fabric-peer:latest "peer node start" 14 minutes ago Up 14 minutes 0.0.0.0:10051->10051/tcp peer1.org2.example.com
  8. bf0d9b0c54bf hyperledger/fabric-peer:latest "peer node start" 14 minutes ago Up 14 minutes 0.0.0.0:8051->8051/tcp peer1.org1.example.com
  9. b4118a65f01a hyperledger/fabric-orderer:latest "orderer" 14 minutes ago Up 14 minutes 0.0.0.0:7050->7050/tcp orderer.example.com
  10. fcf1bfe17dbe hyperledger/fabric-peer:latest "peer node start" 14 minutes ago Up 14 minutes 0.0.0.0:7051->7051/tcp peer0.org1.example.com

接入BCOS链

添加账户

在router中添加用于向链上发交易的账户。账户配置好后,可通过跨链网络向相应的链发交易,交易可被router转发至对应的链上。

添加BCOS账户

所配置的账户可用于向BCOS2.0类型的链发交易。

  1. # 切换至对应router的目录下
  2. cd ~/wecross/routers-payment/127.0.0.1-8250-25500/
  3.  
  4. # 用脚本生成BCOS账户:账户类型(BCOS2.0),账户名(bcos_user1)
  5. bash add_account.sh -t BCOS2.0 -n bcos_user1

生成的bcos_user1文件目录如下:

  1. tree conf/accounts/bcos_user1/
  2. conf/accounts/bcos_user1/
  3. ├── account.key
  4. └── account.toml

添加Fabric账户

所配置的账户可用于向Fabric1.4类型的链发交易。

  1. # 用脚本生成Fabric账户:账户类型(Fabric1.4),账户名(fabric_user1)
  2. bash add_account.sh -t Fabric1.4 -n fabric_user1
  3. cp ~/wecross/fabric/certs/accounts/fabric_user1/* conf/accounts/fabric_user1/ # 拷贝 Fabric链的证书,具体说明请参考《跨链接入》章节

生成的fabric_user1文件目录如下:

  1. tree conf/accounts/fabric_user1/
  2. conf/accounts/fabric_user1/
  3. ├── account.crt
  4. ├── account.key
  5. └── account.toml

配置接入BCOS链

为router添加需要接入的链配置。

生成配置文件

切换至跨链路由的目录,用 add_chain.sh 脚本在conf目录下生成bcos的配置文件框架。

  1. cd ~/wecross/routers-payment/127.0.0.1-8250-25500
  2. # -t 链类型,-n 指定链名字
  3. bash add_chain.sh -t BCOS2.0 -n bcos

生成的目录结构如下:

  1. tree conf/chains/bcos
  2. conf/chains/bcos
  3. └── stub.toml # chain配置文件

命令执行成功会输出operator: chain type: BCOS2.0 path: conf/chains/bcos,如果执行出错,请查看屏幕打印提示。

之后只需要配置证书、群组以及资源信息。

配置BCOS节点连接

  • 拷贝证书
  1. cp ~/wecross/bcos/nodes/127.0.0.1/sdk/* conf/chains/bcos/
  • 修改配置
  1. vim conf/chains/bcos/stub.toml

如果搭FISCO BCOS链采用的都是默认配置,那么将会得到一条单群组四节点的链,群组ID为1,可连接至节点0的channel端口20200,则配置如下:

  1. [chain]
  2. groupId = 1 # default 1
  3. chainId = 1 # default 1
  4.  
  5. [channelService]
  6. caCert = 'ca.crt'
  7. sslCert = 'sdk.crt'
  8. sslKey = 'sdk.key'
  9. timeout = 300000 # ms, default 60000ms
  10. connectionsStr = ['127.0.0.1:20200']

配置跨链资源

stub.toml文件中配置HelloWeCross合约资源信息,让此跨链路由能够访问此合约。可将配置中多余的资源配置举例删除

在前面的步骤中,已经通过FISCO BCOS控制台部署了一个HelloWeCross合约,地址为0x19a70c01e801d3cac241de5f11686e3aa01e463b,将contractAddress配置为该地址中。

  1. [[resources]]
  2. # name cannot be repeated
  3. name = 'HelloWeCross'
  4. type = 'BCOS_CONTRACT'
  5. contractAddress = '0x19a70c01e801d3cac241de5f11686e3aa01e463b'

完整配置

此时已完成bcos的连接配置,并注册了一个合约资源,最终的stub.toml文件如下。参考此处获取更详尽的配置说明

  1. [common]
  2. name = 'bcos'
  3. type = 'BCOS2.0' # BCOS
  4.  
  5. [chain]
  6. groupId = 1 # default 1
  7. chainId = 1 # default 1
  8.  
  9. [channelService]
  10. caCert = 'ca.crt'
  11. sslCert = 'sdk.crt'
  12. sslKey = 'sdk.key'
  13. timeout = 300000 # ms, default 60000ms
  14. connectionsStr = ['127.0.0.1:20200']
  15.  
  16. # resources is a list
  17. [[resources]]
  18. # name cannot be repeated
  19. name = 'HelloWeCross'
  20. type = 'BCOS_CONTRACT'
  21. contractAddress = '0x19a70c01e801d3cac241de5f11686e3aa01e463b'

启动路由

启动跨链路由加载已配置的跨链资源。

  1. cd ~/wecross/routers-payment/127.0.0.1-8250-25500
  2.  
  3. # 若WeCross跨链路由未停止,需要先停止
  4. bash stop.sh
  5.  
  6. # 重新启动
  7. bash start.sh

检查日志,可看到刷出已加载的跨链资源,ctrl + c 退出。

  1. tail -f logs/info.log |grep "active resources"
  2.  
  3. 2020-04-24 20:07:20.966 [Thread-4] INFO WeCrossHost() - Current active resources: payment.bcos.HelloWeCross(local)
  4. 2020-04-24 20:07:30.973 [Thread-4] INFO WeCrossHost() - Current active resources: payment.bcos.HelloWeCross(local)
  5. 2020-04-24 20:07:40.980 [Thread-4] INFO WeCrossHost() - Current active resources: payment.bcos.HelloWeCross(local)

接入Fabric链

添加账户

在router中添加用于向链上发交易的账户。

添加Fabric账户

  1. # 切换至对应router的目录下
  2. cd ~/wecross/routers-payment/127.0.0.1-8251-25501/
  3.  
  4. # 用脚本生成Fabric账户配置:账户类型(Fabric1.4),账户名(fabric_admin)
  5. # 接入Fabric链,需要配置一个admin账户
  6. bash add_account.sh -t Fabric1.4 -n fabric_admin
  7.  
  8. # 拷贝 Fabric链的证书,具体说明请参考《跨链接入》章节
  9. cp ~/wecross/fabric/certs/accounts/fabric_admin/* conf/accounts/fabric_admin/
  10.  
  11. # router-8250上配置的账户直接拷贝也可用
  12. cp -r ~/wecross/routers-payment/127.0.0.1-8250-25500/conf/accounts/fabric_user1 conf/accounts/

目前配置了两个账户,若此router需要向BCOS的链发交易,也可配置BCOS的账户。账户配置与接入的链无关,router间自动转发交易至相应的链。账户目录结构如下:

  1. tree conf/accounts
  2. conf/accounts
  3. ├── fabric_admin
  4.    ├── account.crt
  5.    ├── account.key
  6.    └── account.toml
  7. └── fabric_user1
  8. ├── account.crt
  9. ├── account.key
  10. └── account.toml

配置接入Fabric链

为router添加需要接入的链配置。

生成配置文件

切换至跨链路由的目录,用 add_chain.sh 脚本在conf目录下生成Fabric的配置文件框架。

  1. cd ~/wecross/routers-payment/127.0.0.1-8251-25501
  2. # -t 链类型,-n 指定链名字
  3. bash add_chain.sh -t Fabric1.4 -n fabric

生成的目录结构如下:

  1. tree conf/chains/fabric
  2. conf/chains/fabric
  3. └── stub.toml # chain配置文件

命令执行成功会输出operator: connection type: Fabric1.4 path: conf/chains//fabric,如果执行出错,请查看屏幕打印提示。

配置Fabric节点连接

  • 拷贝证书
  1. # 证书具体说明请参考《跨链接入》章节
  2. cp ~/wecross/fabric/certs/chains/fabric/* conf/chains/fabric/
  • 修改配置
  1. vim conf/chains/fabric/stub.toml

相关配置项使用默认即可。

  1. [fabricServices]
  2. channelName = 'mychannel'
  3. orgName = 'Org1'
  4. mspId = 'Org1MSP'
  5. orgUserName = 'fabric_admin'
  6. orgUserAccountPath = 'classpath:accounts/fabric_admin'
  7. ordererTlsCaFile = 'orderer-tlsca.crt'
  8. ordererAddress = 'grpcs://localhost:7050'
  9.  
  10. [peers]
  11. [peers.org1]
  12. peerTlsCaFile = 'org1-tlsca.crt'
  13. peerAddress = 'grpcs://localhost:7051'
  14. [peers.org2]
  15. peerTlsCaFile = 'org2-tlsca.crt'
  16. peerAddress = 'grpcs://localhost:9051'

配置跨链资源

  1. vim conf/chains/fabric/stub.toml

内容如下,fabric链中自带了一个名字为mycc的chaincode,此处将mycc配置为跨链资源,使其能够在WeCross网络中被调用。

  1. [[resources]]
  2. # name cannot be repeated
  3. name = 'abac'
  4. type = 'FABRIC_CONTRACT'
  5. chainCodeName = 'mycc'
  6. chainLanguage = "go"
  7. peers=['org1','org2']

完整配置

此时已完成fabric的连接配置,并注册了一个合约资源,最终的stub.toml文件如下。参考此处获取更详尽的配置说明

  1. [common]
  2. name = 'fabric'
  3. type = 'Fabric1.4'
  4.  
  5. [fabricServices]
  6. channelName = 'mychannel'
  7. orgName = 'Org1'
  8. mspId = 'Org1MSP'
  9. orgUserName = 'fabric_admin'
  10. orgUserAccountPath = 'classpath:accounts/fabric_admin'
  11. ordererTlsCaFile = 'orderer-tlsca.crt'
  12. ordererAddress = 'grpcs://localhost:7050'
  13.  
  14. [peers]
  15. [peers.org1]
  16. peerTlsCaFile = 'org1-tlsca.crt'
  17. peerAddress = 'grpcs://localhost:7051'
  18. [peers.org2]
  19. peerTlsCaFile = 'org2-tlsca.crt'
  20. peerAddress = 'grpcs://localhost:9051'
  21.  
  22. # resources is a list
  23. [[resources]]
  24. # name cannot be repeated
  25. name = 'abac'
  26. type = 'FABRIC_CONTRACT'
  27. chainCodeName = 'mycc'
  28. chainLanguage = "go"
  29. peers=['org1','org2']

启动路由

启动跨链路由加载配置好的跨链资源。

  1. cd ~/wecross/routers-payment/127.0.0.1-8251-25501
  2.  
  3. # 若WeCross跨链路由未停止,需要先停止
  4. bash stop.sh
  5.  
  6. # 重新启动
  7. bash start.sh

检查日志,可看到刷出已加载的跨链资源,ctrl + c 退出。

  1. tail -f logs/info.log |grep "active resources"
  2. 2020-04-24 20:30:30.444 [Thread-2] INFO WeCrossHost() - Current active resources: payment.bcos.HelloWeCross(remote), payment.fabric.abac(local)
  3. 2020-04-24 20:30:40.458 [Thread-2] INFO WeCrossHost() - Current active resources: payment.bcos.HelloWeCross(remote), payment.fabric.abac(local)
  4. 2020-04-24 20:30:50.469 [Thread-2] INFO WeCrossHost() - Current active resources: payment.bcos.HelloWeCross(remote), payment.fabric.abac(local)

调用跨链资源

至此,已搭建了如图所示的跨链网络,本节将用控制台调用跨链资源。开发者也可基于WeCross Java SDK开发自己的跨链应用。

../../_images/demo.png

启动控制台

控制台连接的是router-8250

  1. cd ~/wecross/WeCross-Console
  2.  
  3. # 配置连接至 router-8250,默认已配置,直接保存退出
  4. vim conf/application.toml
  5.  
  6. # 启动控制台
  7. bash start.sh

查看资源

进入控制台,用listResources命令查看WeCross跨连网络中的所有资源。可看到有两个资源:

  • payment.bcos.HelloWeCross
  • payment.fabric.abac
    • 对应于Fabric链上的abac.go合约
  1. [WeCross]> listResources
  2. path: payment.bcos.HelloWeCross, type: BCOS2.0, distance: 0
  3. path: payment.fabric.abac, type: Fabric1.4, distance: 1
  4. total: 2

查看账户

listAccounts命令查看WeCross Router上已存在的账户,操作资源时用相应账户进行操作。

  1. [WeCross]> listAccounts
  2. name: fabric_user1, type: Fabric1.4
  3. name: bcos_user1, type: BCOS2.0
  4. total: 2

操作资源:payment.bcos.HelloWeCross

  • 读资源
    • 命令:call path 账户名 接口名 [参数列表]
    • 示例:call payment.bcos.HelloWeCross bcos_user1 get
  1. # 调用HelloWeCross合约中的get接口
  2. [WeCross]> call payment.bcos.HelloWeCross bcos_user1 get
  3. Result: [Talk is cheap, Show me the code]
  • 写资源
    • 命令:sendTransaction path 账户名 接口名 [参数列表]
    • 示例:sendTransaction payment.bcos.HelloWeCross bcos_user1 set Tom
  1. # 调用HelloWeCross合约中的set接口
  2. [WeCross]> sendTransaction payment.bcos.HelloWeCross bcos_user1 set Tom
  3. Txhash : 0x21a412a1eb5239f2da9d40d09d11ce0107a5d82d113f1ecb315f2aa5bd3cc0cd
  4. BlockNum: 2
  5. Result : [Tom] // 将Tom给set进去
  6.  
  7. [WeCross]> call payment.bcos.HelloWeCross bcos_user1 get
  8. Result: [Tom] // 再次get,Tom已set

操作资源:payment.fabric.abac

跨链资源是对各个不同链上资源的统一和抽象,因此操作的命令是保持一致的。

  • 读资源
  1. # 调用abac合约中的query接口
  2. [WeCross]> call payment.fabric.abac fabric_user1 query a
  3. Result: [90] // 初次query,a的值为90
  • 写资源
  1. # 调用abac合约中的invoke接口
  2. [WeCross]> sendTransaction payment.fabric.abac fabric_user1 invoke a b 10
  3. Txhash : db44b064c54d4dc97f01cdcd013cae219f7849c329f38ee102853344d8f0004d
  4. BlockNum: 5
  5. Result : []
  6.  
  7. [WeCross]> call payment.fabric.abac fabric_user1 query a
  8. Result: [80] // 再次query,a的值变成80
  9.  
  10. # 退出当前控制台
  11. [WeCross]> quit

恭喜,你已经完成了整个WeCross网络的体验。相信优秀的你已经对WeCross有了大致的了解。接下来,你可以基于WeCross Java SDK开发更多的跨连应用,通过统一的接口对各种链上的资源进行操作。