跨链服务

跨链数据连接服务

跨链数据连接服务是由蚂蚁区块链自主研发的一款面向企业级应用的支持同构/异构区块链之间数据可信交互的服务。通过跨链服务在底层区块链中的协议栈和跨链合约,实现同构或异构区块链之间可信交互,从而构成区块链价值网络,实现链上价值的可信流转,完成丰富的链间互操作。

基于跨链数据连接服务,可以打破不同区块链联盟之间的数据孤岛,完成数据的可信交换,例如打通产业链上下游不同联盟的数据通路,或者为不同的联盟提供相互增信。

跨链数据连接服务目前正在公测中,试用申请

跨链服务调用链路

使用跨链数据连接服务,需要将区块链在跨链数据连接服务上进行注册,并安装跨链合约,用户的业务合约通过与跨链合约交互来完成不同链之间的信息交互。合约开发

数据交互方式

目前跨链数据连接服务支持两种数据交互方式:

  • 账本数据访问:目标区块链能够通过跨链服务直接访问源区块链的相关数据。

  • 合约消息推送:源区块链能够通过跨链服务发送消息给目标区块链的智能合约,由目标链的智能合约完成对消息的处理。

跨链数据连接服务使用

开通服务

跨链数据连接服务需要在蚂蚁区块链跨链服务控制台上进行服务开通申请。服务开通

注册区块链

您需要将要跨链的区块链在跨链服务中进行注册,注册后,区块链将会拥有一个唯一的链域名作为标识。注册区块链后,跨链数据连接服务将通过跨链合约访问您的区块链,用于跨链信息传递。

  1. 单击注册区块链进入注册页面。

  2. 选择要注册的区块链类型,完成相应的注册步骤。目前该服务支持蚂蚁区块链HyperLedger Fabric,如果您需要注册其他类型的区块链,请 提交工单 联系我们。

注册蚂蚁区块链

  1. 区块链类型中选择蚂蚁区块链,系统将自动读取您在蚂蚁金服蚂蚁区块链BaaS平台上的区块链列表,从列表中选择您要注册的区块链。

    说明

    仅蚂蚁区块链的联盟管理员有权限进行此操作。

  2. 然后,为区块链创建一个域名,该域名将会是跨链授权时区块链的唯一识别身份。

    image

注册 HyperLedger Fabric

  1. 准备工作。

    需要创建好组织,并加入到一个联盟中,为需要跨链的业务创建通道,并为跨链服务创建一个用户。跨链服务将以该用户的身份完成数据同步操作。

    说明

    HyperLedger Fabric使用通道来进行业务的隔离,不同的通道需要跨链操作时,均需要在跨链服务中进行注册。

  2. 打开注册页面,填写相关信息。

    区块链类型中选择Hyperledger Fabric,可按照页面上的操作提示进行注册。

  3. 下载跨链链码包,并在阿里云BaaS的通道上传跨链链码。 链码上传请参考管理链码,并将跨链链码安装并完成实例化。

    重要

    跨链链码需要与业务链码在同一个通道中。

  4. 为跨链服务创建用户,并下载该用户的SDK配置。SDK配置

  5. 解压并上传SDK配置文件。

    获取 connection-profile-standard.yaml 的配置文件,将其上传。

  6. 配置其他信息。

    由于 connection-profile-standard.yaml 包含了全部通道和peer节点的信息,需要选择此次需要跨链的通道,以及相关验证的peer节点,填写为跨链服务创建的用户名及用户密码。

注册完成

注册完成后,可以在控制台上看到已经注册的链信息。

注册成功

跨链授权

  1. 单击已注册区块链右侧的详情按钮,进入到详情页。

  2. 单击跨链授权功能,进入到跨链授权页面。

账本数据访问授权

授权已经注册的另外一条区块链通过跨链服务访问当前区块链的账本数据。

支持访问的数据类型如下:

  • 蚂蚁区块链交易

  • 蚂蚁区块链区块

  • 蚂蚁区块链区块头

账本授权

说明

上图的授权示例中,区块链 crosschain1.oracle.chain 允许区块链crosschain2.oracle.chain 直接通过跨链服务读取链上的交易信息 。

合约消息推送授权

授权已经注册的另外一条区块链的指定合约向当前区块链的指定合约发送消息。

合约消息授权

说明

上图的授权示例中,区块链 crosschain1.oracle.chain 允许区块链crosschain2.oracle.chain 的合约 sourceContract 发送消息给本区块链上的合约 destContract,由destContract完成对消息的处理。

授权查看

授权成功后,可以在我的权限中查看相关授权的信息。

授权查看

业务合约开发

账本数据访问开发流程

用户智能合约使用账本数据访问 API 接口,开发流程如下:

  • 在蚂蚁区块链BaaS平台上获取账本数据合约名称。

  • 获取账本数据访问 API 接口定义(ChainDataInterface.sol)。

  • 在用户合约中引入账本数据访问 API 定义。

  • 用户合约实现回调接口,用于异步接收账本数据回调使用。

  • 用户合约构建账本数据访问请求(ChainDataCmdHelper.sol)。

  • 用户合约向账本数据合约发送请求,具体参考API使用示例。

  • 账本数据服务返回数据为 JSON 格式,具体格式参考账本数据结构部分。

业务合约开发参考:

合约消息推送开发流程

用户智能合约使用合约消息推送服务API接口,开发流程如下:

  • 在BaaS平台上获取消息合约名称。

  • 获取合约消息推送 API 接口定义。

  • 在用户合约中引入合约消息推送 API 接口。

  • 用户合约实现接收消息接口,供跨链消息收发合约调用。

  • 用户合约调用跨链消息收发合约发送消息接口。

业务合约开发参考: