账户服务¶
跨链账户¶
概念¶
不同类型的链有不同的账户,WeCross将其进行统一管理,抽象出跨链账户:
- 缩写:UA(Universal Account)
- 定义
- 跨链账户:WeCross中用户的身份
- 链账户:向不同类型的链发交易时,给交易签名的实际账户
- 作用:对于不同类型的链,都采用跨链账户发送交易
- 效果:对于不同类型的链,上链的交易都能映射回对应的跨链账户
- 限制:一个跨链账户可以持有多个链账户,一个链账户被一个跨链账户持有
原理¶
- 用户通过登录的方式获得跨链账户的身份
- 用户在跨链账户下可添加不同类型的链账户
- 通过互签的方式,生成UA Proof,建立跨链账户与链账户的映射
- UA Proof在router间同步,在获取交易发送者时,可结合UA Proof获取发交易的跨链账户
- 相关逻辑由WeCross Account Manager进行管理
举例¶
一个跨链账户包括以下信息:
- UA名:org1-admin
- 公私钥:aaaa、bbbb
- 链账户
- FISCO BCOS 2.0
- 0:公钥、私钥、地址、UA Proof、默认账户
- 1:公钥、私钥、地址、UA Proof、非默认账户
- FISCO BCOS 2.0 国密
- 2:公钥、私钥、地址、UA Proof、非默认账户
- 3:公钥、私钥、地址、UA Proof、默认账户
- Hyperledger Fabric1.4:
- 4:证书、私钥、MSPID、UA Proof、默认账户
- 5 …
- FISCO BCOS 2.0
WeCross Account Manager¶
概念¶
- 作用:管理自己机构的跨链账户
- 架构
- Router选择自己机构的Account Manager进行连接
- Account Manager部署在机构内网中,外部router无法访问
- 操作
- Router连接Account Manager后,用户在Router上进行登录
- 登陆后,可采用此身份向跨链网络中的任意资源发交易,无论是否是此router连接的资源
- 限制
- Router限制:Router只有连接了相应机构的Account Manager,才能启动
- 用户限制:跨链账户数据由某个Account Manager管理,用户只能在连接了自身机构WeCross Account Manager的Router上才能登录成功
部署¶
下载
参考:下载程序
配置
- 配置与Router连接的公私钥
cd WeCross-Account-Manager
cp ~/wecross/routers-payment/cert/sdk/* ./conf #从生成的router目录拷贝
- 生成自身加密的公私钥
bash create_rsa_keypair.sh -d conf/ # 在conf下生成:rsa_private.pem rsa_public.pem
- 写配置
cp conf/application-sample.toml conf/application.toml
vim conf/application.toml
内容为
[service] # Account Manager启动的service配置,Router连接至此service
address = '0.0.0.0'
port = 8340
sslKey = 'classpath:ssl.key'
sslCert = 'classpath:ssl.crt'
caCert = 'classpath:ca.crt'
sslOn = true
[admin] # 机构的admin跨链账户,第一次启动按此配置创建
username = 'org1-admin'
password = '123456'
[auth] # 登录后颁发登录令牌(jwt)的配置,name可修改为自身机构名
name = 'org1'
expires = 18000 # 5 h
noActiveExpires = 600 # 10 min
[encrypt] # 自身加密公私钥配置
privateKeyFile = 'classpath:rsa_private.pem'
publicKeyFile = 'classpath:rsa_public.pem'
[db] # 数据库连接配置
# 可在'?'后面增加其他JDBC连接参数
# Note: 对于MySQL 8.0+,默认开启useSSL=false,若MySQl部署在远端,应该正确配置MySQL的SSL选项,使用SSL
url = 'jdbc:mysql://localhost:3306/wecross_account_manager?useSSL=false'
username = 'jimmy'
password = 'abc123'
# 用于加密数据库中的敏感数据,若未配置则不进行加密
encryptKey = 'rIBJD38jqSMR@CSM'
[ext] # 拓展配置
allowImageAuthCodeEmpty = true # 是否允许空验证码,设为false后控制台无法使用
- 启动
bash start.sh # 停止:bash stop.sh