/AntChainBridgePluginSDK

AntChainBridge 插件SDK和插件池

Primary LanguageJavaApache License 2.0Apache-2.0

am logo

AntChain Bridge Plugin SDK

pull requests welcome badge Language GitHub contributors License

介绍

AntChain Bridge将跨链互操作解释为两个层次:通信和可信,即跨链的目标在于实现区块链实体之间的可信通信。

在AntChain Bridge的架构中,中继需要与区块链进行交互,而异构链的通信协议各式各样,无法统一适配,因此AntChain Bridge抽象出了区块链桥接组件(Blockchain Bridge Component, BBC),来解决区块链和跨链网络的通信问题。

每种异构链要接入AntChain Bridge跨链网络,都需要实现一套标准的区块链桥接组件,可以分为链上和链下两部分,包括链下插件系统合约。链下插件需要基于SDK完成开发,链上部分则通常是智能合约,要求实现特定的接口和逻辑,为降低开发难度,我们提供了Solidity版本的实现

AntChain Bridge为开发者提供了SDK、手册和系统合约模板,来帮助开发者完成插件和合约的开发。同时,AntChain Bridge提供了插件服务(PluginServer)来运行插件,插件服务是一个独立的服务,具备插件管理和响应中继请求的功能。

在当前的工程实现中,BBC链下部分是以插件的形式实现的。AntChain Bridge实现了一套SDK,通过实现SDK中规定的接口(SPI),经过简单的编译,即可生成插件包。插件服务(PluginServer, PS)可以加载BBC链下插件,详情可以参考插件服务的介绍文档

以下介绍了插件的一个集成架构:

插件SDK共有四个部分,包括:

  • antchain-bridge-commons:包含很多工具方法和数据结构,帮助BBC实现快速开发;

  • antchain-bridge-plugin-lib:BBC插件化的依赖库,给出一个注解@BBCService,帮助插件开发者可以快速完成插件构建;

  • antchain-bridge-plugin-manager:插件的管理库,提供插件的加载、生命周期管理等能力,插件服务依赖于这个库;

  • antchain-bridge-spi:主要包含了接口IBBCService,描述了一个BBC实现类应该有的功能,开发者只要依次实现接口即可,详细接口介绍请

构建

*在开始之前,请您确保安装了maven和JDK,这里推荐使用openjdk-1.8版本

在项目根目录下面的scripts路径下,运行脚本完成编译和打包:

./package.sh 

可以在scripts下,看到一个压缩包:antchain-bridge-sdk.tar.gz

安装

本地安装

解压上一步产生的压缩包antchain-bridge-sdk.tar.gz,或者在release页面找到适合的版本并下载到本地,解压之后,在根目录下,运行脚本完成SDK的安装:

./install_sdk.sh

提示信息如下,代表安装完成:

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

[ INFO ]_[ 2023-06-14 14:23:47.168 ] : successful to install antchain-bridge-commons-0.1.1.jar
[ INFO ]_[ 2023-06-14 14:23:49.168 ] : successful to install antchain-bridge-spi-0.1.1.jar
[ INFO ]_[ 2023-06-14 14:23:50.168 ] : successful to install antchain-bridge-plugin-lib-0.1.1.jar
[ INFO ]_[ 2023-06-14 14:23:52.168 ] : successful to install antchain-bridge-plugin-manager-0.1.1.jar
[ INFO ]_[ 2023-06-14 14:23:52.168 ] : success

这样,SDK的Jar包就被安装在本地了。

然后,可以通过在maven的pom.xml配置依赖就可以了,比如下面一段配置,${antchain-bridge.sdk.version}为当前仓库的版本号,可以在print.shSDK_VERSION中看到。

<dependency>
    <groupId>com.alipay.antchain.bridge</groupId>
    <artifactId>antchain-bridge-plugin-lib</artifactId>
    <version>${antchain-bridge.sdk.version}</version>
</dependency>
<dependency>
    <groupId>com.alipay.antchain.bridge</groupId>
    <artifactId>antchain-bridge-plugin-manager</artifactId>
    <version>${antchain-bridge.sdk.version}</version>
</dependency>
<dependency>
    <groupId>com.alipay.antchain.bridge</groupId>
    <artifactId>antchain-bridge-spi</artifactId>
    <version>${antchain-bridge.sdk.version}</version>
</dependency>
<dependency>
    <groupId>com.alipay.antchain.bridge</groupId>
    <artifactId>antchain-bridge-commons</artifactId>
    <version>${antchain-bridge.sdk.version}</version>
</dependency>

通过GitHub Package安装

参考这里配置您的maven,在setting.xml中配置上您的GitHub账号和Token。

在您的项目pom.xml中,配置上我们的repository:

<repositories>
    <repository>
        <id>github</id>
        <url>https://maven.pkg.github.com/AntChainOpenLab/*</url>
        <snapshots>
            <enabled>true</enabled>
        </snapshots>
    </repository>
</repositories>

这样您就可以导入上面的dependency来使用SDK。

快速开始

Testchain

Testchain是一个用于讲解如何开发BBC插件的demo工程,结合AntChain Bridge的文档,可以更好地理解BBC的开发过程。

详细的开发教程请参考本仓库的Wiki

以太坊

基于SDK,我们开发了一个打通以太坊的BBC插件

进入以太坊插件的路径下,可以看到以下文件:

# tree -L 4 .        
.
├── offchain-plugin
│   ├── README.md
│   ├── pom.xml
│   └── src
└── onchain-plugin
    ├── README.md
    └── solidity
        ├── scenarios
        │   └── nft_crosschain
        └── sys
            ├── AppContract.sol
            ├── AuthMsg.sol
            ├── SDPMsg.sol
            ├── interfaces
            └── lib
  • offchain-plugin工程下面,我们基于Web3j,实现了以太坊的BBC插件的链下部分;
  • onchain-plugin工程下面,主要分为两部分:
    • sys:包含以太坊的BBC链上部分,实现了AM、SDP等逻辑。
    • scenarios:本路径下的nft_crosschain中,我们实现了一套跨链桥方案,用于ERC1155资产的跨链。

详细操作请

社区治理

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

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

  • 钉钉

scan dingding

  • 邮件

发送邮件到antchainbridge@service.alipay.com

License

详情参考LICENSE