Solución de implementación de WeCross
Requisitos medioambientales
hardware
WeCross se encarga de administrar múltiples Stubs y comunicarse con múltiples cadenas. Al mismo tiempo, sirve como Web Server para brindar servicios de llamadas RPC. Para garantizar la estabilidad del servicio, intente utilizar la configuración recomendada.
configuración | configuración mínima | Configuración recomendada |
---|---|---|
UPC | 1,5 GHz | 2,4 GHz |
Memoria | 4 GB | 8GB |
centro | 4 nucleares | 8 núcleos |
banda ancha | 2Mb | 10 MB |
plataformas compatibles
- Ubuntu 16.04 y superior
- CentOS 7.2 y superior
- macOS 10.14 y superior
dependencia de software
Como proyecto Java, WeCross necesita instalar el entorno Java, que incluye:
- JDK1.8.0_251 o superior
Versiones de JDK probadas actualmente: OracleJDK 1.8.0_251, OracleJDK 1.8.0_271, OracleJDK 14, OracleJDK 15, OpenJDK 1.8.0_282, OpenJDK 14, OpenJDK 15
- Gradle 5.0 y superior
- MySQL 5.6 y superior
WeCross proporciona una variedad de scripts para ayudar a los usuarios a experimentar rápidamente, estos scripts dependen de openssl, curl, expect
, use las siguientes instrucciones para instalar.
# Ubuntu
sudo apt-get install -y openssl curl expect tree fontconfig
# CentOS
sudo yum install -y openssl curl expect tree
# macOS
brew install openssl curl expect tree md5sha1sum
proceso de despliegue
El tutorial manual de redes ~/wecross-networks/
toma el directorio como ejemplo:
# 创建手动组网的操作目录
mkdir -p ~/wecross-networks && cd ~/wecross-networks
Implementación de componentes básicos
—Implemente los componentes básicos de WeCross, incluido el enrutamiento entre cadenas, los servicios de cuentas, las consolas y las consolas de administración web
Introduzca el directorio de operaciones:
cd ~/wecross-networks
Descargar WeCross
Descargue WeCross, use las herramientas de WeCross para generar una ruta de cadena cruzada e inicie la ruta de cadena cruzada.
WeCross incluye una herramienta para generar rutas de enlaces cruzados. Ejecute el siguiente comando para descargar (se proporcionan tres métodos de descarga y puede elegir el método apropiado para descargar de acuerdo con el entorno de red), y el programa se descarga a ~/wecross-networks/WeCross/
.
方式1:命令下载
GitHub下载方式:
bash <(curl -sL https://github.com/WeBankBlockchain/WeCross/releases/download/resources/download_wecross.sh)
Gitee下载方式:
bash <(curl -sL https://gitee.com/WeBank/WeCross/raw/master/scripts/download_wecross.sh)
Implementar enrutadores de cadena cruzada
Este ejemplo construirá dos rutas de cadena cruzada. Primero cree un archivo de configuración, separe ipfile
la información de enrutamiento de dos cadenas cruzadas ( ) que deben construirse por líneas y guárdelas en el archivo.ip:rpc_port:p2p_port
Nota : asegúrese 8250
de que 25500
el puerto de la máquina no esté ocupado.
cd ~/wecross-networks
vim ipfile
# 在文件中键入以下内容
127.0.0.1:8250:25500
Después de generar el archivo ipfile
, use el script build_wecross.sh para generar dos rutas de enlace cruzado.
bash ./WeCross/build_wecross.sh -n payment -o routers-payment -f ipfile
.. note::
- -n 指定跨链分区标识符(zone id),跨链分区通过zone id进行区分,可以理解为业务名称。(调用链码时需要,建议双方提前沟通)
- -o 指定输出的目录,并在该目录下生成一个跨链路由。
- -f 指定需要生成的WeCross跨链路由的列表,包括ip地址,rpc端口,p2p端口,生成后的router已完成互联配置。
# 成功输出如下信息
[INFO] Create routers-payment/127.0.0.1-8250-25500 successfully
[INFO] All completed. WeCross routers are generated in: routers-payment/
Se generan dos rutas de cadena cruzada en el directorio de pago de enrutadores.
tree routers-payment/ -L 1
routers-payment/
├── 127.0.0.1-8250-25500
└── cert
El contenido del directorio de enrutamiento de enlaces cruzados generado es el siguiente, tomando como 127.0.0.1-8250-25500
ejemplo.
# 已屏蔽lib和pages目录,该目录存放所有依赖的jar包
tree routers-payment/127.0.0.1-8250-25500/
routers-payment/127.0.0.1-8250-25500/
├── add_chain.sh # 区块链配置文件创建脚本
├── apps
│ └── WeCross.jar # WeCross路由jar包
├── build_wecross.sh
├── conf # 配置文件目录
│ ├── accounts # 账户配置目录
│ ├── application.properties
│ ├── chains # 区块链配置目录,要接入不同的链,在此目录下进行配置
│ ├── log4j2.xml
│ ├── ca.crt # 根证书
│ ├── ssl.crt # 跨链路由证书
│ ├── ssl.key # 跨链路由私钥
│ ├── node.nodeid # 跨链路由nodeid
│ └── wecross.toml # WeCross Router主配置文件
├── create_cert.sh # 证书生成脚本
├── download_wecross.sh
├── pages # 网页管理平台页面文件
├── plugin # 插件目录,接入相应类型链的插件
│ ├── bcos-stub-gm.jar
│ ├── bcos-stub.jar
│ └── fabric-stub.jar
├── start.sh # 启动脚本
└── stop.sh # 停止脚本
Implementar servicio de cuenta
- descargar
~~ Durante el proceso de ejecución, se debe ingresar la configuración de la base de datos correspondiente
这一步填写的数据库配置需要与现存account_manager方沟通
!!!!!!!!~
cd ~/wecross-networks
bash <(curl -sL https://github.com/WeBankBlockchain/WeCross/releases/download/resources/download_account_manager.sh)
# 若出现长时间下载WeCross-Account-Manager包失败,请尝试以下命令重新下载:
bash <(curl -sL https://gitee.com/WeBank/WeCross/raw/master/scripts/download_account_manager.sh)
- copia del certificado
cd ~/wecross-networks/WeCross-Account-Manager/
cp ~/wecross-networks/routers-payment/cert/sdk/* conf/
- generar clave privada
bash create_rsa_keypair.sh -d conf/
- configuración
cp conf/application-sample.toml conf/application.toml
vim conf/application.toml
El contenido a configurar incluye:
admin
: Configure la cuenta de administrador, que puede ser predeterminada aquí. La cuenta de administrador en el enrutador debe corresponder a esto, y se usa para iniciar sesión en el servicio de cuenta
db
: Configure su propia contraseña de cuenta de base de datos
[service]
address = '0.0.0.0'
port = 8340
sslKey = 'classpath:ssl.key'
sslCert = 'classpath:ssl.crt'
caCert = 'classpath:ca.crt'
sslOn = true
[admin]
# admin账户配置,第一次启动时写入db,之后作为启动校验字段
name = 'org1-admin' # admin账户名
password = '123456' # 密码
[auth]
# for issuring token
name = 'org1'
expires = 18000 # 5 h
noActiveExpires = 600 # 10 min
[db]
# for connect database
url = 'jdbc:mysql://localhost:3306/wecross_account_manager'
username = 'root' # 配置数据库账户
password = '123456' # 配置数据库密码,不支接受空密码
[ext]
# for image auth code, allow image auth token empty
allowImageAuthCodeEmpty = true
- puesta en marcha
bash start.sh
Inicie el enrutador de cadena cruzada
Modificar configuración Modificar configuración de cadena cruzada wecross.toml
# 修改跨链配置
vi /root/wecross-networks/routers-payment/127.0.0.1-8250-25500/conf/wecross.toml
El contenido a configurar incluye
peers
:IP de la lista de enrutadores WeCross que deben conectarse entre sí:Puerto
[common]
zone = 'payment' #字符串;跨链分区标识符;通常一种跨链业务/应用为一个跨链分区
visible = true
enableAccessControl = false
[chains]
path = 'classpath:chains'
[rpc] # rpc ip & port
address = '127.0.0.1'
port = 8250
caCert = 'classpath:ca.crt'
sslCert = 'classpath:ssl.crt'
sslKey = 'classpath:ssl.key'
sslSwitch = 2 # disable ssl:2, SSL without client auth:1 , SSL with client and server auth: 0
webRoot = 'classpath:pages'
mimeTypesFile = 'classpath:conf/mime.types' # set the content-types of a file
[p2p]
listenIP = '0.0.0.0'
listenPort = 25500
caCert = 'classpath:ca.crt'
sslCert = 'classpath:ssl.crt'
sslKey = 'classpath:ssl.key'
peers = ['127.0.0.1:25500'] # peer列表;需要互相连接的WeCross Router列表
[account-manager]
server = '127.0.0.1:8340' #
admin = 'org1-admin'
password = '123456'
sslKey = 'classpath:ssl.key'
sslCert = 'classpath:ssl.crt'
caCert = 'classpath:ca.crt'
#[[htlc]]
# selfPath = 'payment.bcos.htlc'
# account1 = 'bcos_default_account'
# counterpartyPath = 'payment.fabric.htlc'
# account2 = 'fabric_default_account'
comenzar a enrutar
# 启动 router-8250
cd ~/wecross-networks/routers-payment/127.0.0.1-8250-25500/
bash start.sh
El inicio es exitoso y el resultado es el siguiente:
WeCross booting up .........
WeCross start successfully
Si falla el inicio, verifique 8250, 25500
si el puerto está ocupado.
netstat -napl | grep 8250
netstat -napl | grep 25500
consola de implementación
WeCross proporciona una consola para facilitar el desarrollo y la depuración entre cadenas para los usuarios. La consola se puede construir a través de scripts build_console.sh
.
- descargar
Ejecute el siguiente comando para descargar (se proporcionan tres métodos de descarga, puede elegir el método apropiado para descargar de acuerdo con el entorno de red) y, una vez completada la descarga, se generará un directorio en el directorio actual WeCross-Console
.
下载WeCross控制台
同样提供三种方式,根据网络环境选择合适的方式进行下载。
方式1:命令下载
GitHub下载方式:
bash <(curl -sL https://github.com/WeBankBlockchain/WeCross/releases/download/resources/download_console.sh)
Gitee下载方式:
bash <(curl -sL https://gitee.com/WeBank/WeCross/raw/master/scripts/download_console.sh)
- configuración
cd ~/wecross-networks/WeCross-Console
# 拷贝连接router所需的TLS证书,从生成的routers-payment/cert/sdk目录下拷贝
cp ~/wecross-networks/routers-payment/cert/sdk/* conf/
# 拷贝配置文件,并配置跨链路由RPC服务地址以及端口。此处采用默认配置,默认连接至本地8250端口。
cp conf/application-sample.toml conf/application.toml
.. important::
- 若搭建WeCross的IP和端口未使用默认配置,需自行更改WeCross-Console/conf/application.toml
- puesta en marcha
bash start.sh
Si el inicio es exitoso, se generará la siguiente información, a través de la cual help
puede ver la ayuda de la consola.
=================================================================================
Welcome to WeCross console(v1.1.0)!
Type 'help' or 'h' for help. Type 'quit' or 'q' to quit console.
=================================================================================
- función de prueba
# 正常进入,可先退出控制台,等待后续配置
[WeCross]> quit
Entrada de blockchain y configuración de cuenta
---- Después de completar la implementación de los componentes básicos de WeCross, el siguiente paso es acceder a la cadena de bloques, configurar cuentas de cadena cruzada y construir una red de cadena cruzada real.
Acceso a la cadena de bloques
Acceso a Hyperledger Fabric : acceso al enrutador de cadena cruzadarouter-8250
Configurar cuentas integradas
La cuenta integrada que se usa para interactuar con la cadena Fabric debe configurarse en el enrutamiento entre cadenas. Es necesario configurar varias cuentas integradas:
- cuenta de administrador: requerida, se usa una cuenta de administrador para acceder a esta cadena de Fabric
- Cuenta de administrador institucional: opcional, cada organización de Fabric configura una cuenta de administrador para implementar contratos de sistema en cada organización
Generar marco de configuración de cuenta
# 切换至对应跨链路由的主目录
cd ~/wecross-networks/routers-payment/127.0.0.1-8250-25500/
# 用脚本生成Fabric账户配置:账户类型(Fabric1.4),账户名(fabric_admin)
# 接入Fabric链,需要配置一个admin账户
bash add_account.sh -t Fabric1.4 -n fabric_admin
# 为Fabric链的每个Org都配置一个admin账户,此处有两个org(Org1和Org2),分别配两个账户
# 配Org1的admin
bash add_account.sh -t Fabric1.4 -n fabric_admin_org1
# 配Org2的admin
bash add_account.sh -t Fabric1.4 -n fabric_admin_org2
configuración completa
Modificar la configuración de la cuenta
La configuración de la cuenta generada mspid
es Org1MSP de manera predeterminada y la cuenta Org2 debe configurarse mspid
como Org2MSP. Aquí solo necesitas modificar la configuración de la cuenta fabric_admin_org2.
vim conf/accounts/fabric_admin_org2/account.toml
# 修改mspid,将 'Org1MSP' 更改为 'Org2MSP'
copiar archivo de certificado
El certificado de la cadena Fabric se encuentra en crypto-config
el directorio. Consulte el siguiente comando y complete la copia del certificado correspondiente de acuerdo con la situación real .
cd ~/wecross-networks/routers-payment/127.0.0.1-8250-25500
# 配置fabric_admin
# 拷贝私钥
cp xxxxxx/crypto-config/peerOrganizations/org1.example.com/users/[email protected]/msp/keystore/*_sk conf/accounts/fabric_admin/account.key
# 拷贝证书
cp xxxxxx/crypto-config/peerOrganizations/org1.example.com/users/[email protected]/msp/signcerts/[email protected] conf/accounts/fabric_admin/account.crt
# 配置fabric_admin_org1
# 拷贝私钥
cp xxxxxx/crypto-config/peerOrganizations/org1.example.com/users/[email protected]/msp/keystore/*_sk conf/accounts/fabric_admin_org1/account.key
# 拷贝证书
cp xxxxxx/crypto-config/peerOrganizations/org1.example.com/users/[email protected]/msp/signcerts/[email protected] conf/accounts/fabric_admin_org1/account.crt
# 配置fabric_admin_org2
# 拷贝私钥
cp xxxxxx/crypto-config/peerOrganizations/org2.example.com/users/[email protected]/msp/keystore/*_sk conf/accounts/fabric_admin_org2/account.key
# 拷贝证书
cp xxxxxx/crypto-config/peerOrganizations/org2.example.com/users/[email protected]/msp/signcerts/[email protected] conf/accounts/fabric_admin_org2/account.crt
Después de copiar el certificado, la estructura del directorio de la cuenta es la siguiente:
tree conf/accounts/
conf/accounts/
├── fabric_admin
│ ├── account.crt
│ ├── account.key
│ └── account.toml
├── fabric_admin_org1
│ ├── account.crt
│ ├── account.key
│ └── account.toml
└── fabric_admin_org2
├── account.crt
├── account.key
└── account.toml
configurar complemento
Generar esqueleto de configuración de complemento
Ingrese al directorio principal del enrutador de cadena cruzada y use add_chain.sh
el script conf
para generar el marco de configuración de la cadena Fabric en el directorio.
cd ~/wecross-networks/routers-payment/127.0.0.1-8250-25500
# -t 链类型,-n 指定链名字,可根据-h查看使用说明
bash add_chain.sh -t Fabric1.4 -n fabric
La ejecución es exitosa y el resultado es el siguiente. Si hay un error en la ejecución, verifique el aviso de impresión de pantalla.
SUCCESS: Chain "fabric" config framework has been generated to "conf/chains/fabric"
La estructura de directorios generada es la siguiente:
tree conf/chains/fabric/
conf/chains/fabric/
├── chaincode
│ ├── WeCrossHub
│ │ └── hub.go # 桥接合约
│ └── WeCrossProxy
│ └── proxy.go # 代理合约
└── stub.toml # 插件配置文件
configuración completa
copia del certificado
Los certificados relevantes también se encuentran en crypto-config
el directorio. Consulte los siguientes comandos y complete la copia de los certificados relevantes de acuerdo con la situación real .
# 假设当前位于跨链路由的主目录
# 拷贝orderer证书
cp xxxxxx/crypto-config/ordererOrganizations/example.com/orderers/orderer.example.com/msp/tlscacerts/tlsca.example.com-cert.pem conf/chains/fabric/orderer-tlsca.crt
# 拷贝org1证书
cp xxxxxx/crypto-config/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/tls/ca.crt conf/chains/fabric/org1-tlsca.crt
# 拷贝org2证书
cp xxxxxx/crypto-config/peerOrganizations/org2.example.com/peers/peer0.org2.example.com/tls/ca.crt conf/chains/fabric/org2-tlsca.crt
editar archivo de configuración
Los elementos de configuración del archivo de configuración del complemento conf/chains/fabric/stub.toml
incluyen:
- Configurar información de recursos
- Configurar la información de conexión del SDK para interactuar con la cadena
[fabricServices]
Edite [orgs]
cada elemento de configuración de acuerdo con la situación real .
[common]
name = 'fabric' # 指定的连接的链的名字,与该配置文件所在的目录名一致,对应path中的{zone}/{chain}/{resource}的chain
type = 'Fabric1.4' # 插件的类型
[fabricServices]
channelName = 'mychannel'
orgUserName = 'fabric_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 = 'fabric_admin_org1' # Org1的admin账户,在下一步骤中配置
endorsers = ['grpcs://localhost:7051'] # endorser的ip:port列表,可配置多个
[orgs.Org2] # 机构2:Org2
tlsCaFile = 'org2-tlsca.crt' # Org2的证书
adminName = 'fabric_admin_org2' # Org2的admin账户,在下一步骤中配置
endorsers = ['grpcs://localhost:9051'] # endorser的ip:port列表,可配置多个
Contrato de sistema de despliegue
Cada Stub necesita implementar dos contratos de sistema, a saber, el contrato de proxy y el contrato de puente.El contrato de proxy es responsable de administrar transacciones e invocar contratos comerciales, y el contrato de puente se usa para registrar solicitudes de contratos entre cadenas. Ejecute el siguiente comando en el directorio principal del enrutador de enlace cruzado:
# 部署代理合约
bash deploy_system_contract.sh -t Fabric1.4 -c chains/fabric -P
# 部署桥接合约
bash deploy_system_contract.sh -t Fabric1.4 -c chains/fabric -H
# 若后续有更新系统合约的需求,首先更新conf/chains/fabric下的系统合约代码,在上述命令添加-u参数,执行并重启跨链路由
Si la implementación es exitosa, el resultado es el siguiente. Si falla, puede verificar la información del aviso y el registro de errores.
SUCCESS: WeCrossProxy has been deployed to chains/fabric
SUCCESS: WeCrossHub has been deployed to chains/fabric
Después de completar la entrada de la cadena de bloques, reinicie el enrutador de cadena cruzada para cargar los recursos de cadena cruzada configurados.
# 重启 router-8250
cd ~/wecross-networks/routers-payment/127.0.0.1-8250-25500/
bash stop.sh && bash start.sh
Verifique el registro, puede ver que los recursos de cadena cruzada cargados se deslizan y ctrl + c
salen.
tail -f logs/info.log |grep "active resources"
2020-12-05 21:07:30.925 [Thread-3] INFO WeCrossHost() - Current active resources: payment.bcos.WeCrossProxy(local), payment.bcos.WeCrossHub(local)
2020-12-05 21:07:40.940 [Thread-3] INFO WeCrossHost() - Current active resources: payment.bcos.WeCrossProxy(local), payment.bcos.WeCrossHub(local)
2020-12-05 21:07:50.956 [Thread-3] INFO WeCrossHost() - Current active resources: payment.bcos.WeCrossProxy(local), payment.bcos.WeCrossHub(local)
Configurar cuentas entre cadenas
Después de ingresar la cadena de bloques, se debe configurar la cuenta correspondiente para completar la llamada de recursos.
WeCross agrega varios tipos de cuentas en cadena y las administra de manera uniforme con cuentas entre cadenas. En WeCross, los usuarios inician sesión como cuentas de cadena cruzada y luego operan varios recursos. Para enviar una transacción a un tipo específico de cadena, solo necesita agregar el tipo de cuenta de cadena correspondiente en la cuenta de cadena cruzada.
Agregar cuenta de la cadena Fabric
Nota: Antes de agregar una cuenta de cadena Fabric, asegúrese de que se haya configurado la cadena Fabric.
- Copiar claves públicas y privadas
Copie las claves públicas y privadas de la cadena de tejido en el directorio de la consola para prepararse para agregar cuentas de cadena.
cp -r ~/wecross-networks/routers-payment/127.0.0.1-8250-25500/conf/accounts/* ~/wecross-networks/WeCross-Console/conf/accounts/
- Inicie la consola
cd ~/wecross-networks/WeCross-Console/
bash start.sh
- Acceso
Inicie sesión con la cuenta de cadena cruzada predeterminada: org1-admin, contraseña: 123456 (la cuenta predeterminada está configurada en WeCross-Account-Manager/conf/application.toml).
[WeCross]> login org1-admin 123456
Result: success
=============================================================================================
Universal Account:
username: org1-admin
pubKey : 3059301306...
uaID : 3059301306...
- Agregar cuenta en cadena
Agregue una cuenta de cadena para enviar transacciones a la cuenta de cadena cruzada actualmente registrada.
# 参数: addChainAccount Fabric1.4 私钥位置 公钥位置 MSPID 是否设置为发交易的默认链账户
# 添加 fabric_admin_org1
[WeCross.org1-admin]> addChainAccount Fabric1.4 conf/accounts/fabric_admin_org1/account.crt conf/accounts/fabric_admin_org1/account.key Org1MSP true
# 添加 fabric_admin_org2
[WeCross.org1-admin]> addChainAccount Fabric1.4 conf/accounts/fabric_admin_org2/account.crt conf/accounts/fabric_admin_org2/account.key Org2MSP true
Ver cuenta de cadena
Vea todas las cuentas de la cadena en la cuenta de cadena cruzada actualmente iniciada, isDefault
que es true
la cuenta predeterminada para enviar transacciones.
[WeCross.org1-admin]> listAccount
Universal Account:
username: org1-admin
pubKey : 3059301306...
uaID : 3059301306...
chainAccounts: [
BCOS2.0 Account:
keyID : 0
type : BCOS2.0
address : 0x4e89af80184147fcddc391c64ad673512236af67
isDefault: true
----------
Fabric1.4 Account:
keyID : 2
type : Fabric1.4
MembershipID : Org2MSP
isDefault: true
----------
Fabric1.4 Account:
keyID : 1
type : Fabric1.4
MembershipID : Org1MSP
isDefault: false
----------
]
La operación es exitosa, salga de la consola.
[WeCross.org1-admin]> quit
Operaciones de despliegue e inicialización de recursos
Implemente recursos de cadenas cruzadas de Hyperledger Fabric
WeCross admite la implementación de código de cadena en la cadena Fabric a través de la consola, y los pasos de implementación son los siguientes:
- Prepare el código de código de cadena (tome sacc como ejemplo)
El directorio de almacenamiento de código de cadena de la consola: conf/contracts/chaincode/
, donde el código sacc se coloca en el directorio: conf/contracts/chaincode/sacc
(el nombre de directorio sacc es el nombre del código de cadena), y el código de código de cadena se coloca en el directorio sacc: sacc.go (el nombre de código es arbitrario).
tree conf/contracts/chaincode/sacc
conf/contracts/chaincode/sacc
├── policy.yaml
└── sacc.go
- implementar código de cadena
Instale el mismo código de cadena para diferentes organizaciones.
# 登录
[WeCross]> login org1-admin 123456
# 在登录态下,查看默认链账户,可看到Fabric1.4的默认账户是Org2MSP的
[WeCross.org1-admin]> listAccount
Universal Account:
username: org1-admin
pubKey : 3059301306...
uaID : 3059301306...
chainAccounts: [
BCOS2.0 Account:
keyID : 0
type : BCOS2.0
address : 0x4e89af80184147fcddc391c64ad673512236af67
isDefault: true
----------
Fabric1.4 Account:
keyID : 2
type : Fabric1.4
MembershipID : Org2MSP
isDefault: true
----------
Fabric1.4 Account:
keyID : 1
type : Fabric1.4
MembershipID : Org1MSP
isDefault: false
----------
]
# 在向Org1进行install前,设置Fabric1.4的默认账户为Org1MSP,参数:setDefaultAccount Fabric1.4 keyID
[WeCross.org1-admin]> setDefaultAccount Fabric1.4 1
# 给Org1安装sacc,参数:path Org 链码位置 版本号 链码语言
[WeCross.org1-admin]> fabricInstall payment.fabric.sacc Org1 contracts/chaincode/sacc 1.0 GO_LANG
path: classpath:contracts/chaincode/sacc
Result: Success
# 在向Org2进行install前,设置Fabric1.4的默认账户为Org2MSP,参数:setDefaultAccount Fabric1.4 keyID
[WeCross.org1-admin]> setDefaultAccount Fabric1.4 2
# 给Org2安装sacc,参数:path Org 链码位置 版本号 链码语言
[WeCross.org1-admin]> fabricInstall payment.fabric.sacc Org2 contracts/chaincode/sacc 1.0 GO_LANG
path: classpath:contracts/chaincode/sacc
Result: Success
Crea una instancia del código de cadena especificado.
Parámetros: ipath, varias organizaciones correspondientes, directorio del proyecto de código de código de cadena, versión especificada, lenguaje de código de cadena, política de aprobación (predeterminada aquí), parámetros de inicialización
# fabricInstantiate 时默认Org1MSP或Org2MSP的链账户都可,此处用的Org2MSP
[WeCross.org1-admin]> fabricInstantiate payment.fabric.sacc ["Org1","Org2"] contracts/chaincode/sacc 1.0 GO_LANG default ["a","10"]
Result: Instantiating... Please wait and use 'listResources' to check. See router's log for more information.
Después de la solicitud de creación de instancias, espere aproximadamente 1 minuto. Úselo listResources
para ver si tuvo éxito. Si la creación de instancias tiene éxito, se puede consultar el recurso payment.fabric.sacc
.
[WeCross.org1-admin]> listResources
path: payment.bcos.HelloWorld, type: BCOS2.0, distance: 0
path: payment.fabric.WeCrossHub, type: Fabric1.4, distance: 1
path: payment.bcos.WeCrossHub, type: BCOS2.0, distance: 0
path: payment.fabric.sacc, type: Fabric1.4, distance: 1
total: 4
[WeCross.org1-admin]> quit # 退出控制台
Operar recursos entre cadenas
Ver recursos entre cadenas
- Acceso
Inicie sesión con la cuenta de cadena cruzada predeterminada: org1-admin, contraseña: 123456. (La cuenta predeterminada está configurada en WeCross-Account-Manager/conf/application.toml)
[WeCross]> login org1-admin 123456
Result: success
=============================================================================================
Universal Account:
username: org1-admin
pubKey : 3059301306...
uaID : 3059301306...
- Obtener lista de recursos
Use listResources
comandos para ver todos los recursos en la red de cadenas cruzadas de WeCross. Puedes ver que hay múltiples recursos:
payment.bcos.HelloWorld
: Corresponde al contrato HelloWorld.sol en la cadena FISCO BCOS.
payment.fabric.sacc
: Corresponde al contrato sacc.go en la cadena Fabric.
payment.xxxx.WeCrossHub
: El contrato Hub instalado de forma predeterminada en cada cadena se utiliza para recibir llamadas entre cadenas iniciadas por contratos en la cadena.
[WeCross.org1-admin]> listResources
path: payment.bcos.HelloWorld, type: BCOS2.0, distance: 0
path: payment.fabric.WeCrossHub, type: Fabric1.4, distance: 1
path: payment.bcos.WeCrossHub, type: BCOS2.0, distance: 0
path: payment.fabric.sacc, type: Fabric1.4, distance: 1
total: 4
Operación pago.tejido.sacc
Los recursos entre cadenas son la unificación y abstracción de recursos en diferentes cadenas, por lo que los comandos de operación son consistentes.
- leer recursos
# 调用mycc合约中的query接口
[WeCross.org1-admin]> call payment.fabric.sacc get a
Result: [10] // 初次get,a的值为10
- escribir recursos
# 调用sacc合约中的set接口
[WeCross.org1-admin]> sendTransaction payment.fabric.sacc set a 666
Txhash : aa3a7cd62d4b4c56b486f11fae2d903b7f07c2a3fa315ee2b44d5f5c43f5a8dc
BlockNum: 8
Result : [666]
[WeCross.org1-admin]> call payment.fabric.sacc get a
Result: [666] // 再次get,a的值变成666
# 退出WeCross控制台
[WeCross.org1-admin]> quit # 若想再次启动控制台,cd至WeCross-Console,执行start.sh即可
Prueba de llamada entre cadenas: contrato de llamada entre cadenas (Interchain)
Ejemplo de operación
La consola de WeCross proporciona contratos de muestra para llamadas entre cadenas en dos versiones de idioma. Las interfaces de los contratos de muestra incluyen:
init(): 传入本链的桥接合约地址进行初始化
interchain(): 跨链调用的发起接口,其内部调用了桥接合约的interchainInvoke接口
get(): 获取data
set(): 更新data
callback(): 使用跨链调用的结果更新data
El proceso de vinculación de dos contratos de muestra : el contrato de muestra de la cadena A inicia una llamada entre cadenas, llama a la interfaz establecida del contrato de muestra de la cadena B, actualiza los datos de la cadena B, luego activa una devolución de llamada, llama a la interfaz de devolución de llamada de cadena A y actualiza los datos de la cadena A.
A través del método anterior, una llamada de consola puede completar la actualización de los datos de las dos cadenas.
Implemente un contrato de muestra para llamadas entre cadenas
Después de configurar el entorno, ejecute los siguientes comandos en la consola de WeCross:
# 登录
[WeCross]> login org1-admin 123456
# 切换Fabric默认账户
[WeCross.org1-admin]> setDefaultAccount Fabric1.4 2
# 安装链码
[WeCross.org1-admin]> fabricInstall payment.fabric.interchain Org2 contracts/chaincode/interchain 1.0 GO_LANG
path: classpath:contracts/chaincode/interchain
Result: Success
# 切换Fabric默认账户
[WeCross.org1-admin]> setDefaultAccount Fabric1.4 1
# 安装链码
[WeCross.org1-admin]> fabricInstall payment.fabric.interchain Org1 contracts/chaincode/interchain 1.0 GO_LANG
path: classpath:contracts/chaincode/interchain
Result: Success
# 实例化链码
[WeCross.org1-admin]> fabricInstantiate payment.fabric.interchain ["Org1","Org2"] contracts/chaincode/interchain 1.0 GO_LANG default []
# 等待实例化完成
Inicializar el contrato de ejemplo
Ejecute el siguiente comando en la consola de WeCross:
# 登录
[WeCross]> login org1-admin 123456
# 初始化Fabric示例合约,其中mychannel是channel名
[WeCross.org1-admin]> sendTransaction payment.fabric.interchain init mychannel WeCrossHub
Iniciar una llamada entre cadenas
Ejecute el siguiente comando en la consola de WeCross:
# 登录
[WeCross]> login org1-admin 123456
# 查看示例合约原始状态
[WeCross.org1-admin]> call payment.fabric.interchain get
Result: [["Talk is cheap, show me the code."]]
[WeCross.org1-admin]> call payment.bcos.interchain get
Result: [["Talk is cheap, show me the code."]]
# Fabric发起跨链调用 (提前沟通好需调用的bcos链的资源名称及参数)
[WeCross.org1-admin]> sendTransaction payment.fabric.interchain interchain payment.bcos.interchain set "Hello WeCross" payment.fabric.interchain callback
Txhash : cf7eda25f1c0515b68d702ed495fdbbefed6bdcfd4a3bc68aaab315631d3d102
BlockNum: 2386
Result : [1]
# 查询示例合约
[WeCross.org1-admin]> call payment.bcos.interchain get
Result: [[ "Hello WeCross" ]]
[WeCross.org1-admin]> call payment.fabric.interchain get
Result: [[ "Hello WeCross" ]]
# 查询调用回调的结果
[WeCross.org1-admin]> call payment.fabric.WeCrossHub selectCallbackResult 1
Result: [["0","0","0","Success","[ \"Hello WeCross\" ]"]]