Skip to main content
This tutorial takes you from zero to a cross-chain transaction on a Multichain Virtual Environment. By the end you will have a Virtual Environment that spans more than one network, with the Bridge Module relaying messages between them, your contracts deployed on each network, funded accounts on every chain, and a working cross-chain transaction visible in the unified dashboard timeline. If you have not read the overview yet, do that first. It explains what a Multichain Virtual Environment is, how the RPC URLs are structured, and what Virtual Chain IDs mean.

Before you begin

You need:
  • A Tenderly account with multichain capabilities enabled. If you do not see the option to add multiple networks during Virtual Environment creation, contact us.
  • A wallet private key you are willing to use in a test environment. Set it as PRIVATE_KEY in your shell.
  • Foundry or Hardhat installed locally.
The rest of the tutorial assumes Ethereum mainnet, Arbitrum, Optimism, and Base, but the same flow works for any combination of supported networks.

Run the tutorial

You now have a working Multichain Virtual Environment with cross-chain bridging.

What to try next

Now that the tutorial works, here is how to apply the same setup to real workflows:

Automate deployments in CI

Deploy to every network on every push, in parallel, using GitHub Actions. The CI/CD guides show the matrix workflow and the secrets you need.

Stage your frontend

Point your dApp at the Virtual Environment RPCs and give your team and reviewers an environment that exercises the full multichain flow.

Create Virtual Environments via API

The multivnets endpoint creates a Multichain Virtual Environment in one call. Useful for per-PR provisioning.

Test bridge failures

Manual bridge controls let you stage gas starvation, duplicate deliveries, modified payloads, and other failure modes deterministically.

See also