跨链桥

JuChain 的跨链桥是一个去中心化的服务,允许开发者在不同测试网之间转移资产,如 JuChain 测试网、BSC 测试网(Chapel)和 ETH 测试网(Holesky)。它通过链上智能合约(主要是 BridgeBank 合约)和链下组件(Relayers 和 Signers)协同工作,管理锁定、解锁、铸造和销毁操作,确保资产跨链转移的安全性和效率。

架构概览

JuChain 跨链桥采用典型的"锁定/销毁 & 铸造/解锁"模型,并结合了链下验证机制。以下是核心组件及其交互:

  • BridgeBank 合约:部署在各个支持的链(JuChain, BSC, ETH)上的核心智能合约。

    • 源链: 负责接收和锁定(lock)用户的原始资产,或销毁(burnBridgeTokens)已桥接回来的资产,并触发相应的事件(LogLock, LogBtcTokenBurn)。

    • 目标链: 负责根据验证后的信息铸造(mintBridgeTokens)桥接资产,或解锁(unlock)返回的原始资产。

  • Relayers (中继器): 链下服务,负责监控各个链上 BridgeBank 合约的事件。

    • 监听: 持续监听源链上的 LogLock 事件(用于 ETH/BSC -> JuChain)或 JuChain 上的 LogBtcTokenBurn 事件(用于 JuChain -> ETH/BSC)。

    • 提交: 检测到相关事件后,收集事件数据并将其提交给 Signers 进行验证。

    • 执行: 收到 Signers 的有效签名/授权后,调用目标链 BridgeBank 合约的相应方法(mintBridgeTokensunlock)来完成跨链操作。图示中有多个 Relayer (Relayer_0, Relayer_1, Relayer_2),可能意味着存在冗余或并行处理机制。

  • Signers (签名者/验证者): 链下服务,负责验证跨链事件的真实性和有效性。

    • 验证: 接收来自 Relayer 的事件数据,并独立验证该事件在源链上是否真实发生且有效。

    • 授权: 验证通过后,生成签名或其他形式的授权,允许 Relayer 在目标链上执行操作。图示中存在 signer0signer1(甚至可能是多个 signer1 实例或代表一个多签群体),表明验证过程可能涉及多方或根据特定流程/链进行区分。signer0 处的索引信息(Index: 0:for juchain, 1:eth, 2:bse)表明验证节点内部需要区分不同的链。

  • 用户 (用户): 发起跨链转移的最终使用者,与源链的 BridgeBank 合约交互以启动流程 。

  • 管理员 (管理员): 可能代表进行初始流动性提供、合约维护或其他管理操作的角色(如图中向 BSC 存入 20)。

这个架构确保了跨链操作的安全性,因为目标链上的操作(铸造/解锁)必须经过链下验证者的确认。


合约地址与代币信息

以下是跨链桥相关合约和代币在不同网络上的详细地址,开发者需确保在正确网络中使用:

网络
合约/代币
地址
说明/链接

--- 主网 Mainnet ---

ETH Mainnet

USDT (桥接前)

ETH 主网上的 USDT 合约

BSC Mainnet

USDT (桥接前)

BSC 主网上的 USDT 合约

JuChain Mainnet

BridgeBank

JuChain 主网核心跨链合约

JuChain Mainnet

USDT (桥接后)

JuChain 主网上代表 USDT 的桥接代币

JuChain Mainnet

BNB (桥接后)

JuChain 主网上代表 BNB 的桥接代币

ETH Mainnet

签名地址 (Signer Address)

0xc739962C7805a46BEd5bDADB4Df033e9B9aC1ff2

用于验证 ETH -> JuChain 跨链交易

BSC Mainnet

签名地址 (Signer Address)

0xc3F59038F2fceDec5f41f46aBb130ca4446556E1

用于验证 BSC -> JuChain 跨链交易

JuChain Mainnet

签名地址 (Signer Address)

0xA62b1782af4AfFd74CEcFC5E0BA96E1b31eb371C

用于验证 JuChain -> ETH/BSC 跨链交易

--- 测试网 Testnet ---

JuChain Testnet

BridgeBank

JuChain 测试网核心跨链合约

JuChain Testnet

USDT (桥接后)

JuChain 测试网上代表 USDT 的桥接代币

JuChain Testnet

tBNB (桥接后)

JuChain 测试网上代表 tBNB 的桥接代币

JuChain Testnet

tETH (桥接后)

JuChain 测试网上代表 tETH 的桥接代币

BSC Testnet (Chapel)

BridgeBank

BSC 测试网核心跨链合约

BSC Testnet (Chapel)

USDT (桥接前)

BSC 测试网上的 USDT 合约

