一种可监管的区块链跨链平台设计*

2022-01-15 06:24雷志伟郭涑炜
计算机与数字工程 2021年12期
关键词:中继网关合约

雷志伟 朱 义 张 健 郭涑炜

(清华大学北京信息科学与技术国家研究中心 北京 100084)

1 引言

2019年10月24日,习近平总书记在中共中央政治局第十八次集体学习时强调了区块链技术的重要性和必要性[1]。在金融领域通过区块链在托管人和客户之间的账簿分录传输层创建一个全球统一的平台,则能够大幅度提升结算效率[2]。国际掉期与衍生工具协会ISDA(Internat-ional Swaps and Derivatives Association)则借助一种区块链DAML(Digital Asset Modeling Language)智能合约语言实现了交易数据的存储[3]。

区块链广泛受到各行业和各互联网公司的重视。比如亚马逊配备区块链数据副本数据库Amazon Quantum Ledger Database(QLDB),该数据库可用于跟踪每次的应用程序数据更改,并不断维护完整且可验证的更改历史记录[4]。随着区块链业务的日益扩大,必然存在涉及到两条或多条区块链之间的数据交互跨链需求。本文对相关区块链跨链平台作了调研,对其核心技术和功能作了分析和设计。

2 相关技术分析

2.1 智能合约分析

智能合约本质是附加在交易上的可执行代码,它通过预言机技术来实现与现实世界的数据交互。预言机的分类,根据数据的输入方向,入站预言(Inbound Oracles)允许网络从外部数据源向智能合约发送信息,出站预言机(Outbound Oracles)允许智能合约向外部数据源发送数据[5]。蔡维德认为预言机系统设计有两个需求,一个是保证数据的可靠性,另外一个是监管性和隐私性,这里面监管性和隐私性是两个相互矛盾的性质。强监管性必然导致弱隐私性,而强隐私性必然弱化监管[6]。

另外。由于网络、节点处理速度等原因,各节点直接获取外界数据时可能会有偏差,从而造成结果不同,一种稳定可靠的解决方案是通过发送一笔区块链交易,交易中附加需要的数据,智能合约通过回调函数获取数据并同步到每个节点,从而保证数据的完全一致。图1的智能合约与预言机的通信过程[7]也是采用此机制。

图1 智能合约与预言机的通信过程

2.2 跨链技术分析

针对区块链是否采用同一底层协议,跨链分为同构区块链和异构区块链。底层协议主要包括安全机制、共识算法、区块生成验证等底层逻辑。正如交易在单个区块链上有回滚的可能性,需要配套补偿机制以确保交易完备性[8],跨链技术主要的挑战为跨链事务原子性,需要保证跨链交易的任意一方未生效,另一方可以及时回滚;同时还需要设计一套完整的寻址协议来解决跨链定位并执行相关操作。

目前,国际上使用的主要技术有三大类:公证人机制(Notary Schemes)引入一个共同信任的第三方作为中介,由这个共同信任的中介进行的验证和转发。其优点是灵活地支持各种不同结构的区块链[9]。公证人机制按模式分为单签名公证人、多签名公证人和分布式签名公证人。单签名公证人模式存在中心化问题,多方签名需要每条链均支持多重签名。分布式签名公证人模式基于多方计算安全性更高,实现难度更大[10]。公证人角色在金融领域里好比CCP(Central Cou-nterparties)中央对手方。中央对手方是每一个卖方的买方和每一个买方的卖方,如果有一方交易对手违约,也能够确保交易的正确完成[11]。

哈希时间锁定合约HTLC(Hashed TimeLock Contract)最早出现在比特币的闪电网络,采用哈希锁和时间锁技术。所谓哈希锁既是一种基于哈希运算的证明方式。资产的接收方需要在规定时间内确定收款并产生一种收款证明给打款人,否则资产会归还给打款人[12]。侧链(Sidechains)是相对于主链的另外一条区块链,通过双向锚定技术(Two-way Peg),先将数字货币在主链中锁定,同时将等价的数字资产在侧链中转移。侧链常用的实现方式是SPV(Sim-plified Payment Verification)简单支付验证模式,不用下载全部区块数据,仅通过验证部分交易来完成验证功能。BTC-Relay[13]基于以太坊的智能合约可安全验证比特币的交易,其核心原理是在智能合约里保存一份轻量的比特币交易数据。

