跨链交易(CCTX)可分为两类:入站与出站。
入站交易(连接链 → ZetaChain)在连接链上发起,并在 ZetaChain 上落地。一次入站交易包含两笔链上交易:
- 入站:在连接链上发起并被观测到的交易。
- 出站:对应交易在 ZetaChain 上广播并执行。
出站交易(ZetaChain → 连接链)在 ZetaChain 上发起,并在连接链上落地。一次出站交易同样包含两笔交易:
- 入站:在 ZetaChain 上发起并被观测到的交易。
- 出站:对应交易在连接链上广播并执行。
追踪 CCTX 时,可使用入站交易哈希查询 ZetaChain 的 Cosmos SDK HTTP API,以获取 CCTX 哈希。如果某个 CCTX 进一步触发另一笔 CCTX(例如一次入站操作触发出站),则可将第一笔 CCTX 的哈希作为入站哈希继续查询下一笔 CCTX。
入站与出站联合流程
以下示例展示了从 Ethereum Sepolia 向 ZetaChain 上的全链应用发起调用,并进一步触发 ZetaChain 向 Polygon Amoy 的出站调用。
用户调用 EVM Gateway 的 depositAndCall,目标是 ZetaChain 上的全链兑换合约。该合约会将存入资产兑换为目标 ZRC-20 代币,并调用 ZetaChain Gateway 的 withdraw,从而在 Polygon Amoy 发起代币转账。
该流程涉及两笔 CCTX:
- Ethereum Sepolia → ZetaChain 测试网
- ZetaChain 测试网 → Polygon Amoy
Ethereum Sepolia 上的入站交易:
使用该入站交易哈希查询 CCTX 1 哈希:
再将 CCTX 1 哈希(0x542b...11da)作为入站哈希,查询 CCTX 2:
Polygon Amoy 上的出站交易:
入站示例
以下示例展示了从 Ethereum Sepolia 向 ZetaChain 上的全链应用发起调用。
用户调用 EVM Gateway 的 depositAndCall,目标为 全链兑换合约。合约会将存入资产兑换成目标 ZRC-20,并转给 ZetaChain 上的收款人。
该流程仅产生一笔 CCTX:Ethereum Sepolia → ZetaChain 测试网。
Ethereum Sepolia 上的入站交易:
CCTX 详情:
若使用该 CCTX 哈希继续查询,API 会返回 HTTP 404,说明此 CCTX 未触发新的跨链交易。
入站并终止(Abort)
以下示例展示了从 Ethereum Sepolia 调用 ZetaChain 全链应用但最终被终止的情况。
用户调用 EVM Gateway 的 depositAndCall,目标为 全链兑换合约。合约尝试将存入资产兑换为目标 ZRC-20,并计划向 Polygon Amoy 提现。但提供的代币数量不足以覆盖 Polygon Amoy 的提现 Gas 费用,导致交易回退;同时,剩余代币不足以支付回退至 Ethereum Sepolia 的费用,因此交易最终终止。
Ethereum Sepolia 入站交易:
CCTX 详情:
入站并回退(Revert)
以下示例展示了从 Base Sepolia 调用 ZetaChain 全链应用并发生回退的情况。
用户调用 EVM Gateway 的 depositAndCall,目标为 全链兑换合约。合约尝试将存入资产兑换为目标 ZRC-20,并计划向 Polygon Amoy 提现,但代币数量不足以支付提现 Gas 费用,导致交易回退。
Base Sepolia 入站交易:
ZetaChain 上的 CCTX 详情:
回退后的 Base Sepolia 交易:
多个出站交易
单笔交易可以触发多个 CCTX。
以下示例展示了在 ZetaChain 上一次函数调用对多条链执行多个 Gateway call: