手动组网

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

../../_images/demo1.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. 127.0.0.1:8250:25500
  5. 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. [INFO] Create routers-payment/127.0.0.1-8250-25500 successfully
  5. [INFO] Create routers-payment/127.0.0.1-8251-25501 successfully
  6. [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. # 启动 router-8251
  5. cd ~/wecross/routers-payment/127.0.0.1-8251-25501/
  6. 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的部署,如何让它和一条真实的区块链交互,相信优秀的您一定在跃跃欲试。本节包括

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

../../_images/demo1.png

搭建区块链

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

搭建BCOS链

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

详细步骤如下:

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

搭建Fabric链

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

  1. mkdir -p ~/wecross/fabric && cd ~/wecross/fabric
  2. # 下载Demo包, 拷贝其中的Fabric demo链环境
  3. bash <(curl -sL https://github.com/WeBankFinTech/WeCross/releases/download/resources/download_demo.sh)
  4. cp demo/fabric/* ./
  5. # 搭建
  6. 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

接入FISCO BCOS链

添加账户

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

添加BCOS账户

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

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

生成的bcos_user1文件目录如下:

  1. tree conf/accounts/bcos_user1/
  2. conf/accounts/bcos_user1/
  3. ├── 0xxxxxxxxxxxxxxxxx.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

配置接入FISCO 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. Chain bcos config framework has been generated to conf/chains/bcos"

生成的目录结构如下:

  1. tree conf/chains/bcos/
  2. conf/chains/bcos
  3. ├── WeCrossProxy
  4. └── WeCrossProxy.sol # 代理合约
  5. └── stub.toml # chain配置文件

配置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. [common]
  2. name = 'bcos'
  3. type = 'BCOS2.0' # BCOS
  4. [chain]
  5. groupId = 1 # default 1
  6. chainId = 1 # default 1
  7. [channelService]
  8. caCert = 'ca.crt'
  9. sslCert = 'sdk.crt'
  10. sslKey = 'sdk.key'
  11. timeout = 300000 # ms, default 60000ms
  12. connectionsStr = ['127.0.0.1:20200']

部署代理合约

代理合约是插件与链交互的入口,执行命令进行部署。

  1. cd ~/wecross/routers-payment/127.0.0.1-8250-25500
  2. java -cp 'conf/:lib/*:plugin/*' com.webank.wecross.stub.bcos.normal.proxy.ProxyContractDeployment deploy chains/bcos bcos_user1 # deploy conf下的链配置位置 账户名

部署成功,输出

  1. SUCCESS: WeCrossProxy:xxxxxxxx has been deployed! chain: chains/bcos

启动路由

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

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

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

  1. tail -f logs/info.log |grep "active resources"
  2. 2020-08-17 15:04:10.802 [Thread-3] INFO WeCrossHost() - Current active resources: payment.bcos.WeCrossProxy(local)
  3. 2020-08-17 15:04:20.824 [Thread-3] INFO WeCrossHost() - Current active resources: payment.bcos.WeCrossProxy(local)
  4. 2020-08-17 15:04:30.841 [Thread-3] INFO WeCrossHost() - Current active resources: payment.bcos.WeCrossProxy(local)

接入Fabric链

添加账户

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

添加Fabric账户

Fabric账户需配置多个

  • admin账户:必配,一个admin账户,用于接入此Fabric链
  • 机构admin账户:选配,每个Fabric的Org配置一个admin账户,用于在每个Org上部署chaincode,此例子中用于部署代理合约和sacc合约。
  • 用户账户:选配,用于往链上发交易。

相关操作如下

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

生成的账户配置,默认的mspid为Org1的,需将Org2的账户的mspid配置为Org2的。此处只需修改fabric_admin_org2账户的配置。详细配置操作说明请参考此处

  1. vim conf/accounts/fabric_admin_org2/account.toml

内容为

  1. [account]
  2. type = 'Fabric1.4'
  3. mspid = 'Org2MSP' # 配置为Org2MSP
  4. keystore = 'account.key'
  5. signcert = 'account.crt'

目前配置了四个账户,若此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_admin_org1
  8. ├── account.crt
  9. ├── account.key
  10. └── account.toml
  11. ├── fabric_admin_org2
  12. ├── account.crt
  13. ├── account.key
  14. └── account.toml
  15. └── fabric_user1
  16. ├── account.crt
  17. ├── account.key
  18. └── 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. SUCCESS: Chain "fabric" config framework has been generated to "conf/chains/fabric"

生成的目录结构如下:

  1. tree conf/chains/fabric/
  2. conf/chains/fabric
  3. ├── WeCrossProxy
  4. └── proxy.go # 代理chaincode
  5. └── stub.toml # chain配置文件

配置Fabric节点连接

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

相关配置项使用默认即可。(参考此处获取更详尽的配置说明

  1. [common]
  2. name = 'fabric'
  3. type = 'Fabric1.4'
  4. [fabricServices]
  5. channelName = 'mychannel'
  6. orgUserName = 'fabric_admin'
  7. ordererTlsCaFile = 'orderer-tlsca.crt'
  8. ordererAddress = 'grpcs://localhost:7050'
  9. [orgs]
  10. [orgs.Org1]
  11. tlsCaFile = 'org1-tlsca.crt'
  12. adminName = 'fabric_admin_org1'
  13. endorsers = ['grpcs://localhost:7051']
  14. [orgs.Org2]
  15. tlsCaFile = 'org2-tlsca.crt'
  16. adminName = 'fabric_admin_org2'
  17. endorsers = ['grpcs://localhost:9051']

部署代理chaincode

执行命令,部署代理chaincode

  1. cd ~/wecross/routers-payment/127.0.0.1-8251-25501
  2. java -cp 'conf/:lib/*:plugin/*' com.webank.wecross.stub.fabric.proxy.ProxyChaincodeDeployment deploy chains/fabric # deploy conf下的链配置位置

部署成功

  1. SUCCESS: WeCrossProxy has been deployed to chains/fabric

启动路由

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

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

部署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-rc4)!
  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. [server1]> quit

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

部署跨链资源

WeCross支持直接通过WeCross-Console部署跨链资源。

  1. cd ~/wecross/WeCross-Console/

部署 Fabric 跨链资源

WeCross 支持通过 WeCross-Console 向指定的Fabric链上部署chaincode。

  • 配置chaincode代码(部署sacc为例)
    • WeCross-Console的chaincode存放目录:conf/contracts/chaincode/
    • sacc代码放入目录:conf/contracts/chaincode/sacc(目录名sacc为chaincode的名字)
    • sacc目录中放置chaincode代码:sacc.go (代码名任意)

WeCross-Console中已默认存放了sacc,目录结构如下。

  1. tree conf/contracts/chaincode/sacc
  2. conf/contracts/chaincode/sacc
  3. ├── policy.yaml
  4. └── sacc.go
  • 启动控制台

部署chaincode相关的账户在router-8251,将Console配置为连接router-8251

  1. cd ~/wecross/WeCross-Console
  2. vim conf/application.toml

配置为

  1. [connection]
  2. server = '127.0.0.1:8251' # 连接 router 8251
  3. sslKey = 'classpath:ssl.key'
  4. sslCert = 'classpath:ssl.crt'
  5. caCert = 'classpath:ca.crt'

启动控制台

  1. bash start.sh
  • 部署chaincode

为不同的Org分别安装(install)相同的chaincode

参数:ipath(xxx.yyy.zzz,xxx.yyy为指定的链,zzz为chaincode名),机构admin账户,机构名,chaincode代码工程目录,指定一个版本,chaincode语言

  1. [WeCross]> fabricInstall payment.fabric.sacc fabric_admin_org1 Org1 contracts/chaincode/sacc 1.0 GO_LANG
  2. Result: Success
  3. [WeCross]> fabricInstall payment.fabric.sacc fabric_admin_org2 Org2 contracts/chaincode/sacc 1.0 GO_LANG
  4. Result: Success

实例化(instantiate)指定chaincode

参数:ipath,admin账户,对应的几个Org,chaincode代码工程目录,指定的版本,chaincode语言,背书策略(此处用默认),初始化参数

  1. [WeCross]> fabricInstantiate payment.fabric.sacc fabric_admin ["Org1","Org2"] contracts/chaincode/sacc 1.0 GO_LANG default ["a","10"]
  2. Result: Instantiating... Please wait and use 'listResources' to check. See router's log for more information.

instantiate请求后,需等待1min左右。用listResources查看是否成功。若instantiate成功,可查询到资源payment.fabric.sacc

  1. [WeCross]> listResources
  2. path: payment.fabric.sacc, type: Fabric1.4, distance: 0
  3. total: 1
  4. [WeCross]> quit // 退出控制台

部署 BCOS 跨链资源

WeCross 支持通过 WeCross-Console 向指定的BCOS链上部署合约。部署步骤如下。

  • 配置合约代码
    • 以HelloWorld合约为例
    • WeCross-Console 的合约存放目录:conf/contracts/solidity/

目录下已有HelloWorld合约文件,若需部署其它合约,可将合约拷贝至相同位置。

  1. tree conf/contracts/solidity/
  2. conf/contracts/solidity/
  3. └── HelloWorld.sol
  • 启动控制台

部署合约相关的账户在router-8250,将Console配置为连接router-8250

  1. cd ~/wecross/WeCross-Console
  2. vim conf/application.toml

配置为

  1. [connection]
  2. server = '127.0.0.1:8250' # 连接 router 8250
  3. sslKey = 'classpath:ssl.key'
  4. sslCert = 'classpath:ssl.crt'
  5. caCert = 'classpath:ca.crt'

启动控制台

  1. cd ~/wecross/WeCross-Console/
  2. bash start.sh
  • 部署合约

bcosDeploy命令进行部署。

参数:ipath,代码目录,合约名,设置一个版本号

  1. [WeCross]> bcosDeploy payment.bcos.HelloWorld bcos_user1 contracts/solidity/HelloWorld.sol HelloWorld 1.0
  2. Result: 0x1b557d68ebc51ed5b12438ff1666f8111718f47a

listResources可查看此资源已部署

  1. [WeCross]> listResources
  2. path: payment.bcos.HelloWeCross, type: BCOS2.0, distance: 0

操作跨链资源

查看资源

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

  • payment.bcos.HelloWorld
    • 对应于FISCO BCOS链上的HelloWorld.sol合约
  • payment.fabric.sacc
    • 对应于Fabric链上的sacc.go合约
  1. [WeCross]> listResources
  2. path: payment.bcos.HelloWorld, type: BCOS2.0, distance: 0
  3. path: payment.fabric.sacc, 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.HelloWorld

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

操作资源:payment.fabric.sacc

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

  • 读资源
  1. # 调用mycc合约中的query接口
  2. [WeCross]> call payment.fabric.sacc fabric_user1 get a
  3. Result: [10] // 初次get,a的值为10
  • 写资源
  1. # 调用sacc合约中的set接口
  2. [WeCross]> sendTransaction payment.fabric.sacc fabric_user1 set a 666
  3. Txhash : eca4ecacf7b159c1499d6c190fcaf9fd7348bdb96cdbf35cd29b34ac9bd8e518
  4. BlockNum: 7
  5. Result : [666]
  6. [WeCross]> call payment.fabric.sacc fabric_user1 get a
  7. Result: [666] // 再次get,a的值变成666
  8. # 退出WeCross控制台
  9. [WeCross]> quit # 若想再次启动控制台,cd至WeCross-Console,执行start.sh即可

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