ETH Testnet (Holesky)

BridgeBank

ETH Holesky 测试网核心跨链合约

ETH Testnet (Holesky)

USDT (桥接前)

ETH Holesky 测试网上的 USDT 合约

BridgeBank 合约功能

BridgeBank 合约是跨链桥的核心,提供了以下关键功能,开发者可通过 ABI 与合约交互:

  • lock (ETH/BSC -> JuChain): 在源链(ETH/BSC)上锁定代币,并发起跨链转移。此操作会触发 LogLock 事件,被 Relayers 监听。

    • 参数:_recipient(JuChain 上的接收地址)、_token(源链代币地址)、_amount(转移金额)。

  • burnBridgeTokens (JuChain -> ETH/BSC): 在 JuChain 上销毁桥接代币,并发起返回源链的跨链转移。此操作会触发 LogBtcTokenBurn 事件,被 Relayers 监听。

    • 参数:_chainID(目标链 ID)、_receiver(源链上的接收地址)、_bridgeTokenAddress(JuChain 上的桥接代币地址)、_amount(金额)。

  • unlock (JuChain -> ETH/BSC completion): 在目标链(ETH/BSC)上解锁原始代币。此操作由 Relayer 在收到 Signer 授权后调用。

    • 参数:_recipient(接收地址)、_token(代币地址)、_name(代币名称)、_amount(金额)。(ETH/BSC ABI 中还包含 _claimID)

  • mintBridgeTokens (ETH/BSC -> JuChain completion): 在目标链(JuChain)上铸造桥接代币。此操作由 Relayer 在收到 Signer 授权后调用。

    • 参数:_intendedRecipient(接收地址)、_bridgeTokenAddress(桥接代币地址)、_amount(金额)。

ABI 数据

以下是测试网使用的 BridgeBank 合约 ABI,开发者可用于与合约交互:

JuChain BridgeBank ABI

ETH/BSC BridgeBank ABI

跨链流程

JuChain 跨链桥支持以下跨链流程:

从 JuChain 到 BSC/ETH 的跨链流程

  1. 销毁资产 (用户操作 - JuChain):

    • 在 JuChain 测试网上,用户调用 BridgeBank 合约的 burnBridgeTokens 函数。

    • 参数包括:目标链 ID(BSC Chapel 为 97,ETH Holesky 为 17000)、接收地址(在目标链上)、代币地址(JuChain 上的桥接代币)和金额。

    • 函数会销毁 JuChain 上的桥接代币,并触发 LogBtcTokenBurn 事件。

  2. 跨链验证 (链下操作 - Relayer & Signer):

    • Relayers 监听并检测到 JuChain 上的 LogBtcTokenBurn 事件。

    • Relayers 将事件信息提交给 Signers

    • Signers 验证该销毁事件的有效性(确认交易已在 JuChain 上成功执行),并生成授权(例如,签名)。

  3. 目标链解锁 (链下驱动,链上执行 - BSC/ETH):

    • 获得授权后,Relayer 调用目标链(BSC 或 ETH)BridgeBank 合约的 unlock 函数,附带授权信息。

    • 目标链 BridgeBank 合约验证授权的有效性,然后将等量的原始代币解锁/转移到用户指定的接收地址。

从 BSC/ETH 到 JuChain 的跨链流程

  1. 锁定资产 (用户操作 - BSC/ETH):

    • 在 BSC 或 ETH 测试网上,用户调用 BridgeBank 合约的 lock 函数。

    • 参数包括:接收地址(在 JuChain 上)、代币地址(源链上的原始代币)和金额。

    • 函数会锁定用户的代币,并触发 LogLock 事件。

  2. 跨链验证 (链下操作 - Relayer & Signer):

    • Relayers 监听并检测到源链上的 LogLock 事件。

    • Relayers 将事件信息提交给 Signers

    • Signers 验证该锁定事件的有效性(确认交易已在源链上成功执行),并生成授权。

  3. JuChain 铸造 (链下驱动,链上执行 - JuChain):

    • 获得授权后,Relayer 调用 JuChain 测试网 BridgeBank 合约的 mintBridgeTokens 函数,附带授权信息。

    • JuChain BridgeBank 合约验证授权的有效性,然后铸造等量的桥接代币到用户指定的接收地址。

代码示例

以下是使用 Web3.js 与跨链桥交互的代码示例:

从 JuChain 到 BSC 的跨链转移

从 BSC 到 JuChain 的跨链转移