图2 是基于BTC-Relay侧链的一个跨链转账的交易流程。Step1为Bob发送50ETH到BTCSwap合约进行冻结;Step2为Alice确认Bob冻结信息后,将1BTC转到Bob比特币账户;Step3为BTC-Relay同步最新区块头数据;Step4为BTC-Relay将最新比特币区块头推送到BTCSwap合约;Step5为Alice将自己转BTC给Bob的交易tx发给合约BTCSwap合约,请求50ETH;Step6为BTCSwap合约结合tx和区块链数据进行SPV验证,验证通过则将50ETH转到Alice的以太坊地址。

图2 BTC-Relay跨链交易流程

2.3 区块链BaaS平台分析

区块链即服务BaaS(Blockchain as a Service,BaaS)平台是为区块链应用开发者提供区块链服务能力的平台,用来帮助用户和企业创建、管理和维护区块链业务。在国外,三星Nexledger平台提供了一种数字签章解决方案实现了客户的身份认证[14]。索尼区块链通用数据库移动服务[15]面向交通运输并基于索尼的IC卡技术开发了一种非接触式IC卡类型的“虚拟货币硬件钱包技术”。

在国内,天德链TDBC平台内置了常见业务场景的智能合约模板,用户或应用可根据具体需求,通过配置合约的初始化参数直接创建个性化智能合约[16]。招商银行ABS区块链平台特色之一是隐私保护,自动清算过程中会对报文进行加解密。另外基于分布式清算机制,报文解析后会进行一个汇总,之后再将数据存储到区块链系统上,同时清算行得到数据并提交给总行汇总[17]。华大BGI区块链通过个人基因ID技术,解决区块链技术中的数字身份无法安全关联个人实体身份的问题[18]。

在图3所示的区块链BaaS系统架构中,平台包括区块链核心、安全管理、运营管理等多个模块,针对前端应用开发区块链浏览器、合约IDE等客户端工具,接入SDK支持GO、JAVA、JavaScript和Python等多种语言,底层以可插拔插件方式支持LevelDB、MySQL和RocketsDB和CouchDB等多种数据库。通过简单易用、成熟可扩展和安全可靠的可视化运维服务,满足区块链开发者快速部署和高效开发的需求。

图3 区块链BasS系统架构

2.4 区块链跨链平台分析

在基于“主链+平行链”的跨链平台的设计中,主链交易只做共识和存储,运行一些基础核心的合约。平行链依附于主链,共享主链的共识网络,通过GRPC或其他网络协议接口同主链节点相连。实际的交易都在平行链上执行,平行链各自执行自己的交易,互不干扰。通过多条平行链共存,实现了交易的并行执行。

中继链(Relay chain)是公证人机制和侧链机制的融合和扩展。中继链不从属于某条区块链,而是一个调度中心和通信枢纽,负责数据传递用来提供统一的共识和安全保障。

波卡(Polkadot)是一种集成平行链和中继链的多层多链架构,其桥接链(Bridges)帮助第三方链接入系统[19]。Cosmos公链将节点功能分成Tendermint Core和应用程序两个部分,两者之间使用特定通信协议进行数据传递。前者负责在节点之间共享区块和交易并对交易排序,后者负责账本数据存储。第三方链基于Tendermint SDK实现预定义好的区块链接口以加入平台[20]。

微众银行WeCross底层支持Hyperledger Fabric和自研链FISCO BCOS[21],趣链BitXHub平台处理一笔系统合约需要30ms,处理一笔跨链交易平均延迟大于230ms[22]。百度XChain可信跨链平台将可信中继与可信计算技术进行集成并内置了TEE[23]。纸贵科技Zeus多链网络是一种“一主链+N子链”架构,主链作为中继链进行子链间跨链通讯,主链使用自研Apollo共识算法,支持启动运行不同逻辑的异构子链,子链支持定制化实现,并借助跨链通讯脚本Adapter在子链间完成跨链通讯[24]。蚂蚁区块链跨链服务特色在于支持账本数据共享,另外其建立了一个统一区块链域名模块,每一个域名对应一个私钥,每一个应用区块链通过对应一个域名获得身份标识[25]。康博涵[26]提出了一种基于组件式、模块化设计的一种跨链通信服务框架,设计了一种三阶段的事务提交验证机制。

2.5 基于监管的区块链平台分析

华为BCS跨链方案具有跨链交易多方行为的一致性验证机制[27],仲裁节点可管理跨链交易验证结果。腾讯CCGP跨链平台“以链治链”[28]。创世机构持有“创世节点”承担治理角色,其执行创世合约部署管控、授权跨链业务方调用、协同治理等合约交易。业务方机构经过申请可成为“治理节点”。监管审计机构持有“审计节点”不参与共识,可同步治理链上数据。

