Tenzro Testnet is live. Get testnet TNZO
Interoperability

Cross-Chain Interoperability

Assets and applications span multiple blockchains. Tenzro aggregates four bridge protocols, provides cross-VM token representation across EVM, SVM, and DAML, and enables multi-chain applications to settle on a single ledger with cryptographically signed bridge messages.

The Problem

Cross-chain bridging remains one of the highest-risk operations in crypto. Bridge hacks account for billions in losses. Users must choose between multiple bridge protocols with different trust assumptions, fee structures, and supported chains — often manually comparing routes.

  • Each bridge protocol has different security models, supported chains, and failure modes
  • Tokens wrapped by different bridges are not fungible, fragmenting liquidity
  • No way to represent the same asset natively across EVM, SVM, and DAML VMs
  • Bridge messages are often unsigned, enabling relay manipulation
  • Fee estimation requires querying each bridge individually

How Tenzro Solves It

Tenzro integrates four bridge protocols behind a unified BridgeRouter that selects the optimal route based on cost, speed, or availability. All bridge messages carry Ed25519/Secp256k1 signatures with nonce-based replay protection. The cross-VM pointer model eliminates token fragmentation entirely.

Bridge Aggregation

Four integrated bridge adapters: LayerZero V2 (omnichain messaging + OFT), Chainlink CCIP (cross-chain messaging + token transfers), deBridge DLN (intent-based swaps), and Canton (DAML enterprise). The BridgeRouter selects by cost, speed, or availability strategy.

Signed Bridge Messages

Every bridge message is signed with Ed25519 or Secp256k1 via TenzroMessage::sign() and verified with verify_signature() using tenzro-crypto. Nonce-based replay protection prevents message reuse across chains.

Cross-VM Token Pointers

The Sei V2 pointer model: wTNZO ERC-20 on EVM (at 0x7a4b...7f93), wTNZO SPL adapter on SVM, and TNZO CIP-56 holding on Canton all share the same underlying native balance. No bridge risk. No liquidity fragmentation. The CROSS_VM_BRIDGE precompile at 0x1003 handles transfers.

Live Fee Quoting

Real on-chain fee queries: LayerZero EndpointV2.quote() via eth_call, Chainlink Router.getFee() via eth_call, deBridge order-creation API, and Canton Admin API fee schedule. Static fallback only when RPC fails.

Architecture

A cross-chain transfer request is routed through the BridgeRouter, which queries all available adapters for fee quotes, selects the optimal route, signs the message, and executes the bridge transaction.

Code Example

Bridge tokens between chains and transfer across VMs:

Rust SDK
use tenzro_sdk::TenzroClient;

#[tokio::main]
async fn main() -> anyhow::Result<()> {
    let client = TenzroClient::new("https://rpc.tenzro.network");

    // Get available bridge routes
    let routes = client.get_bridge_routes(
        "tenzro",    // source chain
        "ethereum",  // destination chain
    ).await?;

    // Bridge tokens via LayerZero
    let bridge_tx = client.bridge_tokens(
        "tenzro",
        "ethereum",
        "1000000000000000000000", // 1000 TNZO
        &recipient_address,
        Some("layerzero"), // preferred adapter
    ).await?;

    // Cross-VM transfer (same ledger, different VM)
    let cross_vm = client.cross_vm_transfer(
        &token_id,
        "evm",     // source VM
        "svm",     // destination VM
        "500000000000000000000",
        &svm_recipient,
    ).await?;

    // Wrap native TNZO for EVM use
    let wrap = client.wrap_tnzo(
        "evm",
        "100000000000000000000",
    ).await?;

    // List bridge adapters
    let adapters = client.list_bridge_adapters().await?;

    Ok(())
}

Relevant Tools & APIs

Tenzro MCP Tools

bridge_tokens
get_bridge_routes
list_bridge_adapters
cross_vm_transfer
wrap_tnzo

LayerZero MCP Tools (Port 3006)

lz_quote_fee
lz_send_message
lz_oft_send
lz_transfer_quote
lz_stargate_quote
lz_stargate_send

Chainlink MCP Tools (Port 3007)

ccip_get_fee
ccip_send_message
ccip_track_message
ccip_get_supported_chains
ccip_get_supported_tokens