LLM Notice: This documentation site supports content negotiation for AI agents. Request any page with Accept: text/markdown or Accept: text/plain header to receive Markdown instead of HTML. Alternatively, append ?format=md to any URL. All markdown files are available at /md/ prefix paths. For all content in one file, visit /llms-full.txt
Skip to main content

VM Bridge Contracts

The Flow VM bridge is the account and series of smart contracts that manage how assets are safely bridged between the Cadence and EVM Flow Environments.

NetworkContract Address
Emulator0xf8d6e0586b0a20c7
Cadence Testing Framework0x0000000000000001
Testnet0xdfc20aee650fcbdf
Mainnet0x1e4aa0b87d10b141

Contracts

There are many important contracts deployed to the bridge account. You should refer to the bridge repo and the bridge guides for more detailed information about the bridge and tutorials for how to use the bridge properly.

Here is a list of each Cadence contract used for the bridge:

ContractPurpose
CrossVMNFTContract that defines cross-VM NFT-related interfaces.
CrossVMTokenContract that defines cross-VM Fungible Token Vault interfaces.
FlowEVMBridgeHandlerInterfacesDefines interface for custom bridged token handlers.
IBridgePermissionsDefines an interface to prevent bridging for a specific token.
ICrossVMDefines an interface to get EVM contract addresses.
ICrossVMAssetDefines an interface to represent a Cadence bridged version of an EVM asset.
IEVMBridgeNFTMinterDefines an interface that allows the bridge to mint NFTs.
IEVMBridgeTokenMinterDefines an interface that allows the bridge to mint FTs.
IFlowEVMNFTBridgeDefines core methods for bridging NFTs.
IFlowEVMTokenBridgeDefines core methods for bridging FTs.
FlowEVMBridgeThe main entrypoint for briding tokens across Flow VMs.
FlowEVMBridgeAccessorDefines methods to route bridge requests from the EVM contract to the Flow-EVM bridge contract.
FlowEVMBridgeConfigUsed to store configuration options for the VM Bridge.
FlowEVMBridgeCustomAssociationsStores configuration information about custom bridged asset configurations.
FlowEVMBridgeCustomAssociationTypesDefines interfaces used to specify custom bridged asset associations.
FlowEVMBridgeHandlersDefines mechanisms to handle assets with custom associations (Deprecated).
FlowEVMBridgeNFTEscrowHandles locking of NFTs that are bridged from Flow to EVM and back.
FlowEVMBridgeResolverDefines methods to resolve Metadata Views for bridged assets.
FlowEVMBridgeTemplatesServes Cadence code from chunked templates for bridge-deployed assets.
FlowEVMBridgeTokenEscrowHandles locking of FTs that are bridged from Flow to EVM and back.
FlowEVMBridgeUtilsDefines many different utility methods that are used by bridge contracts.
ArrayUtilsProvides useful utility functions for array manipulation.
ScopedFTProvidersProvides utilities to create provider capabilities for tokens that are restricted to a specific amount.
SerializeProvides utilities to serialize common types to JSON compatible strings.
SerializeMetadataProvides methods to serialize NFT metadata as a JSON compatible string.
StringUtilsProvides useful utility functions for string manipulation.

EVM bridge Solidity contracts

There are also Solidity contracts that are deployed in Flow EVM that are needed for the bridge. Here are their addresses:

ContractsTestnetMainnet
FlowEVMBridgeFactory.sol[0xf8146b4aef631853f0eb98dbe28706d029e52c52][0x1c6dea788ee774cf15bcd3d7a07ede892ef0be40]
FlowEVMBridgeDeploymentRegistry.sol[0x8781d15904d7e161f421400571dea24cc0db6938][0x8fdec2058535a2cb25c2f8cec65e8e0d0691f7b0]
FlowEVMBridgedERC20Deployer.sol[0x4d45CaD104A71D19991DE3489ddC5C7B284cf263][0x49631Eac7e67c417D036a4d114AD9359c93491e7]
FlowEVMBridgedERC721Deployer.sol[0x1B852d242F9c4C4E9Bb91115276f659D1D1f7c56][0xe7c2B80a9de81340AE375B3a53940E9aeEAd79Df]

And below are the bridge escrow's EVM addresses. These addresses are [CadenceOwnedAccounts (COA)] and they are stored in the same Flow account as you'll find the Cadence contracts (see above).

NetworkAddress
Testnet[0x0000000000000000000000023f946ffbc8829bfd]
Mainnet[0x00000000000000000000000249250a5c27ecab3b]

[0xf8146b4aef631853f0eb98dbe28706d029e52c52]: https://evm-testnet.flowscan.io/address/0xF8146B4aEF631853F0eB98DBE28706d029e52c52) [0x1c6dea788ee774cf15bcd3d7a07ede892ef0be40]: https://evm.flowscan.io/address/0x1C6dEa788Ee774CF15bCd3d7A07ede892ef0bE40 [0x8781d15904d7e161f421400571dea24cc0db6938]: https://evm-testnet.flowscan.io/address/0x8781d15904d7e161f421400571dea24cc0db6938 [0x8fdec2058535a2cb25c2f8cec65e8e0d0691f7b0]: https://evm.flowscan.io/address/0x8FDEc2058535A2Cb25C2f8ceC65e8e0D0691f7B0 [0x4d45CaD104A71D19991DE3489ddC5C7B284cf263]: https://evm-testnet.flowscan.io/address/0x4d45CaD104A71D19991DE3489ddC5C7B284cf263 [0x49631Eac7e67c417D036a4d114AD9359c93491e7]: https://evm.flowscan.io/address/0x49631Eac7e67c417D036a4d114AD9359c93491e7 [0x1B852d242F9c4C4E9Bb91115276f659D1D1f7c56]: https://evm-testnet.flowscan.io/address/0x1B852d242F9c4C4E9Bb91115276f659D1D1f7c56 [0xe7c2B80a9de81340AE375B3a53940E9aeEAd79Df]: https://evm.flowscan.io/address/0xe7c2B80a9de81340AE375B3a53940E9aeEAd79Df [CadenceOwnedAccounts (COA)]: https://developers.flow.com/blockchain-development-tutorials/cross-vm-apps/interacting-with-coa#coa-interface [0x0000000000000000000000023f946ffbc8829bfd]: https://evm-testnet.flowscan.io/address/0x0000000000000000000000023f946FFbc8829BFD [0x00000000000000000000000249250a5c27ecab3b]: https://evm.flowscan.io/address/0x00000000000000000000000249250a5C27Ecab3B)