针对区块链对合法性和监管的需求,巫光福提出一种交易区块链(TBC)和监管区块链(RBC)并行的双链结构区块链监管平台。监管区块链提供智能合约,交易链根据智能合约的预定规则执行交易。在交易链中,可以根据实际交易和智能合约组合更高效地去执行交易[29]。为满足KYC了解客户(Know Your Customer)和AML反洗钱(Anti m-oney Laundering)规则,蔡维德提出一种熊猫区块链模型,该模型将账户信息和交易信息分开,交易分成两步操作,交易前可以确认其合法性,交易后可以回滚和再次确认交易[30]。进而,为面向数字金融单位注册和监管服务,蔡维德基于TRISA旅行规则信息共享架构提出了一种新的架构,该架构建设了一个区块链数据湖(BDL)平台用来备份存储所有交易数据。BDL系统分为三种区块链,个人账户链、交易数据链和映射信息链[31]。映射信息链用来存储原始数据到新的区块链数据的相关地址映射。

3 可监管的跨链平台设计

3.1 平台的系统架构

如图4系统架构所示,中继链是一个跨链交易数据的分布式账本,由于监管需要,系统底层设计了监管链用于跨链数据的溯源和存证。监管链由账户信息链和交易数据链组成,账户信息链用来存储用户身份信息。交易数据链存储了所有跨链交易以备监管。由此,一方面可以对参与跨链的所有业务进行异常行为和风险的审计服务。同时还可以进行业务管控,既是执行跨链交易的过程中,如果发现异常跨链治理业务可进行限制处理。

图4 系统架构

平台基于网关+中继链的架构模式实现异构区块链的跨链交互。在图5所示的跨链网络拓扑图中,一个应用链连接一个跨链网关,并通过跨链网关与其他链完成跨链交易。跨链网关通过跨链通信协议进行数据传递。

图5 跨链网络拓扑

3.2 跨链适配层

由于区块链的架构因链而异,为了适配不同区块链的数据交互,每个接入平台的应用链需要提供一个适配器,其定义了一个统一的数据交互接口。为了模块解耦,达到便捷接入的效果,设计了插件机制。每种应用链配备相关链的插件,跨链网关通过接口与应用链插件进行数据通信,从而完成应用链的跨链交易的监听、同步和执行。

以太坊的ERC20标准统一了代币协议和规范,符合标准的代币可以被各种以太坊钱包支持。此标准定义了一系列的方法名称和参数,包括获取代币名称、代币总量、将代币转移等方法,并定义了代币转移触发事件[32]。

系统设计了跨链的相关接口和事件,每种应用链需要在其智能合约里面实现默认接口。一方面要提供基于SPV轻节模式的交易验证接口,同时还需要跨链交易的接口,可以有两个,一个是发送跨链消息,一个是接收跨链消息。发送消息接口里面触发跨链事件。

比如发送跨链消息函数的参数可定义如下:

/*_destination:目标区块链名称

*_receiver:接收消息的合约名称

*_message:消息内容*/

function sendMessage(string_destination,string_receiver,bytes_message);

接收跨链消息函数的参数可定义如下:

/*_source:来源区块链名称

*_sender:消息来源的合约名称

*_message:消息内容*/

function recvMessage(string_source,string_sender,bytes_message);

3.3 跨链核心层

3.3.1 跨链网关

每个跨链网关节点运行中继链节点,并运行一个至多个应用链插件。中继链进程与应用链插件进程使用socket进行跨进程通信,从而获取应用链的最新数据和状态。每个跨链网关有一个输入消息队列和输出消息队列,输入消息队列用来接收跨链交易,输出队列用来发送跨链交易。在图6所示的跨链网关图中,跨链网关1支持应用链A和应用链B的跨链操作。

图6 跨链网关

3.3.2 跨链交易流程

图7 跨链通信流程

图7 所示的跨链通信流程如下:

Step1.Alice调用应用链A的合约方法;

Step2.合约方法被执行,抛出跨链事件Ta;

Step3.应用链A的跨链网关A监听到Ta,将其转换成跨链消息,提交到中继链;

Step4.中继链依据相关规则对Ta进行验证,并进行路由转发将消息发给跨链网关B;

