1. 定义
为保证跨链交易流程的完整性,一致性需要事务管理来控制。在跨链交易流程中,出现其中一方失败或者异常时,应该由跨链事务的异常处理介入该次跨链。
2. 流程
为保证跨链交易的事务的正常控制,我们将跨链交互中对子链的操作分为了两个原子性操作:写操作和读操作。
AMDP协议完整流程包含对多个子链的读写操作。原子操作结束后,调用事务合约,将原子操作结果记录到治理链事务控制中。
step1. 跨链操作开始后,跨链发起方开启事务控制,并调用事务治理合约创建事务记录。
step2.事务开启后,跨链发起方通过AMDP,向跨链接收方发起跨链操作。
step2-3 跨链接收方在接收到跨链请求后,需要先根据交易凭证查询本交易发起方提交的事务状态,
step3. 如前半段事务无异常,跨链接收方会在处理完相关跨链操作后,将跨链操作结果反馈给跨链发起方,并将在本方的原子操作结果补充到事务记录中。
step4. 如查询到事务存在失败或异常情况,则停止本次跨链操作,并补齐事务。
step5. 在事务补齐后,跨链代理服务会同步最新的事务记录,并进行跨链互操作验证
3. 跨链互操作验证
4. 事务补偿
根据跨链交易执行发生的异常或失败的具体情况进行自动补偿(如心跳抖动等)、回滚操作(子链业务数据不具备完成跨链交易)或人工干预(宕机,网络断开等)相结合等多种补偿处理方式。
补偿操作过程中,治理代理服务调用事务治理合约,将最新的事务处理结果同步到事务记录中。