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.sh
的SDK_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>
参考这里配置您的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是一个用于讲解如何开发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 欢迎您以任何形式参与社区建设。
您可以通过以下方式参与社区讨论
- 钉钉
- 邮件
发送邮件到[email protected]
详情参考LICENSE。