注意事项

  1. 测试网限制

    • 这些合约和代币仅在测试网上可用,不适用于主网环境。

    • 测试网可能会定期重置,请不要在测试网上存储有价值的资产。

  2. 服务费

    • 跨链操作需要支付服务费,可通过 bridgeServiceFee 函数查询。

    • 服务费以源链的原生代币(JU、tBNB 或 Holesky ETH)支付,并在发起 lockburnBridgeTokens 交易时作为 value 发送。

  3. 授权要求

    • 在调用 lock 函数锁定 ERC20 代币前,用户需要先通过代币合约的 approve 函数授权 BridgeBank 合约使用相应数量的代币。

    • burnBridgeTokens 通常不需要 approve,因为它直接操作用户账户中的桥接代币。

  4. 跨链延迟

    • 跨链操作并非即时完成,因为需要等待 Relayers 检测事件、Signers 验证以及 Relayers 在目标链执行操作。

    • 延迟时间取决于网络拥堵状况以及链下组件的处理速度。请耐心等待,并通过区块浏览器查询源链和目标链的交易状态。

  5. 代币兼容性

    • 只有列入白名单的代币才能进行跨链操作。

    • 目前支持 USDT、tBNB 和 tETH (以其桥接形式存在于 JuChain,或原始形式存在于 ETH/BSC)。

  6. 错误处理

    • 如果跨链操作失败,请检查:

      • 参数是否正确(接收地址、代币地址、金额、目标链 ID)。

      • 源链交易是否成功(Gas 不足、授权不足等)。

      • 是否有足够的代币余额和服务费(原生代币余额)。

    • 检查控制台输出的错误信息和交易回执。

  7. 链下组件依赖:

    • 桥的正常运行依赖于链下的 Relayers 和 Signers 组件。虽然这些组件通常被设计为去中心化和有弹性的(例如通过多个节点、多签或共识机制),但它们的可用性、正确性和处理速度对跨链转账的及时完成至关重要。


跨链手续费

跨链操作需要支付服务费,该费用用于覆盖目标链的 Gas 成本以及平台运营成本。费用在发起 lock (从 ETH/BSC 到 JuChain) 或 burnBridgeTokens (从 JuChain 到 ETH/BSC) 交易时,以源链的原生代币形式支付。

手续费构成:

手续费通常包含两部分:

  1. 网络 Gas 费: 用于支付目标链上的交易执行成本(例如解锁或铸造操作)。这部分费用会根据目标链的实时 Gas 价格波动。

  2. 平台服务费: 由 JuChain 平台收取,用于维护跨链桥服务。

主网手续费参考 (可能会根据网络状况和代币价格调整):

跨链方向
币种
手续费详情 (示例)

BSC > JU

USDT

收取 0.0002 BNB (网络费) + 0.0002 JU (平台费) (示例价值估算: 网络费 ≈ 0.1 USD, 平台费 ≈ 0.0004 USD)

BSC > JU

BNB

收取 0.0002 BNB (网络费) + 0.0002 JU (平台费) (示例价值估算: 网络费 ≈ 0.1 USD, 平台费 ≈ 0.0004 USD)

ETH > JU

USDT

收取 0.00005 ETH (网络费) + 0.0002 JU (平台费) (示例价值估算: 网络费 ≈ 0.1 USD, 平台费 ≈ 0.0004 USD)

ETH > JU

ETH

收取 0.00005 ETH (网络费) + 0.0002 JU (平台费) (示例价值估算: 网络费 ≈ 0.1 USD, 平台费 ≈ 0.0004 USD)

JU > BSC

USDT

收取 1 JU (平台费) + 0.002 BNB (预估网络费) (示例价值估算: 总计 ≈ 1 USD)

JU > BSC

BNB

收取 1 JU (平台费) + 0.002 BNB (预估网络费) (示例价值估算: 总计 ≈ 1 USD)

JU > ETH

USDT

收取 1 JU (平台费) + 0.00002 ETH (预估网络费) (示例价值估算: 总计 ≈ 0.036 USD)

JU > ETH

ETH

收取 1 JU (平台费) + 0.00002 ETH (预估网络费) (示例价值估算: 总计 ≈ 0.036 USD)

注意: 上述价值估算是基于特定时间点的价格 (例如 BNB=590 USD, ETH=1800 USD, JU=2 USD),实际费用和价值会波动。平台消耗部分指的是平台为处理交易所支付的成本。

手续费接收地址 (Fee Receiver Address):

0x8C0641240B418e0349dC52abd3F5cEcc4D4C748A

circle-info

建议: 在执行跨链操作前,可以通过调用源链 BridgeBank 合约的 bridgeServiceFee() 方法查询当前的预估服务费(通常仅包含平台服务费部分,不含目标链 Gas 费)。实际支付的总费用需用户根据当前网络状况和目标链 Gas 预估。

Last updated