Step5.跨链网关B接收到事件Ta并根据跨链消息进行解析,转换成应用链B可识别的交易Tb,并将Tb提交到应用链B上进行执行。

为解决数据安全问题,跨链网关在发送消息时可以使用对方的公钥进行加密。

3.3.3 跨链通信协议

跨链通信协议可借鉴传输层的TCP协议,实现面向连接的、可靠的跨链消息传输。跨链数据包的主要内容为

type Packet struct{

SrcID string;//来源链ID

SrcSmart string;//来源链的合约名称

SrcFunc string;//来源链的接口名称

SrcSig string;//来源链签名

GateSig string;//网关签名

DstID string;//目标链ID

DstSmart string;//目标链的合约名称

DstFunc string;//目标链的接口名称

Timestamp uint64;//时间戳

协议URI的语法可以定义为

[chainType]://[chainName]/[options]。“chain-Type”表示目标链类型,“chainName”表示目标链名字。“options”值可以为“lang”或“contract_name”,前者表示目标链合约语言,后者可表示目标链合约名称。比 如“Fabric://chain1?lang=wasm&contract_name=test”表示目标链是Fabric、合约语言为wasm的名称为test的智能合约。

3.3.4 跨链交易验证

交易验证包括验证交易的存在性和有效性,即是对交易凭证相关的用户身份和节点身份包括来源链数字签名、跨链网关签名、跨链交互中的权限判断等数据进行安全判断,确保跨链数据的可信和不可篡改。

3.3.5 事务管理

跨链的事务管理分为两个子问题,即交易的最终确定性问题和交易的原子性问题。交易的原子性是跨链交易的基本要求和解决的难点[33]。

跨链网关在查询到事务存在失败或异常情况时,必须停止本次跨链操作,并补齐事务,可采用基于心跳抖动的自动补偿或人工干预等多种补偿处理方式,比如可以增加一个事务撤销的合约接口,通过调用应用链的该接口实现事务一致性。补偿操作过程中,需要将最新的事务处理结果同步到中继链中。

3.4 跨链服务层

跨链服务主要包括对应用链的管理,包括注册、更新、审核和注销等操作。用户在后台填写资料进行注册,并填写跨链接口信息、跨链网关节点、智能合约类型和合约名称等信息。平台采用管理员人工审查和建立智能合约沙盒测试混合模式,管理员负责应用链审核、更新操作,同时维护跨链网关。应用链在加入中继链之前,需要对其他链进行跨链授权操作,并由系统生成公私钥对或者注册时携带公钥信息以具备签名和加密功能。

3.5 中继链

中继链是一个单独的区块链,用来记录跨链交易数据,它包含区块链共识算法、P2P网络、交易缓存池和消息队列等模块,其单个交易的数据结构主要是跨链数据包的内容。

3.6 监管链

3.6.1 账户信息链

2018年欧盟部署了欧洲区块链服务基础设施EBSI(European blockchain services infrastructure),EBSI的欧洲自主身份框架ESSIF(The E-uropean self sovereign identity framework)功能是一个用户身份区块链,既是将每个用户的身份信息上链[34]。

图8设计的账户信息区块链由跨境分布在多个国家的节点组成,满足了交易的KYC/AML原则,并可将黑名单用户传送给跨链网关以阻止非法交易。

图8 账户信息区块链

3.6.2 交易数据链

中继链在创建一个新的跨链交易时,将交易数据同步发送给交易数据链保存作为一个数据备份,并配备传统数据库方式实现数据的快速查询。从而有利于监管者线下对所有跨链交易进行分析和检测,由于不触碰原始交易数据,跨链业务具备独立安全性。为了实现权限、监管和准入等功能,可根据需要设计权限管理合约、业务监管合约、业务准入合约等模块。

4 结语

本文调研了诸多区块链BaaS平台和跨链平台,通过对相关核心功能比如跨链适配、跨链网关和通信协议等作了分析和设计,并创造性地在基于中继链跨链平台的基础上引入监管链,并将监管链分为账户信息链和交易信息链,有效保障了交易监管性。未来将完善相关细节并进行系统原型开发,以实践验证和进行相关性能和指标测试。

猜你喜欢
中继网关合约
基于FPGA的工业TSN融合网关设计
一种主从冗余网关的故障模式分析与处理
基于非专用中继节点的双跳中继用频规划*
天地一体化网络地面软网关技术及其应用
“鹊桥号”成功发射
Link—16中继时隙自适应调整分配技术研究
车联网网关架构的设计