# Router **Repository Path**: JimmyShi22/router ## Basic Information - **Project Name**: Router - **Description**: 陆羽协议跨链路由 - **Primary Language**: Java - **License**: Apache-2.0 - **Default Branch**: develop - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 5 - **Created**: 2021-09-24 - **Last Updated**: 2022-05-24 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 陆羽协议 跨链路由 此版本已实现调用Account Manager进行二级账户签名,为调试方便,一级账户签名校验暂时未开启,调用消息包中可不填一级账户签名信息。 ## 下载 ``` bash git clone https://gitee.com/luyu-community/router.git ``` ## 编译 ``` bash cd router gradle assemble # 编译,若成功,生成dist目录 ``` ## 生成网络 用脚本生成跨链路由网络,此处以生成2个路由组成的网络为例 ``` bash cd dist vim ipfile ``` 编写文件`ipfile`,内容为2个路由的`ip:rpc_port:p2p_port`,按行区分 ``` 127.0.0.1:8250:25500 127.0.0.1:8251:25501 ``` 执行命令生成网络 ``` bash bash build_router.sh -n payment -f ipfile ``` 成功后,即生成2个彼此互连的router。路由未启动,待进一步配置接入区块链。 ``` [INFO] Create /mnt/d/code/luyu/router/dist/routers/127.0.0.1-8250-25500 successfully [INFO] Create /mnt/d/code/luyu/router/dist/routers/127.0.0.1-8251-25501 successfully [INFO] All completed. Routers are generated in: /xxxxxxxxx/dist/routers/ ``` 生成的router目录默认位于`routers`目录下 ``` bash tree -L 1 routers/ routers/ ├── 127.0.0.1-8250-25500 # 路由8250 ├── 127.0.0.1-8251-25501 # 路由8251 ├── cert # 证书目录 ├── start_all.sh └── stop_all.sh ``` 其中,`account-manager`和`sdk`所需的证书位于`cert`目录下 ``` bash tree -L 1 routers/cert/ routers/cert/ ├── account-manager # account-manager 所需证书 ├── ca.crt # 根证书 ├── ca.key # 根证书私钥 ├── ca.srl ├── cert.cnf ├── create_cert.sh # 生成证书的脚本,可用此脚本基于本目录的ca继续生成更多的证书 ├── node0 # 路由8250 证书(已自动配置) ├── node1 # 路由8250 证书(已自动配置) └── sdk # sdk 所需证书,按需拷贝 ``` ## 配置 ### 配置账户服务 [参考account-manager的说明](https://gitee.com/luyu-community/account-manager),拷贝证书后启动即可,默认端口8340。 ### 配置路由 位于`routers/127.0.0.1-xxxx-xxxxx/application.toml` 其中RPC端口为8250,为接下来测试时所用的端口。account-manager端口默认8340。其它参数默认即可。 ### 配置插件 将编译生成的插件放置于每个router的plugins目录下 **注:每个路由都需配置所有的插件** ``` bash cd routers/127.0.0.1-xxxx-xxxxx/ mkdir plugin cp xxxxxx.jar plugin ``` ### 配置接入链 配置目录`src/test/resources/chains/` 下,文件夹名即为链名(如链名为hello的配置文件目录为:`src/test/resources/chains/hello`) 内部有三个配置文件: * plugin.toml:必配,总配置,配置链名和插件类型 * driver.toml:选配,driver的properties配置,不配则为空 * connection.tom:选配,driver的properties配置,不配则表示是远端资源,用remoteConnection进行初始化 **plugin.toml** ``` toml [common] name = 'hello' # 链名 type = 'Hello1.0' # 链类型,用哪个插件进行加载 ``` **driver.toml** ``` toml [aaaaa] # 任意定制,router读取后直接透,用作初始化Driver所需的proterties bbbb = "ccccc" ``` **connection.toml** ``` toml [bbbb] # 任意定制,router读取后直接透,用作初始化Connection所需的proterties eeee = "kkkkk" ``` ## 调试方法 **启动路由** ``` bash cd routers bash start_all.sh # 停止:stop_all.sh ``` ### 手动调试 请保证路由的rpc接口设置为非SSL模式,即`sslSwitch = 2` **查询资源** `POST` `http://localhost:8250/sys/listResources` ``` json { "version":"1", "data":{ "ignoreRemote": false } } ``` **发送交易** `POST` `localhost:8250/resource////sendTransaction` ``` json { "version":"1", "data":{ "path": "payment.hello.contract-1618385695131", "method": "set", "args": ["aaaa"], "nonce":123456, # 任意 "luyuSign":"xxxx", # 任意,一级账户签名校验暂时未开启,此字段可不填 "sender": "aaabbb" # 任意 } } ``` **查询状态** `POST` `localhost:8250/resource////call` ``` json { "version":"1", "data":{ "path": "payment.hello.contract-1618385695131", "method": "get", "args": ["bbb"], "nonce":123456, "nonce":123456, # 任意 "luyuSign":"xxxx", # 任意,一级账户签名校验暂时未开启,此字段可不填 "sender": "aaabbb" # 任意 } } ``` ### SDK 调试 可用SDK发送请求包,相关方法请参考 [SDK](https://gitee.com/luyu-community/luyu-java-sdk)