Giter Site home page Giter Site logo

antchainbridgepluginserver's Introduction

am logo

AntChain Bridge Plugin Server

pull requests welcome badge Language GitHub contributors License

介绍

AntChain Bridge 插件服务(PluginServer, PS)用于管理异构链插件、完成与中继通信的工作。

  • 插件管理能力

    在开发者完成一个异构链插件开发之后,将该插件打包放到PS的指定路径之下,启动PS即可加载该插件,PS将完成插件和区块链桥接组件(Blockchain Bridge Component, BBC)对象的管理等工作,PS还提供了CLI工具完成诸如插件重新加载、停止等工作。

  • 与中继通信

    将PS注册到一个中继之后,PS会作为一个RPC Server为中继提供服务,PS和中继之间会建立双向认证的TLS连接,确保身份互认和安全性,中继会发送请求要求PS完成BBC对象初始化等工作,并调用BBC的接口,完成与异构链的交互。

架构

下面介绍了中继服务的整体架构。

*以下插件BCOS和插件ChainMaker均为展示用例,代表不同的异构插件实现

快速开始

构建

进入代码的根目录,运行mvn编译即可:

mvn clean package

产生的安装包在ps-bootstrap/target/plugin-server-0.1.2-SNAPSHOT.tar.gz

配置

在获得安装包之后,执行解压缩操作,这里以plugin-server-0.1.2-SNAPSHOT.tar.gz为例。

tar -zxf plugin-server-0.1.2-SNAPSHOT.tar.gz

进入解压后的目录,可以看到:

cd plugin-server/
tree .
.
├── README.md
├── bin
│   ├── init_tls_certs.sh
│   ├── print.sh
│   ├── start.sh
│   └── stop.sh
├── config
│   └── application.yml
└── lib
    └── ps-bootstrap-0.1.2-SNAPSHOT.jar


3 directories, 7 files

首先,初始化PS的TLS秘钥和证书,该脚本将会在项目根目录下创建文件夹certs,下面存储了私钥server.key、证书server.crt、信任的证书trust.crt

./bin/init_tls_certs.sh

然后,在和中继建立连接之前,中继的运维人员应该将中继的证书发送给了您,比如relayer.crt,您需要将这个证书添加到trust.crt中。

cat relayer.crt >> trust.crt

最后修改您的配置文件,将证书目录配置进去。

vi config/application.yml

依次替换grpc.server.security.certificate-chaingrpc.server.security.private-keygrpc.server.security.trustCertCollection的配置项。
下面给出一个例子,示例中诸如/path/to/certs/server.crt的具体配置属性值请替换为您的实际路径,file:保留:

grpc:
  server:
    security:
      # server certificate
      certificate-chain: file:/path/to/certs/server.crt
      # server key
      private-key: file:/path/to/certs/server.key
      # Mutual Certificate Authentication
      trustCertCollection: file:/path/to/certs/trust.crt

然后修改插件库路径,PS将加载这个路径下的插件。修改配置项pluginserver.plugin.repo,比如:

pluginserver:
  plugin:
    # where to load the hetero-chain plugins
    repo: /path/to/plugins

将您的插件都放到这个路径下即可。

运行

在解压包根目录之下,运行一下命令即可:

./bin/start.sh

看到下面的输出即启动成功:

    ___            __   ______ __            _           ____         _      __
   /   |   ____   / /_ / ____// /_   ____ _ (_)____     / __ ) _____ (_)____/ /____ _ ___
  / /| |  / __ \ / __// /    / __ \ / __ `// // __ \   / __  |/ ___// // __  // __ `// _ \
 / ___ | / / / // /_ / /___ / / / // /_/ // // / / /  / /_/ // /   / // /_/ // /_/ //  __/
/_/  |_|/_/ /_/ \__/ \____//_/ /_/ \__,_//_//_/ /_/  /_____//_/   /_/ \__,_/ \__, / \___/
                                                                            /____/        

[ INFO ]_[ 2023-03-30 15:11:27.1680160287 ] : start plugin-server now...
[ INFO ]_[ 2023-03-30 15:11:27.1680160287 ] : plugin-server started successfully

可以通过bin/stop.sh关闭服务。

日志文件存储在log目录之下。

运行测试

在运行测试之前,请使用ps-bootstrap/src/main/resources/scripts/init_tls_certs.sh生成证书,并将server.keyserver.crt 放到ps-bootstrap/src/test/resources之下,运行下述命令即可运行测试用例:

mvn test

CLI

我们将在不久之后提供一个CLI工具,用于管理插件服务。

社区治理

AntChain Bridge 欢迎您以任何形式参与社区建设。

您可以通过以下方式参与社区讨论

  • 钉钉

scan dingding

  • 微信

scan_wechat

  • 邮件

发送邮件到[email protected]

License

详情参考LICENSE

antchainbridgepluginserver's People

Contributors

zouxyan avatar bladechen avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.