# Build Manual transaction Source: https://docs.bungee.exchange/api-reference/core-api/build-manual-transaction https://public-backend.bungee.exchange/swagger-json get /api/v1/bungee/build-tx # Get Bungee quote Source: https://docs.bungee.exchange/api-reference/core-api/get-bungee-quote https://public-backend.bungee.exchange/swagger-json get /api/v1/bungee/quote # Get Request status Source: https://docs.bungee.exchange/api-reference/core-api/get-request-status https://public-backend.bungee.exchange/swagger-json get /api/v1/bungee/status # Submit request (Auto) Source: https://docs.bungee.exchange/api-reference/core-api/submit-request-auto https://public-backend.bungee.exchange/swagger-json post /api/v1/bungee/submit # Get all supported chains Source: https://docs.bungee.exchange/api-reference/supported-chains/get-all-supported-chains https://public-backend.bungee.exchange/swagger-json get /api/v1/supported-chains # Get token list Source: https://docs.bungee.exchange/api-reference/token/get-token-list https://public-backend.bungee.exchange/swagger-json get /api/v1/tokens/list # Search or import tokens Source: https://docs.bungee.exchange/api-reference/token/search-or-import-tokens https://public-backend.bungee.exchange/swagger-json get /api/v1/tokens/search # Bungee Link Source: https://docs.bungee.exchange/bungee-api/bungee-link Redirect users to Bungee with chain/tokens for bridging pre-selected. The bridging amount can also be pre-selected. Users then simply need to choose a route & start bridging with 2 clicks! You can link Bungee in your DApp and pass URL params to specify which chains/tokens should be pre-selected for bridging. The parameters are highlighted below: | Parameter | Description | | -------------------- | -------------------------------------- | | `originChainId` | Chain ID of sending chain | | `inputToken` | Address of sending token | | `destinationChainId` | Chain ID of destination chain | | `outputToken` | Address of destination receiving token | ### Examples:[​](#examples "Direct link to Examples:") * ETH from Ethereum to USDC on Optimism: ``` https://bungee.exchange/?originChainId=1&inputToken=0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee&destinationChainId=10&outputToken=0x0b2c639c533813f4aa9d7837caf62653d097ff85 ``` * USDC from Polygon to Aave on Arbitrum: ``` https://bungee.exchange/?originChainId=137&inputToken=0x3c499c542cef5e3811e1192ce70d8cc03d5c3359&destinationChainId=42161&outputToken=0xba5ddd1f9d7f570dc94a51479a000e3bce967196 ``` ### Integration Tips[​](#integration-tips "Direct link to Integration Tips") * For native tokens (ETH, POL, etc.), use the address `0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee` * Chain IDs follow the standard EVM chain ID format (e.g., 1 for Ethereum, 10 for Optimism) # Bungee Widget Source: https://docs.bungee.exchange/bungee-api/bungee-widget Bungee Widget is a powerful React widget that enables seamless token swaps and bridging across multiple blockchains. It can be quickly integrated into any modern web app, giving your users the full bridging UX from within your app. Bungee Widget can be integrated quickly to add swaps and bridging features to any web app. ## Why Use Bungee Widget?[​](#why-use-bungee-widget "Direct link to Why Use Bungee Widget?") * Swaps & bridging in one component * Customizable appearance & configuration * Integrates easily with wallet connection solutions * Fully up-to-date on [npm](https://www.npmjs.com/package/@socket.tech/bungee) ## Quick Integration Guide[​](#quick-integration-guide "Direct link to Quick Integration Guide") For the full implementation details, advanced usage, and examples—including configuration, theming, and customization options—always refer to the [npm README](https://www.npmjs.com/package/@socket.tech/bungee). ### 1. Install the package[​](#1-install-the-package "Direct link to 1. Install the package") ``` npm install @socket.tech/bungee ``` ### 2. Basic Usage[​](#2-basic-usage "Direct link to 2. Basic Usage") ```typescript theme={null} import { Bungee, type BungeeConfig } from "@socket.tech/bungee"; const config: BungeeConfig = { apiKey: "your-api-key-here", }; export default function App() { return ; } ``` ## More Resources & Support[​](#more-resources--support "Direct link to More Resources & Support") Refer to the package README for comprehensive integration guidance: * Installation steps and peer dependencies * Importing and usage in your React app * Theming and configuration options * Event and imperative APIs * TypeScript types & advanced customization # Contract Addresses Source: https://docs.bungee.exchange/bungee-api/contract-addresses This file has been auto-generated on 2026-02-26 # Contract Addresses Scroll through the list below to find the contract addresses for each network.
| name | address | | -------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------- | | AcrossImpl | 0x9951846aC51102F7082128558a6F6759E9382b43
[see in explorer](https://arbiscan.io/address/0x9951846aC51102F7082128558a6F6759E9382b43) | | AcrossImplV3 | 0x740EA79e2FccDDB4eE8bB8Fc8ccAC5eb6dFa0b40
[see in explorer](https://arbiscan.io/address/0x740EA79e2FccDDB4eE8bB8Fc8ccAC5eb6dFa0b40) | | AcrossStakedRoute AUTO | 0x125ac5a530ece0a06dd3cd3da711c054eadb57b9
[see in explorer](https://arbiscan.io/address/0x125ac5a530ece0a06dd3cd3da711c054eadb57b9) | | AcrossV3WethUnwrapper | 0x36f0B62E4eE3d30939cBccABA9D983579799D931
[see in explorer](https://arbiscan.io/address/0x36f0B62E4eE3d30939cBccABA9D983579799D931) | | AnyswapL2Impl | 0x09BBE4DacBf631994F2f1b70c1B18d62c19466E6
[see in explorer](https://arbiscan.io/address/0x09BBE4DacBf631994F2f1b70c1B18d62c19466E6) | | AnyswapV6L2Impl | 0xC6415B61f0459331261516F463a3Ea9E473015d0
[see in explorer](https://arbiscan.io/address/0xC6415B61f0459331261516F463a3Ea9E473015d0) | | BungeeDepository AUTO | 0xa6cd293ba20873b3cbbbf78f156a1d56d8ab9347
[see in explorer](https://arbiscan.io/address/0xa6cd293ba20873b3cbbbf78f156a1d56d8ab9347) | | BungeeGateway AUTO | 0xCdEa28Ee7BD5bf7710B294d9391e1b6A318d809a
[see in explorer](https://arbiscan.io/address/0xCdEa28Ee7BD5bf7710B294d9391e1b6A318d809a) | | BungeeInbox AUTO | 0x5e0f8e7337c8955d2124b8e85ca74af884b3e124
[see in explorer](https://arbiscan.io/address/0x5e0f8e7337c8955d2124b8e85ca74af884b3e124) | | BungeeInboxOld AUTO | 0xA3BF43451CdEb6DEC588B8833838fC419CE4F54c
[see in explorer](https://arbiscan.io/address/0xA3BF43451CdEb6DEC588B8833838fC419CE4F54c) | | CalldataExecutor AUTO | 0xa873aab6a98cb764ad6d52820d129d0e3667d9f9
[see in explorer](https://arbiscan.io/address/0xa873aab6a98cb764ad6d52820d129d0e3667d9f9) | | CctpImpl | 0x3a9140d872778eC3837Bb996683038532DA2AF19
[see in explorer](https://arbiscan.io/address/0x3a9140d872778eC3837Bb996683038532DA2AF19) | | CCTPRouterSingleOutput AUTO | 0x3b4817827d06600f92296c5d1491818d69fc955f
[see in explorer](https://arbiscan.io/address/0x3b4817827d06600f92296c5d1491818d69fc955f) | | CctpV2Impl | 0x2a6dcEc445Ac3B9F9111605857eCEA4E9baf9b3f
[see in explorer](https://arbiscan.io/address/0x2a6dcEc445Ac3B9F9111605857eCEA4E9baf9b3f) | | CCTPV2RouterSingleOutput AUTO | 0x6faec2944071b2a5ebfd1b08f43f29597aad8ca1
[see in explorer](https://arbiscan.io/address/0x6faec2944071b2a5ebfd1b08f43f29597aad8ca1) | | CelerImpl | 0x4E7f21d92b70fCBBcB6AFCb8Bf59420622c158B3
[see in explorer](https://arbiscan.io/address/0x4E7f21d92b70fCBBcB6AFCb8Bf59420622c158B3) | | CelerStakedRoute AUTO | 0xf1c07b6dddc480602d0304c31e6b13ff711b5828
[see in explorer](https://arbiscan.io/address/0xf1c07b6dddc480602d0304c31e6b13ff711b5828) | | CelerStorageWrapper | 0x1768C1D2900f1408D44FbB1EdCc306F94aF852ae
[see in explorer](https://arbiscan.io/address/0x1768C1D2900f1408D44FbB1EdCc306F94aF852ae) | | CelerV2Impl | 0xAE39460140D6307c83592b5501F406c49e886277
[see in explorer](https://arbiscan.io/address/0xAE39460140D6307c83592b5501F406c49e886277) | | ConnextImpl | 0x4f2b1fbb51bdFE1471B3De6E88c909e77C042B61
[see in explorer](https://arbiscan.io/address/0x4f2b1fbb51bdFE1471B3De6E88c909e77C042B61) | | DisabledSocketRoute | 0x0f34A522FF82151c90679b73211955068FD854F1
[see in explorer](https://arbiscan.io/address/0x0f34A522FF82151c90679b73211955068FD854F1) | | Entrypoint AUTO | 0xdF5F746C18D367Ff9641656b355d54903DE1B2A9
[see in explorer](https://arbiscan.io/address/0xdF5F746C18D367Ff9641656b355d54903DE1B2A9) | | FeeCollector AUTO | 0xf791765B58270Eb6DabFf00D9E3bcD8c0C0567a3
[see in explorer](https://arbiscan.io/address/0xf791765B58270Eb6DabFf00D9E3bcD8c0C0567a3) | | FeesTakerController | 0xb3f1271c809fF47767205851E7334407354A862F
[see in explorer](https://arbiscan.io/address/0xb3f1271c809fF47767205851E7334407354A862F) | | GenericStakedRoute AUTO | 0x5013c0b3defd8f832d1b6dec750382946de5c13b
[see in explorer](https://arbiscan.io/address/0x5013c0b3defd8f832d1b6dec750382946de5c13b) | | HopCctpImpl | 0xFd010e8C1005FB5f0b9Bce7c86fA78734A4F6575
[see in explorer](https://arbiscan.io/address/0xFd010e8C1005FB5f0b9Bce7c86fA78734A4F6575) | | HopImplL2 | 0x2d0EeB574cC98f6d57c72FFe730D5C8a8f2eac37
[see in explorer](https://arbiscan.io/address/0x2d0EeB574cC98f6d57c72FFe730D5C8a8f2eac37) | | HopImplL2V2 | 0xfEfFE1D89542C111845648a107811Fb272EaE0Da
[see in explorer](https://arbiscan.io/address/0xfEfFE1D89542C111845648a107811Fb272EaE0Da) | | HyphenImpl | 0x653a03b511E6FE9e80eeCb2bBbD36DCaf93cF147
[see in explorer](https://arbiscan.io/address/0x653a03b511E6FE9e80eeCb2bBbD36DCaf93cF147) | | KyberSwapImpl | 0x59057Df54637e716614fF11b54eeB74257CEb2fc
[see in explorer](https://arbiscan.io/address/0x59057Df54637e716614fF11b54eeB74257CEb2fc) | | MagpieSwapImpl | 0x67cFfb3A94EDDbd50a475136c4ADB1340DE2B346
[see in explorer](https://arbiscan.io/address/0x67cFfb3A94EDDbd50a475136c4ADB1340DE2B346) | | MayanBridgeImpl | 0xbBCe84e3418493d03C83973c06A9d2c8f4B0e3b1
[see in explorer](https://arbiscan.io/address/0xbBCe84e3418493d03C83973c06A9d2c8f4B0e3b1) | | MayanBridgeImplV2 | 0x0E1E7Dad45c0baF66956d0b9D82a29129a85FA0A
[see in explorer](https://arbiscan.io/address/0x0E1E7Dad45c0baF66956d0b9D82a29129a85FA0A) | | OneInchImpl | 0x27D6c81b2688F28D8ffF55940CDBb8B5b3A0Ed0f
[see in explorer](https://arbiscan.io/address/0x27D6c81b2688F28D8ffF55940CDBb8B5b3A0Ed0f) | | RainbowSwapImpl | 0x85FddF7450B9E9b3f97C91316cF4e731a3220F6B
[see in explorer](https://arbiscan.io/address/0x85FddF7450B9E9b3f97C91316cF4e731a3220F6B) | | RefuelBridgeImpl | 0xBAde7653492f1a70c3725EdeB2D28F3C84369809
[see in explorer](https://arbiscan.io/address/0xBAde7653492f1a70c3725EdeB2D28F3C84369809) | | RefuelSwapAndBridgeController | 0xFC42BcAA16a54e7E48D0c39e4713dC5923BD551D
[see in explorer](https://arbiscan.io/address/0xFC42BcAA16a54e7E48D0c39e4713dC5923BD551D) | | RFQRouterSingleOutput AUTO | 0xc4088d6e5a2027e784efc0491c322a3e2621bd9e
[see in explorer](https://arbiscan.io/address/0xc4088d6e5a2027e784efc0491c322a3e2621bd9e) | | SingleOutputRequestImpl AUTO | 0xac7615255677f28B09DA637714E45Ffb5fE76B58
[see in explorer](https://arbiscan.io/address/0xac7615255677f28B09DA637714E45Ffb5fE76B58) | | SocketDeployFactory | 0x71630095e3F08A86aFC73f7b07342192adf39C55
[see in explorer](https://arbiscan.io/address/0x71630095e3F08A86aFC73f7b07342192adf39C55) | | SocketGateway | 0x3a23F943181408EAC424116Af7b7790c94Cb97a5
[see in explorer](https://arbiscan.io/address/0x3a23F943181408EAC424116Af7b7790c94Cb97a5) | | Solver AUTO | 0xAe68b7117BE0026Cbd4366303f74EEcbB19e4042
[see in explorer](https://arbiscan.io/address/0xAe68b7117BE0026Cbd4366303f74EEcbB19e4042) | | StakedRouterExecutor AUTO | 0x12efda5e4d410c5da723ceb7e43942779e3fe49b
[see in explorer](https://arbiscan.io/address/0x12efda5e4d410c5da723ceb7e43942779e3fe49b) | | StakedRouterReceiver AUTO | 0x5d84f33b7c9214df23fd86a0861ac923af99954d
[see in explorer](https://arbiscan.io/address/0x5d84f33b7c9214df23fd86a0861ac923af99954d) | | StakedRouterSingleOutput AUTO | 0x167d49f106bbea59587ef3c63b33e6a421af1b8d
[see in explorer](https://arbiscan.io/address/0x167d49f106bbea59587ef3c63b33e6a421af1b8d) | | StargateImplL2 | 0x6e520F25E66450397d02ece0166edaF46c9BF28b
[see in explorer](https://arbiscan.io/address/0x6e520F25E66450397d02ece0166edaF46c9BF28b) | | StargateImplL2V2 | 0xE485d8c074E02Ae762D849D261BBF4D692AF66a6
[see in explorer](https://arbiscan.io/address/0xE485d8c074E02Ae762D849D261BBF4D692AF66a6) | | StargateImplV2 | 0xBf6fa3f58113139E7437dA5dcCE1CB005DA387f3
[see in explorer](https://arbiscan.io/address/0xBf6fa3f58113139E7437dA5dcCE1CB005DA387f3) | | StargateReceiver | 0x445C6E5E5347590Bc855d2178DE8A4642261DcCF
[see in explorer](https://arbiscan.io/address/0x445C6E5E5347590Bc855d2178DE8A4642261DcCF) | | StargateReceiverTest | 0x926Dbc695BeAA3E78643883e066d65F0709Bc6dE
[see in explorer](https://arbiscan.io/address/0x926Dbc695BeAA3E78643883e066d65F0709Bc6dE) | | SuperBridgeImpl | 0x072c90625c9f3932C243EB4d0AfaA26662650AC8
[see in explorer](https://arbiscan.io/address/0x072c90625c9f3932C243EB4d0AfaA26662650AC8) | | SwapExecutor AUTO | 0x0DF289D53fC45f20044b793cEDBB228928953F4B
[see in explorer](https://arbiscan.io/address/0x0DF289D53fC45f20044b793cEDBB228928953F4B) | | SwapRequestCallback AUTO | 0x4682e8315B80cF757e2077280E0471729c992Ed3
[see in explorer](https://arbiscan.io/address/0x4682e8315B80cF757e2077280E0471729c992Ed3) | | SwapRequestImpl AUTO | 0x5f2295051cC021e8DE247DC052B8CE4429D73E7F
[see in explorer](https://arbiscan.io/address/0x5f2295051cC021e8DE247DC052B8CE4429D73E7F) | | SwitchboardPlug AUTO | 0x8EAeE07f8FFF38695708be900c1F9aacFB8b3C09
[see in explorer](https://arbiscan.io/address/0x8EAeE07f8FFF38695708be900c1F9aacFB8b3C09) | | SwitchboardRouter AUTO | 0x3C54883Ce0d86b3abB26A63744bEb853Ea99a403
[see in explorer](https://arbiscan.io/address/0x3C54883Ce0d86b3abB26A63744bEb853Ea99a403) | | SymbiosisBridgeImpl | 0x1Ae456dD12CE646EbeDDc5541787a93094963a1f
[see in explorer](https://arbiscan.io/address/0x1Ae456dD12CE646EbeDDc5541787a93094963a1f) | | SynapseBridgeImpl | 0x978dC2A6d51769867e7eC893459bCe68E83b7661
[see in explorer](https://arbiscan.io/address/0x978dC2A6d51769867e7eC893459bCe68E83b7661) | | UniswapV3Impl | 0x44abeb2B4dC28712fFf5dD3B94A9be503b0ED59E
[see in explorer](https://arbiscan.io/address/0x44abeb2B4dC28712fFf5dD3B94A9be503b0ED59E) | | UnwrapAndForward AUTO | 0xd31367da48d3f9d6dd0d59de4aa1ef6023a88fad
[see in explorer](https://arbiscan.io/address/0xd31367da48d3f9d6dd0d59de4aa1ef6023a88fad) | | WrappedTokenSwapperImpl | 0x2B8A6e6Db1f65ddf44586fc1f881e83b8FfB8ec8
[see in explorer](https://arbiscan.io/address/0x2B8A6e6Db1f65ddf44586fc1f881e83b8FfB8ec8) | | ZeroXSwapImpl | 0x84502e430b8Fc064756d3034ad303d1456D23bfe
[see in explorer](https://arbiscan.io/address/0x84502e430b8Fc064756d3034ad303d1456D23bfe) | | ZeroxV2SwapImpl | 0xF472FbAC2DFd555E3674EB50eFDD9da51da7f2A0
[see in explorer](https://arbiscan.io/address/0xF472FbAC2DFd555E3674EB50eFDD9da51da7f2A0) | | ZeroxV2Wrapper AUTO | 0x05b108fD88d042eF0145DCcd564DCd6471852FC2
[see in explorer](https://arbiscan.io/address/0x05b108fD88d042eF0145DCcd564DCd6471852FC2) |
| name | address | | ----------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------- | | CelerImpl | 0x5CddbecAF8603E5e0bC771A46D48e148593351eA
[see in explorer](https://aurorascan.dev/address/0x5CddbecAF8603E5e0bC771A46D48e148593351eA) | | CelerStorageWrapper | 0x2d0EeB574cC98f6d57c72FFe730D5C8a8f2eac37
[see in explorer](https://aurorascan.dev/address/0x2d0EeB574cC98f6d57c72FFe730D5C8a8f2eac37) | | CelerV2Impl | 0x3E2D2ed0FB483d76e54850014D73AfCeA42263fB
[see in explorer](https://aurorascan.dev/address/0x3E2D2ed0FB483d76e54850014D73AfCeA42263fB) | | DisabledSocketRoute | 0x0f34A522FF82151c90679b73211955068FD854F1
[see in explorer](https://aurorascan.dev/address/0x0f34A522FF82151c90679b73211955068FD854F1) | | FeesTakerController | 0x555118B2aF4b6e2027cF766FB5a0Aa6a77e8ED8a
[see in explorer](https://aurorascan.dev/address/0x555118B2aF4b6e2027cF766FB5a0Aa6a77e8ED8a) | | OneInchImpl | 0x0Adf13F9Eb24b56b641fE2112854CE2B78C11c1a
[see in explorer](https://aurorascan.dev/address/0x0Adf13F9Eb24b56b641fE2112854CE2B78C11c1a) | | RefuelBridgeImpl | 0x8F22b246e2d380f5F5786dE28847BE17ACaAA2B8
[see in explorer](https://aurorascan.dev/address/0x8F22b246e2d380f5F5786dE28847BE17ACaAA2B8) | | RefuelSwapAndBridgeController | 0x653a03b511E6FE9e80eeCb2bBbD36DCaf93cF147
[see in explorer](https://aurorascan.dev/address/0x653a03b511E6FE9e80eeCb2bBbD36DCaf93cF147) | | SocketDeployFactory | 0x71630095e3F08A86aFC73f7b07342192adf39C55
[see in explorer](https://aurorascan.dev/address/0x71630095e3F08A86aFC73f7b07342192adf39C55) | | SocketGateway | 0x3a23F943181408EAC424116Af7b7790c94Cb97a5
[see in explorer](https://aurorascan.dev/address/0x3a23F943181408EAC424116Af7b7790c94Cb97a5) | | SynapseBridgeImpl | 0xA32609F188d896F527Aa67384079B944639D8135
[see in explorer](https://aurorascan.dev/address/0xA32609F188d896F527Aa67384079B944639D8135) |
| name | address | | -------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------ | | AnyswapL2Impl | 0x09BBE4DacBf631994F2f1b70c1B18d62c19466E6
[see in explorer](https://snowtrace.io/address/0x09BBE4DacBf631994F2f1b70c1B18d62c19466E6) | | AnyswapV6L2Impl | 0x5Cb5A509beD96B2d168DC8aD85736B0b90da8473
[see in explorer](https://snowtrace.io/address/0x5Cb5A509beD96B2d168DC8aD85736B0b90da8473) | | BungeeDepository AUTO | 0xa6cd293ba20873b3cbbbf78f156a1d56d8ab9347
[see in explorer](https://snowtrace.io/address/0xa6cd293ba20873b3cbbbf78f156a1d56d8ab9347) | | BungeeGateway AUTO | 0xfe191a43dc4F3d57d7D942717D259005967e4e0D
[see in explorer](https://snowtrace.io/address/0xfe191a43dc4F3d57d7D942717D259005967e4e0D) | | BungeeInbox AUTO | 0x5e0f8e7337c8955d2124b8e85ca74af884b3e124
[see in explorer](https://snowtrace.io/address/0x5e0f8e7337c8955d2124b8e85ca74af884b3e124) | | BungeeInboxOld AUTO | 0xEd69eD4Bcdf4cd5E590f383853d73e93Cc383681
[see in explorer](https://snowtrace.io/address/0xEd69eD4Bcdf4cd5E590f383853d73e93Cc383681) | | CalldataExecutor AUTO | 0xa873aab6a98cb764ad6d52820d129d0e3667d9f9
[see in explorer](https://snowtrace.io/address/0xa873aab6a98cb764ad6d52820d129d0e3667d9f9) | | CctpImpl | 0xC6415B61f0459331261516F463a3Ea9E473015d0
[see in explorer](https://snowtrace.io/address/0xC6415B61f0459331261516F463a3Ea9E473015d0) | | CCTPRouterSingleOutput AUTO | 0x3b4817827d06600f92296c5d1491818d69fc955f
[see in explorer](https://snowtrace.io/address/0x3b4817827d06600f92296c5d1491818d69fc955f) | | CctpV2Impl | 0x65fEABBcfBc796Ee3d8bF1aDd02963468F3Eb8C2
[see in explorer](https://snowtrace.io/address/0x65fEABBcfBc796Ee3d8bF1aDd02963468F3Eb8C2) | | CCTPV2RouterSingleOutput AUTO | 0x6faec2944071b2a5ebfd1b08f43f29597aad8ca1
[see in explorer](https://snowtrace.io/address/0x6faec2944071b2a5ebfd1b08f43f29597aad8ca1) | | CelerImpl | 0x739C791e48b2AEDF6dcE5304e7Da6172Fcc38416
[see in explorer](https://snowtrace.io/address/0x739C791e48b2AEDF6dcE5304e7Da6172Fcc38416) | | CelerStakedRoute AUTO | 0xf1c07b6dddc480602d0304c31e6b13ff711b5828
[see in explorer](https://snowtrace.io/address/0xf1c07b6dddc480602d0304c31e6b13ff711b5828) | | CelerStorageWrapper | 0x7c6C373190421988fA31E64f369C45205676C1f0
[see in explorer](https://snowtrace.io/address/0x7c6C373190421988fA31E64f369C45205676C1f0) | | CelerV2Impl | 0x8B7e6Be0e12207604cF5858b4CB8d987926a4754
[see in explorer](https://snowtrace.io/address/0x8B7e6Be0e12207604cF5858b4CB8d987926a4754) | | DisabledSocketRoute | 0x0f34A522FF82151c90679b73211955068FD854F1
[see in explorer](https://snowtrace.io/address/0x0f34A522FF82151c90679b73211955068FD854F1) | | Entrypoint AUTO | 0x64e36517BaCc2b634944658F8bE124C043054F3e
[see in explorer](https://snowtrace.io/address/0x64e36517BaCc2b634944658F8bE124C043054F3e) | | FeeCollector AUTO | 0x717bC2FeCad574ec68Cc1eb074abFD93AdaAb754
[see in explorer](https://snowtrace.io/address/0x717bC2FeCad574ec68Cc1eb074abFD93AdaAb754) | | FeesTakerController | 0x9D4Ec3eae994A8b35e8FE52082e3e3D0240c7694
[see in explorer](https://snowtrace.io/address/0x9D4Ec3eae994A8b35e8FE52082e3e3D0240c7694) | | GenericStakedRoute AUTO | 0x5013c0b3defd8f832d1b6dec750382946de5c13b
[see in explorer](https://snowtrace.io/address/0x5013c0b3defd8f832d1b6dec750382946de5c13b) | | HyphenImpl | 0xE186a05FB020324a7cA61d80138BB1EA66DDDbDF
[see in explorer](https://snowtrace.io/address/0xE186a05FB020324a7cA61d80138BB1EA66DDDbDF) | | KyberSwapImpl | 0x70ce162b46C172d20df5573fF86055a12A658873
[see in explorer](https://snowtrace.io/address/0x70ce162b46C172d20df5573fF86055a12A658873) | | MagpieSwapImpl | 0x55ef72cdEA218BA33AE31e7Bdf1CDa176FD80965
[see in explorer](https://snowtrace.io/address/0x55ef72cdEA218BA33AE31e7Bdf1CDa176FD80965) | | MayanBridgeImpl | 0x4b335E4F4CFd6da9463B31269BD753fBaEe8FEe9
[see in explorer](https://snowtrace.io/address/0x4b335E4F4CFd6da9463B31269BD753fBaEe8FEe9) | | MayanBridgeImplV2 | 0xf4f62E1D36B0Be2a701EDaa25967b6204C6b5aBE
[see in explorer](https://snowtrace.io/address/0xf4f62E1D36B0Be2a701EDaa25967b6204C6b5aBE) | | OneInchImpl | 0x368d506fC5c8C8AC36F48B383Eb1fCEdc4b8Ca69
[see in explorer](https://snowtrace.io/address/0x368d506fC5c8C8AC36F48B383Eb1fCEdc4b8Ca69) | | OpenOceanSwapImpl AUTO | 0xbb03B17C3D63e9707Cff789beD922Bf0Ab98d0c2
[see in explorer](https://snowtrace.io/address/0xbb03B17C3D63e9707Cff789beD922Bf0Ab98d0c2) | | RefuelBridgeImpl | 0xBAde7653492f1a70c3725EdeB2D28F3C84369809
[see in explorer](https://snowtrace.io/address/0xBAde7653492f1a70c3725EdeB2D28F3C84369809) | | RefuelSwapAndBridgeController | 0xAe21DC9F43d335BF7925E69E2d272288492d91c5
[see in explorer](https://snowtrace.io/address/0xAe21DC9F43d335BF7925E69E2d272288492d91c5) | | RFQRouterSingleOutput AUTO | 0xc4088d6e5a2027e784efc0491c322a3e2621bd9e
[see in explorer](https://snowtrace.io/address/0xc4088d6e5a2027e784efc0491c322a3e2621bd9e) | | SingleOutputRequestImpl AUTO | 0x92612711D4d07dEbe4964D4d1401D7d7B5a11737
[see in explorer](https://snowtrace.io/address/0x92612711D4d07dEbe4964D4d1401D7d7B5a11737) | | SocketDeployFactory | 0x71630095e3F08A86aFC73f7b07342192adf39C55
[see in explorer](https://snowtrace.io/address/0x71630095e3F08A86aFC73f7b07342192adf39C55) | | SocketGateway | 0x3a23F943181408EAC424116Af7b7790c94Cb97a5
[see in explorer](https://snowtrace.io/address/0x3a23F943181408EAC424116Af7b7790c94Cb97a5) | | Solver AUTO | 0xAe68b7117BE0026Cbd4366303f74EEcbB19e4042
[see in explorer](https://snowtrace.io/address/0xAe68b7117BE0026Cbd4366303f74EEcbB19e4042) | | StakedRouterExecutor AUTO | 0x12efda5e4d410c5da723ceb7e43942779e3fe49b
[see in explorer](https://snowtrace.io/address/0x12efda5e4d410c5da723ceb7e43942779e3fe49b) | | StakedRouterReceiver AUTO | 0x5d84f33b7c9214df23fd86a0861ac923af99954d
[see in explorer](https://snowtrace.io/address/0x5d84f33b7c9214df23fd86a0861ac923af99954d) | | StakedRouterSingleOutput AUTO | 0x167d49f106bbea59587ef3c63b33e6a421af1b8d
[see in explorer](https://snowtrace.io/address/0x167d49f106bbea59587ef3c63b33e6a421af1b8d) | | StargateImplL2 | 0x235c819eB6877c2ffDE5AF457464131Db47500Dc
[see in explorer](https://snowtrace.io/address/0x235c819eB6877c2ffDE5AF457464131Db47500Dc) | | StargateImplL2V2 | 0xf166678776d22016DdC7415003acFEcEFe8b07dd
[see in explorer](https://snowtrace.io/address/0xf166678776d22016DdC7415003acFEcEFe8b07dd) | | StargateImplV2 | 0xd0389e84178f809903cbFE7D1EfAE3EFa9c1769c
[see in explorer](https://snowtrace.io/address/0xd0389e84178f809903cbFE7D1EfAE3EFa9c1769c) | | SwapExecutor AUTO | 0xbc481539Be2e6990900D34F0Ab54873a177ba019
[see in explorer](https://snowtrace.io/address/0xbc481539Be2e6990900D34F0Ab54873a177ba019) | | SwapRequestCallback AUTO | 0x4682e8315B80cF757e2077280E0471729c992Ed3
[see in explorer](https://snowtrace.io/address/0x4682e8315B80cF757e2077280E0471729c992Ed3) | | SwapRequestImpl AUTO | 0xb701aB56ACB5897eEc7905afF72b52706638a2ec
[see in explorer](https://snowtrace.io/address/0xb701aB56ACB5897eEc7905afF72b52706638a2ec) | | SwitchboardPlug AUTO | 0x2261Fe33C0858a4Bb5178e429bF90C3652da961E
[see in explorer](https://snowtrace.io/address/0x2261Fe33C0858a4Bb5178e429bF90C3652da961E) | | SwitchboardRouter AUTO | 0x8d00Ad02DF0C7B0C379bc1cb49fD74aA10698bFc
[see in explorer](https://snowtrace.io/address/0x8d00Ad02DF0C7B0C379bc1cb49fD74aA10698bFc) | | SymbiosisBridgeImpl | 0x76E3e322DDf6EF4C50696Ea63b87C07D5f1AfA34
[see in explorer](https://snowtrace.io/address/0x76E3e322DDf6EF4C50696Ea63b87C07D5f1AfA34) | | SynapseBridgeImpl | 0x5adde24B6a11B86C23a4f61c236A8795BD4aa2bB
[see in explorer](https://snowtrace.io/address/0x5adde24B6a11B86C23a4f61c236A8795BD4aa2bB) | | UniswapV3Impl | 0xf510A87f6E28B4AE71c87123026617aBB6CE1420
[see in explorer](https://snowtrace.io/address/0xf510A87f6E28B4AE71c87123026617aBB6CE1420) | | UnwrapAndForward AUTO | 0xd31367da48d3f9d6dd0d59de4aa1ef6023a88fad
[see in explorer](https://snowtrace.io/address/0xd31367da48d3f9d6dd0d59de4aa1ef6023a88fad) | | WrappedTokenSwapperImpl | 0x6163484b8d0Db43238C1875bcD7dA987e1824273
[see in explorer](https://snowtrace.io/address/0x6163484b8d0Db43238C1875bcD7dA987e1824273) | | ZeroXSwapImpl | 0x45362caA305D15A12D2AC781049069d87Dc6372c
[see in explorer](https://snowtrace.io/address/0x45362caA305D15A12D2AC781049069d87Dc6372c) | | ZeroxV2SwapImpl | 0x413d1edcF7C0837F09e0DB6375DdE6D5F066ABaC
[see in explorer](https://snowtrace.io/address/0x413d1edcF7C0837F09e0DB6375DdE6D5F066ABaC) | | ZeroxV2Wrapper AUTO | 0x05b108fD88d042eF0145DCcd564DCd6471852FC2
[see in explorer](https://snowtrace.io/address/0x05b108fD88d042eF0145DCcd564DCd6471852FC2) |
| name | address | | ----------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------- | | DisabledSocketRoute | 0x0f34A522FF82151c90679b73211955068FD854F1
[see in explorer](https://explorer.b3.fun/address/0x0f34A522FF82151c90679b73211955068FD854F1) | | FeesTakerController | 0xa16FD999AF50931C9e501177de4A2f288D1cfD6f
[see in explorer](https://explorer.b3.fun/address/0xa16FD999AF50931C9e501177de4A2f288D1cfD6f) | | RefuelSwapAndBridgeController | 0xbD99719C412f0cF440439f328B93622DeBB601b2
[see in explorer](https://explorer.b3.fun/address/0xbD99719C412f0cF440439f328B93622DeBB601b2) | | SocketDeployFactory | 0x71630095e3F08A86aFC73f7b07342192adf39C55
[see in explorer](https://explorer.b3.fun/address/0x71630095e3F08A86aFC73f7b07342192adf39C55) | | SocketGateway | 0x3a23F943181408EAC424116Af7b7790c94Cb97a5
[see in explorer](https://explorer.b3.fun/address/0x3a23F943181408EAC424116Af7b7790c94Cb97a5) | | SuperBridgeImpl | 0x63B448cea2cA0EFD2B20969C6D619E469b1A9a8C
[see in explorer](https://explorer.b3.fun/address/0x63B448cea2cA0EFD2B20969C6D619E469b1A9a8C) |
| name | address | | -------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------ | | AcrossImpl | 0x880ca65d29496a7eCDeE3143719050Fe40C5AD01
[see in explorer](https://basescan.org/address/0x880ca65d29496a7eCDeE3143719050Fe40C5AD01) | | AcrossImplV3 | 0x740EA79e2FccDDB4eE8bB8Fc8ccAC5eb6dFa0b40
[see in explorer](https://basescan.org/address/0x740EA79e2FccDDB4eE8bB8Fc8ccAC5eb6dFa0b40) | | AcrossStakedRoute AUTO | 0x125ac5a530ece0a06dd3cd3da711c054eadb57b9
[see in explorer](https://basescan.org/address/0x125ac5a530ece0a06dd3cd3da711c054eadb57b9) | | AcrossV3WethUnwrapper | 0x36f0B62E4eE3d30939cBccABA9D983579799D931
[see in explorer](https://basescan.org/address/0x36f0B62E4eE3d30939cBccABA9D983579799D931) | | BungeeDepository AUTO | 0xa6cd293ba20873b3cbbbf78f156a1d56d8ab9347
[see in explorer](https://basescan.org/address/0xa6cd293ba20873b3cbbbf78f156a1d56d8ab9347) | | BungeeGateway AUTO | 0x84F06fBaCc4b64CA2f72a4B26191DAD97f2b52BA
[see in explorer](https://basescan.org/address/0x84F06fBaCc4b64CA2f72a4B26191DAD97f2b52BA) | | BungeeInbox AUTO | 0x5e0f8e7337c8955d2124b8e85ca74af884b3e124
[see in explorer](https://basescan.org/address/0x5e0f8e7337c8955d2124b8e85ca74af884b3e124) | | BungeeInboxOld AUTO | 0x3C54883Ce0d86b3abB26A63744bEb853Ea99a403
[see in explorer](https://basescan.org/address/0x3C54883Ce0d86b3abB26A63744bEb853Ea99a403) | | CalldataExecutor AUTO | 0xa873aab6a98cb764ad6d52820d129d0e3667d9f9
[see in explorer](https://basescan.org/address/0xa873aab6a98cb764ad6d52820d129d0e3667d9f9) | | CCTPRouterSingleOutput AUTO | 0x3b4817827d06600f92296c5d1491818d69fc955f
[see in explorer](https://basescan.org/address/0x3b4817827d06600f92296c5d1491818d69fc955f) | | CctpV2Impl | 0x8EAeE07f8FFF38695708be900c1F9aacFB8b3C09
[see in explorer](https://basescan.org/address/0x8EAeE07f8FFF38695708be900c1F9aacFB8b3C09) | | CCTPV2RouterSingleOutput AUTO | 0x6faec2944071b2a5ebfd1b08f43f29597aad8ca1
[see in explorer](https://basescan.org/address/0x6faec2944071b2a5ebfd1b08f43f29597aad8ca1) | | CelerStakedRoute AUTO | 0xf1c07b6dddc480602d0304c31e6b13ff711b5828
[see in explorer](https://basescan.org/address/0xf1c07b6dddc480602d0304c31e6b13ff711b5828) | | DisabledSocketRoute | 0x0f34A522FF82151c90679b73211955068FD854F1
[see in explorer](https://basescan.org/address/0x0f34A522FF82151c90679b73211955068FD854F1) | | Entrypoint AUTO | 0x574A7fF7758c18e7985cda39b0Ae6a0B82fCFf87
[see in explorer](https://basescan.org/address/0x574A7fF7758c18e7985cda39b0Ae6a0B82fCFf87) | | FeeCollector AUTO | 0x1337B8Af481f3d7d245De35dFfCF30B825C20836
[see in explorer](https://basescan.org/address/0x1337B8Af481f3d7d245De35dFfCF30B825C20836) | | FeesTakerController | 0x6808dC8Fc272827c9236cb3bBf3d77e3e9A9B056
[see in explorer](https://basescan.org/address/0x6808dC8Fc272827c9236cb3bBf3d77e3e9A9B056) | | GenericStakedRoute AUTO | 0x5013c0b3defd8f832d1b6dec750382946de5c13b
[see in explorer](https://basescan.org/address/0x5013c0b3defd8f832d1b6dec750382946de5c13b) | | HopCctpImpl | 0xb5406449c46A97eb8BA2bE53279EC9c923D58db3
[see in explorer](https://basescan.org/address/0xb5406449c46A97eb8BA2bE53279EC9c923D58db3) | | HopImplL2V2 | 0x3E2D2ed0FB483d76e54850014D73AfCeA42263fB
[see in explorer](https://basescan.org/address/0x3E2D2ed0FB483d76e54850014D73AfCeA42263fB) | | KyberSwapImpl | 0x70ce162b46C172d20df5573fF86055a12A658873
[see in explorer](https://basescan.org/address/0x70ce162b46C172d20df5573fF86055a12A658873) | | MagpieSwapImpl | 0x8d4e38721A6471fd9F890A71E2e32736b5919bc7
[see in explorer](https://basescan.org/address/0x8d4e38721A6471fd9F890A71E2e32736b5919bc7) | | MayanBridgeImpl | 0xAC150EF0a9064F2357e2f520A7B6D44729ec356E
[see in explorer](https://basescan.org/address/0xAC150EF0a9064F2357e2f520A7B6D44729ec356E) | | MayanBridgeImplV2 | 0xf4f62E1D36B0Be2a701EDaa25967b6204C6b5aBE
[see in explorer](https://basescan.org/address/0xf4f62E1D36B0Be2a701EDaa25967b6204C6b5aBE) | | NativeB3Bridge AUTO | 0x1dAc95E6937da99b09bDf6b683A7F1428aA0De7A
[see in explorer](https://basescan.org/address/0x1dAc95E6937da99b09bDf6b683A7F1428aA0De7A) | | OneInchImpl | 0x555118B2aF4b6e2027cF766FB5a0Aa6a77e8ED8a
[see in explorer](https://basescan.org/address/0x555118B2aF4b6e2027cF766FB5a0Aa6a77e8ED8a) | | OpenOceanSwapImpl AUTO | 0x4F5Ab12A90fC5467d6cd43888E4Ef877ec304954
[see in explorer](https://basescan.org/address/0x4F5Ab12A90fC5467d6cd43888E4Ef877ec304954) | | RainbowSwapImpl | 0x34395136584ea7A0C1928f53131eB7F6D1B9B45d
[see in explorer](https://basescan.org/address/0x34395136584ea7A0C1928f53131eB7F6D1B9B45d) | | RefuelBridgeImpl | 0xDf7f484607E5D97917692FA199dDAD2e0Df0cd43
[see in explorer](https://basescan.org/address/0xDf7f484607E5D97917692FA199dDAD2e0Df0cd43) | | RefuelSwapAndBridgeController | 0x5ce6d37c2fd66Fe1531F44C5141e815b7c9aC8a4
[see in explorer](https://basescan.org/address/0x5ce6d37c2fd66Fe1531F44C5141e815b7c9aC8a4) | | RFQRouterSingleOutput AUTO | 0xc4088d6e5a2027e784efc0491c322a3e2621bd9e
[see in explorer](https://basescan.org/address/0xc4088d6e5a2027e784efc0491c322a3e2621bd9e) | | SingleOutputRequestImpl AUTO | 0xbEB2Ef8B61Ae41611e6656d21551303e4a1E11ba
[see in explorer](https://basescan.org/address/0xbEB2Ef8B61Ae41611e6656d21551303e4a1E11ba) | | SocketDeployFactory | 0x71630095e3F08A86aFC73f7b07342192adf39C55
[see in explorer](https://basescan.org/address/0x71630095e3F08A86aFC73f7b07342192adf39C55) | | SocketGateway | 0x3a23F943181408EAC424116Af7b7790c94Cb97a5
[see in explorer](https://basescan.org/address/0x3a23F943181408EAC424116Af7b7790c94Cb97a5) | | Solver AUTO | 0xAe68b7117BE0026Cbd4366303f74EEcbB19e4042
[see in explorer](https://basescan.org/address/0xAe68b7117BE0026Cbd4366303f74EEcbB19e4042) | | StakedRouterExecutor AUTO | 0x12efda5e4d410c5da723ceb7e43942779e3fe49b
[see in explorer](https://basescan.org/address/0x12efda5e4d410c5da723ceb7e43942779e3fe49b) | | StakedRouterReceiver AUTO | 0x5d84f33b7c9214df23fd86a0861ac923af99954d
[see in explorer](https://basescan.org/address/0x5d84f33b7c9214df23fd86a0861ac923af99954d) | | StakedRouterSingleOutput AUTO | 0x167d49f106bbea59587ef3c63b33e6a421af1b8d
[see in explorer](https://basescan.org/address/0x167d49f106bbea59587ef3c63b33e6a421af1b8d) | | StargateImplL2V2 | 0xb1f01b0723c74eA99b1187c30b876941f49adb39
[see in explorer](https://basescan.org/address/0xb1f01b0723c74eA99b1187c30b876941f49adb39) | | StargateImplV2 | 0x0CB0552405846a4fcd83FBD791eF4a1F43ab3D94
[see in explorer](https://basescan.org/address/0x0CB0552405846a4fcd83FBD791eF4a1F43ab3D94) | | StargateReceiver | 0xa4dCB24c6F16Bffec01d4E3Dc3D2d9092239BDA9
[see in explorer](https://basescan.org/address/0xa4dCB24c6F16Bffec01d4E3Dc3D2d9092239BDA9) | | SwapExecutor AUTO | 0x056d246A858B3b53cE5A446868FA4abeAb66B1aA
[see in explorer](https://basescan.org/address/0x056d246A858B3b53cE5A446868FA4abeAb66B1aA) | | SwapRequestCallback AUTO | 0xd0389e84178f809903cbFE7D1EfAE3EFa9c1769c
[see in explorer](https://basescan.org/address/0xd0389e84178f809903cbFE7D1EfAE3EFa9c1769c) | | SwapRequestImpl AUTO | 0xF4DB5105aF0A71542a5650Ef017876C38cc0CFeB
[see in explorer](https://basescan.org/address/0xF4DB5105aF0A71542a5650Ef017876C38cc0CFeB) | | SwitchboardPlug AUTO | 0x464A517d77183051211235641d9304D4BE3f36E1
[see in explorer](https://basescan.org/address/0x464A517d77183051211235641d9304D4BE3f36E1) | | SwitchboardRouter AUTO | 0x1b243044d1d78E027C4c5ceF8624C7bcAF90CE4a
[see in explorer](https://basescan.org/address/0x1b243044d1d78E027C4c5ceF8624C7bcAF90CE4a) | | SymbiosisBridgeImpl | 0xfe82ABBcbAda39000C451b334D91DbF8990cCE49
[see in explorer](https://basescan.org/address/0xfe82ABBcbAda39000C451b334D91DbF8990cCE49) | | SynapseBridgeImpl | 0x090E83668b7136075d3f76F7D6533B7256538667
[see in explorer](https://basescan.org/address/0x090E83668b7136075d3f76F7D6533B7256538667) | | UniswapV3Impl | 0x095ceD394C018a7E28ADc7a1748DCB4f0d25fdED
[see in explorer](https://basescan.org/address/0x095ceD394C018a7E28ADc7a1748DCB4f0d25fdED) | | UnwrapAndForward AUTO | 0xd31367da48d3f9d6dd0d59de4aa1ef6023a88fad
[see in explorer](https://basescan.org/address/0xd31367da48d3f9d6dd0d59de4aa1ef6023a88fad) | | WrappedTokenSwapperImpl | 0x4153a9cD0319B0C67B4c215d8750376130C948D6
[see in explorer](https://basescan.org/address/0x4153a9cD0319B0C67B4c215d8750376130C948D6) | | ZeroXSwapImpl | 0x0Ad69c903626faD4f6d3bcdAdD6875152d09E20f
[see in explorer](https://basescan.org/address/0x0Ad69c903626faD4f6d3bcdAdD6875152d09E20f) | | ZeroxV2SwapImpl | 0x413d1edcF7C0837F09e0DB6375DdE6D5F066ABaC
[see in explorer](https://basescan.org/address/0x413d1edcF7C0837F09e0DB6375DdE6D5F066ABaC) | | ZeroxV2Wrapper AUTO | 0xC8E67b4D14A84D3408932a7ED01789d20864B624
[see in explorer](https://basescan.org/address/0xC8E67b4D14A84D3408932a7ED01789d20864B624) |
| name | address | | -------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------ | | BungeeGateway AUTO | 0x8f503B6d9fFdae8d375d1E226b71B4B3144D3849
[see in explorer](https://berascan.com/address/0x8f503B6d9fFdae8d375d1E226b71B4B3144D3849) | | BungeeInbox AUTO | 0x5e0f8e7337c8955d2124b8e85ca74af884b3e124
[see in explorer](https://berascan.com/address/0x5e0f8e7337c8955d2124b8e85ca74af884b3e124) | | BungeeInboxOld AUTO | 0xA23D36E54D95F123c81DDC0D8ff1B5CDfd0bB502
[see in explorer](https://berascan.com/address/0xA23D36E54D95F123c81DDC0D8ff1B5CDfd0bB502) | | CalldataExecutor AUTO | 0xa873aab6a98cb764ad6d52820d129d0e3667d9f9
[see in explorer](https://berascan.com/address/0xa873aab6a98cb764ad6d52820d129d0e3667d9f9) | | CCTPRouterSingleOutput AUTO | 0x0000000000000000000000000000000000000000
[see in explorer](https://berascan.com/address/0x0000000000000000000000000000000000000000) | | CCTPV2RouterSingleOutput AUTO | 0x0000000000000000000000000000000000000000
[see in explorer](https://berascan.com/address/0x0000000000000000000000000000000000000000) | | Entrypoint AUTO | 0xc8807bD5b5c87Fe7Fc73D644Cb7800d1A4e4F09D
[see in explorer](https://berascan.com/address/0xc8807bD5b5c87Fe7Fc73D644Cb7800d1A4e4F09D) | | FeeCollector AUTO | 0xE12D0CE29B916fbc067f49a8ebC203ffB66E8ded
[see in explorer](https://berascan.com/address/0xE12D0CE29B916fbc067f49a8ebC203ffB66E8ded) | | FeesTakerController | 0xa16FD999AF50931C9e501177de4A2f288D1cfD6f
[see in explorer](https://berascan.com/address/0xa16FD999AF50931C9e501177de4A2f288D1cfD6f) | | GenericStakedRoute AUTO | 0x5013c0b3defd8f832d1b6dec750382946de5c13b
[see in explorer](https://berascan.com/address/0x5013c0b3defd8f832d1b6dec750382946de5c13b) | | KyberSwapImpl | 0x70ce162b46C172d20df5573fF86055a12A658873
[see in explorer](https://berascan.com/address/0x70ce162b46C172d20df5573fF86055a12A658873) | | MagpieSwapImpl | 0x413d1edcF7C0837F09e0DB6375DdE6D5F066ABaC
[see in explorer](https://berascan.com/address/0x413d1edcF7C0837F09e0DB6375DdE6D5F066ABaC) | | RefuelSwapAndBridgeController | 0xbD99719C412f0cF440439f328B93622DeBB601b2
[see in explorer](https://berascan.com/address/0xbD99719C412f0cF440439f328B93622DeBB601b2) | | RFQRouterSingleOutput AUTO | 0xc4088d6e5a2027e784efc0491c322a3e2621bd9e
[see in explorer](https://berascan.com/address/0xc4088d6e5a2027e784efc0491c322a3e2621bd9e) | | SingleOutputRequestImpl AUTO | 0xcC42AE193E97a228BbC1e747Ea4af3aa170acCA2
[see in explorer](https://berascan.com/address/0xcC42AE193E97a228BbC1e747Ea4af3aa170acCA2) | | SocketDeployFactory | 0x71630095e3F08A86aFC73f7b07342192adf39C55
[see in explorer](https://berascan.com/address/0x71630095e3F08A86aFC73f7b07342192adf39C55) | | SocketGateway | 0x3a23F943181408EAC424116Af7b7790c94Cb97a5
[see in explorer](https://berascan.com/address/0x3a23F943181408EAC424116Af7b7790c94Cb97a5) | | Solver AUTO | 0xAe68b7117BE0026Cbd4366303f74EEcbB19e4042
[see in explorer](https://berascan.com/address/0xAe68b7117BE0026Cbd4366303f74EEcbB19e4042) | | StakedRouterExecutor AUTO | 0x12efda5e4d410c5da723ceb7e43942779e3fe49b
[see in explorer](https://berascan.com/address/0x12efda5e4d410c5da723ceb7e43942779e3fe49b) | | StakedRouterReceiver AUTO | 0x5d84f33b7c9214df23fd86a0861ac923af99954d
[see in explorer](https://berascan.com/address/0x5d84f33b7c9214df23fd86a0861ac923af99954d) | | StakedRouterSingleOutput AUTO | 0x167d49f106bbea59587ef3c63b33e6a421af1b8d
[see in explorer](https://berascan.com/address/0x167d49f106bbea59587ef3c63b33e6a421af1b8d) | | StargateImplV2 | 0x4682e8315B80cF757e2077280E0471729c992Ed3
[see in explorer](https://berascan.com/address/0x4682e8315B80cF757e2077280E0471729c992Ed3) | | SwapExecutor AUTO | 0x6e8338B0c56f598809e72D6a31456f9D5452de72
[see in explorer](https://berascan.com/address/0x6e8338B0c56f598809e72D6a31456f9D5452de72) | | SwapRequestCallback AUTO | 0xEFB37Bd3a9ed2f768bf6f79d0379fe7f9BE50F49
[see in explorer](https://berascan.com/address/0xEFB37Bd3a9ed2f768bf6f79d0379fe7f9BE50F49) | | SwapRequestImpl AUTO | 0x79b5380FF38462b72e14667742f634c6610158B8
[see in explorer](https://berascan.com/address/0x79b5380FF38462b72e14667742f634c6610158B8) | | SwitchboardPlug AUTO | 0xc5C38A15A9D3D9dC5Fc7dE4426779B695677e45D
[see in explorer](https://berascan.com/address/0xc5C38A15A9D3D9dC5Fc7dE4426779B695677e45D) | | SwitchboardRouter AUTO | 0x3416daBEAf259FBE5ba455E361f23e58BAB91E3E
[see in explorer](https://berascan.com/address/0x3416daBEAf259FBE5ba455E361f23e58BAB91E3E) | | SymbiosisBridgeImpl | 0x63B448cea2cA0EFD2B20969C6D619E469b1A9a8C
[see in explorer](https://berascan.com/address/0x63B448cea2cA0EFD2B20969C6D619E469b1A9a8C) | | UnwrapAndForward AUTO | 0xd31367da48d3f9d6dd0d59de4aa1ef6023a88fad
[see in explorer](https://berascan.com/address/0xd31367da48d3f9d6dd0d59de4aa1ef6023a88fad) | | ZeroxV2Wrapper AUTO | 0x614595189d16995Fe22a5c267B220C803e50966F
[see in explorer](https://berascan.com/address/0x614595189d16995Fe22a5c267B220C803e50966F) |
| name | address | | -------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------- | | AcrossImplV3 | 0x740EA79e2FccDDB4eE8bB8Fc8ccAC5eb6dFa0b40
[see in explorer](https://bscscan.com/address/0x740EA79e2FccDDB4eE8bB8Fc8ccAC5eb6dFa0b40) | | AcrossStakedRoute AUTO | 0x125ac5a530ece0a06dd3cd3da711c054eadb57b9
[see in explorer](https://bscscan.com/address/0x125ac5a530ece0a06dd3cd3da711c054eadb57b9) | | AcrossV3WethUnwrapper | 0x36f0B62E4eE3d30939cBccABA9D983579799D931
[see in explorer](https://bscscan.com/address/0x36f0B62E4eE3d30939cBccABA9D983579799D931) | | AnyswapL2Impl | 0x89800A17CEA97dB4A8F0705d7f8da770032397f5
[see in explorer](https://bscscan.com/address/0x89800A17CEA97dB4A8F0705d7f8da770032397f5) | | AnyswapV6L2Impl | 0xAe21DC9F43d335BF7925E69E2d272288492d91c5
[see in explorer](https://bscscan.com/address/0xAe21DC9F43d335BF7925E69E2d272288492d91c5) | | BungeeDepository AUTO | 0xa6cd293ba20873b3cbbbf78f156a1d56d8ab9347
[see in explorer](https://bscscan.com/address/0xa6cd293ba20873b3cbbbf78f156a1d56d8ab9347) | | BungeeGateway AUTO | 0x9aF2b913679049c966b77934af4CbE7Bb36Cf9D3
[see in explorer](https://bscscan.com/address/0x9aF2b913679049c966b77934af4CbE7Bb36Cf9D3) | | BungeeInbox AUTO | 0x5e0f8e7337c8955d2124b8e85ca74af884b3e124
[see in explorer](https://bscscan.com/address/0x5e0f8e7337c8955d2124b8e85ca74af884b3e124) | | BungeeInboxOld AUTO | 0x002cd45978F556D817e5FBB4020f7Dd82Bb10941
[see in explorer](https://bscscan.com/address/0x002cd45978F556D817e5FBB4020f7Dd82Bb10941) | | CalldataExecutor AUTO | 0xa873aab6a98cb764ad6d52820d129d0e3667d9f9
[see in explorer](https://bscscan.com/address/0xa873aab6a98cb764ad6d52820d129d0e3667d9f9) | | CCTPRouterSingleOutput AUTO | 0x0000000000000000000000000000000000000000
[see in explorer](https://bscscan.com/address/0x0000000000000000000000000000000000000000) | | CCTPV2RouterSingleOutput AUTO | 0x0000000000000000000000000000000000000000
[see in explorer](https://bscscan.com/address/0x0000000000000000000000000000000000000000) | | CelerImpl | 0x331c0edE78230d842132189C1496B31b9e7923e2
[see in explorer](https://bscscan.com/address/0x331c0edE78230d842132189C1496B31b9e7923e2) | | CelerStakedRoute AUTO | 0xf1c07b6dddc480602d0304c31e6b13ff711b5828
[see in explorer](https://bscscan.com/address/0xf1c07b6dddc480602d0304c31e6b13ff711b5828) | | CelerStorageWrapper | 0x2d0EeB574cC98f6d57c72FFe730D5C8a8f2eac37
[see in explorer](https://bscscan.com/address/0x2d0EeB574cC98f6d57c72FFe730D5C8a8f2eac37) | | CelerV2Impl | 0x1A8f60f05239EEAd23A27f32416B160D6a14277e
[see in explorer](https://bscscan.com/address/0x1A8f60f05239EEAd23A27f32416B160D6a14277e) | | DisabledSocketRoute | 0x0f34A522FF82151c90679b73211955068FD854F1
[see in explorer](https://bscscan.com/address/0x0f34A522FF82151c90679b73211955068FD854F1) | | Entrypoint AUTO | 0xF070dae0a1eae99A27aE2496093F913a2d26E3b3
[see in explorer](https://bscscan.com/address/0xF070dae0a1eae99A27aE2496093F913a2d26E3b3) | | FeeCollector AUTO | 0xE8746d664059067FD9337eb81CEdD632Ffa4325e
[see in explorer](https://bscscan.com/address/0xE8746d664059067FD9337eb81CEdD632Ffa4325e) | | FeesTakerController | 0x21185370305A12d71CFd8ceA619905DEc4118F99
[see in explorer](https://bscscan.com/address/0x21185370305A12d71CFd8ceA619905DEc4118F99) | | GenericStakedRoute AUTO | 0x5013c0b3defd8f832d1b6dec750382946de5c13b
[see in explorer](https://bscscan.com/address/0x5013c0b3defd8f832d1b6dec750382946de5c13b) | | HyphenImpl | 0xA898821781ba5dd78a485Bcb610b8a60bbC5357E
[see in explorer](https://bscscan.com/address/0xA898821781ba5dd78a485Bcb610b8a60bbC5357E) | | KyberSwapImpl | 0x59057Df54637e716614fF11b54eeB74257CEb2fc
[see in explorer](https://bscscan.com/address/0x59057Df54637e716614fF11b54eeB74257CEb2fc) | | MagpieSwapImpl | 0x831e9cDe2Ee7070203559CDd6Ec60745b9565B95
[see in explorer](https://bscscan.com/address/0x831e9cDe2Ee7070203559CDd6Ec60745b9565B95) | | MayanBridgeImpl | 0x9959767cd114F1f0A1550AeFB82B0317Fd787979
[see in explorer](https://bscscan.com/address/0x9959767cd114F1f0A1550AeFB82B0317Fd787979) | | MayanBridgeImplV2 | 0xFBd820d7C4aFB954532107b8DD37D0515C90eBb0
[see in explorer](https://bscscan.com/address/0xFBd820d7C4aFB954532107b8DD37D0515C90eBb0) | | OneInchImpl | 0x3E7118a8b22272B8f2A0BE804da75750eAc23c22
[see in explorer](https://bscscan.com/address/0x3E7118a8b22272B8f2A0BE804da75750eAc23c22) | | OpenOceanSwapImpl AUTO | 0xbb03B17C3D63e9707Cff789beD922Bf0Ab98d0c2
[see in explorer](https://bscscan.com/address/0xbb03B17C3D63e9707Cff789beD922Bf0Ab98d0c2) | | RainbowSwapImpl | 0x41e06c1Cafa528413A5430BC3A56dF59Ad84ebF8
[see in explorer](https://bscscan.com/address/0x41e06c1Cafa528413A5430BC3A56dF59Ad84ebF8) | | RefuelBridgeImpl | 0x653a03b511E6FE9e80eeCb2bBbD36DCaf93cF147
[see in explorer](https://bscscan.com/address/0x653a03b511E6FE9e80eeCb2bBbD36DCaf93cF147) | | RefuelSwapAndBridgeController | 0x77cf21917FF767e2FDEd80760Ee847CAb99BE13b
[see in explorer](https://bscscan.com/address/0x77cf21917FF767e2FDEd80760Ee847CAb99BE13b) | | RFQRouterSingleOutput AUTO | 0xc4088d6e5a2027e784efc0491c322a3e2621bd9e
[see in explorer](https://bscscan.com/address/0xc4088d6e5a2027e784efc0491c322a3e2621bd9e) | | SingleOutputRequestImpl AUTO | 0x5e01dbBBe59F8987673FAdD1469DdD2Be71e00af
[see in explorer](https://bscscan.com/address/0x5e01dbBBe59F8987673FAdD1469DdD2Be71e00af) | | SocketDeployFactory | 0x71630095e3F08A86aFC73f7b07342192adf39C55
[see in explorer](https://bscscan.com/address/0x71630095e3F08A86aFC73f7b07342192adf39C55) | | SocketGateway | 0x3a23F943181408EAC424116Af7b7790c94Cb97a5
[see in explorer](https://bscscan.com/address/0x3a23F943181408EAC424116Af7b7790c94Cb97a5) | | Solver AUTO | 0xAe68b7117BE0026Cbd4366303f74EEcbB19e4042
[see in explorer](https://bscscan.com/address/0xAe68b7117BE0026Cbd4366303f74EEcbB19e4042) | | StakedRouterExecutor AUTO | 0x12efda5e4d410c5da723ceb7e43942779e3fe49b
[see in explorer](https://bscscan.com/address/0x12efda5e4d410c5da723ceb7e43942779e3fe49b) | | StakedRouterReceiver AUTO | 0x5d84f33b7c9214df23fd86a0861ac923af99954d
[see in explorer](https://bscscan.com/address/0x5d84f33b7c9214df23fd86a0861ac923af99954d) | | StakedRouterSingleOutput AUTO | 0x167d49f106bbea59587ef3c63b33e6a421af1b8d
[see in explorer](https://bscscan.com/address/0x167d49f106bbea59587ef3c63b33e6a421af1b8d) | | StargateImplL2 | 0x216314f5E2FCD984f54c3ba1e51035Ea29d6BE37
[see in explorer](https://bscscan.com/address/0x216314f5E2FCD984f54c3ba1e51035Ea29d6BE37) | | StargateImplL2V2 | 0x214578E8efBCFF8259d410Ee84187A8B7caf38ce
[see in explorer](https://bscscan.com/address/0x214578E8efBCFF8259d410Ee84187A8B7caf38ce) | | StargateImplV2 | 0x4682e8315B80cF757e2077280E0471729c992Ed3
[see in explorer](https://bscscan.com/address/0x4682e8315B80cF757e2077280E0471729c992Ed3) | | SuperBridgeImpl | 0x2D448cDa76D352fC2cB4C7d6f8b55e3cB0817d9e
[see in explorer](https://bscscan.com/address/0x2D448cDa76D352fC2cB4C7d6f8b55e3cB0817d9e) | | SwapExecutor AUTO | 0x6b1a31Af8A9DC9E8e489035859ca98D6335a0bcB
[see in explorer](https://bscscan.com/address/0x6b1a31Af8A9DC9E8e489035859ca98D6335a0bcB) | | SwapRequestCallback AUTO | 0xEFB37Bd3a9ed2f768bf6f79d0379fe7f9BE50F49
[see in explorer](https://bscscan.com/address/0xEFB37Bd3a9ed2f768bf6f79d0379fe7f9BE50F49) | | SwapRequestImpl AUTO | 0xdcf83CC9CCDfa57aE757021f9457567F67BABeA9
[see in explorer](https://bscscan.com/address/0xdcf83CC9CCDfa57aE757021f9457567F67BABeA9) | | SwitchboardPlug AUTO | 0x4743a14Dd1B32Bf7c89dBB905A83fC513455d2C7
[see in explorer](https://bscscan.com/address/0x4743a14Dd1B32Bf7c89dBB905A83fC513455d2C7) | | SwitchboardRouter AUTO | 0xD22ef0dEA27049484bF9b4B748eC715dB8c9d646
[see in explorer](https://bscscan.com/address/0xD22ef0dEA27049484bF9b4B748eC715dB8c9d646) | | SymbiosisBridgeImpl | 0xf510A87f6E28B4AE71c87123026617aBB6CE1420
[see in explorer](https://bscscan.com/address/0xf510A87f6E28B4AE71c87123026617aBB6CE1420) | | SynapseBridgeImpl | 0xFd9f91749C5738FE27aA50FE42Df43A6D9616B1C
[see in explorer](https://bscscan.com/address/0xFd9f91749C5738FE27aA50FE42Df43A6D9616B1C) | | UniswapV3Impl | 0xD50bc8CDfbDdA240306E7f689D95bCA3E8038ECB
[see in explorer](https://bscscan.com/address/0xD50bc8CDfbDdA240306E7f689D95bCA3E8038ECB) | | UnwrapAndForward AUTO | 0xd31367da48d3f9d6dd0d59de4aa1ef6023a88fad
[see in explorer](https://bscscan.com/address/0xd31367da48d3f9d6dd0d59de4aa1ef6023a88fad) | | WrappedTokenSwapperImpl | 0x76E3e322DDf6EF4C50696Ea63b87C07D5f1AfA34
[see in explorer](https://bscscan.com/address/0x76E3e322DDf6EF4C50696Ea63b87C07D5f1AfA34) | | ZeroXSwapImpl | 0xD79c6bAc601ca92cb9F8Db61976CCdbb0588C5F6
[see in explorer](https://bscscan.com/address/0xD79c6bAc601ca92cb9F8Db61976CCdbb0588C5F6) | | ZeroxV2SwapImpl | 0x413d1edcF7C0837F09e0DB6375DdE6D5F066ABaC
[see in explorer](https://bscscan.com/address/0x413d1edcF7C0837F09e0DB6375DdE6D5F066ABaC) | | ZeroxV2Wrapper AUTO | 0x614595189d16995Fe22a5c267B220C803e50966F
[see in explorer](https://bscscan.com/address/0x614595189d16995Fe22a5c267B220C803e50966F) |
| name | address | | -------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------ | | AcrossImplV3 | 0x740EA79e2FccDDB4eE8bB8Fc8ccAC5eb6dFa0b40
[see in explorer](https://blastscan.io/address/0x740EA79e2FccDDB4eE8bB8Fc8ccAC5eb6dFa0b40) | | AcrossStakedRoute AUTO | 0x125ac5a530ece0a06dd3cd3da711c054eadb57b9
[see in explorer](https://blastscan.io/address/0x125ac5a530ece0a06dd3cd3da711c054eadb57b9) | | AcrossV3WethUnwrapper | 0x36f0B62E4eE3d30939cBccABA9D983579799D931
[see in explorer](https://blastscan.io/address/0x36f0B62E4eE3d30939cBccABA9D983579799D931) | | BungeeGateway AUTO | 0x5525e0700390A12995aC181eFF656E4aC0246b29
[see in explorer](https://blastscan.io/address/0x5525e0700390A12995aC181eFF656E4aC0246b29) | | BungeeInbox AUTO | 0x5e0f8e7337c8955d2124b8e85ca74af884b3e124
[see in explorer](https://blastscan.io/address/0x5e0f8e7337c8955d2124b8e85ca74af884b3e124) | | BungeeInboxOld AUTO | 0x5f1169dDBC089Ecd46979f610F9779220bA52b5f
[see in explorer](https://blastscan.io/address/0x5f1169dDBC089Ecd46979f610F9779220bA52b5f) | | CalldataExecutor AUTO | 0xa873aab6a98cb764ad6d52820d129d0e3667d9f9
[see in explorer](https://blastscan.io/address/0xa873aab6a98cb764ad6d52820d129d0e3667d9f9) | | CCTPRouterSingleOutput AUTO | 0x0000000000000000000000000000000000000000
[see in explorer](https://blastscan.io/address/0x0000000000000000000000000000000000000000) | | CCTPV2RouterSingleOutput AUTO | 0x0000000000000000000000000000000000000000
[see in explorer](https://blastscan.io/address/0x0000000000000000000000000000000000000000) | | DisabledSocketRoute | 0x0f34A522FF82151c90679b73211955068FD854F1
[see in explorer](https://blastscan.io/address/0x0f34A522FF82151c90679b73211955068FD854F1) | | Entrypoint AUTO | 0x79C7a69499Cf1866734E8D3154200a05aE41c865
[see in explorer](https://blastscan.io/address/0x79C7a69499Cf1866734E8D3154200a05aE41c865) | | FeeCollector AUTO | 0x264f55044465A3d8d574D87168F2c2344D1e8c8c
[see in explorer](https://blastscan.io/address/0x264f55044465A3d8d574D87168F2c2344D1e8c8c) | | GenericStakedRoute AUTO | 0x5013c0b3defd8f832d1b6dec750382946de5c13b
[see in explorer](https://blastscan.io/address/0x5013c0b3defd8f832d1b6dec750382946de5c13b) | | KyberSwapImpl | 0x70ce162b46C172d20df5573fF86055a12A658873
[see in explorer](https://blastscan.io/address/0x70ce162b46C172d20df5573fF86055a12A658873) | | MagpieSwapImpl | 0xfb9fDe2b893C9438e3b0393D8f94000ea95f15E6
[see in explorer](https://blastscan.io/address/0xfb9fDe2b893C9438e3b0393D8f94000ea95f15E6) | | OpenOceanSwapImpl AUTO | 0x413d1edcF7C0837F09e0DB6375DdE6D5F066ABaC
[see in explorer](https://blastscan.io/address/0x413d1edcF7C0837F09e0DB6375DdE6D5F066ABaC) | | RFQRouterSingleOutput AUTO | 0xc4088d6e5a2027e784efc0491c322a3e2621bd9e
[see in explorer](https://blastscan.io/address/0xc4088d6e5a2027e784efc0491c322a3e2621bd9e) | | SingleOutputRequestImpl AUTO | 0x79b5380FF38462b72e14667742f634c6610158B8
[see in explorer](https://blastscan.io/address/0x79b5380FF38462b72e14667742f634c6610158B8) | | SocketDeployFactory | 0x71630095e3F08A86aFC73f7b07342192adf39C55
[see in explorer](https://blastscan.io/address/0x71630095e3F08A86aFC73f7b07342192adf39C55) | | SocketGateway | 0x3a23F943181408EAC424116Af7b7790c94Cb97a5
[see in explorer](https://blastscan.io/address/0x3a23F943181408EAC424116Af7b7790c94Cb97a5) | | Solver AUTO | 0xAe68b7117BE0026Cbd4366303f74EEcbB19e4042
[see in explorer](https://blastscan.io/address/0xAe68b7117BE0026Cbd4366303f74EEcbB19e4042) | | StakedRouterExecutor AUTO | 0x12efda5e4d410c5da723ceb7e43942779e3fe49b
[see in explorer](https://blastscan.io/address/0x12efda5e4d410c5da723ceb7e43942779e3fe49b) | | StakedRouterReceiver AUTO | 0x5d84f33b7c9214df23fd86a0861ac923af99954d
[see in explorer](https://blastscan.io/address/0x5d84f33b7c9214df23fd86a0861ac923af99954d) | | StakedRouterSingleOutput AUTO | 0x167d49f106bbea59587ef3c63b33e6a421af1b8d
[see in explorer](https://blastscan.io/address/0x167d49f106bbea59587ef3c63b33e6a421af1b8d) | | StargateImplV2 | 0x4682e8315B80cF757e2077280E0471729c992Ed3
[see in explorer](https://blastscan.io/address/0x4682e8315B80cF757e2077280E0471729c992Ed3) | | SwapExecutor AUTO | 0x6e8338B0c56f598809e72D6a31456f9D5452de72
[see in explorer](https://blastscan.io/address/0x6e8338B0c56f598809e72D6a31456f9D5452de72) | | SwapRequestCallback AUTO | 0xEFB37Bd3a9ed2f768bf6f79d0379fe7f9BE50F49
[see in explorer](https://blastscan.io/address/0xEFB37Bd3a9ed2f768bf6f79d0379fe7f9BE50F49) | | SwapRequestImpl AUTO | 0x8f503B6d9fFdae8d375d1E226b71B4B3144D3849
[see in explorer](https://blastscan.io/address/0x8f503B6d9fFdae8d375d1E226b71B4B3144D3849) | | SwitchboardPlug AUTO | 0xBB1F279f61a7faC35cF4DDED87986Ab927083efb
[see in explorer](https://blastscan.io/address/0xBB1F279f61a7faC35cF4DDED87986Ab927083efb) | | SwitchboardRouter AUTO | 0xc5C38A15A9D3D9dC5Fc7dE4426779B695677e45D
[see in explorer](https://blastscan.io/address/0xc5C38A15A9D3D9dC5Fc7dE4426779B695677e45D) | | UniswapV3Impl | 0x4153a9cD0319B0C67B4c215d8750376130C948D6
[see in explorer](https://blastscan.io/address/0x4153a9cD0319B0C67B4c215d8750376130C948D6) | | UnwrapAndForward AUTO | 0xd31367da48d3f9d6dd0d59de4aa1ef6023a88fad
[see in explorer](https://blastscan.io/address/0xd31367da48d3f9d6dd0d59de4aa1ef6023a88fad) | | ZeroxV2SwapImpl | 0xCFee2171DC6c670eF1E0Df832df0cF37C31705E9
[see in explorer](https://blastscan.io/address/0xCFee2171DC6c670eF1E0Df832df0cF37C31705E9) | | ZeroxV2Wrapper AUTO | 0x614595189d16995Fe22a5c267B220C803e50966F
[see in explorer](https://blastscan.io/address/0x614595189d16995Fe22a5c267B220C803e50966F) |
| name | address | | ---------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------ | | AcrossImpl | 0xdBdA9499F22a149b3870Aee4B745f57fF6Ca6942
[see in explorer](https://etherscan.io/address/0xdBdA9499F22a149b3870Aee4B745f57fF6Ca6942) | | AcrossImplV3 | 0x740EA79e2FccDDB4eE8bB8Fc8ccAC5eb6dFa0b40
[see in explorer](https://etherscan.io/address/0x740EA79e2FccDDB4eE8bB8Fc8ccAC5eb6dFa0b40) | | AcrossStakedRoute AUTO | 0x125ac5a530ece0a06dd3cd3da711c054eadb57b9
[see in explorer](https://etherscan.io/address/0x125ac5a530ece0a06dd3cd3da711c054eadb57b9) | | AcrossV3WethUnwrapper | 0x36f0B62E4eE3d30939cBccABA9D983579799D931
[see in explorer](https://etherscan.io/address/0x36f0B62E4eE3d30939cBccABA9D983579799D931) | | AnyswapL2Impl | 0x6D4F89284e06554eeEEF79215A823B6F9d7b48D8
[see in explorer](https://etherscan.io/address/0x6D4F89284e06554eeEEF79215A823B6F9d7b48D8) | | AnyswapV6L2Impl | 0x8fB9eCD91723FE037012133Ef8c4C767cf0D4514
[see in explorer](https://etherscan.io/address/0x8fB9eCD91723FE037012133Ef8c4C767cf0D4514) | | BungeeGateway AUTO | 0xe772551F88E2c14aEcC880dF6b7CBd574561bf82
[see in explorer](https://etherscan.io/address/0xe772551F88E2c14aEcC880dF6b7CBd574561bf82) | | BungeeInbox AUTO | 0x5e0f8e7337c8955d2124b8e85ca74af884b3e124
[see in explorer](https://etherscan.io/address/0x5e0f8e7337c8955d2124b8e85ca74af884b3e124) | | BungeeInboxOld AUTO | 0x92612711D4d07dEbe4964D4d1401D7d7B5a11737
[see in explorer](https://etherscan.io/address/0x92612711D4d07dEbe4964D4d1401D7d7B5a11737) | | CalldataExecutor AUTO | 0xa873aab6a98cb764ad6d52820d129d0e3667d9f9
[see in explorer](https://etherscan.io/address/0xa873aab6a98cb764ad6d52820d129d0e3667d9f9) | | CctpImpl | 0xe72edEc20D6c65A046Ae96c3DdecFB93F5CfA52C
[see in explorer](https://etherscan.io/address/0xe72edEc20D6c65A046Ae96c3DdecFB93F5CfA52C) | | CCTPRouterSingleOutput AUTO | 0x3b4817827d06600f92296c5d1491818d69fc955f
[see in explorer](https://etherscan.io/address/0x3b4817827d06600f92296c5d1491818d69fc955f) | | CctpV2Impl | 0xb701aB56ACB5897eEc7905afF72b52706638a2ec
[see in explorer](https://etherscan.io/address/0xb701aB56ACB5897eEc7905afF72b52706638a2ec) | | CCTPV2RouterSingleOutput AUTO | 0x6faec2944071b2a5ebfd1b08f43f29597aad8ca1
[see in explorer](https://etherscan.io/address/0x6faec2944071b2a5ebfd1b08f43f29597aad8ca1) | | CelerImpl | 0x7c6C373190421988fA31E64f369C45205676C1f0
[see in explorer](https://etherscan.io/address/0x7c6C373190421988fA31E64f369C45205676C1f0) | | CelerStakedRoute AUTO | 0xf1c07b6dddc480602d0304c31e6b13ff711b5828
[see in explorer](https://etherscan.io/address/0xf1c07b6dddc480602d0304c31e6b13ff711b5828) | | CelerStorageWrapper | 0x1768C1D2900f1408D44FbB1EdCc306F94aF852ae
[see in explorer](https://etherscan.io/address/0x1768C1D2900f1408D44FbB1EdCc306F94aF852ae) | | CelerV2Impl | 0x1904bC76723dc82D57083876E913d42E8DDbfDc0
[see in explorer](https://etherscan.io/address/0x1904bC76723dc82D57083876E913d42E8DDbfDc0) | | ConnextImpl | 0x4899210551F6a5cb8C1b9A1D78Eb56CAF0fc8820
[see in explorer](https://etherscan.io/address/0x4899210551F6a5cb8C1b9A1D78Eb56CAF0fc8820) | | DisabledSocketRoute | 0x0f34A522FF82151c90679b73211955068FD854F1
[see in explorer](https://etherscan.io/address/0x0f34A522FF82151c90679b73211955068FD854F1) | | Entrypoint AUTO | 0x2837593949F6c5f7abB66dd848ed4E5b774D4ef5
[see in explorer](https://etherscan.io/address/0x2837593949F6c5f7abB66dd848ed4E5b774D4ef5) | | FeeCollector AUTO | 0xd718CDD6f19BEb30b50AF96659C309eB85B79535
[see in explorer](https://etherscan.io/address/0xd718CDD6f19BEb30b50AF96659C309eB85B79535) | | FeesTakerController | 0xF37561Cd1C4b42f8c004C977fb140a4679089526
[see in explorer](https://etherscan.io/address/0xF37561Cd1C4b42f8c004C977fb140a4679089526) | | GenericStakedRoute AUTO | 0x5013c0b3defd8f832d1b6dec750382946de5c13b
[see in explorer](https://etherscan.io/address/0x5013c0b3defd8f832d1b6dec750382946de5c13b) | | GnosisBridgeRouterImpl AUTO | 0xBd2891271DD664eC0ed809B7614dC6bEC785bBF4
[see in explorer](https://etherscan.io/address/0xBd2891271DD664eC0ed809B7614dC6bEC785bBF4) | | GnosisNativeBridgeImpl AUTO | 0x0d9275945E905F0b0E827Ff802A7265Ffb301C71
[see in explorer](https://etherscan.io/address/0x0d9275945E905F0b0E827Ff802A7265Ffb301C71) | | HopImplL1 AUTO | 0x8F22b246e2d380f5F5786dE28847BE17ACaAA2B8
[see in explorer](https://etherscan.io/address/0x8F22b246e2d380f5F5786dE28847BE17ACaAA2B8) | | HopImplL1V2 AUTO | 0xbf18ad2a761206641b19905bf15d33752a2e0142
[see in explorer](https://etherscan.io/address/0xbf18ad2a761206641b19905bf15d33752a2e0142) | | HyphenImpl | 0x6e520F25E66450397d02ece0166edaF46c9BF28b
[see in explorer](https://etherscan.io/address/0x6e520F25E66450397d02ece0166edaF46c9BF28b) | | KyberSwapImpl | 0x4682e8315B80cF757e2077280E0471729c992Ed3
[see in explorer](https://etherscan.io/address/0x4682e8315B80cF757e2077280E0471729c992Ed3) | | MagpieSwapImpl | 0x831e9cDe2Ee7070203559CDd6Ec60745b9565B95
[see in explorer](https://etherscan.io/address/0x831e9cDe2Ee7070203559CDd6Ec60745b9565B95) | | MayanBridgeImpl | 0x93E063d78856096Dd4C33e77461457251817E22e
[see in explorer](https://etherscan.io/address/0x93E063d78856096Dd4C33e77461457251817E22e) | | MayanBridgeImplV2 | 0x51fDcA877B3E1a73C6C730F9665372549bfc0E67
[see in explorer](https://etherscan.io/address/0x51fDcA877B3E1a73C6C730F9665372549bfc0E67) | | NativeArbitrumImpl AUTO | 0x6b60E2a49b13B851e986f38f0Da2815FDa0427B5
[see in explorer](https://etherscan.io/address/0x6b60E2a49b13B851e986f38f0Da2815FDa0427B5) | | NativeOptimismImpl AUTO | 0xB24e2B830f4c78a1993F9b046089321764B28902
[see in explorer](https://etherscan.io/address/0xB24e2B830f4c78a1993F9b046089321764B28902) | | NativeOptimismStack AUTO | 0xBD0914E7A20FAd3e2BB7040B8c5B38A657acB8f6
[see in explorer](https://etherscan.io/address/0xBD0914E7A20FAd3e2BB7040B8c5B38A657acB8f6) | | NativeOptimismStackBase AUTO | 0x7069954C57c1cF5f20F4163d298C4bF0D9c39D3B
[see in explorer](https://etherscan.io/address/0x7069954C57c1cF5f20F4163d298C4bF0D9c39D3B) | | NativeOptimismStackMode AUTO | 0x4B394B54AbF128c99D4d8D9ad483343d12dE2fCB
[see in explorer](https://etherscan.io/address/0x4B394B54AbF128c99D4d8D9ad483343d12dE2fCB) | | NativeOptimismStackWithPortalInkNative AUTO | 0x289a72bA71Dfca228Fe280fF61f49329e2E92563
[see in explorer](https://etherscan.io/address/0x289a72bA71Dfca228Fe280fF61f49329e2E92563) | | NativePolygonImpl AUTO | 0x653a03b511E6FE9e80eeCb2bBbD36DCaf93cF147
[see in explorer](https://etherscan.io/address/0x653a03b511E6FE9e80eeCb2bBbD36DCaf93cF147) | | OneInchImpl | 0x47b7cBcCf4149Fe371a605dC64F14695c3F5Ccd3
[see in explorer](https://etherscan.io/address/0x47b7cBcCf4149Fe371a605dC64F14695c3F5Ccd3) | | OpenOceanSwapImpl AUTO | 0xbb03B17C3D63e9707Cff789beD922Bf0Ab98d0c2
[see in explorer](https://etherscan.io/address/0xbb03B17C3D63e9707Cff789beD922Bf0Ab98d0c2) | | RainbowSwapImpl | 0x1a9ec5Ed7363905C0A096DEe577c8fBb400c99D0
[see in explorer](https://etherscan.io/address/0x1a9ec5Ed7363905C0A096DEe577c8fBb400c99D0) | | RefuelBridgeImpl | 0x838286885360aaFF02AA42C95bde31f6055C919F
[see in explorer](https://etherscan.io/address/0x838286885360aaFF02AA42C95bde31f6055C919F) | | RefuelSwapAndBridgeController | 0x5Cb5A509beD96B2d168DC8aD85736B0b90da8473
[see in explorer](https://etherscan.io/address/0x5Cb5A509beD96B2d168DC8aD85736B0b90da8473) | | RFQRouterSingleOutput AUTO | 0xc4088d6e5a2027e784efc0491c322a3e2621bd9e
[see in explorer](https://etherscan.io/address/0xc4088d6e5a2027e784efc0491c322a3e2621bd9e) | | ScrollImpl AUTO | 0xf56ef339103A0b19B91Ec9b66EE6456F9BeF1499
[see in explorer](https://etherscan.io/address/0xf56ef339103A0b19B91Ec9b66EE6456F9BeF1499) | | SingleOutputRequestImpl AUTO | 0x407BE335f94C30Ee2876c4cF86ce08A46f518cF3
[see in explorer](https://etherscan.io/address/0x407BE335f94C30Ee2876c4cF86ce08A46f518cF3) | | SocketDeployFactory | 0x71630095e3F08A86aFC73f7b07342192adf39C55
[see in explorer](https://etherscan.io/address/0x71630095e3F08A86aFC73f7b07342192adf39C55) | | SocketGateway | 0x3a23F943181408EAC424116Af7b7790c94Cb97a5
[see in explorer](https://etherscan.io/address/0x3a23F943181408EAC424116Af7b7790c94Cb97a5) | | Solver AUTO | 0xAe68b7117BE0026Cbd4366303f74EEcbB19e4042
[see in explorer](https://etherscan.io/address/0xAe68b7117BE0026Cbd4366303f74EEcbB19e4042) | | StakedRouterExecutor AUTO | 0x12efda5e4d410c5da723ceb7e43942779e3fe49b
[see in explorer](https://etherscan.io/address/0x12efda5e4d410c5da723ceb7e43942779e3fe49b) | | StakedRouterReceiver AUTO | 0x5d84f33b7c9214df23fd86a0861ac923af99954d
[see in explorer](https://etherscan.io/address/0x5d84f33b7c9214df23fd86a0861ac923af99954d) | | StakedRouterSingleOutput AUTO | 0x167d49f106bbea59587ef3c63b33e6a421af1b8d
[see in explorer](https://etherscan.io/address/0x167d49f106bbea59587ef3c63b33e6a421af1b8d) | | StargateImplL2 | 0x3Dd7419889FF387A58D3Dad1F8B49ea1064290fB
[see in explorer](https://etherscan.io/address/0x3Dd7419889FF387A58D3Dad1F8B49ea1064290fB) | | StargateImplL2V2 | 0xE485d8c074E02Ae762D849D261BBF4D692AF66a6
[see in explorer](https://etherscan.io/address/0xE485d8c074E02Ae762D849D261BBF4D692AF66a6) | | StargateImplV2 | 0x05b108fD88d042eF0145DCcd564DCd6471852FC2
[see in explorer](https://etherscan.io/address/0x05b108fD88d042eF0145DCcd564DCd6471852FC2) | | SwapExecutor AUTO | 0x11918f1cb6db5e008A692F47c5320216fba6054B
[see in explorer](https://etherscan.io/address/0x11918f1cb6db5e008A692F47c5320216fba6054B) | | SwapRequestCallback AUTO | 0xEFB37Bd3a9ed2f768bf6f79d0379fe7f9BE50F49
[see in explorer](https://etherscan.io/address/0xEFB37Bd3a9ed2f768bf6f79d0379fe7f9BE50F49) | | SwapRequestImpl AUTO | 0x6379442Fb03F78060e8746AeA425eF6420e19F41
[see in explorer](https://etherscan.io/address/0x6379442Fb03F78060e8746AeA425eF6420e19F41) | | SwitchboardPlug AUTO | 0x9ED094fDe2a31BEd0278a4cfdb5528473baFe5a8
[see in explorer](https://etherscan.io/address/0x9ED094fDe2a31BEd0278a4cfdb5528473baFe5a8) | | SwitchboardRouter AUTO | 0x6026369CcA399352ba68AEDdb89aC65442D1907b
[see in explorer](https://etherscan.io/address/0x6026369CcA399352ba68AEDdb89aC65442D1907b) | | SymbiosisBridgeImpl | 0xc5621f8f25CB3Fb30211b1f49556443a8e59b558
[see in explorer](https://etherscan.io/address/0xc5621f8f25CB3Fb30211b1f49556443a8e59b558) | | SynapseBridgeImpl | 0x399ee2C4748f0e9c2985F51BeF45f0532FdaD66D
[see in explorer](https://etherscan.io/address/0x399ee2C4748f0e9c2985F51BeF45f0532FdaD66D) | | UnwrapAndForward AUTO | 0xd31367da48d3f9d6dd0d59de4aa1ef6023a88fad
[see in explorer](https://etherscan.io/address/0xd31367da48d3f9d6dd0d59de4aa1ef6023a88fad) | | WrappedTokenSwapperImpl | 0xCC5fDA5e3cA925bd0bb428C8b2669496eE43067e
[see in explorer](https://etherscan.io/address/0xCC5fDA5e3cA925bd0bb428C8b2669496eE43067e) | | ZeroXSwapImpl | 0x84502e430b8Fc064756d3034ad303d1456D23bfe
[see in explorer](https://etherscan.io/address/0x84502e430b8Fc064756d3034ad303d1456D23bfe) | | ZeroxV2SwapImpl | 0xCFee2171DC6c670eF1E0Df832df0cF37C31705E9
[see in explorer](https://etherscan.io/address/0xCFee2171DC6c670eF1E0Df832df0cF37C31705E9) | | ZeroxV2Wrapper AUTO | 0x614595189d16995Fe22a5c267B220C803e50966F
[see in explorer](https://etherscan.io/address/0x614595189d16995Fe22a5c267B220C803e50966F) | | ZkSyncBridgeImpl AUTO | 0x2FA9fd7259A1634666916f5a597DFE99029dFC67
[see in explorer](https://etherscan.io/address/0x2FA9fd7259A1634666916f5a597DFE99029dFC67) |
| name | address | | ------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------- | | AnyswapL2Impl | 0xb9B74bdaDeC1aF7FA2B69a47C645c724e8AA3b91
[see in explorer](https://explorer.fantom.network/address/0xb9B74bdaDeC1aF7FA2B69a47C645c724e8AA3b91) | | AnyswapV6L2Impl | 0x838286885360aaFF02AA42C95bde31f6055C919F
[see in explorer](https://explorer.fantom.network/address/0x838286885360aaFF02AA42C95bde31f6055C919F) | | CelerImpl | 0xde69D9107cF771141896499F8112Ff878D4F31E6
[see in explorer](https://explorer.fantom.network/address/0xde69D9107cF771141896499F8112Ff878D4F31E6) | | CelerStorageWrapper | 0x5CddbecAF8603E5e0bC771A46D48e148593351eA
[see in explorer](https://explorer.fantom.network/address/0x5CddbecAF8603E5e0bC771A46D48e148593351eA) | | CelerV2Impl | 0xe6900C7F50BFF51d406A7584Bd9e9C8403627737
[see in explorer](https://explorer.fantom.network/address/0xe6900C7F50BFF51d406A7584Bd9e9C8403627737) | | DisabledSocketRoute | 0x0f34A522FF82151c90679b73211955068FD854F1
[see in explorer](https://explorer.fantom.network/address/0x0f34A522FF82151c90679b73211955068FD854F1) | | FeesTakerController | 0x222722AC709D9E056a9709b50B9Fd886618d3E81
[see in explorer](https://explorer.fantom.network/address/0x222722AC709D9E056a9709b50B9Fd886618d3E81) | | HyphenImpl | 0x8F22b246e2d380f5F5786dE28847BE17ACaAA2B8
[see in explorer](https://explorer.fantom.network/address/0x8F22b246e2d380f5F5786dE28847BE17ACaAA2B8) | | OneInchImpl | 0x470eFE17455335EeAdD376768C9e5d799B3ffE5b
[see in explorer](https://explorer.fantom.network/address/0x470eFE17455335EeAdD376768C9e5d799B3ffE5b) | | OpenOceanSwapImpl AUTO | 0xCFee2171DC6c670eF1E0Df832df0cF37C31705E9
[see in explorer](https://explorer.fantom.network/address/0xCFee2171DC6c670eF1E0Df832df0cF37C31705E9) | | RefuelBridgeImpl | 0xA898821781ba5dd78a485Bcb610b8a60bbC5357E
[see in explorer](https://explorer.fantom.network/address/0xA898821781ba5dd78a485Bcb610b8a60bbC5357E) | | RefuelSwapAndBridgeController | 0x09BBE4DacBf631994F2f1b70c1B18d62c19466E6
[see in explorer](https://explorer.fantom.network/address/0x09BBE4DacBf631994F2f1b70c1B18d62c19466E6) | | SocketDeployFactory | 0x71630095e3F08A86aFC73f7b07342192adf39C55
[see in explorer](https://explorer.fantom.network/address/0x71630095e3F08A86aFC73f7b07342192adf39C55) | | SocketGateway | 0x3a23F943181408EAC424116Af7b7790c94Cb97a5
[see in explorer](https://explorer.fantom.network/address/0x3a23F943181408EAC424116Af7b7790c94Cb97a5) | | StargateImplL2 | 0xe0134Ca3d7AD384070580542Baee00511105BEfA
[see in explorer](https://explorer.fantom.network/address/0xe0134Ca3d7AD384070580542Baee00511105BEfA) | | StargateImplL2V2 | 0xD79c6bAc601ca92cb9F8Db61976CCdbb0588C5F6
[see in explorer](https://explorer.fantom.network/address/0xD79c6bAc601ca92cb9F8Db61976CCdbb0588C5F6) | | SynapseBridgeImpl | 0x1A8f60f05239EEAd23A27f32416B160D6a14277e
[see in explorer](https://explorer.fantom.network/address/0x1A8f60f05239EEAd23A27f32416B160D6a14277e) | | ZeroXSwapImpl | 0xa28f5a1575bbc9758EAc182CE3E66A2734621F4F
[see in explorer](https://explorer.fantom.network/address/0xa28f5a1575bbc9758EAc182CE3E66A2734621F4F) |
| name | address | | -------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------- | | BungeeGateway AUTO | 0x5e01dbBBe59F8987673FAdD1469DdD2Be71e00af
[see in explorer](https://gnosisscan.io/address/0x5e01dbBBe59F8987673FAdD1469DdD2Be71e00af) | | BungeeInbox AUTO | 0x5e0f8e7337c8955d2124b8e85ca74af884b3e124
[see in explorer](https://gnosisscan.io/address/0x5e0f8e7337c8955d2124b8e85ca74af884b3e124) | | BungeeInboxOld AUTO | 0x4278d3E47774dBf2ed529B0286A6008088104D34
[see in explorer](https://gnosisscan.io/address/0x4278d3E47774dBf2ed529B0286A6008088104D34) | | CalldataExecutor AUTO | 0xa873aab6a98cb764ad6d52820d129d0e3667d9f9
[see in explorer](https://gnosisscan.io/address/0xa873aab6a98cb764ad6d52820d129d0e3667d9f9) | | CCTPRouterSingleOutput AUTO | 0x0000000000000000000000000000000000000000
[see in explorer](https://gnosisscan.io/address/0x0000000000000000000000000000000000000000) | | CCTPV2RouterSingleOutput AUTO | 0x0000000000000000000000000000000000000000
[see in explorer](https://gnosisscan.io/address/0x0000000000000000000000000000000000000000) | | ConnextImpl | 0x45362caA305D15A12D2AC781049069d87Dc6372c
[see in explorer](https://gnosisscan.io/address/0x45362caA305D15A12D2AC781049069d87Dc6372c) | | DisabledSocketRoute | 0x0f34A522FF82151c90679b73211955068FD854F1
[see in explorer](https://gnosisscan.io/address/0x0f34A522FF82151c90679b73211955068FD854F1) | | Entrypoint AUTO | 0x425A1E1f4106fB662e1Faa4320EF1CF00E76f9E8
[see in explorer](https://gnosisscan.io/address/0x425A1E1f4106fB662e1Faa4320EF1CF00E76f9E8) | | FeeCollector AUTO | 0xDC547D58dBCE66BFd7c35ef7d3394f05C2ec866D
[see in explorer](https://gnosisscan.io/address/0xDC547D58dBCE66BFd7c35ef7d3394f05C2ec866D) | | FeesTakerController | 0xF1b6f0c071cE884f53B789720e3d8B523EC895bb
[see in explorer](https://gnosisscan.io/address/0xF1b6f0c071cE884f53B789720e3d8B523EC895bb) | | GenericStakedRoute AUTO | 0x5013c0b3defd8f832d1b6dec750382946de5c13b
[see in explorer](https://gnosisscan.io/address/0x5013c0b3defd8f832d1b6dec750382946de5c13b) | | HopImplL2 | 0x2d0EeB574cC98f6d57c72FFe730D5C8a8f2eac37
[see in explorer](https://gnosisscan.io/address/0x2d0EeB574cC98f6d57c72FFe730D5C8a8f2eac37) | | HopImplL2V2 | 0x44532990D085C099e22F480ca15D8F0AC49CfE5D
[see in explorer](https://gnosisscan.io/address/0x44532990D085C099e22F480ca15D8F0AC49CfE5D) | | OneInchImpl | 0x478A943861430c6fAc82170A3dA899b0f04b839b
[see in explorer](https://gnosisscan.io/address/0x478A943861430c6fAc82170A3dA899b0f04b839b) | | OpenOceanSwapImpl AUTO | 0xCFee2171DC6c670eF1E0Df832df0cF37C31705E9
[see in explorer](https://gnosisscan.io/address/0xCFee2171DC6c670eF1E0Df832df0cF37C31705E9) | | RefuelBridgeImpl | 0xA898821781ba5dd78a485Bcb610b8a60bbC5357E
[see in explorer](https://gnosisscan.io/address/0xA898821781ba5dd78a485Bcb610b8a60bbC5357E) | | RefuelSwapAndBridgeController | 0x6e520F25E66450397d02ece0166edaF46c9BF28b
[see in explorer](https://gnosisscan.io/address/0x6e520F25E66450397d02ece0166edaF46c9BF28b) | | RFQRouterSingleOutput AUTO | 0xc4088d6e5a2027e784efc0491c322a3e2621bd9e
[see in explorer](https://gnosisscan.io/address/0xc4088d6e5a2027e784efc0491c322a3e2621bd9e) | | SingleOutputRequestImpl AUTO | 0x4743a14Dd1B32Bf7c89dBB905A83fC513455d2C7
[see in explorer](https://gnosisscan.io/address/0x4743a14Dd1B32Bf7c89dBB905A83fC513455d2C7) | | SocketDeployFactory | 0x71630095e3F08A86aFC73f7b07342192adf39C55
[see in explorer](https://gnosisscan.io/address/0x71630095e3F08A86aFC73f7b07342192adf39C55) | | SocketGateway | 0x3a23F943181408EAC424116Af7b7790c94Cb97a5
[see in explorer](https://gnosisscan.io/address/0x3a23F943181408EAC424116Af7b7790c94Cb97a5) | | Solver AUTO | 0xAe68b7117BE0026Cbd4366303f74EEcbB19e4042
[see in explorer](https://gnosisscan.io/address/0xAe68b7117BE0026Cbd4366303f74EEcbB19e4042) | | StakedRouterExecutor AUTO | 0x12efda5e4d410c5da723ceb7e43942779e3fe49b
[see in explorer](https://gnosisscan.io/address/0x12efda5e4d410c5da723ceb7e43942779e3fe49b) | | StakedRouterReceiver AUTO | 0x5d84f33b7c9214df23fd86a0861ac923af99954d
[see in explorer](https://gnosisscan.io/address/0x5d84f33b7c9214df23fd86a0861ac923af99954d) | | StakedRouterSingleOutput AUTO | 0x167d49f106bbea59587ef3c63b33e6a421af1b8d
[see in explorer](https://gnosisscan.io/address/0x167d49f106bbea59587ef3c63b33e6a421af1b8d) | | StargateImplV2 | 0x4682e8315B80cF757e2077280E0471729c992Ed3
[see in explorer](https://gnosisscan.io/address/0x4682e8315B80cF757e2077280E0471729c992Ed3) | | SwapExecutor AUTO | 0x76C3B1b35dfa2b165d41c44Ca3268B3AA97845A6
[see in explorer](https://gnosisscan.io/address/0x76C3B1b35dfa2b165d41c44Ca3268B3AA97845A6) | | SwapRequestCallback AUTO | 0xEFB37Bd3a9ed2f768bf6f79d0379fe7f9BE50F49
[see in explorer](https://gnosisscan.io/address/0xEFB37Bd3a9ed2f768bf6f79d0379fe7f9BE50F49) | | SwapRequestImpl AUTO | 0x6d4b85854dC621EF9D64368aEbd98dC27577e642
[see in explorer](https://gnosisscan.io/address/0x6d4b85854dC621EF9D64368aEbd98dC27577e642) | | SwitchboardPlug AUTO | 0x6b1a31Af8A9DC9E8e489035859ca98D6335a0bcB
[see in explorer](https://gnosisscan.io/address/0x6b1a31Af8A9DC9E8e489035859ca98D6335a0bcB) | | SwitchboardRouter AUTO | 0x69f9d5a9E04b9cED4dff07Cd47c393856FA3D6Be
[see in explorer](https://gnosisscan.io/address/0x69f9d5a9E04b9cED4dff07Cd47c393856FA3D6Be) | | SymbiosisBridgeImpl | 0x2603ccb5Abc82aD3359D947DfA8cEec738d05725
[see in explorer](https://gnosisscan.io/address/0x2603ccb5Abc82aD3359D947DfA8cEec738d05725) | | UnwrapAndForward AUTO | 0xd31367da48d3f9d6dd0d59de4aa1ef6023a88fad
[see in explorer](https://gnosisscan.io/address/0xd31367da48d3f9d6dd0d59de4aa1ef6023a88fad) | | ZeroxV2Wrapper AUTO | 0x614595189d16995Fe22a5c267B220C803e50966F
[see in explorer](https://gnosisscan.io/address/0x614595189d16995Fe22a5c267B220C803e50966F) |
| name | address | | -------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------- | | AcrossStakedRoute AUTO | 0x125ac5a530ece0a06dd3cd3da711c054eadb57b9
[see in explorer](https://purrsec.com/address/0x125ac5a530ece0a06dd3cd3da711c054eadb57b9) | | BungeeDepository AUTO | 0xa6cd293ba20873b3cbbbf78f156a1d56d8ab9347
[see in explorer](https://purrsec.com/address/0xa6cd293ba20873b3cbbbf78f156a1d56d8ab9347) | | BungeeGateway AUTO | 0x8f503B6d9fFdae8d375d1E226b71B4B3144D3849
[see in explorer](https://purrsec.com/address/0x8f503B6d9fFdae8d375d1E226b71B4B3144D3849) | | BungeeInbox AUTO | 0x5e0f8e7337c8955d2124b8e85ca74af884b3e124
[see in explorer](https://purrsec.com/address/0x5e0f8e7337c8955d2124b8e85ca74af884b3e124) | | BungeeInboxOld AUTO | 0x7ad979C6b0C9924F79ea571280071595ba13D002
[see in explorer](https://purrsec.com/address/0x7ad979C6b0C9924F79ea571280071595ba13D002) | | CalldataExecutor AUTO | 0xa873aab6a98cb764ad6d52820d129d0e3667d9f9
[see in explorer](https://purrsec.com/address/0xa873aab6a98cb764ad6d52820d129d0e3667d9f9) | | CCTPV2RouterSingleOutput AUTO | 0x6faec2944071b2a5ebfd1b08f43f29597aad8ca1
[see in explorer](https://purrsec.com/address/0x6faec2944071b2a5ebfd1b08f43f29597aad8ca1) | | Entrypoint AUTO | 0xc8807bD5b5c87Fe7Fc73D644Cb7800d1A4e4F09D
[see in explorer](https://purrsec.com/address/0xc8807bD5b5c87Fe7Fc73D644Cb7800d1A4e4F09D) | | FeeCollector AUTO | 0xE12D0CE29B916fbc067f49a8ebC203ffB66E8ded
[see in explorer](https://purrsec.com/address/0xE12D0CE29B916fbc067f49a8ebC203ffB66E8ded) | | GenericStakedRoute AUTO | 0x5013c0b3defd8f832d1b6dec750382946de5c13b
[see in explorer](https://purrsec.com/address/0x5013c0b3defd8f832d1b6dec750382946de5c13b) | | HypercoreDepositBungeeExecutor AUTO | 0x6b1a31Af8A9DC9E8e489035859ca98D6335a0bcB
[see in explorer](https://purrsec.com/address/0x6b1a31Af8A9DC9E8e489035859ca98D6335a0bcB) | | RFQRouterSingleOutput AUTO | 0xc4088d6e5a2027e784efc0491c322a3e2621bd9e
[see in explorer](https://purrsec.com/address/0xc4088d6e5a2027e784efc0491c322a3e2621bd9e) | | SingleOutputRequestImpl AUTO | 0xcC42AE193E97a228BbC1e747Ea4af3aa170acCA2
[see in explorer](https://purrsec.com/address/0xcC42AE193E97a228BbC1e747Ea4af3aa170acCA2) | | Solver AUTO | 0xae68b7117be0026cbd4366303f74eecbb19e4042
[see in explorer](https://purrsec.com/address/0xae68b7117be0026cbd4366303f74eecbb19e4042) | | StakedRouterExecutor AUTO | 0x12efda5e4d410c5da723ceb7e43942779e3fe49b
[see in explorer](https://purrsec.com/address/0x12efda5e4d410c5da723ceb7e43942779e3fe49b) | | StakedRouterReceiver AUTO | 0x5d84f33b7c9214df23fd86a0861ac923af99954d
[see in explorer](https://purrsec.com/address/0x5d84f33b7c9214df23fd86a0861ac923af99954d) | | StakedRouterSingleOutput AUTO | 0x167d49f106bbea59587ef3c63b33e6a421af1b8d
[see in explorer](https://purrsec.com/address/0x167d49f106bbea59587ef3c63b33e6a421af1b8d) | | SwapExecutor AUTO | 0x6e8338B0c56f598809e72D6a31456f9D5452de72
[see in explorer](https://purrsec.com/address/0x6e8338B0c56f598809e72D6a31456f9D5452de72) | | SwapRequestCallback AUTO | 0x84Fd802Dd211D483Eb115Ee8a80d0029784c7637
[see in explorer](https://purrsec.com/address/0x84Fd802Dd211D483Eb115Ee8a80d0029784c7637) | | SwapRequestImpl AUTO | 0x79b5380FF38462b72e14667742f634c6610158B8
[see in explorer](https://purrsec.com/address/0x79b5380FF38462b72e14667742f634c6610158B8) | | SwitchboardPlug AUTO | 0xc5C38A15A9D3D9dC5Fc7dE4426779B695677e45D
[see in explorer](https://purrsec.com/address/0xc5C38A15A9D3D9dC5Fc7dE4426779B695677e45D) | | SwitchboardRouter AUTO | 0x3416daBEAf259FBE5ba455E361f23e58BAB91E3E
[see in explorer](https://purrsec.com/address/0x3416daBEAf259FBE5ba455E361f23e58BAB91E3E) | | UnwrapAndForward AUTO | 0xd31367da48d3f9d6dd0d59de4aa1ef6023a88fad
[see in explorer](https://purrsec.com/address/0xd31367da48d3f9d6dd0d59de4aa1ef6023a88fad) |
| name | address | | -------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------- | | AcrossImplV3 | 0x740EA79e2FccDDB4eE8bB8Fc8ccAC5eb6dFa0b40
[see in explorer](https://explorer.inkonchain.com/address/0x740EA79e2FccDDB4eE8bB8Fc8ccAC5eb6dFa0b40) | | AcrossStakedRoute AUTO | 0x125ac5a530ece0a06dd3cd3da711c054eadb57b9
[see in explorer](https://explorer.inkonchain.com/address/0x125ac5a530ece0a06dd3cd3da711c054eadb57b9) | | AcrossV3WethUnwrapper | 0x36f0B62E4eE3d30939cBccABA9D983579799D931
[see in explorer](https://explorer.inkonchain.com/address/0x36f0B62E4eE3d30939cBccABA9D983579799D931) | | BungeeGateway AUTO | 0x6379442Fb03F78060e8746AeA425eF6420e19F41
[see in explorer](https://explorer.inkonchain.com/address/0x6379442Fb03F78060e8746AeA425eF6420e19F41) | | BungeeInbox AUTO | 0x5e0f8e7337c8955d2124b8e85ca74af884b3e124
[see in explorer](https://explorer.inkonchain.com/address/0x5e0f8e7337c8955d2124b8e85ca74af884b3e124) | | BungeeInboxOld AUTO | 0xE18DFEFCe7A5d18d39ce6fc925f102286fa96Fdc
[see in explorer](https://explorer.inkonchain.com/address/0xE18DFEFCe7A5d18d39ce6fc925f102286fa96Fdc) | | CalldataExecutor AUTO | 0xa873aab6a98cb764ad6d52820d129d0e3667d9f9
[see in explorer](https://explorer.inkonchain.com/address/0xa873aab6a98cb764ad6d52820d129d0e3667d9f9) | | CCTPRouterSingleOutput AUTO | 0x0000000000000000000000000000000000000000
[see in explorer](https://explorer.inkonchain.com/address/0x0000000000000000000000000000000000000000) | | CCTPV2RouterSingleOutput AUTO | 0x6faec2944071b2a5ebfd1b08f43f29597aad8ca1
[see in explorer](https://explorer.inkonchain.com/address/0x6faec2944071b2a5ebfd1b08f43f29597aad8ca1) | | DisabledSocketRoute | 0x0f34A522FF82151c90679b73211955068FD854F1
[see in explorer](https://explorer.inkonchain.com/address/0x0f34A522FF82151c90679b73211955068FD854F1) | | Entrypoint AUTO | 0x850B1EC3dD5E94866559B11DC632701a9911A081
[see in explorer](https://explorer.inkonchain.com/address/0x850B1EC3dD5E94866559B11DC632701a9911A081) | | FeeCollector AUTO | 0x4Dc0edb185a4d32B462977da58bb5B619E88F205
[see in explorer](https://explorer.inkonchain.com/address/0x4Dc0edb185a4d32B462977da58bb5B619E88F205) | | GenericStakedRoute AUTO | 0x5013c0b3defd8f832d1b6dec750382946de5c13b
[see in explorer](https://explorer.inkonchain.com/address/0x5013c0b3defd8f832d1b6dec750382946de5c13b) | | MagpieSwapImpl | 0x29473712478AB409F50256A252Af31D6b47b33c4
[see in explorer](https://explorer.inkonchain.com/address/0x29473712478AB409F50256A252Af31D6b47b33c4) | | RFQRouterSingleOutput AUTO | 0xc4088d6e5a2027e784efc0491c322a3e2621bd9e
[see in explorer](https://explorer.inkonchain.com/address/0xc4088d6e5a2027e784efc0491c322a3e2621bd9e) | | SingleOutputRequestImpl AUTO | 0x82e7D3872c43a9c4D67450a417a738257795ec62
[see in explorer](https://explorer.inkonchain.com/address/0x82e7D3872c43a9c4D67450a417a738257795ec62) | | SocketDeployFactory | 0x71630095e3F08A86aFC73f7b07342192adf39C55
[see in explorer](https://explorer.inkonchain.com/address/0x71630095e3F08A86aFC73f7b07342192adf39C55) | | SocketGateway | 0x3a23F943181408EAC424116Af7b7790c94Cb97a5
[see in explorer](https://explorer.inkonchain.com/address/0x3a23F943181408EAC424116Af7b7790c94Cb97a5) | | Solver AUTO | 0xAe68b7117BE0026Cbd4366303f74EEcbB19e4042
[see in explorer](https://explorer.inkonchain.com/address/0xAe68b7117BE0026Cbd4366303f74EEcbB19e4042) | | StakedRouterExecutor AUTO | 0x12efda5e4d410c5da723ceb7e43942779e3fe49b
[see in explorer](https://explorer.inkonchain.com/address/0x12efda5e4d410c5da723ceb7e43942779e3fe49b) | | StakedRouterReceiver AUTO | 0x5d84f33b7c9214df23fd86a0861ac923af99954d
[see in explorer](https://explorer.inkonchain.com/address/0x5d84f33b7c9214df23fd86a0861ac923af99954d) | | StakedRouterSingleOutput AUTO | 0x167d49f106bbea59587ef3c63b33e6a421af1b8d
[see in explorer](https://explorer.inkonchain.com/address/0x167d49f106bbea59587ef3c63b33e6a421af1b8d) | | StargateImplV2 | 0x614595189d16995Fe22a5c267B220C803e50966F
[see in explorer](https://explorer.inkonchain.com/address/0x614595189d16995Fe22a5c267B220C803e50966F) | | SwapExecutor AUTO | 0x8A228540a81344cD06bAB50dB3F938962aaF21D5
[see in explorer](https://explorer.inkonchain.com/address/0x8A228540a81344cD06bAB50dB3F938962aaF21D5) | | SwapRequestCallback AUTO | 0xEFB37Bd3a9ed2f768bf6f79d0379fe7f9BE50F49
[see in explorer](https://explorer.inkonchain.com/address/0xEFB37Bd3a9ed2f768bf6f79d0379fe7f9BE50F49) | | SwapRequestImpl AUTO | 0x407BE335f94C30Ee2876c4cF86ce08A46f518cF3
[see in explorer](https://explorer.inkonchain.com/address/0x407BE335f94C30Ee2876c4cF86ce08A46f518cF3) | | SwitchboardPlug AUTO | 0x6026369CcA399352ba68AEDdb89aC65442D1907b
[see in explorer](https://explorer.inkonchain.com/address/0x6026369CcA399352ba68AEDdb89aC65442D1907b) | | SwitchboardRouter AUTO | 0x11918f1cb6db5e008A692F47c5320216fba6054B
[see in explorer](https://explorer.inkonchain.com/address/0x11918f1cb6db5e008A692F47c5320216fba6054B) | | UnwrapAndForward AUTO | 0xd31367da48d3f9d6dd0d59de4aa1ef6023a88fad
[see in explorer](https://explorer.inkonchain.com/address/0xd31367da48d3f9d6dd0d59de4aa1ef6023a88fad) | | ZeroxV2Wrapper AUTO | 0x0000000000000000000000000000000000000000
[see in explorer](https://explorer.inkonchain.com/address/0x0000000000000000000000000000000000000000) |
| name | address | | -------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------- | | BungeeGateway AUTO | 0x8f503B6d9fFdae8d375d1E226b71B4B3144D3849
[see in explorer](https://katanascan.com/address/0x8f503B6d9fFdae8d375d1E226b71B4B3144D3849) | | BungeeInbox AUTO | 0x5e0f8e7337c8955d2124b8e85ca74af884b3e124
[see in explorer](https://katanascan.com/address/0x5e0f8e7337c8955d2124b8e85ca74af884b3e124) | | BungeeInboxOld AUTO | 0x7ad979C6b0C9924F79ea571280071595ba13D002
[see in explorer](https://katanascan.com/address/0x7ad979C6b0C9924F79ea571280071595ba13D002) | | CalldataExecutor AUTO | 0xa873aab6a98cb764ad6d52820d129d0e3667d9f9
[see in explorer](https://katanascan.com/address/0xa873aab6a98cb764ad6d52820d129d0e3667d9f9) | | CCTPV2RouterSingleOutput AUTO | 0x0000000000000000000000000000000000000000
[see in explorer](https://katanascan.com/address/0x0000000000000000000000000000000000000000) | | Entrypoint AUTO | 0xc8807bD5b5c87Fe7Fc73D644Cb7800d1A4e4F09D
[see in explorer](https://katanascan.com/address/0xc8807bD5b5c87Fe7Fc73D644Cb7800d1A4e4F09D) | | FeeCollector AUTO | 0xE12D0CE29B916fbc067f49a8ebC203ffB66E8ded
[see in explorer](https://katanascan.com/address/0xE12D0CE29B916fbc067f49a8ebC203ffB66E8ded) | | GenericStakedRoute AUTO | 0x5013c0b3defd8f832d1b6dec750382946de5c13b
[see in explorer](https://katanascan.com/address/0x5013c0b3defd8f832d1b6dec750382946de5c13b) | | RFQRouterSingleOutput AUTO | 0xc4088d6e5a2027e784efc0491c322a3e2621bd9e
[see in explorer](https://katanascan.com/address/0xc4088d6e5a2027e784efc0491c322a3e2621bd9e) | | SingleOutputRequestImpl AUTO | 0xcC42AE193E97a228BbC1e747Ea4af3aa170acCA2
[see in explorer](https://katanascan.com/address/0xcC42AE193E97a228BbC1e747Ea4af3aa170acCA2) | | Solver AUTO | 0xae68b7117be0026cbd4366303f74eecbb19e4042
[see in explorer](https://katanascan.com/address/0xae68b7117be0026cbd4366303f74eecbb19e4042) | | StakedRouterExecutor AUTO | 0x12efda5e4d410c5da723ceb7e43942779e3fe49b
[see in explorer](https://katanascan.com/address/0x12efda5e4d410c5da723ceb7e43942779e3fe49b) | | StakedRouterReceiver AUTO | 0x5d84f33b7c9214df23fd86a0861ac923af99954d
[see in explorer](https://katanascan.com/address/0x5d84f33b7c9214df23fd86a0861ac923af99954d) | | StakedRouterSingleOutput AUTO | 0x167d49f106bbea59587ef3c63b33e6a421af1b8d
[see in explorer](https://katanascan.com/address/0x167d49f106bbea59587ef3c63b33e6a421af1b8d) | | SwapExecutor AUTO | 0x6e8338B0c56f598809e72D6a31456f9D5452de72
[see in explorer](https://katanascan.com/address/0x6e8338B0c56f598809e72D6a31456f9D5452de72) | | SwapRequestCallback AUTO | 0x84Fd802Dd211D483Eb115Ee8a80d0029784c7637
[see in explorer](https://katanascan.com/address/0x84Fd802Dd211D483Eb115Ee8a80d0029784c7637) | | SwapRequestImpl AUTO | 0x79b5380FF38462b72e14667742f634c6610158B8
[see in explorer](https://katanascan.com/address/0x79b5380FF38462b72e14667742f634c6610158B8) | | SwitchboardPlug AUTO | 0xc5C38A15A9D3D9dC5Fc7dE4426779B695677e45D
[see in explorer](https://katanascan.com/address/0xc5C38A15A9D3D9dC5Fc7dE4426779B695677e45D) | | SwitchboardRouter AUTO | 0x3416daBEAf259FBE5ba455E361f23e58BAB91E3E
[see in explorer](https://katanascan.com/address/0x3416daBEAf259FBE5ba455E361f23e58BAB91E3E) | | UnwrapAndForward AUTO | 0xd31367da48d3f9d6dd0d59de4aa1ef6023a88fad
[see in explorer](https://katanascan.com/address/0xd31367da48d3f9d6dd0d59de4aa1ef6023a88fad) |
| name | address | | -------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------- | | AcrossImpl | 0x0Cd570303Dc16d2624fa74d4bf7c7fE38d7aBF25
[see in explorer](https://lineascan.build/address/0x0Cd570303Dc16d2624fa74d4bf7c7fE38d7aBF25) | | AcrossImplV3 | 0x740EA79e2FccDDB4eE8bB8Fc8ccAC5eb6dFa0b40
[see in explorer](https://lineascan.build/address/0x740EA79e2FccDDB4eE8bB8Fc8ccAC5eb6dFa0b40) | | AcrossStakedRoute AUTO | 0x125ac5a530ece0a06dd3cd3da711c054eadb57b9
[see in explorer](https://lineascan.build/address/0x125ac5a530ece0a06dd3cd3da711c054eadb57b9) | | AcrossV3WethUnwrapper | 0x36f0B62E4eE3d30939cBccABA9D983579799D931
[see in explorer](https://lineascan.build/address/0x36f0B62E4eE3d30939cBccABA9D983579799D931) | | BungeeDepository AUTO | 0xa6cd293ba20873b3cbbbf78f156a1d56d8ab9347
[see in explorer](https://lineascan.build/address/0xa6cd293ba20873b3cbbbf78f156a1d56d8ab9347) | | BungeeGateway AUTO | 0x6b1a31Af8A9DC9E8e489035859ca98D6335a0bcB
[see in explorer](https://lineascan.build/address/0x6b1a31Af8A9DC9E8e489035859ca98D6335a0bcB) | | BungeeInbox AUTO | 0x5e0f8e7337c8955d2124b8e85ca74af884b3e124
[see in explorer](https://lineascan.build/address/0x5e0f8e7337c8955d2124b8e85ca74af884b3e124) | | BungeeInboxOld AUTO | 0xBbe2c47dD59Ebc27204eB3437605b8c86F054a69
[see in explorer](https://lineascan.build/address/0xBbe2c47dD59Ebc27204eB3437605b8c86F054a69) | | CalldataExecutor AUTO | 0xa873aab6a98cb764ad6d52820d129d0e3667d9f9
[see in explorer](https://lineascan.build/address/0xa873aab6a98cb764ad6d52820d129d0e3667d9f9) | | CCTPRouterSingleOutput AUTO | 0x0000000000000000000000000000000000000000
[see in explorer](https://lineascan.build/address/0x0000000000000000000000000000000000000000) | | CctpV2Impl | 0xd5835Ae4D051D23EF0eEfe03e6D7e8D14b0668AD
[see in explorer](https://lineascan.build/address/0xd5835Ae4D051D23EF0eEfe03e6D7e8D14b0668AD) | | CCTPV2RouterSingleOutput AUTO | 0x6faec2944071b2a5ebfd1b08f43f29597aad8ca1
[see in explorer](https://lineascan.build/address/0x6faec2944071b2a5ebfd1b08f43f29597aad8ca1) | | CelerStakedRoute AUTO | 0xf1c07b6dddc480602d0304c31e6b13ff711b5828
[see in explorer](https://lineascan.build/address/0xf1c07b6dddc480602d0304c31e6b13ff711b5828) | | DisabledSocketRoute | 0x0f34A522FF82151c90679b73211955068FD854F1
[see in explorer](https://lineascan.build/address/0x0f34A522FF82151c90679b73211955068FD854F1) | | Entrypoint AUTO | 0x5e01dbBBe59F8987673FAdD1469DdD2Be71e00af
[see in explorer](https://lineascan.build/address/0x5e01dbBBe59F8987673FAdD1469DdD2Be71e00af) | | FeeCollector AUTO | 0xdcf83CC9CCDfa57aE757021f9457567F67BABeA9
[see in explorer](https://lineascan.build/address/0xdcf83CC9CCDfa57aE757021f9457567F67BABeA9) | | FeesTakerController | 0xa28f5a1575bbc9758EAc182CE3E66A2734621F4F
[see in explorer](https://lineascan.build/address/0xa28f5a1575bbc9758EAc182CE3E66A2734621F4F) | | GenericStakedRoute AUTO | 0x5013c0b3defd8f832d1b6dec750382946de5c13b
[see in explorer](https://lineascan.build/address/0x5013c0b3defd8f832d1b6dec750382946de5c13b) | | HopImplL2V2 | 0xc5131C8cf3E825D16aFf3196f3FE629FBE86D0bb
[see in explorer](https://lineascan.build/address/0xc5131C8cf3E825D16aFf3196f3FE629FBE86D0bb) | | KyberSwapImpl | 0x70ce162b46C172d20df5573fF86055a12A658873
[see in explorer](https://lineascan.build/address/0x70ce162b46C172d20df5573fF86055a12A658873) | | MagpieSwapImpl | 0xECe278805B61b2579dC21DA66681b359be85f546
[see in explorer](https://lineascan.build/address/0xECe278805B61b2579dC21DA66681b359be85f546) | | MayanBridgeImplV2 | 0x20574694cfD2145eD61BA4af37400303843AEF52
[see in explorer](https://lineascan.build/address/0x20574694cfD2145eD61BA4af37400303843AEF52) | | OpenOceanSwapImpl AUTO | 0xbb03B17C3D63e9707Cff789beD922Bf0Ab98d0c2
[see in explorer](https://lineascan.build/address/0xbb03B17C3D63e9707Cff789beD922Bf0Ab98d0c2) | | RefuelBridgeImpl | 0xB28777547bfe45503E669Ee256D97bBC79783bfD
[see in explorer](https://lineascan.build/address/0xB28777547bfe45503E669Ee256D97bBC79783bfD) | | RefuelSwapAndBridgeController | 0xD79c6bAc601ca92cb9F8Db61976CCdbb0588C5F6
[see in explorer](https://lineascan.build/address/0xD79c6bAc601ca92cb9F8Db61976CCdbb0588C5F6) | | RFQRouterSingleOutput AUTO | 0xc4088d6e5a2027e784efc0491c322a3e2621bd9e
[see in explorer](https://lineascan.build/address/0xc4088d6e5a2027e784efc0491c322a3e2621bd9e) | | SingleOutputRequestImpl AUTO | 0x76C3B1b35dfa2b165d41c44Ca3268B3AA97845A6
[see in explorer](https://lineascan.build/address/0x76C3B1b35dfa2b165d41c44Ca3268B3AA97845A6) | | SocketDeployFactory | 0x71630095e3F08A86aFC73f7b07342192adf39C55
[see in explorer](https://lineascan.build/address/0x71630095e3F08A86aFC73f7b07342192adf39C55) | | SocketGateway | 0x3a23F943181408EAC424116Af7b7790c94Cb97a5
[see in explorer](https://lineascan.build/address/0x3a23F943181408EAC424116Af7b7790c94Cb97a5) | | Solver AUTO | 0xAe68b7117BE0026Cbd4366303f74EEcbB19e4042
[see in explorer](https://lineascan.build/address/0xAe68b7117BE0026Cbd4366303f74EEcbB19e4042) | | StakedRouterExecutor AUTO | 0x12efda5e4d410c5da723ceb7e43942779e3fe49b
[see in explorer](https://lineascan.build/address/0x12efda5e4d410c5da723ceb7e43942779e3fe49b) | | StakedRouterReceiver AUTO | 0x5d84f33b7c9214df23fd86a0861ac923af99954d
[see in explorer](https://lineascan.build/address/0x5d84f33b7c9214df23fd86a0861ac923af99954d) | | StakedRouterSingleOutput AUTO | 0x167d49f106bbea59587ef3c63b33e6a421af1b8d
[see in explorer](https://lineascan.build/address/0x167d49f106bbea59587ef3c63b33e6a421af1b8d) | | StargateImplV2 | 0x4682e8315B80cF757e2077280E0471729c992Ed3
[see in explorer](https://lineascan.build/address/0x4682e8315B80cF757e2077280E0471729c992Ed3) | | SwapExecutor AUTO | 0x2261Fe33C0858a4Bb5178e429bF90C3652da961E
[see in explorer](https://lineascan.build/address/0x2261Fe33C0858a4Bb5178e429bF90C3652da961E) | | SwapRequestCallback AUTO | 0xEFB37Bd3a9ed2f768bf6f79d0379fe7f9BE50F49
[see in explorer](https://lineascan.build/address/0xEFB37Bd3a9ed2f768bf6f79d0379fe7f9BE50F49) | | SwapRequestImpl AUTO | 0x69f9d5a9E04b9cED4dff07Cd47c393856FA3D6Be
[see in explorer](https://lineascan.build/address/0x69f9d5a9E04b9cED4dff07Cd47c393856FA3D6Be) | | SwitchboardPlug AUTO | 0xeaCb816dF64027f3CA536735efA6835cda70D785
[see in explorer](https://lineascan.build/address/0xeaCb816dF64027f3CA536735efA6835cda70D785) | | SwitchboardRouter AUTO | 0xcE4B9942153b53aE4807dCFE703814C74e02aF62
[see in explorer](https://lineascan.build/address/0xcE4B9942153b53aE4807dCFE703814C74e02aF62) | | SymbiosisBridgeImpl | 0xf166678776d22016DdC7415003acFEcEFe8b07dd
[see in explorer](https://lineascan.build/address/0xf166678776d22016DdC7415003acFEcEFe8b07dd) | | UnwrapAndForward AUTO | 0xd31367da48d3f9d6dd0d59de4aa1ef6023a88fad
[see in explorer](https://lineascan.build/address/0xd31367da48d3f9d6dd0d59de4aa1ef6023a88fad) | | ZeroxV2SwapImpl | 0x413d1edcF7C0837F09e0DB6375DdE6D5F066ABaC
[see in explorer](https://lineascan.build/address/0x413d1edcF7C0837F09e0DB6375DdE6D5F066ABaC) | | ZeroxV2Wrapper AUTO | 0x614595189d16995Fe22a5c267B220C803e50966F
[see in explorer](https://lineascan.build/address/0x614595189d16995Fe22a5c267B220C803e50966F) |
| name | address | | -------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------- | | BungeeGateway AUTO | 0x69f9d5a9E04b9cED4dff07Cd47c393856FA3D6Be
[see in explorer](https://mantlescan.xyz/address/0x69f9d5a9E04b9cED4dff07Cd47c393856FA3D6Be) | | BungeeInbox AUTO | 0x5e0f8e7337c8955d2124b8e85ca74af884b3e124
[see in explorer](https://mantlescan.xyz/address/0x5e0f8e7337c8955d2124b8e85ca74af884b3e124) | | BungeeInboxOld AUTO | 0x9330914D5Ad261fE360fDe447455B60A9029C246
[see in explorer](https://mantlescan.xyz/address/0x9330914D5Ad261fE360fDe447455B60A9029C246) | | CalldataExecutor AUTO | 0xa873aab6a98cb764ad6d52820d129d0e3667d9f9
[see in explorer](https://mantlescan.xyz/address/0xa873aab6a98cb764ad6d52820d129d0e3667d9f9) | | CCTPRouterSingleOutput AUTO | 0x0000000000000000000000000000000000000000
[see in explorer](https://mantlescan.xyz/address/0x0000000000000000000000000000000000000000) | | CCTPV2RouterSingleOutput AUTO | 0x0000000000000000000000000000000000000000
[see in explorer](https://mantlescan.xyz/address/0x0000000000000000000000000000000000000000) | | DisabledSocketRoute | 0x0f34A522FF82151c90679b73211955068FD854F1
[see in explorer](https://mantlescan.xyz/address/0x0f34A522FF82151c90679b73211955068FD854F1) | | Entrypoint AUTO | 0x6d4b85854dC621EF9D64368aEbd98dC27577e642
[see in explorer](https://mantlescan.xyz/address/0x6d4b85854dC621EF9D64368aEbd98dC27577e642) | | FeeCollector AUTO | 0xdcf83CC9CCDfa57aE757021f9457567F67BABeA9
[see in explorer](https://mantlescan.xyz/address/0xdcf83CC9CCDfa57aE757021f9457567F67BABeA9) | | GenericStakedRoute AUTO | 0x5013c0b3defd8f832d1b6dec750382946de5c13b
[see in explorer](https://mantlescan.xyz/address/0x5013c0b3defd8f832d1b6dec750382946de5c13b) | | KyberSwapImpl | 0x70ce162b46C172d20df5573fF86055a12A658873
[see in explorer](https://mantlescan.xyz/address/0x70ce162b46C172d20df5573fF86055a12A658873) | | OpenOceanSwapImpl AUTO | 0x413d1edcF7C0837F09e0DB6375DdE6D5F066ABaC
[see in explorer](https://mantlescan.xyz/address/0x413d1edcF7C0837F09e0DB6375DdE6D5F066ABaC) | | RefuelBridgeImpl | 0x36A4f914fc2839aA60EF3a79395aB8D6239f6772
[see in explorer](https://mantlescan.xyz/address/0x36A4f914fc2839aA60EF3a79395aB8D6239f6772) | | RFQRouterSingleOutput AUTO | 0xc4088d6e5a2027e784efc0491c322a3e2621bd9e
[see in explorer](https://mantlescan.xyz/address/0xc4088d6e5a2027e784efc0491c322a3e2621bd9e) | | SingleOutputRequestImpl AUTO | 0xDF7184D8E57E94EF96C4D3A41985109839E49878
[see in explorer](https://mantlescan.xyz/address/0xDF7184D8E57E94EF96C4D3A41985109839E49878) | | SocketDeployFactory | 0x71630095e3F08A86aFC73f7b07342192adf39C55
[see in explorer](https://mantlescan.xyz/address/0x71630095e3F08A86aFC73f7b07342192adf39C55) | | SocketGateway | 0x3a23F943181408EAC424116Af7b7790c94Cb97a5
[see in explorer](https://mantlescan.xyz/address/0x3a23F943181408EAC424116Af7b7790c94Cb97a5) | | Solver AUTO | 0xAe68b7117BE0026Cbd4366303f74EEcbB19e4042
[see in explorer](https://mantlescan.xyz/address/0xAe68b7117BE0026Cbd4366303f74EEcbB19e4042) | | StakedRouterExecutor AUTO | 0x12efda5e4d410c5da723ceb7e43942779e3fe49b
[see in explorer](https://mantlescan.xyz/address/0x12efda5e4d410c5da723ceb7e43942779e3fe49b) | | StakedRouterReceiver AUTO | 0x5d84f33b7c9214df23fd86a0861ac923af99954d
[see in explorer](https://mantlescan.xyz/address/0x5d84f33b7c9214df23fd86a0861ac923af99954d) | | StakedRouterSingleOutput AUTO | 0x167d49f106bbea59587ef3c63b33e6a421af1b8d
[see in explorer](https://mantlescan.xyz/address/0x167d49f106bbea59587ef3c63b33e6a421af1b8d) | | StargateImplV2 | 0x4682e8315B80cF757e2077280E0471729c992Ed3
[see in explorer](https://mantlescan.xyz/address/0x4682e8315B80cF757e2077280E0471729c992Ed3) | | SwapExecutor AUTO | 0xb32caFa603E405Ee0121237582913a8299C636C3
[see in explorer](https://mantlescan.xyz/address/0xb32caFa603E405Ee0121237582913a8299C636C3) | | SwapRequestCallback AUTO | 0xEFB37Bd3a9ed2f768bf6f79d0379fe7f9BE50F49
[see in explorer](https://mantlescan.xyz/address/0xEFB37Bd3a9ed2f768bf6f79d0379fe7f9BE50F49) | | SwapRequestImpl AUTO | 0x76C3B1b35dfa2b165d41c44Ca3268B3AA97845A6
[see in explorer](https://mantlescan.xyz/address/0x76C3B1b35dfa2b165d41c44Ca3268B3AA97845A6) | | SwitchboardPlug AUTO | 0xcE4B9942153b53aE4807dCFE703814C74e02aF62
[see in explorer](https://mantlescan.xyz/address/0xcE4B9942153b53aE4807dCFE703814C74e02aF62) | | SwitchboardRouter AUTO | 0xF7448Ea886217f851594c63B19423854E9e56a41
[see in explorer](https://mantlescan.xyz/address/0xF7448Ea886217f851594c63B19423854E9e56a41) | | SymbiosisBridgeImpl | 0x45362caA305D15A12D2AC781049069d87Dc6372c
[see in explorer](https://mantlescan.xyz/address/0x45362caA305D15A12D2AC781049069d87Dc6372c) | | UnwrapAndForward AUTO | 0xd31367da48d3f9d6dd0d59de4aa1ef6023a88fad
[see in explorer](https://mantlescan.xyz/address/0xd31367da48d3f9d6dd0d59de4aa1ef6023a88fad) | | ZeroxV2SwapImpl | 0xCFee2171DC6c670eF1E0Df832df0cF37C31705E9
[see in explorer](https://mantlescan.xyz/address/0xCFee2171DC6c670eF1E0Df832df0cF37C31705E9) | | ZeroxV2Wrapper AUTO | 0x614595189d16995Fe22a5c267B220C803e50966F
[see in explorer](https://mantlescan.xyz/address/0x614595189d16995Fe22a5c267B220C803e50966F) |
| name | address | | -------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------- | | AcrossStakedRoute AUTO | 0x125ac5a530ece0a06dd3cd3da711c054eadb57b9
[see in explorer](https://mega.etherscan.io/address/0x125ac5a530ece0a06dd3cd3da711c054eadb57b9) | | BungeeGateway AUTO | 0x8f503B6d9fFdae8d375d1E226b71B4B3144D3849
[see in explorer](https://mega.etherscan.io/address/0x8f503B6d9fFdae8d375d1E226b71B4B3144D3849) | | BungeeInbox AUTO | 0x5e0f8e7337c8955d2124b8e85ca74af884b3e124
[see in explorer](https://mega.etherscan.io/address/0x5e0f8e7337c8955d2124b8e85ca74af884b3e124) | | CalldataExecutor AUTO | 0xa873aab6a98cb764ad6d52820d129d0e3667d9f9
[see in explorer](https://mega.etherscan.io/address/0xa873aab6a98cb764ad6d52820d129d0e3667d9f9) | | Entrypoint AUTO | 0xc8807bD5b5c87Fe7Fc73D644Cb7800d1A4e4F09D
[see in explorer](https://mega.etherscan.io/address/0xc8807bD5b5c87Fe7Fc73D644Cb7800d1A4e4F09D) | | FeeCollector AUTO | 0xE12D0CE29B916fbc067f49a8ebC203ffB66E8ded
[see in explorer](https://mega.etherscan.io/address/0xE12D0CE29B916fbc067f49a8ebC203ffB66E8ded) | | GenericStakedRoute AUTO | 0x5013c0b3defd8f832d1b6dec750382946de5c13b
[see in explorer](https://mega.etherscan.io/address/0x5013c0b3defd8f832d1b6dec750382946de5c13b) | | RFQRouterSingleOutput AUTO | 0xc4088d6e5a2027e784efc0491c322a3e2621bd9e
[see in explorer](https://mega.etherscan.io/address/0xc4088d6e5a2027e784efc0491c322a3e2621bd9e) | | SingleOutputRequestImpl AUTO | 0xcC42AE193E97a228BbC1e747Ea4af3aa170acCA2
[see in explorer](https://mega.etherscan.io/address/0xcC42AE193E97a228BbC1e747Ea4af3aa170acCA2) | | Solver AUTO | 0xae68b7117be0026cbd4366303f74eecbb19e4042
[see in explorer](https://mega.etherscan.io/address/0xae68b7117be0026cbd4366303f74eecbb19e4042) | | StakedRouterExecutor AUTO | 0x12efda5e4d410c5da723ceb7e43942779e3fe49b
[see in explorer](https://mega.etherscan.io/address/0x12efda5e4d410c5da723ceb7e43942779e3fe49b) | | StakedRouterReceiver AUTO | 0x5d84f33b7c9214df23fd86a0861ac923af99954d
[see in explorer](https://mega.etherscan.io/address/0x5d84f33b7c9214df23fd86a0861ac923af99954d) | | StakedRouterSingleOutput AUTO | 0x167d49f106bbea59587ef3c63b33e6a421af1b8d
[see in explorer](https://mega.etherscan.io/address/0x167d49f106bbea59587ef3c63b33e6a421af1b8d) | | SwapExecutor AUTO | 0x6e8338B0c56f598809e72D6a31456f9D5452de72
[see in explorer](https://mega.etherscan.io/address/0x6e8338B0c56f598809e72D6a31456f9D5452de72) | | SwapRequestCallback AUTO | 0x20FE2F4E88144be7323fed36aA15402088c4c5aB
[see in explorer](https://mega.etherscan.io/address/0x20FE2F4E88144be7323fed36aA15402088c4c5aB) | | SwapRequestImpl AUTO | 0x79b5380FF38462b72e14667742f634c6610158B8
[see in explorer](https://mega.etherscan.io/address/0x79b5380FF38462b72e14667742f634c6610158B8) | | SwitchboardPlug AUTO | 0xc5C38A15A9D3D9dC5Fc7dE4426779B695677e45D
[see in explorer](https://mega.etherscan.io/address/0xc5C38A15A9D3D9dC5Fc7dE4426779B695677e45D) | | SwitchboardRouter AUTO | 0x3416daBEAf259FBE5ba455E361f23e58BAB91E3E
[see in explorer](https://mega.etherscan.io/address/0x3416daBEAf259FBE5ba455E361f23e58BAB91E3E) | | UnwrapAndForward AUTO | 0xd31367da48d3f9d6dd0d59de4aa1ef6023a88fad
[see in explorer](https://mega.etherscan.io/address/0xd31367da48d3f9d6dd0d59de4aa1ef6023a88fad) |
| name | address | | -------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------- | | AcrossImpl | 0xa28f5a1575bbc9758EAc182CE3E66A2734621F4F
[see in explorer](https://explorer.mode.network/address/0xa28f5a1575bbc9758EAc182CE3E66A2734621F4F) | | AcrossImplV3 | 0x740EA79e2FccDDB4eE8bB8Fc8ccAC5eb6dFa0b40
[see in explorer](https://explorer.mode.network/address/0x740EA79e2FccDDB4eE8bB8Fc8ccAC5eb6dFa0b40) | | AcrossStakedRoute AUTO | 0x125ac5a530ece0a06dd3cd3da711c054eadb57b9
[see in explorer](https://explorer.mode.network/address/0x125ac5a530ece0a06dd3cd3da711c054eadb57b9) | | AcrossV3WethUnwrapper | 0x36f0B62E4eE3d30939cBccABA9D983579799D931
[see in explorer](https://explorer.mode.network/address/0x36f0B62E4eE3d30939cBccABA9D983579799D931) | | BungeeGateway AUTO | 0x8f503B6d9fFdae8d375d1E226b71B4B3144D3849
[see in explorer](https://explorer.mode.network/address/0x8f503B6d9fFdae8d375d1E226b71B4B3144D3849) | | BungeeInbox AUTO | 0x5e0f8e7337c8955d2124b8e85ca74af884b3e124
[see in explorer](https://explorer.mode.network/address/0x5e0f8e7337c8955d2124b8e85ca74af884b3e124) | | BungeeInboxOld AUTO | 0xa7ecA4EE5288190a2Be7dFF89b8972a7b32c114d
[see in explorer](https://explorer.mode.network/address/0xa7ecA4EE5288190a2Be7dFF89b8972a7b32c114d) | | CalldataExecutor AUTO | 0xa873aab6a98cb764ad6d52820d129d0e3667d9f9
[see in explorer](https://explorer.mode.network/address/0xa873aab6a98cb764ad6d52820d129d0e3667d9f9) | | CCTPRouterSingleOutput AUTO | 0x0000000000000000000000000000000000000000
[see in explorer](https://explorer.mode.network/address/0x0000000000000000000000000000000000000000) | | CCTPV2RouterSingleOutput AUTO | 0x0000000000000000000000000000000000000000
[see in explorer](https://explorer.mode.network/address/0x0000000000000000000000000000000000000000) | | Entrypoint AUTO | 0xc8807bD5b5c87Fe7Fc73D644Cb7800d1A4e4F09D
[see in explorer](https://explorer.mode.network/address/0xc8807bD5b5c87Fe7Fc73D644Cb7800d1A4e4F09D) | | FeeCollector AUTO | 0xE12D0CE29B916fbc067f49a8ebC203ffB66E8ded
[see in explorer](https://explorer.mode.network/address/0xE12D0CE29B916fbc067f49a8ebC203ffB66E8ded) | | FeesTakerController | 0x6163484b8d0Db43238C1875bcD7dA987e1824273
[see in explorer](https://explorer.mode.network/address/0x6163484b8d0Db43238C1875bcD7dA987e1824273) | | GenericStakedRoute AUTO | 0x5013c0b3defd8f832d1b6dec750382946de5c13b
[see in explorer](https://explorer.mode.network/address/0x5013c0b3defd8f832d1b6dec750382946de5c13b) | | RefuelSwapAndBridgeController | 0x45362caA305D15A12D2AC781049069d87Dc6372c
[see in explorer](https://explorer.mode.network/address/0x45362caA305D15A12D2AC781049069d87Dc6372c) | | RFQRouterSingleOutput AUTO | 0xc4088d6e5a2027e784efc0491c322a3e2621bd9e
[see in explorer](https://explorer.mode.network/address/0xc4088d6e5a2027e784efc0491c322a3e2621bd9e) | | SingleOutputRequestImpl AUTO | 0xcC42AE193E97a228BbC1e747Ea4af3aa170acCA2
[see in explorer](https://explorer.mode.network/address/0xcC42AE193E97a228BbC1e747Ea4af3aa170acCA2) | | SocketDeployFactory | 0x71630095e3F08A86aFC73f7b07342192adf39C55
[see in explorer](https://explorer.mode.network/address/0x71630095e3F08A86aFC73f7b07342192adf39C55) | | SocketGateway | 0x3a23F943181408EAC424116Af7b7790c94Cb97a5
[see in explorer](https://explorer.mode.network/address/0x3a23F943181408EAC424116Af7b7790c94Cb97a5) | | Solver AUTO | 0xAe68b7117BE0026Cbd4366303f74EEcbB19e4042
[see in explorer](https://explorer.mode.network/address/0xAe68b7117BE0026Cbd4366303f74EEcbB19e4042) | | StakedRouterExecutor AUTO | 0x12efda5e4d410c5da723ceb7e43942779e3fe49b
[see in explorer](https://explorer.mode.network/address/0x12efda5e4d410c5da723ceb7e43942779e3fe49b) | | StakedRouterReceiver AUTO | 0x5d84f33b7c9214df23fd86a0861ac923af99954d
[see in explorer](https://explorer.mode.network/address/0x5d84f33b7c9214df23fd86a0861ac923af99954d) | | StakedRouterSingleOutput AUTO | 0x167d49f106bbea59587ef3c63b33e6a421af1b8d
[see in explorer](https://explorer.mode.network/address/0x167d49f106bbea59587ef3c63b33e6a421af1b8d) | | StargateImplV2 | 0x4682e8315B80cF757e2077280E0471729c992Ed3
[see in explorer](https://explorer.mode.network/address/0x4682e8315B80cF757e2077280E0471729c992Ed3) | | SwapExecutor AUTO | 0x6e8338B0c56f598809e72D6a31456f9D5452de72
[see in explorer](https://explorer.mode.network/address/0x6e8338B0c56f598809e72D6a31456f9D5452de72) | | SwapRequestCallback AUTO | 0xEFB37Bd3a9ed2f768bf6f79d0379fe7f9BE50F49
[see in explorer](https://explorer.mode.network/address/0xEFB37Bd3a9ed2f768bf6f79d0379fe7f9BE50F49) | | SwapRequestImpl AUTO | 0x79b5380FF38462b72e14667742f634c6610158B8
[see in explorer](https://explorer.mode.network/address/0x79b5380FF38462b72e14667742f634c6610158B8) | | SwitchboardPlug AUTO | 0xc5C38A15A9D3D9dC5Fc7dE4426779B695677e45D
[see in explorer](https://explorer.mode.network/address/0xc5C38A15A9D3D9dC5Fc7dE4426779B695677e45D) | | SwitchboardRouter AUTO | 0x3416daBEAf259FBE5ba455E361f23e58BAB91E3E
[see in explorer](https://explorer.mode.network/address/0x3416daBEAf259FBE5ba455E361f23e58BAB91E3E) | | SymbiosisBridgeImpl | 0xb47Fa80C9548cE9D5a5557f78d99B6a78f62C46F
[see in explorer](https://explorer.mode.network/address/0xb47Fa80C9548cE9D5a5557f78d99B6a78f62C46F) | | UnwrapAndForward AUTO | 0xd31367da48d3f9d6dd0d59de4aa1ef6023a88fad
[see in explorer](https://explorer.mode.network/address/0xd31367da48d3f9d6dd0d59de4aa1ef6023a88fad) | | ZeroxV2Wrapper AUTO | 0x614595189d16995Fe22a5c267B220C803e50966F
[see in explorer](https://explorer.mode.network/address/0x614595189d16995Fe22a5c267B220C803e50966F) |
| name | address | | -------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------- | | AcrossStakedRoute AUTO | 0x125ac5a530ece0a06dd3cd3da711c054eadb57b9
[see in explorer](https://monadscan.com/address/0x125ac5a530ece0a06dd3cd3da711c054eadb57b9) | | BungeeGateway AUTO | 0x1A2F1085A94De6fBcc334AAE1DDf527C567b75E7
[see in explorer](https://monadscan.com/address/0x1A2F1085A94De6fBcc334AAE1DDf527C567b75E7) | | BungeeInbox AUTO | 0x5e0f8e7337c8955d2124b8e85ca74af884b3e124
[see in explorer](https://monadscan.com/address/0x5e0f8e7337c8955d2124b8e85ca74af884b3e124) | | BungeeInboxOld AUTO | 0xaB568b1B49f8bE7488Ca1c0D5DdA6fF94691e4c8
[see in explorer](https://monadscan.com/address/0xaB568b1B49f8bE7488Ca1c0D5DdA6fF94691e4c8) | | CalldataExecutor AUTO | 0xa873aab6a98cb764ad6d52820d129d0e3667d9f9
[see in explorer](https://monadscan.com/address/0xa873aab6a98cb764ad6d52820d129d0e3667d9f9) | | CCTPV2RouterSingleOutput AUTO | 0x6faec2944071b2a5ebfd1b08f43f29597aad8ca1
[see in explorer](https://monadscan.com/address/0x6faec2944071b2a5ebfd1b08f43f29597aad8ca1) | | Entrypoint AUTO | 0x3bb92b8452bDE5Ac20C18E10e606fdc9AC19b414
[see in explorer](https://monadscan.com/address/0x3bb92b8452bDE5Ac20C18E10e606fdc9AC19b414) | | FeeCollector AUTO | 0x82260Eac86558C0835D08eeFF360014aEa7454b6
[see in explorer](https://monadscan.com/address/0x82260Eac86558C0835D08eeFF360014aEa7454b6) | | GenericStakedRoute AUTO | 0x5013c0b3defd8f832d1b6dec750382946de5c13b
[see in explorer](https://monadscan.com/address/0x5013c0b3defd8f832d1b6dec750382946de5c13b) | | RFQRouterSingleOutput AUTO | 0xc4088d6e5a2027e784efc0491c322a3e2621bd9e
[see in explorer](https://monadscan.com/address/0xc4088d6e5a2027e784efc0491c322a3e2621bd9e) | | SingleOutputRequestImpl AUTO | 0x27D966329a325f214b4854a4F0E62550BFebdca3
[see in explorer](https://monadscan.com/address/0x27D966329a325f214b4854a4F0E62550BFebdca3) | | Solver AUTO | 0xAe68b7117BE0026Cbd4366303f74EEcbB19e4042
[see in explorer](https://monadscan.com/address/0xAe68b7117BE0026Cbd4366303f74EEcbB19e4042) | | StakedRouterExecutor AUTO | 0x12efda5e4d410c5da723ceb7e43942779e3fe49b
[see in explorer](https://monadscan.com/address/0x12efda5e4d410c5da723ceb7e43942779e3fe49b) | | StakedRouterReceiver AUTO | 0x5d84f33b7c9214df23fd86a0861ac923af99954d
[see in explorer](https://monadscan.com/address/0x5d84f33b7c9214df23fd86a0861ac923af99954d) | | StakedRouterSingleOutput AUTO | 0x167d49f106bbea59587ef3c63b33e6a421af1b8d
[see in explorer](https://monadscan.com/address/0x167d49f106bbea59587ef3c63b33e6a421af1b8d) | | SwapExecutor AUTO | 0xd0389e84178f809903cbFE7D1EfAE3EFa9c1769c
[see in explorer](https://monadscan.com/address/0xd0389e84178f809903cbFE7D1EfAE3EFa9c1769c) | | SwapRequestCallback AUTO | 0x88a8596e2B51512aab3867Cc895d7047E1D9ef7B
[see in explorer](https://monadscan.com/address/0x88a8596e2B51512aab3867Cc895d7047E1D9ef7B) | | SwapRequestImpl AUTO | 0x01D8a85aDb82408E14bC242ed43fBaD0Ca2F94CB
[see in explorer](https://monadscan.com/address/0x01D8a85aDb82408E14bC242ed43fBaD0Ca2F94CB) | | SwitchboardPlug AUTO | 0xF20B3CB7508c519296556C1Caa9dB6F210e0232a
[see in explorer](https://monadscan.com/address/0xF20B3CB7508c519296556C1Caa9dB6F210e0232a) | | SwitchboardRouter AUTO | 0x3859AD748D03C358aAbB66d084bC5849B624E611
[see in explorer](https://monadscan.com/address/0x3859AD748D03C358aAbB66d084bC5849B624E611) | | UnwrapAndForward AUTO | 0xd31367da48d3f9d6dd0d59de4aa1ef6023a88fad
[see in explorer](https://monadscan.com/address/0xd31367da48d3f9d6dd0d59de4aa1ef6023a88fad) |
| name | address | | -------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------- | | AcrossImpl | 0x4dDaEAeb61c3686d01BC4B730c1a55D1C1C1dC0a
[see in explorer](https://optimistic.etherscan.io/address/0x4dDaEAeb61c3686d01BC4B730c1a55D1C1C1dC0a) | | AcrossImplV3 | 0x740EA79e2FccDDB4eE8bB8Fc8ccAC5eb6dFa0b40
[see in explorer](https://optimistic.etherscan.io/address/0x740EA79e2FccDDB4eE8bB8Fc8ccAC5eb6dFa0b40) | | AcrossStakedRoute AUTO | 0x125ac5a530ece0a06dd3cd3da711c054eadb57b9
[see in explorer](https://optimistic.etherscan.io/address/0x125ac5a530ece0a06dd3cd3da711c054eadb57b9) | | AcrossV3WethUnwrapper | 0x36f0B62E4eE3d30939cBccABA9D983579799D931
[see in explorer](https://optimistic.etherscan.io/address/0x36f0B62E4eE3d30939cBccABA9D983579799D931) | | AnyswapV6L2Impl | 0x4D46d8c1Ac1c80538AF5002BC64B6412e4Ac1023
[see in explorer](https://optimistic.etherscan.io/address/0x4D46d8c1Ac1c80538AF5002BC64B6412e4Ac1023) | | BungeeDepository AUTO | 0xa6cd293ba20873b3cbbbf78f156a1d56d8ab9347
[see in explorer](https://optimistic.etherscan.io/address/0xa6cd293ba20873b3cbbbf78f156a1d56d8ab9347) | | BungeeGateway AUTO | 0x09DAbdD517Ff1e155DeDEF64EC629Ca0285a31af
[see in explorer](https://optimistic.etherscan.io/address/0x09DAbdD517Ff1e155DeDEF64EC629Ca0285a31af) | | BungeeInbox AUTO | 0x5e0f8e7337c8955d2124b8e85ca74af884b3e124
[see in explorer](https://optimistic.etherscan.io/address/0x5e0f8e7337c8955d2124b8e85ca74af884b3e124) | | BungeeInboxOld AUTO | 0x78255f1DeE074fb7084Ee124058A058dE0B1C251
[see in explorer](https://optimistic.etherscan.io/address/0x78255f1DeE074fb7084Ee124058A058dE0B1C251) | | CalldataExecutor AUTO | 0xa873aab6a98cb764ad6d52820d129d0e3667d9f9
[see in explorer](https://optimistic.etherscan.io/address/0xa873aab6a98cb764ad6d52820d129d0e3667d9f9) | | CctpImpl | 0x2438DB4D24256371CC29405b12D646D370988D75
[see in explorer](https://optimistic.etherscan.io/address/0x2438DB4D24256371CC29405b12D646D370988D75) | | CCTPRouterSingleOutput AUTO | 0x3b4817827d06600f92296c5d1491818d69fc955f
[see in explorer](https://optimistic.etherscan.io/address/0x3b4817827d06600f92296c5d1491818d69fc955f) | | CCTPV2RouterSingleOutput AUTO | 0x6faec2944071b2a5ebfd1b08f43f29597aad8ca1
[see in explorer](https://optimistic.etherscan.io/address/0x6faec2944071b2a5ebfd1b08f43f29597aad8ca1) | | CelerImpl | 0xAe9482Ce7f2a472800D5e7f7F45eD12F17c90A8E
[see in explorer](https://optimistic.etherscan.io/address/0xAe9482Ce7f2a472800D5e7f7F45eD12F17c90A8E) | | CelerStakedRoute AUTO | 0xf1c07b6dddc480602d0304c31e6b13ff711b5828
[see in explorer](https://optimistic.etherscan.io/address/0xf1c07b6dddc480602d0304c31e6b13ff711b5828) | | CelerStorageWrapper | 0x7c6C373190421988fA31E64f369C45205676C1f0
[see in explorer](https://optimistic.etherscan.io/address/0x7c6C373190421988fA31E64f369C45205676C1f0) | | CelerV2Impl | 0x44532990D085C099e22F480ca15D8F0AC49CfE5D
[see in explorer](https://optimistic.etherscan.io/address/0x44532990D085C099e22F480ca15D8F0AC49CfE5D) | | ConnextImpl | 0x097A3DA20D7A9444a14361BC43481a9b303b573F
[see in explorer](https://optimistic.etherscan.io/address/0x097A3DA20D7A9444a14361BC43481a9b303b573F) | | DisabledSocketRoute | 0x0f34A522FF82151c90679b73211955068FD854F1
[see in explorer](https://optimistic.etherscan.io/address/0x0f34A522FF82151c90679b73211955068FD854F1) | | Entrypoint AUTO | 0x73096A2cD977941d0D423fA08F8C14DC5100DCef
[see in explorer](https://optimistic.etherscan.io/address/0x73096A2cD977941d0D423fA08F8C14DC5100DCef) | | FeeCollector AUTO | 0xdb629B83681Db277273808A15be68688CE75a94A
[see in explorer](https://optimistic.etherscan.io/address/0xdb629B83681Db277273808A15be68688CE75a94A) | | FeesTakerController | 0x4E7f21d92b70fCBBcB6AFCb8Bf59420622c158B3
[see in explorer](https://optimistic.etherscan.io/address/0x4E7f21d92b70fCBBcB6AFCb8Bf59420622c158B3) | | GenericStakedRoute AUTO | 0x5013c0b3defd8f832d1b6dec750382946de5c13b
[see in explorer](https://optimistic.etherscan.io/address/0x5013c0b3defd8f832d1b6dec750382946de5c13b) | | HopCctpImpl | 0xA9b0eEaC593378ce40360368b42c28c218F4b6f9
[see in explorer](https://optimistic.etherscan.io/address/0xA9b0eEaC593378ce40360368b42c28c218F4b6f9) | | HopImplL2 | 0x2d0EeB574cC98f6d57c72FFe730D5C8a8f2eac37
[see in explorer](https://optimistic.etherscan.io/address/0x2d0EeB574cC98f6d57c72FFe730D5C8a8f2eac37) | | HopImplL2V2 | 0xF1b6f0c071cE884f53B789720e3d8B523EC895bb
[see in explorer](https://optimistic.etherscan.io/address/0xF1b6f0c071cE884f53B789720e3d8B523EC895bb) | | HyphenImpl | 0x653a03b511E6FE9e80eeCb2bBbD36DCaf93cF147
[see in explorer](https://optimistic.etherscan.io/address/0x653a03b511E6FE9e80eeCb2bBbD36DCaf93cF147) | | KyberSwapImpl | 0x07f743edaEc2d8B15b682cBE0b12646433FC03A7
[see in explorer](https://optimistic.etherscan.io/address/0x07f743edaEc2d8B15b682cBE0b12646433FC03A7) | | MagpieSwapImpl | 0x29bd93433302B160dC0262ba26aC0cF854661679
[see in explorer](https://optimistic.etherscan.io/address/0x29bd93433302B160dC0262ba26aC0cF854661679) | | MayanBridgeImpl | 0x7e1ED5E1b6FC312694B4ABB3Afd27B627441B3Ef
[see in explorer](https://optimistic.etherscan.io/address/0x7e1ED5E1b6FC312694B4ABB3Afd27B627441B3Ef) | | MayanBridgeImplV2 | 0xf4f62E1D36B0Be2a701EDaa25967b6204C6b5aBE
[see in explorer](https://optimistic.etherscan.io/address/0xf4f62E1D36B0Be2a701EDaa25967b6204C6b5aBE) | | OneInchImpl | 0x33Ac3447b7707A31888d5f003234CCaBb54339e5
[see in explorer](https://optimistic.etherscan.io/address/0x33Ac3447b7707A31888d5f003234CCaBb54339e5) | | OpenOceanSwapImpl AUTO | 0x4F5Ab12A90fC5467d6cd43888E4Ef877ec304954
[see in explorer](https://optimistic.etherscan.io/address/0x4F5Ab12A90fC5467d6cd43888E4Ef877ec304954) | | RainbowSwapImpl | 0x3E76e8674FFFD1e6495Ec719B82a86cb6a31EFf7
[see in explorer](https://optimistic.etherscan.io/address/0x3E76e8674FFFD1e6495Ec719B82a86cb6a31EFf7) | | RefuelBridgeImpl | 0xE186a05FB020324a7cA61d80138BB1EA66DDDbDF
[see in explorer](https://optimistic.etherscan.io/address/0xE186a05FB020324a7cA61d80138BB1EA66DDDbDF) | | RefuelSwapAndBridgeController | 0x3Dd7419889FF387A58D3Dad1F8B49ea1064290fB
[see in explorer](https://optimistic.etherscan.io/address/0x3Dd7419889FF387A58D3Dad1F8B49ea1064290fB) | | RFQRouterSingleOutput AUTO | 0xc4088d6e5a2027e784efc0491c322a3e2621bd9e
[see in explorer](https://optimistic.etherscan.io/address/0xc4088d6e5a2027e784efc0491c322a3e2621bd9e) | | SingleOutputRequestImpl AUTO | 0x9c5fbD790A4D7921DBc66b09830F2D485a21f307
[see in explorer](https://optimistic.etherscan.io/address/0x9c5fbD790A4D7921DBc66b09830F2D485a21f307) | | SocketDeployFactory | 0x71630095e3F08A86aFC73f7b07342192adf39C55
[see in explorer](https://optimistic.etherscan.io/address/0x71630095e3F08A86aFC73f7b07342192adf39C55) | | SocketGateway | 0x3a23F943181408EAC424116Af7b7790c94Cb97a5
[see in explorer](https://optimistic.etherscan.io/address/0x3a23F943181408EAC424116Af7b7790c94Cb97a5) | | Solver AUTO | 0xAe68b7117BE0026Cbd4366303f74EEcbB19e4042
[see in explorer](https://optimistic.etherscan.io/address/0xAe68b7117BE0026Cbd4366303f74EEcbB19e4042) | | StakedRouterExecutor AUTO | 0x12efda5e4d410c5da723ceb7e43942779e3fe49b
[see in explorer](https://optimistic.etherscan.io/address/0x12efda5e4d410c5da723ceb7e43942779e3fe49b) | | StakedRouterReceiver AUTO | 0x5d84f33b7c9214df23fd86a0861ac923af99954d
[see in explorer](https://optimistic.etherscan.io/address/0x5d84f33b7c9214df23fd86a0861ac923af99954d) | | StakedRouterSingleOutput AUTO | 0x167d49f106bbea59587ef3c63b33e6a421af1b8d
[see in explorer](https://optimistic.etherscan.io/address/0x167d49f106bbea59587ef3c63b33e6a421af1b8d) | | StargateImplL2 | 0xFAAFb26C06a45962E97452E5d4310df2586623A2
[see in explorer](https://optimistic.etherscan.io/address/0xFAAFb26C06a45962E97452E5d4310df2586623A2) | | StargateImplL2V2 | 0x983dD91dD53F1171E846d585B4f2c7c84F14E78f
[see in explorer](https://optimistic.etherscan.io/address/0x983dD91dD53F1171E846d585B4f2c7c84F14E78f) | | StargateImplV2 | 0xF20B3CB7508c519296556C1Caa9dB6F210e0232a
[see in explorer](https://optimistic.etherscan.io/address/0xF20B3CB7508c519296556C1Caa9dB6F210e0232a) | | SwapExecutor AUTO | 0x84F06fBaCc4b64CA2f72a4B26191DAD97f2b52BA
[see in explorer](https://optimistic.etherscan.io/address/0x84F06fBaCc4b64CA2f72a4B26191DAD97f2b52BA) | | SwapRequestCallback AUTO | 0xC8E67b4D14A84D3408932a7ED01789d20864B624
[see in explorer](https://optimistic.etherscan.io/address/0xC8E67b4D14A84D3408932a7ED01789d20864B624) | | SwapRequestImpl AUTO | 0x3c819aAEeD5063F4A613032386Be29035E2F043d
[see in explorer](https://optimistic.etherscan.io/address/0x3c819aAEeD5063F4A613032386Be29035E2F043d) | | SwitchboardPlug AUTO | 0x0D1A6Fef68F81A407f4d66a7e0229eC198107ECa
[see in explorer](https://optimistic.etherscan.io/address/0x0D1A6Fef68F81A407f4d66a7e0229eC198107ECa) | | SwitchboardRouter AUTO | 0xBd5a1D22e83c53Bdd403bb50D5465472D8F05FAD
[see in explorer](https://optimistic.etherscan.io/address/0xBd5a1D22e83c53Bdd403bb50D5465472D8F05FAD) | | SymbiosisBridgeImpl | 0xFd010e8C1005FB5f0b9Bce7c86fA78734A4F6575
[see in explorer](https://optimistic.etherscan.io/address/0xFd010e8C1005FB5f0b9Bce7c86fA78734A4F6575) | | SynapseBridgeImpl | 0xfDbA28D084E157938CFca7e7091C17bc4D6CD2f0
[see in explorer](https://optimistic.etherscan.io/address/0xfDbA28D084E157938CFca7e7091C17bc4D6CD2f0) | | UniswapV3Impl | 0xB4a00066A4B3C438e31B5c9B8188B93141291976
[see in explorer](https://optimistic.etherscan.io/address/0xB4a00066A4B3C438e31B5c9B8188B93141291976) | | UnwrapAndForward AUTO | 0xd31367da48d3f9d6dd0d59de4aa1ef6023a88fad
[see in explorer](https://optimistic.etherscan.io/address/0xd31367da48d3f9d6dd0d59de4aa1ef6023a88fad) | | WrappedTokenSwapperImpl | 0x7016876b99131C7DF9D56201e410846b62B7dca3
[see in explorer](https://optimistic.etherscan.io/address/0x7016876b99131C7DF9D56201e410846b62B7dca3) | | ZeroXSwapImpl | 0xc5621f8f25CB3Fb30211b1f49556443a8e59b558
[see in explorer](https://optimistic.etherscan.io/address/0xc5621f8f25CB3Fb30211b1f49556443a8e59b558) | | ZeroxV2SwapImpl | 0xfb9fDe2b893C9438e3b0393D8f94000ea95f15E6
[see in explorer](https://optimistic.etherscan.io/address/0xfb9fDe2b893C9438e3b0393D8f94000ea95f15E6) | | ZeroxV2Wrapper AUTO | 0x0CB0552405846a4fcd83FBD791eF4a1F43ab3D94
[see in explorer](https://optimistic.etherscan.io/address/0x0CB0552405846a4fcd83FBD791eF4a1F43ab3D94) |
| name | address | | -------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------- | | AcrossStakedRoute AUTO | 0x125ac5a530ece0a06dd3cd3da711c054eadb57b9
[see in explorer](https://plasmascan.to/address/0x125ac5a530ece0a06dd3cd3da711c054eadb57b9) | | BungeeDepository AUTO | 0xa6cd293ba20873b3cbbbf78f156a1d56d8ab9347
[see in explorer](https://plasmascan.to/address/0xa6cd293ba20873b3cbbbf78f156a1d56d8ab9347) | | BungeeGateway AUTO | 0x8f503B6d9fFdae8d375d1E226b71B4B3144D3849
[see in explorer](https://plasmascan.to/address/0x8f503B6d9fFdae8d375d1E226b71B4B3144D3849) | | BungeeInbox AUTO | 0x5e0f8e7337c8955d2124b8e85ca74af884b3e124
[see in explorer](https://plasmascan.to/address/0x5e0f8e7337c8955d2124b8e85ca74af884b3e124) | | BungeeInboxOld AUTO | 0x52b64acc8b46349Be18a0490b20d2a3F2D7Ed2Af
[see in explorer](https://plasmascan.to/address/0x52b64acc8b46349Be18a0490b20d2a3F2D7Ed2Af) | | CalldataExecutor AUTO | 0xa873aab6a98cb764ad6d52820d129d0e3667d9f9
[see in explorer](https://plasmascan.to/address/0xa873aab6a98cb764ad6d52820d129d0e3667d9f9) | | CCTPV2RouterSingleOutput AUTO | 0x0000000000000000000000000000000000000000
[see in explorer](https://plasmascan.to/address/0x0000000000000000000000000000000000000000) | | Entrypoint AUTO | 0xc8807bD5b5c87Fe7Fc73D644Cb7800d1A4e4F09D
[see in explorer](https://plasmascan.to/address/0xc8807bD5b5c87Fe7Fc73D644Cb7800d1A4e4F09D) | | FeeCollector AUTO | 0xE12D0CE29B916fbc067f49a8ebC203ffB66E8ded
[see in explorer](https://plasmascan.to/address/0xE12D0CE29B916fbc067f49a8ebC203ffB66E8ded) | | GenericStakedRoute AUTO | 0x5013c0b3defd8f832d1b6dec750382946de5c13b
[see in explorer](https://plasmascan.to/address/0x5013c0b3defd8f832d1b6dec750382946de5c13b) | | RFQRouterSingleOutput AUTO | 0xc4088d6e5a2027e784efc0491c322a3e2621bd9e
[see in explorer](https://plasmascan.to/address/0xc4088d6e5a2027e784efc0491c322a3e2621bd9e) | | SingleOutputRequestImpl AUTO | 0xcC42AE193E97a228BbC1e747Ea4af3aa170acCA2
[see in explorer](https://plasmascan.to/address/0xcC42AE193E97a228BbC1e747Ea4af3aa170acCA2) | | Solver AUTO | 0xAe68b7117BE0026Cbd4366303f74EEcbB19e4042
[see in explorer](https://plasmascan.to/address/0xAe68b7117BE0026Cbd4366303f74EEcbB19e4042) | | StakedRouterExecutor AUTO | 0x12efda5e4d410c5da723ceb7e43942779e3fe49b
[see in explorer](https://plasmascan.to/address/0x12efda5e4d410c5da723ceb7e43942779e3fe49b) | | StakedRouterReceiver AUTO | 0x5d84f33b7c9214df23fd86a0861ac923af99954d
[see in explorer](https://plasmascan.to/address/0x5d84f33b7c9214df23fd86a0861ac923af99954d) | | StakedRouterSingleOutput AUTO | 0x167d49f106bbea59587ef3c63b33e6a421af1b8d
[see in explorer](https://plasmascan.to/address/0x167d49f106bbea59587ef3c63b33e6a421af1b8d) | | SwapExecutor AUTO | 0x6e8338B0c56f598809e72D6a31456f9D5452de72
[see in explorer](https://plasmascan.to/address/0x6e8338B0c56f598809e72D6a31456f9D5452de72) | | SwapRequestCallback AUTO | 0x32B57D94ddF656b1E1edc31250B8a386aD633a34
[see in explorer](https://plasmascan.to/address/0x32B57D94ddF656b1E1edc31250B8a386aD633a34) | | SwapRequestImpl AUTO | 0x79b5380FF38462b72e14667742f634c6610158B8
[see in explorer](https://plasmascan.to/address/0x79b5380FF38462b72e14667742f634c6610158B8) | | SwitchboardPlug AUTO | 0xc5C38A15A9D3D9dC5Fc7dE4426779B695677e45D
[see in explorer](https://plasmascan.to/address/0xc5C38A15A9D3D9dC5Fc7dE4426779B695677e45D) | | SwitchboardRouter AUTO | 0x3416daBEAf259FBE5ba455E361f23e58BAB91E3E
[see in explorer](https://plasmascan.to/address/0x3416daBEAf259FBE5ba455E361f23e58BAB91E3E) | | UnwrapAndForward AUTO | 0xd31367da48d3f9d6dd0d59de4aa1ef6023a88fad
[see in explorer](https://plasmascan.to/address/0xd31367da48d3f9d6dd0d59de4aa1ef6023a88fad) | | ZeroxV2Wrapper AUTO | 0xA3429b742B29BF07F0864a3aD9DB759592de96f1
[see in explorer](https://plasmascan.to/address/0xA3429b742B29BF07F0864a3aD9DB759592de96f1) |
| name | address | | -------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------ | | BungeeGateway AUTO | 0x01710CDb7319292Ed50A3F92561A599F5C650e2c
[see in explorer](https://explorer.plume.org/address/0x01710CDb7319292Ed50A3F92561A599F5C650e2c) | | BungeeInbox AUTO | 0x5e0f8e7337c8955d2124b8e85ca74af884b3e124
[see in explorer](https://explorer.plume.org/address/0x5e0f8e7337c8955d2124b8e85ca74af884b3e124) | | BungeeInboxOld AUTO | 0x756DE45962325e8D16Be295b333880344928Ad6C
[see in explorer](https://explorer.plume.org/address/0x756DE45962325e8D16Be295b333880344928Ad6C) | | CalldataExecutor AUTO | 0xa873aab6a98cb764ad6d52820d129d0e3667d9f9
[see in explorer](https://explorer.plume.org/address/0xa873aab6a98cb764ad6d52820d129d0e3667d9f9) | | CCTPV2RouterSingleOutput AUTO | 0x6faec2944071b2a5ebfd1b08f43f29597aad8ca1
[see in explorer](https://explorer.plume.org/address/0x6faec2944071b2a5ebfd1b08f43f29597aad8ca1) | | Entrypoint AUTO | 0x264f55044465A3d8d574D87168F2c2344D1e8c8c
[see in explorer](https://explorer.plume.org/address/0x264f55044465A3d8d574D87168F2c2344D1e8c8c) | | FeeCollector AUTO | 0x3Cd13488380e6d1e73CE185919Ac14018A78B844
[see in explorer](https://explorer.plume.org/address/0x3Cd13488380e6d1e73CE185919Ac14018A78B844) | | GenericStakedRoute AUTO | 0x5013c0b3defd8f832d1b6dec750382946de5c13b
[see in explorer](https://explorer.plume.org/address/0x5013c0b3defd8f832d1b6dec750382946de5c13b) | | RFQRouterSingleOutput AUTO | 0xc4088d6e5a2027e784efc0491c322a3e2621bd9e
[see in explorer](https://explorer.plume.org/address/0xc4088d6e5a2027e784efc0491c322a3e2621bd9e) | | SingleOutputRequestImpl AUTO | 0x5525e0700390A12995aC181eFF656E4aC0246b29
[see in explorer](https://explorer.plume.org/address/0x5525e0700390A12995aC181eFF656E4aC0246b29) | | Solver AUTO | 0xAe68b7117BE0026Cbd4366303f74EEcbB19e4042
[see in explorer](https://explorer.plume.org/address/0xAe68b7117BE0026Cbd4366303f74EEcbB19e4042) | | StakedRouterExecutor AUTO | 0x12efda5e4d410c5da723ceb7e43942779e3fe49b
[see in explorer](https://explorer.plume.org/address/0x12efda5e4d410c5da723ceb7e43942779e3fe49b) | | StakedRouterReceiver AUTO | 0x5d84f33b7c9214df23fd86a0861ac923af99954d
[see in explorer](https://explorer.plume.org/address/0x5d84f33b7c9214df23fd86a0861ac923af99954d) | | StakedRouterSingleOutput AUTO | 0x167d49f106bbea59587ef3c63b33e6a421af1b8d
[see in explorer](https://explorer.plume.org/address/0x167d49f106bbea59587ef3c63b33e6a421af1b8d) | | SwapExecutor AUTO | 0xBB1F279f61a7faC35cF4DDED87986Ab927083efb
[see in explorer](https://explorer.plume.org/address/0xBB1F279f61a7faC35cF4DDED87986Ab927083efb) | | SwapRequestCallback AUTO | 0x62e27f18fa770D456af351A9570cF79Fc48D2446
[see in explorer](https://explorer.plume.org/address/0x62e27f18fa770D456af351A9570cF79Fc48D2446) | | SwapRequestImpl AUTO | 0xC288094154d753b31f3CE5cCc029Cda3d023C466
[see in explorer](https://explorer.plume.org/address/0xC288094154d753b31f3CE5cCc029Cda3d023C466) | | SwitchboardPlug AUTO | 0x79b5380FF38462b72e14667742f634c6610158B8
[see in explorer](https://explorer.plume.org/address/0x79b5380FF38462b72e14667742f634c6610158B8) | | SwitchboardRouter AUTO | 0xcC42AE193E97a228BbC1e747Ea4af3aa170acCA2
[see in explorer](https://explorer.plume.org/address/0xcC42AE193E97a228BbC1e747Ea4af3aa170acCA2) | | UnwrapAndForward AUTO | 0xd31367da48d3f9d6dd0d59de4aa1ef6023a88fad
[see in explorer](https://explorer.plume.org/address/0xd31367da48d3f9d6dd0d59de4aa1ef6023a88fad) | | ZeroxV2Wrapper AUTO | 0x0000000000000000000000000000000000000000
[see in explorer](https://explorer.plume.org/address/0x0000000000000000000000000000000000000000) |
| name | address | | -------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------- | | AcrossImpl | 0x55D0e444d4C8E4382f5CD0A0b341Da53e284b2cF
[see in explorer](https://polygonscan.com/address/0x55D0e444d4C8E4382f5CD0A0b341Da53e284b2cF) | | AcrossImplV3 | 0x740EA79e2FccDDB4eE8bB8Fc8ccAC5eb6dFa0b40
[see in explorer](https://polygonscan.com/address/0x740EA79e2FccDDB4eE8bB8Fc8ccAC5eb6dFa0b40) | | AcrossStakedRoute AUTO | 0x125ac5a530ece0a06dd3cd3da711c054eadb57b9
[see in explorer](https://polygonscan.com/address/0x125ac5a530ece0a06dd3cd3da711c054eadb57b9) | | AcrossV3WethUnwrapper | 0x36f0B62E4eE3d30939cBccABA9D983579799D931
[see in explorer](https://polygonscan.com/address/0x36f0B62E4eE3d30939cBccABA9D983579799D931) | | AnyswapL2Impl | 0x0553582d40D4fe5445e9272f3B59f6fF80129952
[see in explorer](https://polygonscan.com/address/0x0553582d40D4fe5445e9272f3B59f6fF80129952) | | AnyswapV6L2Impl | 0x2263B27350De52B62412aab3425c9A6ca0512765
[see in explorer](https://polygonscan.com/address/0x2263B27350De52B62412aab3425c9A6ca0512765) | | BungeeDepository AUTO | 0xa6cd293ba20873b3cbbbf78f156a1d56d8ab9347
[see in explorer](https://polygonscan.com/address/0xa6cd293ba20873b3cbbbf78f156a1d56d8ab9347) | | BungeeGateway AUTO | 0x6DDe7CF4e6A6f53F058Bf5d2B4a54aFBba11EE54
[see in explorer](https://polygonscan.com/address/0x6DDe7CF4e6A6f53F058Bf5d2B4a54aFBba11EE54) | | BungeeInbox AUTO | 0x5e0f8e7337c8955d2124b8e85ca74af884b3e124
[see in explorer](https://polygonscan.com/address/0x5e0f8e7337c8955d2124b8e85ca74af884b3e124) | | BungeeInboxOld AUTO | 0x8d2d9F75346DB3c3bF54CCEED25E3D63d1E963F5
[see in explorer](https://polygonscan.com/address/0x8d2d9F75346DB3c3bF54CCEED25E3D63d1E963F5) | | CalldataExecutor AUTO | 0xa873aab6a98cb764ad6d52820d129d0e3667d9f9
[see in explorer](https://polygonscan.com/address/0xa873aab6a98cb764ad6d52820d129d0e3667d9f9) | | CCTPRouterSingleOutput AUTO | 0x3b4817827d06600f92296c5d1491818d69fc955f
[see in explorer](https://polygonscan.com/address/0x3b4817827d06600f92296c5d1491818d69fc955f) | | CCTPV2RouterSingleOutput AUTO | 0x6faec2944071b2a5ebfd1b08f43f29597aad8ca1
[see in explorer](https://polygonscan.com/address/0x6faec2944071b2a5ebfd1b08f43f29597aad8ca1) | | CelerImpl | 0xFb462C056912FE727705fEFDf41f88004DA6a74B
[see in explorer](https://polygonscan.com/address/0xFb462C056912FE727705fEFDf41f88004DA6a74B) | | CelerStakedRoute AUTO | 0xf1c07b6dddc480602d0304c31e6b13ff711b5828
[see in explorer](https://polygonscan.com/address/0xf1c07b6dddc480602d0304c31e6b13ff711b5828) | | CelerStorageWrapper | 0x7c6C373190421988fA31E64f369C45205676C1f0
[see in explorer](https://polygonscan.com/address/0x7c6C373190421988fA31E64f369C45205676C1f0) | | CelerV2Impl | 0xC953a4d1e959D6C1f0718447008e02C477A9051F
[see in explorer](https://polygonscan.com/address/0xC953a4d1e959D6C1f0718447008e02C477A9051F) | | DisabledSocketRoute | 0x0f34A522FF82151c90679b73211955068FD854F1
[see in explorer](https://polygonscan.com/address/0x0f34A522FF82151c90679b73211955068FD854F1) | | Entrypoint AUTO | 0xF0FaB952E363eAa34edCA4d05e330B1dC475f010
[see in explorer](https://polygonscan.com/address/0xF0FaB952E363eAa34edCA4d05e330B1dC475f010) | | FeeCollector AUTO | 0xecD3D10919a77Ef3352A88816Aea379091a0084B
[see in explorer](https://polygonscan.com/address/0xecD3D10919a77Ef3352A88816Aea379091a0084B) | | FeesTakerController | 0x58B3353f1249cc65993D42E4eFc60F2a0CA1062f
[see in explorer](https://polygonscan.com/address/0x58B3353f1249cc65993D42E4eFc60F2a0CA1062f) | | GenericStakedRoute AUTO | 0x5013c0b3defd8f832d1b6dec750382946de5c13b
[see in explorer](https://polygonscan.com/address/0x5013c0b3defd8f832d1b6dec750382946de5c13b) | | HopCctpImpl | 0x0dBae96aC6cc1b7D1aE8a59B4eEd0826Cf6693FC
[see in explorer](https://polygonscan.com/address/0x0dBae96aC6cc1b7D1aE8a59B4eEd0826Cf6693FC) | | HopImplL2 | 0x5CddbecAF8603E5e0bC771A46D48e148593351eA
[see in explorer](https://polygonscan.com/address/0x5CddbecAF8603E5e0bC771A46D48e148593351eA) | | HopImplL2V2 | 0x7a7b244648FcEb5926D16c4234157F9508c45E5f
[see in explorer](https://polygonscan.com/address/0x7a7b244648FcEb5926D16c4234157F9508c45E5f) | | HyphenImpl | 0xBAde7653492f1a70c3725EdeB2D28F3C84369809
[see in explorer](https://polygonscan.com/address/0xBAde7653492f1a70c3725EdeB2D28F3C84369809) | | KyberSwapImpl | 0xEfc1ef8ab6C7FBBe2a74948E2397fAe5D685728d
[see in explorer](https://polygonscan.com/address/0xEfc1ef8ab6C7FBBe2a74948E2397fAe5D685728d) | | MagpieSwapImpl | 0x43BC03bed86642E79CB45525270D98E6623175E8
[see in explorer](https://polygonscan.com/address/0x43BC03bed86642E79CB45525270D98E6623175E8) | | MagpieSwapImplStaging AUTO | 0x68920c9D01624b5754eAa5ed7AB6E6E8732b10c7
[see in explorer](https://polygonscan.com/address/0x68920c9D01624b5754eAa5ed7AB6E6E8732b10c7) | | MayanBridgeImpl | 0xae46BBa06B397C95f42e31E391649801bC4e7989
[see in explorer](https://polygonscan.com/address/0xae46BBa06B397C95f42e31E391649801bC4e7989) | | MayanBridgeImplV2 | 0xB412f6F3d855a79EBe0AF5040cC25A7f9AB7645b
[see in explorer](https://polygonscan.com/address/0xB412f6F3d855a79EBe0AF5040cC25A7f9AB7645b) | | OneInchImpl | 0xb95625B293A2474AD55B546a0Ddd997c16bB8812
[see in explorer](https://polygonscan.com/address/0xb95625B293A2474AD55B546a0Ddd997c16bB8812) | | OneInchImpStaging AUTO | 0xF6C53B61440B2633fFA9FE3B1603C82C8AbFceA0
[see in explorer](https://polygonscan.com/address/0xF6C53B61440B2633fFA9FE3B1603C82C8AbFceA0) | | OpenOceanSwapImpl AUTO | 0x9B532719C3C4CCc767498Eb987ae1f840052ffFa
[see in explorer](https://polygonscan.com/address/0x9B532719C3C4CCc767498Eb987ae1f840052ffFa) | | OpenoceanSwapImplStaging AUTO | 0x829ED8391aFA5987991c6fd70c71938B87b7795C
[see in explorer](https://polygonscan.com/address/0x829ED8391aFA5987991c6fd70c71938B87b7795C) | | RainbowSwapImpl | 0x2d53A92f5F57b1Ae10881a3963F18AFB843De435
[see in explorer](https://polygonscan.com/address/0x2d53A92f5F57b1Ae10881a3963F18AFB843De435) | | RefuelBridgeImpl | 0xFC42BcAA16a54e7E48D0c39e4713dC5923BD551D
[see in explorer](https://polygonscan.com/address/0xFC42BcAA16a54e7E48D0c39e4713dC5923BD551D) | | RefuelBridgeImplStaging AUTO | 0xD1adeaE7db6C261141393945cC2229A355E9f199
[see in explorer](https://polygonscan.com/address/0xD1adeaE7db6C261141393945cC2229A355E9f199) | | RefuelSwapAndBridgeController | 0x1717004FA6668bAAD3a20258876A88dAd908cd21
[see in explorer](https://polygonscan.com/address/0x1717004FA6668bAAD3a20258876A88dAd908cd21) | | RefuelSwapAndBridgeControllerStaging AUTO | 0x3c3b02B5E87992e14e070957447bF646130e0e8e
[see in explorer](https://polygonscan.com/address/0x3c3b02B5E87992e14e070957447bF646130e0e8e) | | RFQRouterSingleOutput AUTO | 0xc4088d6e5a2027e784efc0491c322a3e2621bd9e
[see in explorer](https://polygonscan.com/address/0xc4088d6e5a2027e784efc0491c322a3e2621bd9e) | | SingleOutputRequestImpl AUTO | 0x4bA60a120b12d070c26393Db76779DeB323e5aA4
[see in explorer](https://polygonscan.com/address/0x4bA60a120b12d070c26393Db76779DeB323e5aA4) | | SocketDeployFactory | 0x71630095e3F08A86aFC73f7b07342192adf39C55
[see in explorer](https://polygonscan.com/address/0x71630095e3F08A86aFC73f7b07342192adf39C55) | | SocketGateway | 0x3a23F943181408EAC424116Af7b7790c94Cb97a5
[see in explorer](https://polygonscan.com/address/0x3a23F943181408EAC424116Af7b7790c94Cb97a5) | | SocketGatewayStaging AUTO | 0xBC13C22E754d47F8d78d21b432B66FE5b439D568
[see in explorer](https://polygonscan.com/address/0xBC13C22E754d47F8d78d21b432B66FE5b439D568) | | Solver AUTO | 0xAe68b7117BE0026Cbd4366303f74EEcbB19e4042
[see in explorer](https://polygonscan.com/address/0xAe68b7117BE0026Cbd4366303f74EEcbB19e4042) | | StakedRouterExecutor AUTO | 0x12efda5e4d410c5da723ceb7e43942779e3fe49b
[see in explorer](https://polygonscan.com/address/0x12efda5e4d410c5da723ceb7e43942779e3fe49b) | | StakedRouterReceiver AUTO | 0x5d84f33b7c9214df23fd86a0861ac923af99954d
[see in explorer](https://polygonscan.com/address/0x5d84f33b7c9214df23fd86a0861ac923af99954d) | | StakedRouterSingleOutput AUTO | 0x167d49f106bbea59587ef3c63b33e6a421af1b8d
[see in explorer](https://polygonscan.com/address/0x167d49f106bbea59587ef3c63b33e6a421af1b8d) | | StargateImplL2 | 0xB24e2B830f4c78a1993F9b046089321764B28902
[see in explorer](https://polygonscan.com/address/0xB24e2B830f4c78a1993F9b046089321764B28902) | | StargateImplL2V2 | 0xdC5E23287b4f0E8170f9F0FE17F139E65DC7eAE0
[see in explorer](https://polygonscan.com/address/0xdC5E23287b4f0E8170f9F0FE17F139E65DC7eAE0) | | StargateImplV2 | 0x0CB0552405846a4fcd83FBD791eF4a1F43ab3D94
[see in explorer](https://polygonscan.com/address/0x0CB0552405846a4fcd83FBD791eF4a1F43ab3D94) | | SwapExecutor AUTO | 0x31D27CeB1A388556F28AaF6BF7B45eFA437B35b8
[see in explorer](https://polygonscan.com/address/0x31D27CeB1A388556F28AaF6BF7B45eFA437B35b8) | | SwapRequestCallback AUTO | 0x4682e8315B80cF757e2077280E0471729c992Ed3
[see in explorer](https://polygonscan.com/address/0x4682e8315B80cF757e2077280E0471729c992Ed3) | | SwapRequestImpl AUTO | 0xd589562E76a826a01aCcd4Cb31928656c940b769
[see in explorer](https://polygonscan.com/address/0xd589562E76a826a01aCcd4Cb31928656c940b769) | | SwitchboardPlug AUTO | 0xFD4AdfA24c351C485D4b05f268c75216DBDCE088
[see in explorer](https://polygonscan.com/address/0xFD4AdfA24c351C485D4b05f268c75216DBDCE088) | | SwitchboardRouter AUTO | 0x69c6702EFC57f3Bb29E9896120246D91B33Bbc44
[see in explorer](https://polygonscan.com/address/0x69c6702EFC57f3Bb29E9896120246D91B33Bbc44) | | SymbiosisBridgeImpl | 0xAE1640392f8C82EcCbD07AE8Ec0Af3e0C0Ca9743
[see in explorer](https://polygonscan.com/address/0xAE1640392f8C82EcCbD07AE8Ec0Af3e0C0Ca9743) | | SynapseBridgeImpl | 0xbb5852E0ae9730D935dCE4eFD6A7Ce2b3c733946
[see in explorer](https://polygonscan.com/address/0xbb5852E0ae9730D935dCE4eFD6A7Ce2b3c733946) | | UnwrapAndForward AUTO | 0xd31367da48d3f9d6dd0d59de4aa1ef6023a88fad
[see in explorer](https://polygonscan.com/address/0xd31367da48d3f9d6dd0d59de4aa1ef6023a88fad) | | WrappedTokenSwapperImpl | 0xb2C03411Ce22149B3cC9A711b1a1a70953CD6c57
[see in explorer](https://polygonscan.com/address/0xb2C03411Ce22149B3cC9A711b1a1a70953CD6c57) | | ZeroXSwapImpl | 0x37477A76e5dc52bd25Cf6B0B38ee2b4bEC112428
[see in explorer](https://polygonscan.com/address/0x37477A76e5dc52bd25Cf6B0B38ee2b4bEC112428) | | ZeroXSwapImplStaging AUTO | 0x3fFCcb464592B8c0ecB55AcD3066947695Fe7a32
[see in explorer](https://polygonscan.com/address/0x3fFCcb464592B8c0ecB55AcD3066947695Fe7a32) | | ZeroxV2SwapImpl | 0x469185Aa4180Ef4E0E2a847c927b16357FBC3367
[see in explorer](https://polygonscan.com/address/0x469185Aa4180Ef4E0E2a847c927b16357FBC3367) | | ZeroxV2SwapImplStaging AUTO | 0xECe278805B61b2579dC21DA66681b359be85f546
[see in explorer](https://polygonscan.com/address/0xECe278805B61b2579dC21DA66681b359be85f546) | | ZeroxV2Wrapper AUTO | 0x05b108fD88d042eF0145DCcd564DCd6471852FC2
[see in explorer](https://polygonscan.com/address/0x05b108fD88d042eF0145DCcd564DCd6471852FC2) |
| name | address | | ------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------- | | AnyswapV6L2Impl | 0x1768C1D2900f1408D44FbB1EdCc306F94aF852ae
[see in explorer](https://www.oklink.com/polygon-zkevm/address/0x1768C1D2900f1408D44FbB1EdCc306F94aF852ae) | | CelerImpl | 0xFAAFb26C06a45962E97452E5d4310df2586623A2
[see in explorer](https://www.oklink.com/polygon-zkevm/address/0xFAAFb26C06a45962E97452E5d4310df2586623A2) | | CelerStorageWrapper | 0xE186a05FB020324a7cA61d80138BB1EA66DDDbDF
[see in explorer](https://www.oklink.com/polygon-zkevm/address/0xE186a05FB020324a7cA61d80138BB1EA66DDDbDF) | | CelerV2Impl | 0x21A63b31c4029A9f5ac690De159d45aB2Ebf1378
[see in explorer](https://www.oklink.com/polygon-zkevm/address/0x21A63b31c4029A9f5ac690De159d45aB2Ebf1378) | | DisabledSocketRoute | 0x0f34A522FF82151c90679b73211955068FD854F1
[see in explorer](https://www.oklink.com/polygon-zkevm/address/0x0f34A522FF82151c90679b73211955068FD854F1) | | FeesTakerController | 0x5ce6d37c2fd66Fe1531F44C5141e815b7c9aC8a4
[see in explorer](https://www.oklink.com/polygon-zkevm/address/0x5ce6d37c2fd66Fe1531F44C5141e815b7c9aC8a4) | | RefuelBridgeImpl | 0x89800A17CEA97dB4A8F0705d7f8da770032397f5
[see in explorer](https://www.oklink.com/polygon-zkevm/address/0x89800A17CEA97dB4A8F0705d7f8da770032397f5) | | SocketDeployFactory | 0x71630095e3F08A86aFC73f7b07342192adf39C55
[see in explorer](https://www.oklink.com/polygon-zkevm/address/0x71630095e3F08A86aFC73f7b07342192adf39C55) | | SocketGateway | 0x3a23F943181408EAC424116Af7b7790c94Cb97a5
[see in explorer](https://www.oklink.com/polygon-zkevm/address/0x3a23F943181408EAC424116Af7b7790c94Cb97a5) | | SymbiosisBridgeImpl | 0x32c75ee3e08207ecc836048c1f7115048f076a1e
[see in explorer](https://www.oklink.com/polygon-zkevm/address/0x32c75ee3e08207ecc836048c1f7115048f076a1e) |
| name | address | | -------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------- | | AcrossImplV3 | 0x740EA79e2FccDDB4eE8bB8Fc8ccAC5eb6dFa0b40
[see in explorer](https://scrollscan.com/address/0x740EA79e2FccDDB4eE8bB8Fc8ccAC5eb6dFa0b40) | | AcrossStakedRoute AUTO | 0x125ac5a530ece0a06dd3cd3da711c054eadb57b9
[see in explorer](https://scrollscan.com/address/0x125ac5a530ece0a06dd3cd3da711c054eadb57b9) | | AcrossV3WethUnwrapper | 0x36f0B62E4eE3d30939cBccABA9D983579799D931
[see in explorer](https://scrollscan.com/address/0x36f0B62E4eE3d30939cBccABA9D983579799D931) | | BungeeGateway AUTO | 0x8f503B6d9fFdae8d375d1E226b71B4B3144D3849
[see in explorer](https://scrollscan.com/address/0x8f503B6d9fFdae8d375d1E226b71B4B3144D3849) | | BungeeInbox AUTO | 0x5e0f8e7337c8955d2124b8e85ca74af884b3e124
[see in explorer](https://scrollscan.com/address/0x5e0f8e7337c8955d2124b8e85ca74af884b3e124) | | BungeeInboxOld AUTO | 0x7f0d90E4e81B77C6eEFF544c461b2f53BFA5A6aD
[see in explorer](https://scrollscan.com/address/0x7f0d90E4e81B77C6eEFF544c461b2f53BFA5A6aD) | | CalldataExecutor AUTO | 0xa873aab6a98cb764ad6d52820d129d0e3667d9f9
[see in explorer](https://scrollscan.com/address/0xa873aab6a98cb764ad6d52820d129d0e3667d9f9) | | CCTPRouterSingleOutput AUTO | 0x0000000000000000000000000000000000000000
[see in explorer](https://scrollscan.com/address/0x0000000000000000000000000000000000000000) | | CCTPV2RouterSingleOutput AUTO | 0x0000000000000000000000000000000000000000
[see in explorer](https://scrollscan.com/address/0x0000000000000000000000000000000000000000) | | CelerStorageWrapper | 0x6163484b8d0Db43238C1875bcD7dA987e1824273
[see in explorer](https://scrollscan.com/address/0x6163484b8d0Db43238C1875bcD7dA987e1824273) | | CelerV2Impl | 0xa28f5a1575bbc9758EAc182CE3E66A2734621F4F
[see in explorer](https://scrollscan.com/address/0xa28f5a1575bbc9758EAc182CE3E66A2734621F4F) | | DisabledSocketRoute | 0x0f34A522FF82151c90679b73211955068FD854F1
[see in explorer](https://scrollscan.com/address/0x0f34A522FF82151c90679b73211955068FD854F1) | | Entrypoint AUTO | 0xc8807bD5b5c87Fe7Fc73D644Cb7800d1A4e4F09D
[see in explorer](https://scrollscan.com/address/0xc8807bD5b5c87Fe7Fc73D644Cb7800d1A4e4F09D) | | FeeCollector AUTO | 0xE12D0CE29B916fbc067f49a8ebC203ffB66E8ded
[see in explorer](https://scrollscan.com/address/0xE12D0CE29B916fbc067f49a8ebC203ffB66E8ded) | | GenericStakedRoute AUTO | 0x5013c0b3defd8f832d1b6dec750382946de5c13b
[see in explorer](https://scrollscan.com/address/0x5013c0b3defd8f832d1b6dec750382946de5c13b) | | KyberSwapImpl | 0x70ce162b46C172d20df5573fF86055a12A658873
[see in explorer](https://scrollscan.com/address/0x70ce162b46C172d20df5573fF86055a12A658873) | | MagpieSwapImpl | 0xfb9fDe2b893C9438e3b0393D8f94000ea95f15E6
[see in explorer](https://scrollscan.com/address/0xfb9fDe2b893C9438e3b0393D8f94000ea95f15E6) | | OpenOceanSwapImpl AUTO | 0x413d1edcF7C0837F09e0DB6375DdE6D5F066ABaC
[see in explorer](https://scrollscan.com/address/0x413d1edcF7C0837F09e0DB6375DdE6D5F066ABaC) | | RFQRouterSingleOutput AUTO | 0xc4088d6e5a2027e784efc0491c322a3e2621bd9e
[see in explorer](https://scrollscan.com/address/0xc4088d6e5a2027e784efc0491c322a3e2621bd9e) | | SingleOutputRequestImpl AUTO | 0xcC42AE193E97a228BbC1e747Ea4af3aa170acCA2
[see in explorer](https://scrollscan.com/address/0xcC42AE193E97a228BbC1e747Ea4af3aa170acCA2) | | SocketDeployFactory | 0x71630095e3F08A86aFC73f7b07342192adf39C55
[see in explorer](https://scrollscan.com/address/0x71630095e3F08A86aFC73f7b07342192adf39C55) | | SocketGateway | 0x3a23F943181408EAC424116Af7b7790c94Cb97a5
[see in explorer](https://scrollscan.com/address/0x3a23F943181408EAC424116Af7b7790c94Cb97a5) | | Solver AUTO | 0xAe68b7117BE0026Cbd4366303f74EEcbB19e4042
[see in explorer](https://scrollscan.com/address/0xAe68b7117BE0026Cbd4366303f74EEcbB19e4042) | | StakedRouterExecutor AUTO | 0x12efda5e4d410c5da723ceb7e43942779e3fe49b
[see in explorer](https://scrollscan.com/address/0x12efda5e4d410c5da723ceb7e43942779e3fe49b) | | StakedRouterReceiver AUTO | 0x5d84f33b7c9214df23fd86a0861ac923af99954d
[see in explorer](https://scrollscan.com/address/0x5d84f33b7c9214df23fd86a0861ac923af99954d) | | StakedRouterSingleOutput AUTO | 0x167d49f106bbea59587ef3c63b33e6a421af1b8d
[see in explorer](https://scrollscan.com/address/0x167d49f106bbea59587ef3c63b33e6a421af1b8d) | | StargateImplV2 | 0x4682e8315B80cF757e2077280E0471729c992Ed3
[see in explorer](https://scrollscan.com/address/0x4682e8315B80cF757e2077280E0471729c992Ed3) | | SwapExecutor AUTO | 0x6e8338B0c56f598809e72D6a31456f9D5452de72
[see in explorer](https://scrollscan.com/address/0x6e8338B0c56f598809e72D6a31456f9D5452de72) | | SwapRequestCallback AUTO | 0xEFB37Bd3a9ed2f768bf6f79d0379fe7f9BE50F49
[see in explorer](https://scrollscan.com/address/0xEFB37Bd3a9ed2f768bf6f79d0379fe7f9BE50F49) | | SwapRequestImpl AUTO | 0x79b5380FF38462b72e14667742f634c6610158B8
[see in explorer](https://scrollscan.com/address/0x79b5380FF38462b72e14667742f634c6610158B8) | | SwitchboardPlug AUTO | 0xc5C38A15A9D3D9dC5Fc7dE4426779B695677e45D
[see in explorer](https://scrollscan.com/address/0xc5C38A15A9D3D9dC5Fc7dE4426779B695677e45D) | | SwitchboardRouter AUTO | 0x3416daBEAf259FBE5ba455E361f23e58BAB91E3E
[see in explorer](https://scrollscan.com/address/0x3416daBEAf259FBE5ba455E361f23e58BAB91E3E) | | UnwrapAndForward AUTO | 0xd31367da48d3f9d6dd0d59de4aa1ef6023a88fad
[see in explorer](https://scrollscan.com/address/0xd31367da48d3f9d6dd0d59de4aa1ef6023a88fad) | | ZeroxV2SwapImpl | 0xCFee2171DC6c670eF1E0Df832df0cF37C31705E9
[see in explorer](https://scrollscan.com/address/0xCFee2171DC6c670eF1E0Df832df0cF37C31705E9) | | ZeroxV2Wrapper AUTO | 0x614595189d16995Fe22a5c267B220C803e50966F
[see in explorer](https://scrollscan.com/address/0x614595189d16995Fe22a5c267B220C803e50966F) |
| name | address | | -------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------- | | BungeeGateway AUTO | 0x8f503B6d9fFdae8d375d1E226b71B4B3144D3849
[see in explorer](https://seistream.app/address/0x8f503B6d9fFdae8d375d1E226b71B4B3144D3849) | | BungeeInbox AUTO | 0x5e0f8e7337c8955d2124b8e85ca74af884b3e124
[see in explorer](https://seistream.app/address/0x5e0f8e7337c8955d2124b8e85ca74af884b3e124) | | BungeeInboxOld AUTO | 0x7ad979C6b0C9924F79ea571280071595ba13D002
[see in explorer](https://seistream.app/address/0x7ad979C6b0C9924F79ea571280071595ba13D002) | | CalldataExecutor AUTO | 0xa873aab6a98cb764ad6d52820d129d0e3667d9f9
[see in explorer](https://seistream.app/address/0xa873aab6a98cb764ad6d52820d129d0e3667d9f9) | | CCTPV2RouterSingleOutput AUTO | 0x6faec2944071b2a5ebfd1b08f43f29597aad8ca1
[see in explorer](https://seistream.app/address/0x6faec2944071b2a5ebfd1b08f43f29597aad8ca1) | | Entrypoint AUTO | 0xc8807bD5b5c87Fe7Fc73D644Cb7800d1A4e4F09D
[see in explorer](https://seistream.app/address/0xc8807bD5b5c87Fe7Fc73D644Cb7800d1A4e4F09D) | | FeeCollector AUTO | 0xE12D0CE29B916fbc067f49a8ebC203ffB66E8ded
[see in explorer](https://seistream.app/address/0xE12D0CE29B916fbc067f49a8ebC203ffB66E8ded) | | GenericStakedRoute AUTO | 0x5013c0b3defd8f832d1b6dec750382946de5c13b
[see in explorer](https://seistream.app/address/0x5013c0b3defd8f832d1b6dec750382946de5c13b) | | RFQRouterSingleOutput AUTO | 0xc4088d6e5a2027e784efc0491c322a3e2621bd9e
[see in explorer](https://seistream.app/address/0xc4088d6e5a2027e784efc0491c322a3e2621bd9e) | | SingleOutputRequestImpl AUTO | 0xcC42AE193E97a228BbC1e747Ea4af3aa170acCA2
[see in explorer](https://seistream.app/address/0xcC42AE193E97a228BbC1e747Ea4af3aa170acCA2) | | Solver AUTO | 0xae68b7117be0026cbd4366303f74eecbb19e4042
[see in explorer](https://seistream.app/address/0xae68b7117be0026cbd4366303f74eecbb19e4042) | | StakedRouterExecutor AUTO | 0x12efda5e4d410c5da723ceb7e43942779e3fe49b
[see in explorer](https://seistream.app/address/0x12efda5e4d410c5da723ceb7e43942779e3fe49b) | | StakedRouterReceiver AUTO | 0x5d84f33b7c9214df23fd86a0861ac923af99954d
[see in explorer](https://seistream.app/address/0x5d84f33b7c9214df23fd86a0861ac923af99954d) | | StakedRouterSingleOutput AUTO | 0x167d49f106bbea59587ef3c63b33e6a421af1b8d
[see in explorer](https://seistream.app/address/0x167d49f106bbea59587ef3c63b33e6a421af1b8d) | | SwapExecutor AUTO | 0x6e8338B0c56f598809e72D6a31456f9D5452de72
[see in explorer](https://seistream.app/address/0x6e8338B0c56f598809e72D6a31456f9D5452de72) | | SwapRequestCallback AUTO | 0x84Fd802Dd211D483Eb115Ee8a80d0029784c7637
[see in explorer](https://seistream.app/address/0x84Fd802Dd211D483Eb115Ee8a80d0029784c7637) | | SwapRequestImpl AUTO | 0x79b5380FF38462b72e14667742f634c6610158B8
[see in explorer](https://seistream.app/address/0x79b5380FF38462b72e14667742f634c6610158B8) | | SwitchboardPlug AUTO | 0xc5C38A15A9D3D9dC5Fc7dE4426779B695677e45D
[see in explorer](https://seistream.app/address/0xc5C38A15A9D3D9dC5Fc7dE4426779B695677e45D) | | SwitchboardRouter AUTO | 0x3416daBEAf259FBE5ba455E361f23e58BAB91E3E
[see in explorer](https://seistream.app/address/0x3416daBEAf259FBE5ba455E361f23e58BAB91E3E) | | UnwrapAndForward AUTO | 0xd31367da48d3f9d6dd0d59de4aa1ef6023a88fad
[see in explorer](https://seistream.app/address/0xd31367da48d3f9d6dd0d59de4aa1ef6023a88fad) |
| name | address | | --------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------ | | BungeeGateway AUTO | bung5E8oYryGA7d2ivgoe1spoZRS88cvcwoK23TtExg
[see in explorer](https://solscan.io/address/bung5E8oYryGA7d2ivgoe1spoZRS88cvcwoK23TtExg) |
| name | address | | -------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------- | | AcrossStakedRoute AUTO | 0x125ac5a530ece0a06dd3cd3da711c054eadb57b9
[see in explorer](https://soneium.blockscout.com/address/0x125ac5a530ece0a06dd3cd3da711c054eadb57b9) | | BungeeGateway AUTO | 0x8f503B6d9fFdae8d375d1E226b71B4B3144D3849
[see in explorer](https://soneium.blockscout.com/address/0x8f503B6d9fFdae8d375d1E226b71B4B3144D3849) | | BungeeInbox AUTO | 0x5e0f8e7337c8955d2124b8e85ca74af884b3e124
[see in explorer](https://soneium.blockscout.com/address/0x5e0f8e7337c8955d2124b8e85ca74af884b3e124) | | BungeeInboxOld AUTO | 0xF22bb9358a72591B652cfd6861C532BC90fF5b86
[see in explorer](https://soneium.blockscout.com/address/0xF22bb9358a72591B652cfd6861C532BC90fF5b86) | | CalldataExecutor AUTO | 0xa873aab6a98cb764ad6d52820d129d0e3667d9f9
[see in explorer](https://soneium.blockscout.com/address/0xa873aab6a98cb764ad6d52820d129d0e3667d9f9) | | CCTPRouterSingleOutput AUTO | 0x0000000000000000000000000000000000000000
[see in explorer](https://soneium.blockscout.com/address/0x0000000000000000000000000000000000000000) | | CCTPV2RouterSingleOutput AUTO | 0x0000000000000000000000000000000000000000
[see in explorer](https://soneium.blockscout.com/address/0x0000000000000000000000000000000000000000) | | Entrypoint AUTO | 0xc8807bD5b5c87Fe7Fc73D644Cb7800d1A4e4F09D
[see in explorer](https://soneium.blockscout.com/address/0xc8807bD5b5c87Fe7Fc73D644Cb7800d1A4e4F09D) | | FeeCollector AUTO | 0xE12D0CE29B916fbc067f49a8ebC203ffB66E8ded
[see in explorer](https://soneium.blockscout.com/address/0xE12D0CE29B916fbc067f49a8ebC203ffB66E8ded) | | GenericStakedRoute AUTO | 0x5013c0b3defd8f832d1b6dec750382946de5c13b
[see in explorer](https://soneium.blockscout.com/address/0x5013c0b3defd8f832d1b6dec750382946de5c13b) | | RFQRouterSingleOutput AUTO | 0xc4088d6e5a2027e784efc0491c322a3e2621bd9e
[see in explorer](https://soneium.blockscout.com/address/0xc4088d6e5a2027e784efc0491c322a3e2621bd9e) | | SingleOutputRequestImpl AUTO | 0xcC42AE193E97a228BbC1e747Ea4af3aa170acCA2
[see in explorer](https://soneium.blockscout.com/address/0xcC42AE193E97a228BbC1e747Ea4af3aa170acCA2) | | Solver AUTO | 0xAe68b7117BE0026Cbd4366303f74EEcbB19e4042
[see in explorer](https://soneium.blockscout.com/address/0xAe68b7117BE0026Cbd4366303f74EEcbB19e4042) | | StakedRouterExecutor AUTO | 0x12efda5e4d410c5da723ceb7e43942779e3fe49b
[see in explorer](https://soneium.blockscout.com/address/0x12efda5e4d410c5da723ceb7e43942779e3fe49b) | | StakedRouterReceiver AUTO | 0x5d84f33b7c9214df23fd86a0861ac923af99954d
[see in explorer](https://soneium.blockscout.com/address/0x5d84f33b7c9214df23fd86a0861ac923af99954d) | | StakedRouterSingleOutput AUTO | 0x167d49f106bbea59587ef3c63b33e6a421af1b8d
[see in explorer](https://soneium.blockscout.com/address/0x167d49f106bbea59587ef3c63b33e6a421af1b8d) | | SwapExecutor AUTO | 0x6e8338B0c56f598809e72D6a31456f9D5452de72
[see in explorer](https://soneium.blockscout.com/address/0x6e8338B0c56f598809e72D6a31456f9D5452de72) | | SwapRequestCallback AUTO | 0xEFB37Bd3a9ed2f768bf6f79d0379fe7f9BE50F49
[see in explorer](https://soneium.blockscout.com/address/0xEFB37Bd3a9ed2f768bf6f79d0379fe7f9BE50F49) | | SwapRequestImpl AUTO | 0x79b5380FF38462b72e14667742f634c6610158B8
[see in explorer](https://soneium.blockscout.com/address/0x79b5380FF38462b72e14667742f634c6610158B8) | | SwitchboardPlug AUTO | 0xc5C38A15A9D3D9dC5Fc7dE4426779B695677e45D
[see in explorer](https://soneium.blockscout.com/address/0xc5C38A15A9D3D9dC5Fc7dE4426779B695677e45D) | | SwitchboardRouter AUTO | 0x3416daBEAf259FBE5ba455E361f23e58BAB91E3E
[see in explorer](https://soneium.blockscout.com/address/0x3416daBEAf259FBE5ba455E361f23e58BAB91E3E) | | UnwrapAndForward AUTO | 0xd31367da48d3f9d6dd0d59de4aa1ef6023a88fad
[see in explorer](https://soneium.blockscout.com/address/0xd31367da48d3f9d6dd0d59de4aa1ef6023a88fad) | | ZeroxV2Wrapper AUTO | 0x0000000000000000000000000000000000000000
[see in explorer](https://soneium.blockscout.com/address/0x0000000000000000000000000000000000000000) |
| name | address | | -------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------- | | BungeeGateway AUTO | 0x11918f1cb6db5e008A692F47c5320216fba6054B
[see in explorer](https://sonicscan.org/address/0x11918f1cb6db5e008A692F47c5320216fba6054B) | | BungeeInbox AUTO | 0x5e0f8e7337c8955d2124b8e85ca74af884b3e124
[see in explorer](https://sonicscan.org/address/0x5e0f8e7337c8955d2124b8e85ca74af884b3e124) | | BungeeInboxOld AUTO | 0x9D05eD9C0258ce034c6788944841Fe5825eDa0c4
[see in explorer](https://sonicscan.org/address/0x9D05eD9C0258ce034c6788944841Fe5825eDa0c4) | | CalldataExecutor AUTO | 0xa873aab6a98cb764ad6d52820d129d0e3667d9f9
[see in explorer](https://sonicscan.org/address/0xa873aab6a98cb764ad6d52820d129d0e3667d9f9) | | CCTPRouterSingleOutput AUTO | 0x0000000000000000000000000000000000000000
[see in explorer](https://sonicscan.org/address/0x0000000000000000000000000000000000000000) | | CctpV2Impl | 0x7db3a26e620f501CBbe3F6D98E7B9BF7bE63Ea5f
[see in explorer](https://sonicscan.org/address/0x7db3a26e620f501CBbe3F6D98E7B9BF7bE63Ea5f) | | CCTPV2RouterSingleOutput AUTO | 0x6faec2944071b2a5ebfd1b08f43f29597aad8ca1
[see in explorer](https://sonicscan.org/address/0x6faec2944071b2a5ebfd1b08f43f29597aad8ca1) | | DisabledSocketRoute | 0x0f34A522FF82151c90679b73211955068FD854F1
[see in explorer](https://sonicscan.org/address/0x0f34A522FF82151c90679b73211955068FD854F1) | | Entrypoint AUTO | 0x407BE335f94C30Ee2876c4cF86ce08A46f518cF3
[see in explorer](https://sonicscan.org/address/0x407BE335f94C30Ee2876c4cF86ce08A46f518cF3) | | FeeCollector AUTO | 0xe772551F88E2c14aEcC880dF6b7CBd574561bf82
[see in explorer](https://sonicscan.org/address/0xe772551F88E2c14aEcC880dF6b7CBd574561bf82) | | FeesTakerController | 0x48E15f841D0Dd0C6e1B93432374EEDB47E9eBbeB
[see in explorer](https://sonicscan.org/address/0x48E15f841D0Dd0C6e1B93432374EEDB47E9eBbeB) | | GenericStakedRoute AUTO | 0x5013c0b3defd8f832d1b6dec750382946de5c13b
[see in explorer](https://sonicscan.org/address/0x5013c0b3defd8f832d1b6dec750382946de5c13b) | | MagpieSwapImpl | 0xFBd820d7C4aFB954532107b8DD37D0515C90eBb0
[see in explorer](https://sonicscan.org/address/0xFBd820d7C4aFB954532107b8DD37D0515C90eBb0) | | OpenOceanSwapImpl AUTO | 0x831e9cDe2Ee7070203559CDd6Ec60745b9565B95
[see in explorer](https://sonicscan.org/address/0x831e9cDe2Ee7070203559CDd6Ec60745b9565B95) | | RefuelSwapAndBridgeController | 0x7Dab58E25c235fdeA1D3ffC401a94D9afFAff598
[see in explorer](https://sonicscan.org/address/0x7Dab58E25c235fdeA1D3ffC401a94D9afFAff598) | | RFQRouterSingleOutput AUTO | 0xc4088d6e5a2027e784efc0491c322a3e2621bd9e
[see in explorer](https://sonicscan.org/address/0xc4088d6e5a2027e784efc0491c322a3e2621bd9e) | | SingleOutputRequestImpl AUTO | 0x26Be0Eb9Ad8877e77da075dEc15b683D9EfD56aD
[see in explorer](https://sonicscan.org/address/0x26Be0Eb9Ad8877e77da075dEc15b683D9EfD56aD) | | SocketDeployFactory | 0x71630095e3F08A86aFC73f7b07342192adf39C55
[see in explorer](https://sonicscan.org/address/0x71630095e3F08A86aFC73f7b07342192adf39C55) | | SocketGateway | 0x3a23F943181408EAC424116Af7b7790c94Cb97a5
[see in explorer](https://sonicscan.org/address/0x3a23F943181408EAC424116Af7b7790c94Cb97a5) | | Solver AUTO | 0xAe68b7117BE0026Cbd4366303f74EEcbB19e4042
[see in explorer](https://sonicscan.org/address/0xAe68b7117BE0026Cbd4366303f74EEcbB19e4042) | | StakedRouterExecutor AUTO | 0x12efda5e4d410c5da723ceb7e43942779e3fe49b
[see in explorer](https://sonicscan.org/address/0x12efda5e4d410c5da723ceb7e43942779e3fe49b) | | StakedRouterReceiver AUTO | 0x5d84f33b7c9214df23fd86a0861ac923af99954d
[see in explorer](https://sonicscan.org/address/0x5d84f33b7c9214df23fd86a0861ac923af99954d) | | StakedRouterSingleOutput AUTO | 0x167d49f106bbea59587ef3c63b33e6a421af1b8d
[see in explorer](https://sonicscan.org/address/0x167d49f106bbea59587ef3c63b33e6a421af1b8d) | | StargateImplV2 | 0x4682e8315B80cF757e2077280E0471729c992Ed3
[see in explorer](https://sonicscan.org/address/0x4682e8315B80cF757e2077280E0471729c992Ed3) | | SwapExecutor AUTO | 0x6BFE1830046D92877Bb11229ceDe23e8590dc2c4
[see in explorer](https://sonicscan.org/address/0x6BFE1830046D92877Bb11229ceDe23e8590dc2c4) | | SwapRequestCallback AUTO | 0xEFB37Bd3a9ed2f768bf6f79d0379fe7f9BE50F49
[see in explorer](https://sonicscan.org/address/0xEFB37Bd3a9ed2f768bf6f79d0379fe7f9BE50F49) | | SwapRequestImpl AUTO | 0x8A228540a81344cD06bAB50dB3F938962aaF21D5
[see in explorer](https://sonicscan.org/address/0x8A228540a81344cD06bAB50dB3F938962aaF21D5) | | SwitchboardPlug AUTO | 0xAaA647EE552b24D4E28Ab1B4e5223af9729035da
[see in explorer](https://sonicscan.org/address/0xAaA647EE552b24D4E28Ab1B4e5223af9729035da) | | SwitchboardRouter AUTO | 0x001aeD6a2F42b0CebCbCD9308c303ff2189eDC9c
[see in explorer](https://sonicscan.org/address/0x001aeD6a2F42b0CebCbCD9308c303ff2189eDC9c) | | UnwrapAndForward AUTO | 0xd31367da48d3f9d6dd0d59de4aa1ef6023a88fad
[see in explorer](https://sonicscan.org/address/0xd31367da48d3f9d6dd0d59de4aa1ef6023a88fad) | | ZeroxV2Wrapper AUTO | 0x614595189d16995Fe22a5c267B220C803e50966F
[see in explorer](https://sonicscan.org/address/0x614595189d16995Fe22a5c267B220C803e50966F) |
| name | address | | ---------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------- | | BungeeDepository AUTO | TVLrWiPWF6xRanrMfET5xsQibDm2eSbFiP
[see in explorer](https://tronscan.org/#/contract/TVLrWiPWF6xRanrMfET5xsQibDm2eSbFiP) | | BungeeDepositoryTron AUTO | TWMsLzKo9sCzQP4Sh4cbgZpCZnXCTyeiHn
[see in explorer](https://tronscan.org/#/contract/TWMsLzKo9sCzQP4Sh4cbgZpCZnXCTyeiHn) | | Simple AUTO | TVm2o3iaUAQ6JC5Rp1uzGqF91nn4Mvh2HW
[see in explorer](https://tronscan.org/#/contract/TVm2o3iaUAQ6JC5Rp1uzGqF91nn4Mvh2HW) |
| name | address | | -------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------- | | AcrossImplV3 | 0x740EA79e2FccDDB4eE8bB8Fc8ccAC5eb6dFa0b40
[see in explorer](https://unichain.blockscout.com/address/0x740EA79e2FccDDB4eE8bB8Fc8ccAC5eb6dFa0b40) | | AcrossStakedRoute AUTO | 0x125ac5a530ece0a06dd3cd3da711c054eadb57b9
[see in explorer](https://unichain.blockscout.com/address/0x125ac5a530ece0a06dd3cd3da711c054eadb57b9) | | AcrossV3WethUnwrapper | 0x36f0B62E4eE3d30939cBccABA9D983579799D931
[see in explorer](https://unichain.blockscout.com/address/0x36f0B62E4eE3d30939cBccABA9D983579799D931) | | BungeeGateway AUTO | 0x79b5380FF38462b72e14667742f634c6610158B8
[see in explorer](https://unichain.blockscout.com/address/0x79b5380FF38462b72e14667742f634c6610158B8) | | BungeeInbox AUTO | 0x5e0f8e7337c8955d2124b8e85ca74af884b3e124
[see in explorer](https://unichain.blockscout.com/address/0x5e0f8e7337c8955d2124b8e85ca74af884b3e124) | | BungeeInboxOld AUTO | 0x198d69c8d8422D182EbbFEC9C35A31E003BcaD9a
[see in explorer](https://unichain.blockscout.com/address/0x198d69c8d8422D182EbbFEC9C35A31E003BcaD9a) | | CalldataExecutor AUTO | 0xa873aab6a98cb764ad6d52820d129d0e3667d9f9
[see in explorer](https://unichain.blockscout.com/address/0xa873aab6a98cb764ad6d52820d129d0e3667d9f9) | | CctpImpl | 0xbD99719C412f0cF440439f328B93622DeBB601b2
[see in explorer](https://unichain.blockscout.com/address/0xbD99719C412f0cF440439f328B93622DeBB601b2) | | CCTPRouterSingleOutput AUTO | 0x3b4817827d06600f92296c5d1491818d69fc955f
[see in explorer](https://unichain.blockscout.com/address/0x3b4817827d06600f92296c5d1491818d69fc955f) | | CCTPV2RouterSingleOutput AUTO | 0x6faec2944071b2a5ebfd1b08f43f29597aad8ca1
[see in explorer](https://unichain.blockscout.com/address/0x6faec2944071b2a5ebfd1b08f43f29597aad8ca1) | | Entrypoint AUTO | 0x01710CDb7319292Ed50A3F92561A599F5C650e2c
[see in explorer](https://unichain.blockscout.com/address/0x01710CDb7319292Ed50A3F92561A599F5C650e2c) | | FeeCollector AUTO | 0x79C7a69499Cf1866734E8D3154200a05aE41c865
[see in explorer](https://unichain.blockscout.com/address/0x79C7a69499Cf1866734E8D3154200a05aE41c865) | | FeesTakerController | 0xD0403D1994652f8476ACB8cf5c44aE41C44450f3
[see in explorer](https://unichain.blockscout.com/address/0xD0403D1994652f8476ACB8cf5c44aE41C44450f3) | | GenericStakedRoute AUTO | 0x5013c0b3defd8f832d1b6dec750382946de5c13b
[see in explorer](https://unichain.blockscout.com/address/0x5013c0b3defd8f832d1b6dec750382946de5c13b) | | MayanBridgeImplV2 | 0xCFee2171DC6c670eF1E0Df832df0cF37C31705E9
[see in explorer](https://unichain.blockscout.com/address/0xCFee2171DC6c670eF1E0Df832df0cF37C31705E9) | | RefuelSwapAndBridgeController | 0xD306B32f05c26a32d5Fd0Fdaf34F05FCA5BBd667
[see in explorer](https://unichain.blockscout.com/address/0xD306B32f05c26a32d5Fd0Fdaf34F05FCA5BBd667) | | RFQRouterSingleOutput AUTO | 0xc4088d6e5a2027e784efc0491c322a3e2621bd9e
[see in explorer](https://unichain.blockscout.com/address/0xc4088d6e5a2027e784efc0491c322a3e2621bd9e) | | SingleOutputRequestImpl AUTO | 0xBB1F279f61a7faC35cF4DDED87986Ab927083efb
[see in explorer](https://unichain.blockscout.com/address/0xBB1F279f61a7faC35cF4DDED87986Ab927083efb) | | SocketDeployFactory | 0x71630095e3F08A86aFC73f7b07342192adf39C55
[see in explorer](https://unichain.blockscout.com/address/0x71630095e3F08A86aFC73f7b07342192adf39C55) | | SocketGateway | 0x3a23F943181408EAC424116Af7b7790c94Cb97a5
[see in explorer](https://unichain.blockscout.com/address/0x3a23F943181408EAC424116Af7b7790c94Cb97a5) | | Solver AUTO | 0xAe68b7117BE0026Cbd4366303f74EEcbB19e4042
[see in explorer](https://unichain.blockscout.com/address/0xAe68b7117BE0026Cbd4366303f74EEcbB19e4042) | | StakedRouterExecutor AUTO | 0x12efda5e4d410c5da723ceb7e43942779e3fe49b
[see in explorer](https://unichain.blockscout.com/address/0x12efda5e4d410c5da723ceb7e43942779e3fe49b) | | StakedRouterReceiver AUTO | 0x5d84f33b7c9214df23fd86a0861ac923af99954d
[see in explorer](https://unichain.blockscout.com/address/0x5d84f33b7c9214df23fd86a0861ac923af99954d) | | StakedRouterSingleOutput AUTO | 0x167d49f106bbea59587ef3c63b33e6a421af1b8d
[see in explorer](https://unichain.blockscout.com/address/0x167d49f106bbea59587ef3c63b33e6a421af1b8d) | | StargateImplV2 | 0x4682e8315B80cF757e2077280E0471729c992Ed3
[see in explorer](https://unichain.blockscout.com/address/0x4682e8315B80cF757e2077280E0471729c992Ed3) | | SwapExecutor AUTO | 0x6e8338B0c56f598809e72D6a31456f9D5452de72
[see in explorer](https://unichain.blockscout.com/address/0x6e8338B0c56f598809e72D6a31456f9D5452de72) | | SwapRequestCallback AUTO | 0xEFB37Bd3a9ed2f768bf6f79d0379fe7f9BE50F49
[see in explorer](https://unichain.blockscout.com/address/0xEFB37Bd3a9ed2f768bf6f79d0379fe7f9BE50F49) | | SwapRequestImpl AUTO | 0xcC42AE193E97a228BbC1e747Ea4af3aa170acCA2
[see in explorer](https://unichain.blockscout.com/address/0xcC42AE193E97a228BbC1e747Ea4af3aa170acCA2) | | SwitchboardPlug AUTO | 0xc5C38A15A9D3D9dC5Fc7dE4426779B695677e45D
[see in explorer](https://unichain.blockscout.com/address/0xc5C38A15A9D3D9dC5Fc7dE4426779B695677e45D) | | SwitchboardRouter AUTO | 0x3416daBEAf259FBE5ba455E361f23e58BAB91E3E
[see in explorer](https://unichain.blockscout.com/address/0x3416daBEAf259FBE5ba455E361f23e58BAB91E3E) | | UnwrapAndForward AUTO | 0xd31367da48d3f9d6dd0d59de4aa1ef6023a88fad
[see in explorer](https://unichain.blockscout.com/address/0xd31367da48d3f9d6dd0d59de4aa1ef6023a88fad) | | ZeroxV2SwapImpl | 0x13C605F77Cd8A77977Cf0fa41a371204FaecCC03
[see in explorer](https://unichain.blockscout.com/address/0x13C605F77Cd8A77977Cf0fa41a371204FaecCC03) | | ZeroxV2Wrapper AUTO | 0x614595189d16995Fe22a5c267B220C803e50966F
[see in explorer](https://unichain.blockscout.com/address/0x614595189d16995Fe22a5c267B220C803e50966F) |
| name | address | | -------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------- | | AcrossImplV3 | 0x740EA79e2FccDDB4eE8bB8Fc8ccAC5eb6dFa0b40
[see in explorer](https://worldscan.org/address/0x740EA79e2FccDDB4eE8bB8Fc8ccAC5eb6dFa0b40) | | AcrossStakedRoute AUTO | 0x125ac5a530ece0a06dd3cd3da711c054eadb57b9
[see in explorer](https://worldscan.org/address/0x125ac5a530ece0a06dd3cd3da711c054eadb57b9) | | AcrossV3WethUnwrapper | 0x36f0B62E4eE3d30939cBccABA9D983579799D931
[see in explorer](https://worldscan.org/address/0x36f0B62E4eE3d30939cBccABA9D983579799D931) | | BungeeGateway AUTO | 0x8f503B6d9fFdae8d375d1E226b71B4B3144D3849
[see in explorer](https://worldscan.org/address/0x8f503B6d9fFdae8d375d1E226b71B4B3144D3849) | | BungeeInbox AUTO | 0x5e0f8e7337c8955d2124b8e85ca74af884b3e124
[see in explorer](https://worldscan.org/address/0x5e0f8e7337c8955d2124b8e85ca74af884b3e124) | | BungeeInboxOld AUTO | 0x3B2Dbb1636F384F05002686fB816D60CD5c4EAAb
[see in explorer](https://worldscan.org/address/0x3B2Dbb1636F384F05002686fB816D60CD5c4EAAb) | | CalldataExecutor AUTO | 0xa873aab6a98cb764ad6d52820d129d0e3667d9f9
[see in explorer](https://worldscan.org/address/0xa873aab6a98cb764ad6d52820d129d0e3667d9f9) | | CctpV2Impl | 0x1768C1D2900f1408D44FbB1EdCc306F94aF852ae
[see in explorer](https://worldscan.org/address/0x1768C1D2900f1408D44FbB1EdCc306F94aF852ae) | | CCTPV2RouterSingleOutput AUTO | 0x6faec2944071b2a5ebfd1b08f43f29597aad8ca1
[see in explorer](https://worldscan.org/address/0x6faec2944071b2a5ebfd1b08f43f29597aad8ca1) | | DisabledSocketRoute | 0x0f34A522FF82151c90679b73211955068FD854F1
[see in explorer](https://worldscan.org/address/0x0f34A522FF82151c90679b73211955068FD854F1) | | Entrypoint AUTO | 0xc8807bD5b5c87Fe7Fc73D644Cb7800d1A4e4F09D
[see in explorer](https://worldscan.org/address/0xc8807bD5b5c87Fe7Fc73D644Cb7800d1A4e4F09D) | | FeeCollector AUTO | 0xE12D0CE29B916fbc067f49a8ebC203ffB66E8ded
[see in explorer](https://worldscan.org/address/0xE12D0CE29B916fbc067f49a8ebC203ffB66E8ded) | | FeesTakerController | 0xe0134Ca3d7AD384070580542Baee00511105BEfA
[see in explorer](https://worldscan.org/address/0xe0134Ca3d7AD384070580542Baee00511105BEfA) | | GenericStakedRoute AUTO | 0x5013c0b3defd8f832d1b6dec750382946de5c13b
[see in explorer](https://worldscan.org/address/0x5013c0b3defd8f832d1b6dec750382946de5c13b) | | RefuelSwapAndBridgeController | 0xA898821781ba5dd78a485Bcb610b8a60bbC5357E
[see in explorer](https://worldscan.org/address/0xA898821781ba5dd78a485Bcb610b8a60bbC5357E) | | RFQRouterSingleOutput AUTO | 0xc4088d6e5a2027e784efc0491c322a3e2621bd9e
[see in explorer](https://worldscan.org/address/0xc4088d6e5a2027e784efc0491c322a3e2621bd9e) | | SingleOutputRequestImpl AUTO | 0xcC42AE193E97a228BbC1e747Ea4af3aa170acCA2
[see in explorer](https://worldscan.org/address/0xcC42AE193E97a228BbC1e747Ea4af3aa170acCA2) | | SocketDeployFactory | 0x71630095e3F08A86aFC73f7b07342192adf39C55
[see in explorer](https://worldscan.org/address/0x71630095e3F08A86aFC73f7b07342192adf39C55) | | SocketGateway | 0x3a23F943181408EAC424116Af7b7790c94Cb97a5
[see in explorer](https://worldscan.org/address/0x3a23F943181408EAC424116Af7b7790c94Cb97a5) | | Solver AUTO | 0xAe68b7117BE0026Cbd4366303f74EEcbB19e4042
[see in explorer](https://worldscan.org/address/0xAe68b7117BE0026Cbd4366303f74EEcbB19e4042) | | StakedRouterExecutor AUTO | 0x12efda5e4d410c5da723ceb7e43942779e3fe49b
[see in explorer](https://worldscan.org/address/0x12efda5e4d410c5da723ceb7e43942779e3fe49b) | | StakedRouterReceiver AUTO | 0x5d84f33b7c9214df23fd86a0861ac923af99954d
[see in explorer](https://worldscan.org/address/0x5d84f33b7c9214df23fd86a0861ac923af99954d) | | StakedRouterSingleOutput AUTO | 0x167d49f106bbea59587ef3c63b33e6a421af1b8d
[see in explorer](https://worldscan.org/address/0x167d49f106bbea59587ef3c63b33e6a421af1b8d) | | StargateImplV2 | 0xEFB37Bd3a9ed2f768bf6f79d0379fe7f9BE50F49
[see in explorer](https://worldscan.org/address/0xEFB37Bd3a9ed2f768bf6f79d0379fe7f9BE50F49) | | SwapExecutor AUTO | 0x6e8338B0c56f598809e72D6a31456f9D5452de72
[see in explorer](https://worldscan.org/address/0x6e8338B0c56f598809e72D6a31456f9D5452de72) | | SwapRequestCallback AUTO | 0x62e27f18fa770D456af351A9570cF79Fc48D2446
[see in explorer](https://worldscan.org/address/0x62e27f18fa770D456af351A9570cF79Fc48D2446) | | SwapRequestImpl AUTO | 0x79b5380FF38462b72e14667742f634c6610158B8
[see in explorer](https://worldscan.org/address/0x79b5380FF38462b72e14667742f634c6610158B8) | | SwitchboardPlug AUTO | 0xc5C38A15A9D3D9dC5Fc7dE4426779B695677e45D
[see in explorer](https://worldscan.org/address/0xc5C38A15A9D3D9dC5Fc7dE4426779B695677e45D) | | SwitchboardRouter AUTO | 0x3416daBEAf259FBE5ba455E361f23e58BAB91E3E
[see in explorer](https://worldscan.org/address/0x3416daBEAf259FBE5ba455E361f23e58BAB91E3E) | | UnwrapAndForward AUTO | 0xd31367da48d3f9d6dd0d59de4aa1ef6023a88fad
[see in explorer](https://worldscan.org/address/0xd31367da48d3f9d6dd0d59de4aa1ef6023a88fad) | | ZeroxV2SwapImpl | 0x5CddbecAF8603E5e0bC771A46D48e148593351eA
[see in explorer](https://worldscan.org/address/0x5CddbecAF8603E5e0bC771A46D48e148593351eA) | | ZeroxV2Wrapper AUTO | 0x7ad979C6b0C9924F79ea571280071595ba13D002
[see in explorer](https://worldscan.org/address/0x7ad979C6b0C9924F79ea571280071595ba13D002) |
| name | address | | ------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------ | | AcrossImpl | 0x8517D2B4A9df18034dd00CCB5940fA4dCfaD7219
[see in explorer](https://explorer.zksync.io/address/0x8517D2B4A9df18034dd00CCB5940fA4dCfaD7219) | | AnyswapV6L2Impl | 0x0c8F5C755233401257b3Fda01816eC17Ae54642d
[see in explorer](https://explorer.zksync.io/address/0x0c8F5C755233401257b3Fda01816eC17Ae54642d) | | CelerImpl | 0x3adaF849af32b298d8f34f7eD783dA8d3781aF29
[see in explorer](https://explorer.zksync.io/address/0x3adaF849af32b298d8f34f7eD783dA8d3781aF29) | | CelerStorageWrapper | 0xbC5ebCA678A2C2333a99F4ec79b1D09518bFD52e
[see in explorer](https://explorer.zksync.io/address/0xbC5ebCA678A2C2333a99F4ec79b1D09518bFD52e) | | DisabledSocketRoute | 0xcB7Bf8C0dAf13f61A275D1E0D0D6d42bAF1a5231
[see in explorer](https://explorer.zksync.io/address/0xcB7Bf8C0dAf13f61A275D1E0D0D6d42bAF1a5231) | | FeesTakerController | 0x2D1bf3A12A020DAdb1D07Fc85ffA0f3eBC82F4F2
[see in explorer](https://explorer.zksync.io/address/0x2D1bf3A12A020DAdb1D07Fc85ffA0f3eBC82F4F2) | | OneInchImpl | 0xfAAA5398Ec7F335F71C102c7e8bc9Ef8d5763b77
[see in explorer](https://explorer.zksync.io/address/0xfAAA5398Ec7F335F71C102c7e8bc9Ef8d5763b77) | | RefuelBridgeImpl | 0xE3597Ec143dA4dB5053e2A51Cbf0a04B52b9b59C
[see in explorer](https://explorer.zksync.io/address/0xE3597Ec143dA4dB5053e2A51Cbf0a04B52b9b59C) | | SocketDeployFactory | 0xd95B102370Dffbb65fe8adf4157DEa22b563F4E1
[see in explorer](https://explorer.zksync.io/address/0xd95B102370Dffbb65fe8adf4157DEa22b563F4E1) | | SocketGateway | 0xaDdE7028e7ec226777e5dea5D53F6457C21ec7D6
[see in explorer](https://explorer.zksync.io/address/0xaDdE7028e7ec226777e5dea5D53F6457C21ec7D6) |
# For Agents Source: https://docs.bungee.exchange/bungee-api/for-agents Use Bungee docs from coding agents and other LLM-powered tools. If you are using Bungee from a coding agent or automation workflow, start with the machine-readable files. If you were looking for `skills.md`, Bungee exposes this file as [`skill.md`](https://docs.bungee.exchange/skill.md). **Best for agent planning and tool selection.** A structured capability summary of what Bungee can do, what inputs it needs, and what constraints apply. Start here. ```bash theme={null} curl https://docs.bungee.exchange/skill.md ``` **Best for fast discovery.** A map of documentation pages and descriptions. Use this to find the right page before loading full docs. ```bash theme={null} curl https://docs.bungee.exchange/llms.txt ``` **Best for single-shot grounding.** The entire docs site combined into one text file for broad context in a single fetch. ```bash theme={null} curl https://docs.bungee.exchange/llms-full.txt ``` ## Recommended order 1. Load [`skill.md`](https://docs.bungee.exchange/skill.md) to understand the Bungee capability surface. 2. Load [`llms.txt`](https://docs.bungee.exchange/llms.txt) to find the most relevant integration pages. 3. Fetch the specific pages you need, or use [`llms-full.txt`](https://docs.bungee.exchange/llms-full.txt) if your tool can handle the larger context window. ## Using skills-compatible tooling If your agent supports the Skills CLI, you can add Bungee directly from the docs domain: ```bash theme={null} npx skills add https://docs.bungee.exchange ``` After that, use the regular integration guides for implementation details such as [Permit2 integration](/bungee-api/integration-guides/auto-erc20-permit2), and [onchain requests](/bungee-api/integration-guides/auto-onchain-requests). # Get API Access Source: https://docs.bungee.exchange/bungee-api/get-api-access Get API access to the Bungee API. We support three types of API integrations, each with different endpoints, authentication methods, and rate limits: 1. **Public Sandbox** — For quick testing and development (no authentication required) 2. **Dedicated Backend** — For server-to-server integrations (API key authentication) 3. **Frontend / Direct** — For frontend, dApp, or mobile integrations (domain/IP whitelist) For production use, [request API access here](https://forms.gle/z3q5RdXjouuXR85k9). Once you receive your API key, include it as `x-api-key` in the request header when making calls to the dedicated backend endpoint. You will also receive an affiliate ID for tracking purposes—include it as `affiliate` in the request header. Each integration type uses a different base URL. See the details below and the comparison table for specific endpoints, authentication requirements, and rate limits. ### Public Sandbox — For Testing Only[​](#public-sandbox--for-testing-only "Direct link to Public Sandbox — For Testing Only") * Endpoint: `https://public-backend.bungee.exchange/` * Who this is for: Developers or teams who want to quickly try out APIs without setup. * Key facts: * No authentication or whitelisting * Very limited RPS (shared/public) * Not suitable for production ### Dedicated Backend Integrators[​](#dedicated-backend-integrators "Direct link to Dedicated Backend Integrators") * Endpoint: `https://dedicated-backend.bungee.exchange/` * Who this is for: Projects that run their own backend servers and call our APIs server-to-server (typically a single IP or small range). * Key facts: * Auth: API key via `x-api-key` * Default 20 RPS (extendable) * Limits enforced at the API key level #### Example request[​](#example-request "Direct link to Example request") ```bash theme={null} curl --location 'https://dedicated-backend.bungee.exchange/api/v1/supported-chains' \ --header 'x-api-key: [YOUR-API-KEY]' \ --header 'affiliate: [YOUR-AFFILIATE-ID]' ``` **Native Tokens**: For native assets (e.g., ETH, POL), use `0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee` as the token address. **Token Decimals**: Always fetch token decimals via `/api/v1/tokens/list` to ensure accuracy when calculating `inputAmount` in wei. This API key provides you with a higher rate limit of 20 requests per second. You can find detailed documentation on all available endpoints on the [API Reference](/api-reference). #### Security Recommendation[​](#security-recommendation "Direct link to Security Recommendation") For production use, we strongly recommend routing API calls through your backend to keep your API key secure. Exposing the key in frontend code allows anyone to extract it, which can lead to exhausted rate limits or unexpected costs. If your frontend must call the API directly, please contact us to enable your allowed origin(s). ### Frontend / Direct Integrators[​](#frontend--direct-integrators "Direct link to Frontend / Direct Integrators") * Endpoint: `https://backend.bungee.exchange/` * Who this is for: Projects that call Bungee APIs directly from their frontend, apps, or mobile clients. * Key facts: * Auth: Domain/IP whitelist (no API key) * Default 100 RPM per IP * Limits enforced at the IP level ## Comparison Table[​](#comparison-table "Direct link to Comparison Table") | Integrator Type | Endpoint | Authentication | Rate Limit | Enforcement Method | Use Case | | ----------------- | -------------------------------------------- | ------------------- | ------------------- | ------------------ | ------------------------- | | Sandbox (Public) | `https://public-backend.bungee.exchange/` | None | Very Limited | Shared/Public | Testing only | | Dedicated Backend | `https://dedicated-backend.bungee.exchange/` | API Key | 20 RPS (extendable) | API key–based | Production backends | | Frontend / Direct | `https://backend.bungee.exchange/` | Whitelisted Domains | 100 RPM | IP–based | Frontends, dApps, wallets | ## Server Request ID[​](#server-request-id "Direct link to Server Request ID") All responses include a `server-req-id` header that can be used for debugging purposes when contacting support. When encountering any errors or unexpected behavior: 1. Always capture and log this ID along with the error details 2. Include this ID when reporting issues to the Bungee team 3. Add the ID to any error messages shown to users to facilitate troubleshooting Example of capturing the `server-req-id` in error handling: ```javascript theme={null} async function getQuote(params) { const url = `${BUNGEE_API_BASE_URL}/api/v1/bungee/quote`; const queryParams = new URLSearchParams(params); const queryUrl = `${url}?${queryParams}`; const response = await fetch(queryUrl); const data = await response.json(); const serverReqId = response.headers.get("server-req-id"); if (!data.success) { throw new Error( `Quote error: ${data.statusCode}: ${data.message}. server-req-id: ${serverReqId}` ); } return data.result; } ``` The `server-req-id` provides the Bungee team with crucial information to trace the exact request through their systems, significantly improving debugging efficiency and resolution time. # Build requests onchain Source: https://docs.bungee.exchange/bungee-api/integration-guides/additional-guides/build-requests-onchain Create and submit crosschain requests directly through smart contracts Building requests onchain involves creating a `IBungeeInbox.Request` with all required parameters, including deadline, nonce, and token specifications. The request is then submitted through the `createRequest` function. ## Creating a Request ### Step 1: Generate Request Parameters Establish the timing and uniqueness parameters for your request: ```solidity theme={null} uint256 currentTimestamp = block.timestamp; uint256 deadline = currentTimestamp + 600; // 10 minutes deadline uint256 nonce = uint256( uint32( bytes4( keccak256( abi.encodePacked( currentTimestamp, block.number, block.prevrandao, msg.sender, inputAmount, chainSlug_, gasleft() ) ) ) ) ); ``` The nonce generation combines multiple blockchain parameters to ensure uniqueness and prevent repeated numbers. ### Step 2: Build the Basic Request Create the basic request structure with chain identifiers, token details, and execution parameters: ```solidity theme={null} IBungeeInbox.BasicRequest memory basicReq = IBungeeInbox.BasicRequest({ originChainId: request[user].inputChainSlug, destinationChainId: request[user].outputChainSlug, deadline: deadline, nonce: nonce, sender: sourceBungeeInboxAddress, receiver: request[user].monitorAddress, delegate: request[user].monitorAddress, bungeeGateway: sourceBungeeGatewayAddress, switchboardId: 1, // Fixed value for standard operations inputToken: request[user].inputTokenAddress, inputAmount: request[user].inputAmount, outputToken: request[user].outputTokenAddress, minOutputAmount: request[user].minSwapOutput, refuelAmount: 0 // Add refuel amount if native token transfer needed }); ``` ### Step 3: Complete the Request Structure Build the full request with additional parameters for swap execution and metadata: ```solidity theme={null} IBungeeInbox.Request memory bungeeRequest = IBungeeInbox.Request({ basicReq: basicReq, swapOutputToken: request[user].outputTokenAddress, minSwapOutput: request[user].minSwapOutput, metadata: bytes32(0), // Metadata: first 16 bytes = quoteId. Last 16 bytes = integrator id affiliateFees: "", // Add affiliate fee structure if needed minDestGas: 0, destinationPayload: "", // Add destination payload encoding if needed exclusiveTransmitter: address(0) // Add specific transmitter if needed }); ``` Detailed explanation of all parameters of both structures may be seen in the IBungeeInbox structure definition. Also, validate all inputs before creating requests to prevent invalid submissions. ## Submitting the Request Once your request structure is complete, submit it through the BungeeInbox contract on the source chain: ```solidity theme={null} IBungeeInbox(bungeeInboxAddress).createRequest(bungeeRequest); ``` ## Helper Libraries The utility libraries below are for request handling and validation. These libraries include EIP-712 compliant hashing functions and request verification tools that ensure proper request formatting and security. ```solidity theme={null} // SPDX-License-Identifier: MIT pragma solidity ^0.8.22; import {IBungeeInbox} from "./IBungeeInbox.sol"; /// @title Basic Request Library /// @notice Provides helpers for handling and hashing BasicRequest structs /// @dev Contains EIP-712 type hash and origin hash logic for BasicRequest library BasicRequestLib { /// @dev EIP-712 type definition for BasicRequest struct bytes internal constant BASIC_REQUEST_TYPE = abi.encodePacked( "BasicRequest(", "uint256 originChainId,", "uint256 destinationChainId,", "uint256 deadline,", "uint256 nonce,", "address sender,", "address receiver,", "address delegate,", "address bungeeGateway,", "uint32 switchboardId,", "address inputToken,", "uint256 inputAmount,", "address outputToken,", "uint256 minOutputAmount,", "uint256 refuelAmount)" ); /// @dev Keccak256 hash of the BASIC_REQUEST_TYPE bytes32 internal constant BASIC_REQUEST_TYPE_HASH = keccak256(BASIC_REQUEST_TYPE); /// @notice Computes the EIP-712 hash of a BasicRequest struct for the origin chain /// @dev Enforces originChainId to be the current chainId. Resulting hash is the same on all chains. /// Helps avoid extra checking of chainId in the contract. /// @param basicReq BasicRequest object to be hashed /// @return bytes32 The EIP-712 hash of the BasicRequest struct function originHash(IBungeeInbox.BasicRequest memory basicReq) internal view returns (bytes32) { return keccak256( abi.encodePacked( BASIC_REQUEST_TYPE_HASH, abi.encode( block.chainid, basicReq.destinationChainId, basicReq.deadline, basicReq.nonce, basicReq.sender, basicReq.receiver, basicReq.delegate, basicReq.bungeeGateway, basicReq.switchboardId, basicReq.inputToken, basicReq.inputAmount, basicReq.outputToken, basicReq.minOutputAmount, basicReq.refuelAmount ) ) ); } } /// @title Bungee Request Library. /// @author bungee protocol /// @notice This library is responsible for all the hashing related to Request object. library BungeeInboxRequest { using BasicRequestLib for IBungeeInbox.BasicRequest; /// @dev EIP-712 type definition for Request struct bytes internal constant REQUEST_TYPE = abi.encodePacked( "Request(", "BasicRequest basicReq,", "address swapOutputToken,", "uint256 minSwapOutput,", "bytes32 metadata,", "bytes affiliateFees,", "uint256 minDestGas,", "bytes destinationPayload,", "address exclusiveTransmitter)" ); /// @dev EIP-712 type definition for Bungee Request, including BasicRequest bytes internal constant BUNGEE_REQUEST_TYPE = abi.encodePacked(REQUEST_TYPE, BasicRequestLib.BASIC_REQUEST_TYPE); /// @dev Keccak256 hash of the BUNGEE_REQUEST_TYPE bytes32 internal constant BUNGEE_REQUEST_TYPE_HASH = keccak256(BUNGEE_REQUEST_TYPE); /** * @notice Creates a deterministic hash for a complete swap request * @dev Generates an EIP-712 compliant hash that uniquely identifies a swap request * This hash is used for request tracking, validation, and preventing replay attacks * @param request The complete swap request structure containing all swap parameters * @return bytes32 The deterministic hash of the swap request */ function createSORHash(IBungeeInbox.Request memory request) internal view returns (bytes32) { return keccak256( abi.encode( BUNGEE_REQUEST_TYPE_HASH, request.basicReq.originHash(), request.swapOutputToken, request.minSwapOutput, request.metadata, keccak256(request.affiliateFees), request.minDestGas, keccak256(request.destinationPayload), request.exclusiveTransmitter ) ); } } ``` ```solidity theme={null} // SPDX-License-Identifier: MIT pragma solidity ^0.8.22; /// @title Bungee Inbox Interface /// @notice Interface for submitting and handling Bungee crosschain requests /// @dev Defines the structure and function for Bungee Inbox requests interface IBungeeInbox { /// @notice Basic details in the request /// @dev Contains all the fundamental parameters required for a Bungee request struct BasicRequest { /// @notice Source chain ID uint256 originChainId; /// @notice Destination chain ID uint256 destinationChainId; /// @notice Deadline of the request uint256 deadline; /// @notice Nonce used for uniqueness in signature uint256 nonce; /// @notice Address of the user placing the request address sender; /// @notice Address of the receiver on destination chain address receiver; /// @notice Delegate address that has some rights over the request signed (e.g., cancellation) address delegate; /// @notice Address of bungee gateway, this address will have access to pull funds from the sender address bungeeGateway; /// @notice ID of the switchboard for settlement uint32 switchboardId; /// @notice Address of the input token address inputToken; /// @notice Amount of the input token uint256 inputAmount; /// @notice Output token to be received on the destination address outputToken; /// @notice Minimum amount of output token to be received on the destination uint256 minOutputAmount; /// @notice Native token refuel amount on the destination chain uint256 refuelAmount; } /// @notice The Request which user signs /// @dev Contains all parameters for a complete Bungee request, including swap and execution details struct Request { /// @notice Basic details in the request BasicRequest basicReq; /// @notice Swap output token that the user is permitting to swap input token to address swapOutputToken; /// @notice Minimum swap output the user is okay with swapping the input token to /// @dev Transmitter can choose or not choose to swap tokens uint256 minSwapOutput; /// @notice Any sort of metadata to be passed with the request bytes32 metadata; /// @notice Fees of the affiliate if any bytes affiliateFees; /// @notice Minimum destination gas limit to execute calldata on destination /// @dev Only to be used when execution is required on destination uint256 minDestGas; /// @notice Calldata to be executed on the destination /// @dev Calldata can only be executed on the receiver in the request bytes destinationPayload; /// @notice Address of the only transmitter that is permitted to execute the request /// @dev If the transmitter is not set, anyone can execute the request. This validation would be done off-chain by the auction house address exclusiveTransmitter; } /// @notice Creates a new Bungee request /// @dev Accepts a complete Request struct and processes it. May require a payment depending on the request. /// @param singleOutputRequest The complete request structure containing all parameters function createRequest(Request calldata singleOutputRequest) external payable; } ``` # Charging fees Source: https://docs.bungee.exchange/bungee-api/integration-guides/additional-guides/charging-fees How to implement fee charging in Bungee integrations # Charging Fees with Bungee Bungee allows integrators to charge fees on swaps and transfers, providing a revenue stream for your application. This guide explains how to implement fee charging in both Bungee Auto and Bungee Manual integrations. If you plan to implement fee charging, please request a dedicated API key first. ## Fee Mechanics When integrating Bungee, you can specify two key parameters to collect fees: * **`feeTakerAddress`**: The address that will receive the collected fees * **`feeBps`**: The percentage of the transfer amount to charge as a fee (in basis points - 1 basis point = 0.01%) These parameters ensure that a portion of each swap is directed to your specified feeTaker address. The input token amount will be reduced by the fee amount before the swap is executed. ## Implementation You can add fee parameters to both Bungee Auto and Manual integrations when requesting a quote: ```javascript theme={null} const BUNGEE_API_BASE_URL = "https://public-backend.bungee.exchange"; async function getQuoteWithFees() { const quoteParams = { userAddress: "0xYourUsersAddress", originChainId: "1", // Ethereum destinationChainId: "10", // Optimism inputToken: "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48", // USDC on Ethereum outputToken: "0x7F5c764cBc14f9669B88837ca1490cCa17c31607", // USDC on Optimism inputAmount: "1000000", // 1 USDC (6 decimals) receiverAddress: "0xYourUsersAddress", feeTakerAddress: "0xYourFeeCollectionAddress", // Address to receive fees feeBps: "50", // 0.5% fee (50 basis points) }; // For Manual mode, add this parameter // quoteParams.enableManual = "true"; const url = `${BUNGEE_API_BASE_URL}/api/v1/bungee/quote`; const queryParams = new URLSearchParams(quoteParams); const fullUrl = `${url}?${queryParams}`; const response = await fetch(fullUrl, { method: "GET" }); const data = await response.json(); const serverReqId = response.headers.get("server-req-id"); if (!data.success) { throw new Error( `Quote error: ${data.statusCode}: ${data.message}. server-req-id: ${serverReqId}` ); } return data.result; } ``` ## Where to Claim Fees For Bungee Manual, no need to claim as fees are delivered directly to the `feeTakerAddress` provided. For Bungee Auto, fees are sent to the `FeeCollector` contract where anyone can trigger the claim fees for a specified token address and `feeTakerAddress` pair. For per-chain `FeeCollector` addresses, see the [Contract Addresses](/bungee-api/contract-addresses) page. The `FeeCollector` exposes a `claim(address token, address feeTaker)` method to withdraw accrued fees. ## Next Steps Integrate Bungee Auto with fee charging Integrate Bungee Manual with fee charging Details on the Quote API parameters Learn more about fee charging and monetization # Destination payload execution Source: https://docs.bungee.exchange/bungee-api/integration-guides/additional-guides/destination-payload Execute arbitrary contract calls on the destination chain after transfers Destination payload lets you execute arbitrary contract calls on the destination chain after a crosschain transfer completes. This is useful for flows such as depositing to a vault, repaying a loan, or interacting with a protocol immediately after bridging/swapping. ## How it works When building a Bungee request, you can provide calldata that will be executed on the destination chain. It works for both same chain swaps as well as cross chain swaps. If the below parameters are provided, Bungee will deliver assets on destination and then invoke the receiver contract with your `destinationPayload` under the specified gas limit. * `destinationPayload`: ABI-encoded calldata for the target contract on the destination chain * `receiverAddress`: The execution target that will receive the calldata and perform the call * `destinationGasLimit`: Gas budget on destination to execute the payload ```solidity theme={null} interface IBungeeExecutor { function executeData( bytes32 requestHash, uint256[] calldata amounts, address[] calldata tokens, bytes memory callData ) external payable; } ``` ## Implementation example ```typescript theme={null} const BUNGEE_API_BASE_URL = "https://public-backend.bungee.exchange"; async function getQuoteWithDestinationPayload() { const quoteParams = { userAddress: "0xYourUsersAddress", originChainId: "8453", // Base destinationChainId: "8453", // Base inputToken: "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913", // USDC on Base outputToken: "0xfde4C96c8593536E31F229EA8f37b2ADa2699bb2", // USDT on Base inputAmount: "10000000", // 10 USDC (6 decimals) receiverAddress: contractAddress, // contract address that implements executeData destinationPayload: "0x1234acbd", // calldata for the contract set on receiverAddress destinationGasLimit: "100000", // gas ceiling for destination execution }; const url = `${BUNGEE_API_BASE_URL}/api/v1/bungee/quote`; const queryParams = new URLSearchParams(quoteParams); const fullUrl = `${url}?${queryParams}`; const response = await fetch(fullUrl, { method: "GET", headers: { "Content-Type": "application/json", }, }); const data = await response.json(); const serverReqId = response.headers.get("server-req-id"); if (!data.success) { throw new Error( `Quote error: ${data.statusCode}: ${data.message}. server-req-id: ${serverReqId}` ); } } ``` ## Important Notes * The `destinationPayload` is the `callData` parameter that will be passed to the `executeData` function * Execution may fail due to invalid encoding: re-check `encodeAbiParameters` types match the receiver decode * The `receiverAddress` needs to be a contract that implements `IBungeeExecutor` contract's interface for the `executeData` function * Ensure the receiver contract trusts/can handle calls from the Bungee executor * Complex receivers or multi-token logic require higher gas limits * Execution may fail due to out of gas on destination: increase `destinationGasLimit` ## Complete Examples Complete script example showing how to execute a custom payload on the destination chain: ```javascript theme={null} import { createWalletClient, createPublicClient, http, encodeAbiParameters, } from 'viem'; import { privateKeyToAccount } from 'viem/accounts'; import { base, optimism } from 'viem/chains'; // Configuration - Update these values const PRIVATE_KEY = process.env.PRIVATE_KEY; // Example receiver contract on Base that implements executeData(...) // and sends funds back to the userAddress // The example receiver decodes only an `address` and transfers the first `(token, amount)` pair // https://basescan.org/address/0xC0b43F2B38CA47CC9e1b9697296716ebCF3D8177#code const CONTRACT_ADDRESS = '0xC0b43F2B38CA47CC9e1b9697296716ebCF3D8177'; // ExecuteDestinationPayload // Create account from private key const account = privateKeyToAccount(PRIVATE_KEY); // Create OP clients const publicClient = createPublicClient({ chain: base, transport: http(), }); const walletpublicClient = createWalletClient({ account, chain: base, transport: http(), }); const BUNGEE_API_BASE_URL = "https://public-backend.bungee.exchange"; const quoteParamsERC20 = { userAddress: account.address, originChainId: 8453, // Base inputToken: "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913", // USDC on Base //originChainId: 10, // OP //inputToken: "0x0b2c639c533813f4aa9d7837caf62653d097ff85", // USDC on OP destinationChainId: 8453, // Base //outputToken: "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913", // USDC on Base outputToken: "0xfde4C96c8593536E31F229EA8f37b2ADa2699bb2", // USDT on Base inputAmount: "3000000", // 3 USDC (6 decimals) }; async function getQuote(params) { const url = `${BUNGEE_API_BASE_URL}/api/v1/bungee/quote`; const queryParams = new URLSearchParams(params); const queryUrl = `${url}?${queryParams}`; console.log(queryUrl); const response = await fetch(queryUrl); const data = await response.json(); const serverReqId = response.headers.get("server-req-id"); if (!data.success) { throw new Error( `Quote error: ${data.statusCode}: ${data.message}. server-req-id: ${serverReqId}` ); } if (!data.result.autoRoute) { throw new Error(`No autoRoute available. server-req-id: ${serverReqId}`); } console.log(`server-req-id: ${serverReqId}`); const quoteId = data.result.autoRoute.quoteId; const requestType = data.result.autoRoute.requestType; let witness = null; let signTypedData = null; if (data.result.autoRoute.signTypedData) { signTypedData = data.result.autoRoute.signTypedData; if (signTypedData.values && signTypedData.values.witness) { witness = signTypedData.values.witness; } } const approvalData = data.result.autoRoute.approvalData; return { quoteId, requestType, witness, signTypedData, approvalData, fullResponse: data, }; } // Function to check and handle token approvals async function checkAndApproveToken(approvalData) { if (!approvalData || !approvalData.tokenAddress) { console.log("No approval data found or required"); return; } console.log("\nChecking token approval..."); // ERC20 ABI for allowance and approve functions const erc20Abi = [ { inputs: [ { name: "owner", type: "address" }, { name: "spender", type: "address" }, ], name: "allowance", outputs: [{ name: "", type: "uint256" }], stateMutability: "view", type: "function", }, { inputs: [ { name: "spender", type: "address" }, { name: "amount", type: "uint256" }, ], name: "approve", outputs: [{ name: "", type: "bool" }], stateMutability: "nonpayable", type: "function", }, ]; try { const currentAllowance = await publicClient.readContract({ address: approvalData.tokenAddress, abi: erc20Abi, functionName: "allowance", args: [ approvalData.userAddress, approvalData.spenderAddress, ], }); console.log(`Current allowance: ${currentAllowance}`); console.log(`Required approval: ${approvalData.amount}`); // Check if approval is needed if (BigInt(currentAllowance) >= BigInt(approvalData.amount)) { console.log("Sufficient allowance already exists."); return; } console.log("Insufficient allowance. Approving tokens..."); // Send approval transaction const hash = await walletpublicClient.writeContract({ address: approvalData.tokenAddress, abi: erc20Abi, functionName: "approve", args: [approvalData.spenderAddress, approvalData.amount], }); console.log(`Approval transaction sent: ${hash}`); // Wait for transaction to be mined const receipt = await publicClient.waitForTransactionReceipt({ hash }); console.log(`Approval confirmed in block ${receipt.blockNumber}`); return receipt; } catch (error) { console.error("Error in approval process:", error); throw error; } } async function viemSignTypedData(signTypedData) { const signature = await account.signTypedData({ types: signTypedData.types, primaryType: "PermitWitnessTransferFrom", message: signTypedData.values, domain: signTypedData.domain, }); return signature; } async function submitSignedRequest( requestType, request, userSignature, quoteId ) { const requestBody = { requestType, request, userSignature, quoteId, }; const response = await fetch(`${BUNGEE_API_BASE_URL}/api/v1/bungee/submit`, { method: "POST", headers: { "Content-Type": "application/json" }, body: JSON.stringify(requestBody), }); const data = await response.json(); if (!data.success) { throw new Error(`Submit error: ${data.error?.message || "Unknown error"}`); } const serverReqId = response.headers.get("server-req-id"); console.log(`server-req-id: ${serverReqId}`); return data.result; } async function checkStatus(requestHash) { const response = await fetch( `${BUNGEE_API_BASE_URL}/api/v1/bungee/status?requestHash=${requestHash}` ); const data = await response.json(); if (!data.success) { throw new Error(`Status error: ${data.error?.message || "Unknown error"}`); } return data.result[0]; } async function main() { try { quoteParamsERC20.destinationPayload = encodeAbiParameters( [{ type: 'address' }], [account.address] // In this usecase the Payload is just the address to forward the funds to ); quoteParamsERC20.destinationGasLimit = "100000"; // Max gas value taken from the forge test --gas-report was 62471 quoteParamsERC20.receiverAddress = CONTRACT_ADDRESS; // Receiver Address is the contract that will receive the payload const quote = await getQuote(quoteParamsERC20); console.log(`Got quote ${quote.quoteId}`); const { quoteId, requestType, witness, signTypedData } = quote; console.log(JSON.stringify(quote.fullResponse, null, 2)); if (quote.approvalData) { await checkAndApproveToken(quote.approvalData); } if (signTypedData && witness) { // Sign the typed data console.log("\n2. Signing typed data..."); const signature = await viemSignTypedData(signTypedData); // Submit the signed request console.log("\n3. Submitting signed request..."); const submitResult = await submitSignedRequest( requestType, witness, signature, quoteId ); console.log( "\n4. Submission complete:", "\n- Hash:", submitResult.requestHash, "\n- Type:", submitResult.requestType ); // Check the status // Wait for 5 seconds console.log("\n4. Waiting for 5 seconds..."); let status; do { await new Promise((resolve) => setTimeout(resolve, 5000)); console.log("\n5. Checking status..."); try { status = await checkStatus(submitResult.requestHash); console.log("- Status details:", status.bungeeStatusCode); } catch (error) { console.error( "Failed to check status:", error?.message || "Unknown error" ); } } while (status?.bungeeStatusCode !== 3); console.log( "\n6. Transaction complete:", "\n- Hash:", status.destinationData?.txHash || "Transaction hash not available" ); } else { console.log("No signature data available in the quote response"); } } catch (error) { console.error('Main execution error:', error); } } // Run the script if (import.meta.url === `file://${process.argv[1]}`) { main(); } ``` **For Example Purposes Only** The smart contract below is for example purposes only. Please ensure you audit your contracts for production usage. Example smart contract that implements the `IBungeeExecutor` interface: ```solidity theme={null} // SPDX-License-Identifier: UNLICENSED pragma solidity ^0.8.28; import {Ownable} from "solady/auth/Ownable.sol"; import {SafeTransferLib} from "solady/utils/SafeTransferLib.sol"; /** * @title IBungeeExecutor * @dev Interface for executing cross-chain data payloads */ interface IBungeeExecutor { /** * @notice Executes data payload with token transfers * @param requestHash Unique identifier for the cross-chain request * @param amounts Array of token amounts to process * @param tokens Array of token addresses to process * @param callData Encoded data containing execution parameters */ function executeData( bytes32 requestHash, uint256[] calldata amounts, address[] calldata tokens, bytes memory callData ) external payable; } /** * @title ExecuteDestinationPayload * @dev Contract for executing destination payloads in cross-chain transfers * @notice This contract handles the final step of cross-chain transfers by sending tokens to recipients */ contract ExecuteDestinationPayload is IBungeeExecutor, Ownable { address public constant NATIVE_TOKEN = 0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE; /** * @notice Emitted when a destination payload is successfully executed * @param requestHash Unique identifier for the cross-chain request * @param amount Amount of tokens transferred to recipient * @param token Address of the token transferred * @param recipient Address that received the tokens */ event DestinationPayload( bytes32 indexed requestHash, uint256 amount, address indexed token, address indexed recipient ); /** * @notice Thrown when input arrays have invalid lengths * @dev Both amounts and tokens arrays must have length is 1 */ error InvalidArrayLength(); /** * @notice Thrown when trying to rescue zero amount */ error ZeroAmount(); /** * @notice Thrown when trying to rescue to zero address */ error ZeroAddress(); /** * @notice Constructor sets the initial owner */ constructor() { _initializeOwner(msg.sender); } /** * @notice Executes the destination payload by transferring tokens to the recipient * @dev Transfers the first token/amount pair to the decoded recipient address * @param requestHash Unique identifier for the cross-chain request * @param amounts Array of token amounts (must have length = 1, only first element used) * @param tokens Array of token addresses (must have length = 1, only first element used) * @param callData ABI-encoded recipient address * @custom:security Only the first elements of amounts and tokens arrays are used * @custom:security For ETH transfers, uses safeTransferETH * @custom:security For ERC20 transfers, uses safeTransfer from msg.sender */ function executeData( bytes32 requestHash, uint256[] calldata amounts, address[] calldata tokens, bytes memory callData ) external payable override { // Check if array length is 1 if (amounts.length != 1 || tokens.length != 1) { revert InvalidArrayLength(); } // Decode recipient address from callData address recipient = abi.decode(callData, (address)); // Transfer funds to user using first array elements address token = tokens[0]; uint256 amount = amounts[0]; if (token == NATIVE_TOKEN) { // Transfer ETH to recipient SafeTransferLib.safeTransferETH(recipient, amount); } else { // Transfer ERC20 token from msg.sender to recipient SafeTransferLib.safeTransfer(token, recipient, amount); } emit DestinationPayload(requestHash, amount, token, recipient); } /** * @notice Rescues all ETH from the contract * @dev Only callable by the owner */ function rescueAllETH() external onlyOwner { uint256 balance = address(this).balance; if (balance == 0) revert ZeroAmount(); SafeTransferLib.safeTransferETH(msg.sender, balance); } /** * @notice Rescues all ERC20 tokens from the contract * @dev Only callable by the owner * @param token Address of the ERC20 token to rescue */ function rescueAllERC20(address token) external onlyOwner { if (token == address(0)) revert ZeroAddress(); uint256 balance = SafeTransferLib.balanceOf(token, address(this)); if (balance == 0) revert ZeroAmount(); SafeTransferLib.safeTransfer(token, msg.sender, balance); } /** * @notice Allows the contract to receive ETH */ receive() external payable {} } ``` # Swap across EVM & HyperCore Source: https://docs.bungee.exchange/bungee-api/integration-guides/additional-guides/hypercore-on-bungee Bridge and swap assets between EVM chains and HyperCore using Bungee Bungee also supports swapping assets from any EVM chain to HyperCore and from HyperCore to any EVM chain. This guide walks you through swapping assets between EVM chains and HyperCore using Bungee. It covers transaction options, and current limitations. ## Quick Start ### Key differences Follow the "Auto routing" guides when going from any EVM to HyperCore. The main difference when integrating HyperCore Bungee API compared to standard EVM chains: **Transaction Flow from HyperCore to EVM** * User sends funds to a Deposit contract with the quote ID * Bungee indexes the transaction and delivers the funds on the destination chain **API Behavior** * Both `userAddress` and `receiverAddress` required for quotes * The only assets supported from/to HyperCore are [USDC (Spot)](https://hyperevmscan.io/address/0x2000000000000000000000000000000000000000) and USDC (Perps). * There is no Fee collection currently from HyperCore to EVM * The quote responses already take into account that HyperCore charges a 1 USDC activation fee for new account activation and withdrawals * Only USDC (Perps) is supported when bridging out of Hypercore ## Integration Steps ### HyperCore to EVM The ["Auto routing" guide from Bungee Docs](/bungee-api/integration-guides/auto-permit2-gasless-requests) outlines how to integrate the deposit flow as it is a quite similar process. 1. **Select Chains:** Users choose the source and destination chains, which determine the tokens available for bridging. 2. **Fetch Routes:** After selecting the tokens, retrieve the deposit route if available using the `/quote` endpoint. The response will contain `depositRoute.signTypedData` and `depositRoute.quoteId`. 3. **Sign and Submit:** Sign the `signTypedData` from the quote response using `primaryType: "HyperCoreTransaction:SendAsset"`, then submit the signed data to HyperLiquid's API endpoint (`https://api.hyperliquid.xyz/exchange`). 4. **Track Transaction Status:** Monitor the transaction's progress by polling the `/status` endpoint using the `quoteId` from the quote response until the bridging process is complete. For HyperCore quotes, please ensure both `userAddress` and `receiverAddress` are defined. **`inputAmount` Format for HyperCore:** The `inputAmount` parameter must be provided as an **integer string in 6-decimal base units (micro-units)**. This is the same format used for USDC on most EVM chains. | Human-readable | `inputAmount` value | | -------------- | ------------------- | | 9.99 USDC | `"9990000"` | | 2.00 USDC | `"2000000"` | | 10.23 USDC | `"10230000"` | **Conversion formula:** `inputAmount = humanAmount × 10^6` (rounded to integer) For example, to send 9.99 USDC, use `inputAmount: "9990000"` (9.99 × 1,000,000 = 9,990,000). The HyperCore signature generation uses this micro-unit value directly. Do not pass decimal strings like `"9.99"`. Also, note that from HyperCore to EVM is a separate route from `autoRoute` since it is under `depositRoute`. ## Examples ### Queries ``` https://public-backend.bungee.exchange/api/v1/bungee/quote?userAddress=0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045&receiverAddress=0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045&originChainId=10&destinationChainId=1337&inputToken=0x0b2C639c533813f4Aa9D7837CAf62653d097Ff85&outputToken=0x2000000000000000000000000000000000000000&inputAmount=2000000 ``` ``` https://public-backend.bungee.exchange/api/v1/bungee/quote?userAddress=0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045&receiverAddress=0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045&originChainId=1337&destinationChainId=10&inputToken=0x6d1e7cde53ba9467b783cb7c530ce054&outputToken=0x0b2C639c533813f4Aa9D7837CAf62653d097Ff85&inputAmount=10230000 ``` For HyperCore quotes, `inputAmount` must be provided as an integer string in 6-decimal base units (micro-units). For example, to send 10.23 USDC, use `inputAmount: "10230000"` (10.23 × 10^6). ### Scripts ```tsx theme={null} import { privateKeyToAccount } from "viem/accounts"; import { createPublicClient, http, createWalletClient } from "viem"; import { optimism } from "viem/chains"; // Check if PRIVATE_KEY is set, set in console, i.e.: export PRIVATE_KEY= if (!process.env.PRIVATE_KEY) { console.error("Error: PRIVATE_KEY environment variable is not set"); console.error( "Example: export PRIVATE_KEY=" ); process.exit(1); } // Create account from private key const account = privateKeyToAccount( process.env.PRIVATE_KEY.startsWith('0x') ? process.env.PRIVATE_KEY : `0x${process.env.PRIVATE_KEY}` ); // Create Viem clients const publicClient = createPublicClient({ chain: optimism, transport: http(), }); const walletClient = createWalletClient({ account, chain: optimism, transport: http(), }); // API and token parameters const BUNGEE_API_BASE_URL = "https://public-backend.bungee.exchange"; // Quote parameters const quoteParamsERC20 = { userAddress: account.address, receiverAddress: account.address, originChainId: 10, // Optimism destinationChainId: 1337, // HyperCore inputToken: "0x0b2C639c533813f4Aa9D7837CAf62653d097Ff85", // USDC on Optimism outputToken: "0x2000000000000000000000000000000000000000", // USDC (SPOT) on HyperCore //outputToken: "0x6d1e7cde53ba9467b783cb7c530ce054", // USDC (Perps) on HyperCore inputAmount: "2000000", // 2 USDC (6 decimals) }; // Function to get a quote async function getQuote(params) { try { const url = `${BUNGEE_API_BASE_URL}/api/v1/bungee/quote`; const queryParams = new URLSearchParams(params); const fullUrl = `${url}?${queryParams}`; const response = await fetch(fullUrl); console.log(fullUrl); const data = await response.json(); const serverReqId = response.headers.get("server-req-id"); // Check for errors if (!data.success) { throw new Error( `Quote error: ${data.statusCode}: ${data.message}. server-req-id: ${serverReqId}` ); } // Check if autoRoute exists if (!data.result.autoRoute) { throw new Error(`No autoRoute available. server-req-id: ${serverReqId}`); } const quoteId = data.result.autoRoute.quoteId; const requestType = data.result.autoRoute.requestType; console.log("- Quote ID:", quoteId); console.log("- Request Type:", requestType); // Extract data based on the response structure let witness = null; let signTypedData = null; if (data.result.autoRoute.signTypedData) { signTypedData = data.result.autoRoute.signTypedData; // The witness is located in signTypedData.values.witness if (signTypedData?.values?.witness) { witness = signTypedData.values.witness; } } // Extract approval data if present const approvalData = data.result.autoRoute.approvalData; // Log request hash if (data.result.autoRoute.requestHash) { console.log("- Request Hash:", data.result.autoRoute.requestHash); } return { quoteId, requestType, witness, signTypedData, approvalData, fullResponse: data, }; } catch (error) { console.error("Failed to get quote:", error); throw error; } } // Function to sign typed data using viem async function viemSignTypedData(signTypedData) { try { const signature = await account.signTypedData({ types: signTypedData.types, primaryType: "PermitWitnessTransferFrom", message: signTypedData.values, domain: signTypedData.domain, }); console.log("- Signature:", signature); return signature; } catch (error) { console.error("Failed to sign typed data:", error); throw error; } } // Function to submit the signed request async function submitSignedRequest( requestType, request, userSignature, quoteId ) { try { // Prepare request body const requestBody = { requestType, request, userSignature, quoteId, }; const response = await fetch( `${BUNGEE_API_BASE_URL}/api/v1/bungee/submit`, { method: "POST", headers: { "Content-Type": "application/json" }, body: JSON.stringify(requestBody), } ); const data = await response.json(); const serverReqId = response.headers.get("server-req-id"); console.log("Server request id", serverReqId); // Response data is saved to file but not logged to keep output clean if (!data.success) { throw new Error( `Submit error: ${data.error?.message || "Unknown error"}` ); } console.log("- Request Hash:", data.result.requestHash); return data.result; } catch (error) { console.error("Failed to submit signed request:", error); throw error; } } // Function to check the status of a request async function checkStatus(requestHash) { try { const response = await fetch( `${BUNGEE_API_BASE_URL}/api/v1/bungee/status?requestHash=${requestHash}` ); const data = await response.json(); if (!data.success) { throw new Error( `Status error: ${data.error?.message || "Unknown error"}` ); } return data.result[0]; } catch (error) { console.error("Failed to check status:", error); throw error; } } // Function to check and handle token approvals async function checkAndApproveToken(approvalData) { if (!approvalData || !approvalData.tokenAddress) { console.log("No approval data found or required"); return; } console.log("\nChecking token approval..."); // ERC20 ABI for allowance and approve functions const erc20Abi = [ { inputs: [ { name: "owner", type: "address" }, { name: "spender", type: "address" }, ], name: "allowance", outputs: [{ name: "", type: "uint256" }], stateMutability: "view", type: "function", }, { inputs: [ { name: "spender", type: "address" }, { name: "amount", type: "uint256" }, ], name: "approve", outputs: [{ name: "", type: "bool" }], stateMutability: "nonpayable", type: "function", }, ]; try { const currentAllowance = await publicClient.readContract({ address: approvalData.tokenAddress, abi: erc20Abi, functionName: "allowance", args: [ approvalData.userAddress, approvalData.spenderAddress, ], }); console.log(`Current allowance: ${currentAllowance}`); console.log(`Required approval: ${approvalData.amount}`); // Check if approval is needed if (BigInt(currentAllowance) >= BigInt(approvalData.amount)) { console.log("Sufficient allowance already exists."); return; } console.log("Insufficient allowance. Approving tokens..."); // Send approval transaction const hash = await walletClient.writeContract({ address: approvalData.tokenAddress, abi: erc20Abi, functionName: "approve", args: [ approvalData.spenderAddress, approvalData.amount, ], }); console.log(`Approval transaction sent: ${hash}`); // Wait for transaction to be mined const receipt = await publicClient.waitForTransactionReceipt({ hash }); console.log(`Approval confirmed in block ${receipt.blockNumber}`); return receipt; } catch (error) { console.error("Error in approval process:", error); throw error; } } // Main function to handle the flow async function main() { try { console.log("Starting Bungee ERC20 Token Test (Auto Route)..."); // Get the quote and extract data console.log("\n1. Getting quote..."); const quoteResponse = await getQuote(quoteParamsERC20); const { quoteId, requestType, witness, signTypedData } = quoteResponse; console.log(JSON.stringify(quoteResponse.fullResponse, null, 2)); // Check if approval is needed and handle it //if (quoteResponse.approvalData) { // await checkAndApproveToken(quoteResponse.approvalData); //} if (signTypedData && witness) { // Sign the typed data console.log("\n2. Signing typed data..."); const signature = await viemSignTypedData(signTypedData); // Submit the signed request console.log("\n3. Submitting signed request..."); const submitResult = await submitSignedRequest( requestType, witness, signature, quoteId ); console.log( "\n4. Submission complete:", "\n- Hash:", submitResult.requestHash, "\n- Type:", submitResult.requestType ); // Check the status // Wait for 5 seconds console.log("\n5. Waiting for 5 seconds..."); let status; do { await new Promise((resolve) => setTimeout(resolve, 5000)); console.log("\n6. Checking status..."); try { status = await checkStatus(submitResult.requestHash); console.log("- Status details:", status.bungeeStatusCode); } catch (error) { console.error( "Failed to check status:", error?.message || "Unknown error" ); } } while (status?.bungeeStatusCode !== 3 && status?.bungeeStatusCode !== 4); console.log( "\n7. Transaction complete:", "\n- Hash:", status.destinationData?.txHash || "Transaction hash not available" ); } else { console.log("No signature data available in the quote response"); } } catch (error) { console.error("Error in processing:", error?.shortMessage || error.message); throw error; } } // Execute the main function main(); ``` ```tsx theme={null} import { privateKeyToAccount } from "viem/accounts"; import { http, createWalletClient, parseSignature } from "viem"; import { arbitrum } from "viem/chains"; // Check if PRIVATE_KEY is set, set in console, i.e.: export PRIVATE_KEY= if (!process.env.PRIVATE_KEY) { console.error("Error: PRIVATE_KEY environment variable is not set"); console.error( "Example: export PRIVATE_KEY=" ); process.exit(1); } // Create account from private key const normalizedPrivateKey = process.env.PRIVATE_KEY.trim().startsWith('0x') ? process.env.PRIVATE_KEY.trim() : `0x${process.env.PRIVATE_KEY.trim()}`; const account = privateKeyToAccount(normalizedPrivateKey); // Create Viem clients const walletClient = createWalletClient({ account, chain: arbitrum, transport: http(), }); // API and token parameters const BUNGEE_API_BASE_URL = "https://public-backend.bungee.exchange"; const HYPERLIQUID_API_URL = "https://api.hyperliquid.xyz/exchange"; // Quote parameters const quoteParamsERC20 = { userAddress: account.address, receiverAddress: account.address, originChainId: 1337, // HyperCore destinationChainId: 10, // Optimism inputToken: "0x6d1e7cde53ba9467b783cb7c530ce054", // USDC (Perps) on HyperCore outputToken: "0x0b2C639c533813f4Aa9D7837CAf62653d097Ff85", // USDC on Optimism inputAmount: "10230000", // USDC (Perps) }; // Function to get a quote async function getQuote(params) { try { const url = `${BUNGEE_API_BASE_URL}/api/v1/bungee/quote`; const queryParams = new URLSearchParams(params); const fullUrl = `${url}?${queryParams}`; const response = await fetch(fullUrl); console.log(fullUrl); const data = await response.json(); const serverReqId = response.headers.get("server-req-id"); // Check for errors if (!data.success) { throw new Error( `Quote error: ${data.statusCode}: ${data.message}. server-req-id: ${serverReqId}` ); } // Check if autoRoute exists if (!data.result.depositRoute) { throw new Error(`No depositRoute available. server-req-id: ${serverReqId}`); } const quoteId = data.result.depositRoute.quoteId; console.log("- Quote ID:", quoteId); // Extract data based on the response structure const signTypedData = data.result.depositRoute.signTypedData; return { quoteId, signTypedData, fullResponse: data, }; } catch (error) { console.error("Failed to get quote:", error); throw error; } } // Function to sign typed data using viem async function viemSignTypedData(signTypedData) { try { const signature = await walletClient.signTypedData({ types: signTypedData.types, primaryType: "HyperCoreTransaction:SendAsset", message: signTypedData.values, domain: signTypedData.domain, }); const signatureParsed = parseSignature(signature); const signatureObject = { r: signatureParsed.r, s: signatureParsed.s, v: Number(signatureParsed.v), }; return signatureObject; } catch (error) { console.error("Failed to sign typed data:", error); throw error; } } // Function to submit the signed request async function submitSignedRequest( signTypedData, signature, ) { try { // Prepare request body const requestBody = { action: signTypedData.values, nonce: signTypedData.values.nonce, signature: signature, }; console.log("- HyperCore Submit Request:", JSON.stringify(requestBody, null, 2)); const response = await fetch( HYPERLIQUID_API_URL, { method: "POST", headers: { "Content-Type": "application/json" }, body: JSON.stringify(requestBody), } ); const data = await response.json(); if (data.status === 'err') { console.error("- HyperCore API Error Response:", data); throw new Error( `HyperCore API error: ${data.response || data.message || 'Unknown error'}` ); } return data; } catch (error) { console.error("Failed to submit signed request:", error); throw error; } } // Function to check the status of a request async function checkStatus(quoteId) { try { const response = await fetch( `${BUNGEE_API_BASE_URL}/api/v1/bungee/status?requestHash=${quoteId}` ); const data = await response.json(); if (!data.success) { throw new Error( `Status error: ${data.error?.message || "Unknown error"}` ); } return data.result[0]; } catch (error) { console.error("Failed to check status:", error); throw error; } } // Main function to handle the flow async function main() { try { console.log("Starting Bungee ERC20 Token Test (Auto Route)..."); // Get the quote and extract data console.log("\n1. Getting quote..."); const quoteResponse = await getQuote(quoteParamsERC20); const { quoteId, signTypedData } = quoteResponse; console.log(JSON.stringify(quoteResponse.fullResponse, null, 2)); if (signTypedData) { // Sign the typed data console.log("\n2. Signing typed data..."); const signature = await viemSignTypedData(signTypedData); // Submit the signed request console.log("\n3. Submitting signed request..."); const submitResult = await submitSignedRequest( signTypedData, signature, ); console.log( "\n4. Submission complete:", "\n- Response:", submitResult, ); // Check the status // Wait for 5 seconds console.log("\n5. Waiting for 5 seconds..."); let status; do { await new Promise((resolve) => setTimeout(resolve, 5000)); console.log("\n6. Checking status..."); try { status = await checkStatus(quoteId); console.log("- Status details:", status.bungeeStatusCode); } catch (error) { console.error( "Failed to check status:", error?.message || "Unknown error" ); } } while (status?.bungeeStatusCode !== 3 && status?.bungeeStatusCode !== 4); console.log( "\n7. Transaction complete:", "\n- Hash:", status.destinationData?.txHash || "Transaction hash not available" ); } else { console.log("No signature data available in the quote response"); } } catch (error) { console.error("Error in processing:", error?.shortMessage || error.message); throw error; } } // Execute the main function main(); ``` # Swap across EVM & Solana Source: https://docs.bungee.exchange/bungee-api/integration-guides/additional-guides/solana-on-bungee Bridge and swap assets between EVM chains and Solana using Bungee Bungee also supports swap assets from any EVM chain to Solana and from Solana to any EVM chain. This guide walks you through swapping assets between EVM chains and Solana using Bungee. It covers supported chains, transaction options, and current limitations. ## Quick Start ### Solana Chain ID on Bungee API The **chain ID** for Solana queries is `89999`. ### Key differences Here's what's different when integrating Solana Bungee API compared to standard EVM chains: **Transaction Flow** * No token approvals are needed on Solana **API Behavior** * Both `userAddress` and `receiverAddress` required for quotes * Fee collection only works from EVM to Solana - **Native Tokens across all Chains (`0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee`):** Use this address to represent native tokens on any chain (ETH, SOL, etc.) - **Wrapped SOL (wSOL) (`So11111111111111111111111111111111111111112`):** The SPL token address for wrapped SOL on Solana ### Supported chains Most major EVM chains on Bungee are supported to bridge to Solana. ## Integration Steps The ["Bungee Auto" guide from Bungee Docs](/bungee-api/integration-guides/auto-onchain-requests) outlines how to integrate a bridging process that allows users to swap and bridge tokens across chains in a single transaction on the source chain, eliminating the need for any transactions on the destination chain. This same process should be implemented when bridging to Solana. 1. **Select Chains:** Users choose the source and destination chains, which determine the tokens available for bridging. 2. **Fetch Quote:** Call the `/quote` endpoint which returns an `autoRoute` object containing `txData`, `requestHash`, and optionally `approvalData`. The transaction data is ready to use directly from the quote response. 3. **Handle Token Approval (EVM only):** For EVM transactions, check if `approvalData` exists in the quote response. If present, handle token approvals before submitting the transaction. Solana transactions do not require approvals. 4. **Submit Transaction:** Execute the transaction using `txData` from the quote response. The transaction type (`evm` or `solana`) determines the submission method and required parameters. 5. **Track Transaction Status:** Monitor the transaction's progress by polling the `/status` endpoint using the source `txHash` until the bridging process is complete. For Solana quotes, please ensure both `userAddress` and `receiverAddress` are defined. Also, remember Solana does not require token approvals. ## Examples ### Queries ``` https://public-backend.bungee.exchange/api/v1/bungee/quote?userAddress=0x3e8cB4bd04d81498aB4b94a392c334F5328b237b&originChainId=8453&destinationChainId=89999&inputAmount=100000000&inputToken=0x833589fcd6edb6e08f4c7c32d4f71b54bda02913&enableManual=true&receiverAddress=7BchahMyqpBZYmQS3QnbY3kRweDLgPCRpWdo1rxWmJ3g&refuel=false&outputToken=6p6xgHyF7AeE6TZkSmFsko444wqoP15icUSqi2jfGiPN ``` Querying the Solana RPC directly is recommended, nonetheless the current API supports: ``` https://public-backend.bungee.exchange/api/v1/tokens/search?q=FUAfBo2jgks6gB4Z4LfZkqSZgzNucisEHqnNebaRxM1P&userAddress=7BchahMyqpBZYmQS3QnbY3kRweDLgPCRpWdo1rxWmJ3g ``` ``` https://public-backend.bungee.exchange/api/v1/tokens/list?chainIds=89999&list=trending ``` ### Scripts ```tsx theme={null} import dotenv from "dotenv"; dotenv.config(); import { privateKeyToAccount } from "viem/accounts"; import { createPublicClient, http, createWalletClient } from "viem"; import { base } from "viem/chains"; import { Keypair, Connection, PublicKey, TransactionInstruction, TransactionMessage, VersionedTransaction } from "@solana/web3.js"; import bs58 from "bs58"; // Helper function to fetch address lookup table accounts for Solana transactions async function getAddressLookupTableAccounts(lookupTableAddresses, connection) { const lookupTables = await Promise.all( lookupTableAddresses.map(async (address) => { const result = await connection.getAddressLookupTable(new PublicKey(address)); return result.value; }) ); return lookupTables.filter((table) => table !== null); } // Check if PRIVATE_KEY is set if (!process.env.PRIVATE_KEY) { console.error("Error: PRIVATE_KEY environment variable is not set"); console.error( "Example: PRIVATE_KEY=" ); process.exit(1); } // Check if SOLANA_PRIVATE_KEY is set if (!process.env.SOLANA_PRIVATE_KEY) { console.error("Error: SOLANA_PRIVATE_KEY environment variable is not set"); console.error( "Example: SOLANA_PRIVATE_KEY=your_base58_private_key_or_array" ); process.exit(1); } // Create EVM account from private key // Trim whitespace and ensure proper format const evmPrivateKey = process.env.PRIVATE_KEY.trim(); const account = privateKeyToAccount(evmPrivateKey); // Create Viem clients const publicClient = createPublicClient({ chain: base, transport: http(), }); const walletClient = createWalletClient({ account, chain: base, transport: http(), }); // Parse Solana private key and create keypair let solanaKeypair; try { const solanaPrivateKey = process.env.SOLANA_PRIVATE_KEY; // Try parsing as base58 string first let privateKeyBytes; try { privateKeyBytes = bs58.decode(solanaPrivateKey); } catch { // If not base58, try parsing as JSON array try { privateKeyBytes = Uint8Array.from(JSON.parse(solanaPrivateKey)); } catch { // If that fails, try as comma-separated string privateKeyBytes = Uint8Array.from(solanaPrivateKey.split(",").map(Number)); } } solanaKeypair = Keypair.fromSecretKey(privateKeyBytes); console.log("Solana address:", solanaKeypair.publicKey.toBase58()); } catch (error) { console.error("Error parsing Solana private key:", error); console.error("Please provide a valid base58 string or array format"); process.exit(1); } const solanaAddress = solanaKeypair.publicKey.toBase58(); // API and token parameters const BUNGEE_API_BASE_URL = "https://public-backend.bungee.exchange"; const SOLANA_RPC_URL = "https://api.mainnet-beta.solana.com"; // EVM to Solana // const originChainId = 8453; // const destinationChainId = 89999; // const inputToken = "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913"; // USDC on Base // const outputToken = "0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee"; // const inputAmount = "5000000"; // 5 USDC (6 decimals) // Solana to EVM const originChainId = 89999; const destinationChainId = 8453; const inputToken = "0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee"; // Native SOL const outputToken = "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913"; // USDC on Base const inputAmount = "170000000"; // ~$15 of SOL (9 decimals) // Conditionally set addresses based on origin chain const quoteParams = { userAddress: originChainId === 89999 ? solanaAddress : account.address, receiverAddress: destinationChainId === 89999 ? solanaAddress : account.address, originChainId, destinationChainId, inputToken, outputToken, inputAmount, }; // Function to get a quote async function getQuote(params) { try { const url = `${BUNGEE_API_BASE_URL}/api/v1/bungee/quote`; const queryParams = new URLSearchParams(params); const fullUrl = `${url}?${queryParams}`; const response = await fetch(fullUrl); console.log(fullUrl); if (!response.ok) { throw new Error(`HTTP error! status: ${response.status}`); } const data = await response.json(); const serverReqId = response.headers.get("server-req-id"); // Check for errors if (!data.success) { throw new Error( `Quote error: ${data.statusCode}: ${data.message || data.error?.message || "Unknown error"}. server-req-id: ${serverReqId}` ); } // Check if autoRoute exists if (!data.result || !data.result.autoRoute) { throw new Error(`No autoRoute available. server-req-id: ${serverReqId}`); } const quoteId = data.result.autoRoute.quoteId; const requestHash = data.result.autoRoute.requestHash; const txData = data.result.autoRoute.txData; if (!quoteId) { throw new Error("Quote ID not found in response"); } if (!requestHash) { throw new Error("Request hash not found in response"); } if (!txData) { throw new Error("Transaction data not found in response"); } const approvalData = data.result.autoRoute.approvalData; console.log("- Quote ID:", quoteId); console.log("- Request Hash:", requestHash); console.log("- Transaction Type:", txData.type); if (approvalData) { console.log("- Approval Required: Yes"); } return { quoteId, requestHash, txData, approvalData, fullResponse: data, }; } catch (error) { console.error("Failed to get quote:", error.message || error); throw error; } } // Function to submit EVM transaction async function submitEVMTransaction(txData) { try { if (!txData || txData.type !== "evm") { throw new Error("Invalid EVM transaction data"); } if (!txData.to) { throw new Error("Transaction 'to' address is required"); } if (!txData.data) { throw new Error("Transaction data is required"); } console.log(" To:", txData.to); console.log(" Value:", txData.value || "0"); console.log(" Data:", txData.data.substring(0, 66) + "..."); // Send the transaction const hash = await walletClient.sendTransaction({ to: txData.to, value: BigInt(txData.value || "0"), data: txData.data, }); console.log("- Transaction sent:", hash); // Wait for transaction to be mined const receipt = await publicClient.waitForTransactionReceipt({ hash }); if (receipt.status === "reverted") { throw new Error(`Transaction reverted in block ${receipt.blockNumber}`); } console.log("- Transaction mined in block:", receipt.blockNumber); return { hash, receipt, }; } catch (error) { console.error("Failed to submit EVM transaction:", error.message || error); throw error; } } // Function to check and handle token approvals async function checkAndApproveToken(approvalData) { if (!approvalData || !approvalData.tokenAddress) { console.log("No approval data found or required"); return; } // ERC20 ABI for allowance and approve functions const erc20Abi = [ { inputs: [ { name: "owner", type: "address" }, { name: "spender", type: "address" }, ], name: "allowance", outputs: [{ name: "", type: "uint256" }], stateMutability: "view", type: "function", }, { inputs: [ { name: "spender", type: "address" }, { name: "amount", type: "uint256" }, ], name: "approve", outputs: [{ name: "", type: "bool" }], stateMutability: "nonpayable", type: "function", }, ]; try { // Validate required fields if (!approvalData.userAddress) { throw new Error("userAddress is required in approvalData"); } if (!approvalData.spenderAddress) { throw new Error("spenderAddress is required in approvalData"); } if (!approvalData.amount) { throw new Error("amount is required in approvalData"); } // Check current allowance const currentAllowance = await publicClient.readContract({ address: approvalData.tokenAddress, abi: erc20Abi, functionName: "allowance", args: [ approvalData.userAddress, approvalData.spenderAddress, ], }); // Check if approval is needed if (BigInt(currentAllowance) >= BigInt(approvalData.amount)) { return; } console.log("Insufficient allowance. Approving tokens..."); const hash = await walletClient.writeContract({ address: approvalData.tokenAddress, abi: erc20Abi, functionName: "approve", args: [ approvalData.spenderAddress, approvalData.amount, ], }); console.log(`Approval transaction sent: ${hash}`); const receipt = await publicClient.waitForTransactionReceipt({ hash }); if (receipt.status === "reverted") { throw new Error(`Approval transaction reverted in block ${receipt.blockNumber}`); } console.log(`Approval confirmed in block ${receipt.blockNumber}`); // Wait 1 block after approval before proceeding as submission sometimes is too fast const approvalBlock = receipt.blockNumber; while (true) { const currentBlock = await publicClient.getBlockNumber(); if (currentBlock > approvalBlock) { break; } await new Promise((resolve) => setTimeout(resolve, 2000)); } return receipt; } catch (error) { console.error("Error in approval process:", error.message || error); throw error; } } // Function to submit Solana transaction async function submitSolanaTransaction(txData) { try { if (!txData || txData.type !== "solana") { throw new Error("Invalid Solana transaction data"); } if (!txData.data || !txData.data.instructions) { throw new Error("Transaction instructions are required"); } if (!txData.data.lookupTables) { throw new Error("Lookup tables are required"); } // Convert instructions to TransactionInstruction[] const connection = new Connection(SOLANA_RPC_URL); const clientInstructions = txData.data.instructions.map( (instruction, index) => { try { return new TransactionInstruction({ programId: new PublicKey(instruction.programId), keys: instruction.keys.map((key) => ({ pubkey: new PublicKey(key.pubkey), isSigner: key.isSigner, isWritable: key.isWritable, })), data: Buffer.from(instruction.data, "base64"), }); } catch (error) { throw new Error(`Failed to parse instruction ${index}: ${error.message}`); } } ); // Get lookup tables using Solana Connection API let clientLookupTables; try { clientLookupTables = await getAddressLookupTableAccounts( txData.data.lookupTables, connection ); } catch (error) { throw new Error(`Failed to fetch lookup tables: ${error.message}`); } // Get latest blockhash let blockhash, lastValidBlockHeight; try { const blockhashResult = await connection.getLatestBlockhash("finalized"); blockhash = blockhashResult.blockhash; lastValidBlockHeight = blockhashResult.lastValidBlockHeight; } catch (error) { throw new Error(`Failed to get latest blockhash: ${error.message}`); } // Create MessageV0 with lookup tables let messageV0; try { messageV0 = new TransactionMessage({ payerKey: solanaKeypair.publicKey, recentBlockhash: blockhash, instructions: clientInstructions, }).compileToV0Message(clientLookupTables); } catch (error) { throw new Error(`Failed to compile transaction message: ${error.message}`); } // Create versioned transaction const transaction = new VersionedTransaction(messageV0); // Handle signers if present const signers = [solanaKeypair]; if (txData.data.signers && txData.data.signers.length > 0) { try { const additionalSigners = txData.data.signers.map((signer) => Keypair.fromSecretKey(Uint8Array.from(signer)) ); signers.push(...additionalSigners); } catch (error) { throw new Error(`Failed to parse signers: ${error.message}`); } } transaction.sign(signers); // Send transaction let signature; try { signature = await connection.sendRawTransaction( transaction.serialize(), { skipPreflight: false, preflightCommitment: "confirmed", } ); } catch (error) { throw new Error(`Failed to send transaction: ${error.message}`); } console.log("- Transaction sent:", signature); // Wait for confirmation let confirmation; try { confirmation = await connection.confirmTransaction({ signature, blockhash, lastValidBlockHeight, }); } catch (error) { throw new Error(`Failed to confirm transaction: ${error.message}`); } if (confirmation.value.err) { throw new Error(`Transaction failed: ${JSON.stringify(confirmation.value.err)}`); } console.log("- Transaction confirmed"); return { hash: signature, receipt: confirmation, }; } catch (error) { console.error("Failed to submit Solana transaction:", error.message || error); throw error; } } // Function to check the status of a request (uses submission transaction hash) async function checkStatus(submissionTxHash) { try { if (!submissionTxHash) { throw new Error("Submission transaction hash is required"); } const response = await fetch( `${BUNGEE_API_BASE_URL}/api/v1/bungee/status?requestHash=${submissionTxHash}` ); if (!response.ok) { throw new Error(`HTTP error! status: ${response.status}`); } const data = await response.json(); if (!data.success) { throw new Error( `Status error: ${data.error?.message || data.message || "Unknown error"}` ); } if (!data.result || !Array.isArray(data.result) || data.result.length === 0) { throw new Error("No status result found"); } return data.result[0]; } catch (error) { console.error("Failed to check status:", error.message || error); throw error; } } // Main function to handle the flow async function main() { try { console.log("Starting Bungee Solana Auto Swap..."); let direction; if (originChainId === 89999 && destinationChainId === 89999) { direction = "Solana → Solana"; } else if (originChainId === 89999) { direction = "Solana → EVM"; } else if (destinationChainId === 89999) { direction = "EVM → Solana"; } else { direction = "Unknown"; } console.log(`Direction: ${direction}`); console.log(`EVM Address: ${account.address}`); console.log(`Solana Address: ${solanaAddress}`); const SOLANA_CHAIN_ID = 89999; const isSameChainSwap = originChainId === destinationChainId; if (originChainId !== SOLANA_CHAIN_ID && destinationChainId !== SOLANA_CHAIN_ID) { throw new Error("One of originChainId or destinationChainId must be 89999 (Solana)"); } console.log("\n1. Getting quote..."); const quoteResponse = await getQuote(quoteParams); if (!quoteResponse.txData) { throw new Error("No transaction data available in the quote response"); } const txData = quoteResponse.txData; const isSolanaTx = txData.type === "solana"; let submissionTxHash; let submissionReceipt; if (isSolanaTx) { // Solana → EVM (no approvals needed) console.log("\n2. Submitting Solana transaction..."); const { hash, receipt } = await submitSolanaTransaction(txData); submissionTxHash = hash; submissionReceipt = receipt; console.log( "\n3. Transaction submitted:", "\n- Hash:", hash ); } else if (txData.type === "evm") { // EVM → Solana // Check and handle approvals first if (quoteResponse.approvalData) { console.log("\n2. Checking token approval..."); await checkAndApproveToken(quoteResponse.approvalData); } console.log("\n3. Submitting EVM transaction..."); const { hash, receipt } = await submitEVMTransaction(txData); submissionTxHash = hash; submissionReceipt = receipt; console.log( "\n4. Transaction submitted:", "\n- Hash:", hash, "\n- Status:", receipt.status ); } else { throw new Error(`Unknown transaction type: ${txData.type}`); } if (isSameChainSwap) { const completeStepNumber = isSolanaTx ? "4" : "5"; console.log( `\n${completeStepNumber}. Transaction complete (confirmed on-chain):`, "\n- Hash:", submissionTxHash, "\n- Receipt Status:", isSolanaTx ? "confirmed" : submissionReceipt?.status || "unknown" ); return; } // Poll status until complete (using submission transaction hash) const statusStepNumber = isSolanaTx ? "4" : "5"; console.log(`\n${statusStepNumber}. Waiting before checking status...`); await new Promise((resolve) => setTimeout(resolve, 5000)); let status; let attempts = 0; const maxAttempts = 60; // Maximum 10 minutes (60 * 10 seconds) do { attempts++; if (attempts > maxAttempts) { throw new Error(`Status check timeout after ${maxAttempts} attempts`); } await new Promise((resolve) => setTimeout(resolve, 10000)); const checkStepNumber = isSolanaTx ? "5" : "6"; console.log(`\n${checkStepNumber}. Checking status (attempt ${attempts})...`); try { status = await checkStatus(submissionTxHash); console.log("- Status code:", status.bungeeStatusCode); if (status.bungeeStatusCode === 3) { break; } } catch (error) { console.error( "Failed to check status:", error?.message || "Unknown error" ); // Continue polling even if one check fails } } while (!status || status.bungeeStatusCode !== 3); if (!status) { throw new Error("Failed to get final status"); } const completeStepNumber = isSolanaTx ? "6" : "7"; console.log( `\n${completeStepNumber}. Transaction complete:`, "\n- Status Code:", status.bungeeStatusCode, "\n- Destination Hash:", status.destinationData?.txHash || "Transaction hash not available" ); } catch (error) { console.error("\n❌ Error in processing:", error?.shortMessage || error?.message || error); process.exit(1); } } main(); ``` # Token list and search Source: https://docs.bungee.exchange/bungee-api/integration-guides/additional-guides/token-endpoints How to use Bungee token list and search endpoints Bungee Auto supports trading any token with sufficient liquidity, regardless of whether it appears in the token list responses. ## Token Sources and Verification Bungee maintains a primary data source for token information and categorizes tokens in two ways: * **Verified Tokens:** These are recognized by Bungee and are considered verified. * **Unverified Tokens:** These are tokens added to our own database that may not be widely listed yet. When these are displayed, we recommend showing a warning to users to exercise caution. ### How the Endpoints and Parameters Work * **`/tokens/list` (Default):** * Returns a curated list of trending tokens, all of which are "verified" (recognized by Bungee). * "Trending" is currently determined by trading volume, showing the tokens with the highest volume on each supported network. * This list is dynamic, and the trending algorithm may evolve to include other factors for relevance. * **`/tokens/list` (with `list=full` parameter):** * Returns the full, unabridged list of all tokens known to Bungee (including both verified and unverified tokens). * **Warning:** This is a very heavy and slow API call. We strongly recommend *not* using it in a production frontend application. * **`/tokens/search`:** * Designed to find a specific token by its name, symbol, or address (e.g., "USDC"). * Searches across the entire dataset, including both verified and unverified tokens. #### Best Practices * For the best user experience, we recommend: * Using the default `/tokens/list` to display a relevant, curated list of trending tokens. * Maintaining your own list of tokens that are most relevant to your users. * Most tokens with sufficient liquidity should return a valid route through Bungee, regardless of which list they appear on. ## Token list endpoint example usage The `/tokens/list` endpoint retrieves a list of available tokens, with optional parameters to customize the response. ```javascript theme={null} const BUNGEE_API_BASE_URL = "https://public-backend.bungee.exchange"; async function getTokenList(userAddress, chainIds = [1], isTrending = true) { const url = `${BUNGEE_API_BASE_URL}/api/v1/tokens/list`; const params = { userAddress, chainIds: chainIds.join(","), list: isTrending ? "trending" : "full", }; const queryParams = new URLSearchParams(params); const response = await fetch(`${url}?${queryParams}`); const data = await response.json(); return data; } ``` ## Token search endpoint example usage The `/tokens/search` endpoint allows you to search for tokens by address, name, or symbol. Use this endpoint to verify if a specific token can be traded, even if it doesn't appear in the token list. ```javascript theme={null} async function searchToken(query, userAddress) { const url = `${BUNGEE_API_BASE_URL}/api/v1/tokens/search`; const params = { q: query, userAddress, }; const queryParams = new URLSearchParams(params); const response = await fetch(`${url}?${queryParams}`); const data = await response.json(); return data; } ``` # Swap across EVM & Tron Source: https://docs.bungee.exchange/bungee-api/integration-guides/additional-guides/tron-on-bungee Bridge and swap assets between EVM chains and Tron using Bungee Bungee also supports swap assets from any EVM chain to Tron and from Tron to any EVM chain. This guide walks you through swapping assets between EVM chains and Tron using Bungee. It covers transaction options, and current limitations. ## Quick Start ### Key differences Here's what's different when integrating Tron Bungee API compared to standard EVM chains: **Transaction Flow** * User sends funds to a Deposit contract with the quote ID * Bungee indexes the transaction and delivers the funds on the destination chain **API Behavior** * Both `userAddress` and `receiverAddress` required for quotes * The only asset supported from/to Tron is [Tron USDT](https://tronscan.io/#/token20/TR7NHqjeKQxGTCi8q8ZY4pL8otSzgjLj6t) * There is no Fee collection at the moment ## Integration Steps The ["Auto routing onchain" guide from Bungee Docs](/bungee-api/integration-guides/auto-onchain-requests) outlines how to integrate the deposit flow as it is a quite similar process. 1. **Select Chains:** Users choose the source and destination chains, which determine the tokens available for bridging. 2. **Fetch Routes:** After selecting the tokens, retrieve the deposit route if available using the `/quote` endpoint. 3. **Submitting a deposit via the Deposit contract:** Obtain the transaction data from the `/quote` endpoint. Use this data to execute the deposit transaction on the source chain. 4. **Track Transaction Status:** Monitor the transaction's progress by polling the `/status` endpoint until the bridging process is complete. For Tron quotes, please ensure both `userAddress` and `receiverAddress` are defined. Also, note that this is a separate route from `autoRoute` since it is under `depositRoute`. ## Examples ### Queries ``` https://public-backend.bungee.exchange/api/v1/bungee/quote?userAddress=0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045&receiverAddress=TMe1CS54poswoTTrPAtqsKhry4RM7nvSF4&originChainId=137&destinationChainId=728126428&inputToken=0x3c499c542cef5e3811e1192ce70d8cc03d5c3359&outputToken=TR7NHqjeKQxGTCi8q8ZY4pL8otSzgjLj6t&inputAmount=5000000 ``` ``` https://public-backend.bungee.exchange/api/v1/bungee/quote?userAddress=TMe1CS54poswoTTrPAtqsKhry4RM7nvSF4&receiverAddress=0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045&originChainId=728126428&destinationChainId=8453&inputToken=TR7NHqjeKQxGTCi8q8ZY4pL8otSzgjLj6t&outputToken=0x833589fcd6edb6e08f4c7c32d4f71b54bda02913&inputAmount=9681288 ``` ### Scripts ```tsx theme={null} import { privateKeyToAccount } from "viem/accounts"; import { TronWeb } from "tronweb"; // Check if PRIVATE_KEY is set, set in console, i.e.: export PRIVATE_KEY= if (!process.env.PRIVATE_KEY) { console.error("Error: PRIVATE_KEY environment variable is not set"); console.error( "Example: PRIVATE_KEY=" ); process.exit(1); } // Check if TRON_PRIVATE_KEY is set if (!process.env.TRON_PRIVATE_KEY) { console.error("Error: TRON_PRIVATE_KEY environment variable is not set"); console.error( "Example: TRON_PRIVATE_KEY=" ); process.exit(1); } // Create account from private key const account = privateKeyToAccount(`${process.env.PRIVATE_KEY}`); // Derive TRON address from TRON private key const tronPrivateKey = process.env.TRON_PRIVATE_KEY.replace(/^0x/, ""); const tronWeb = new TronWeb({ fullHost: "https://api.trongrid.io", privateKey: tronPrivateKey, }); const tronAddress = tronWeb.address.fromPrivateKey(tronPrivateKey); // API and token parameters const BUNGEE_API_BASE_URL = "https://public-backend.bungee.exchange"; // USDT contract address on Tron const USDT_CONTRACT = "TR7NHqjeKQxGTCi8q8ZY4pL8otSzgjLj6t"; // Function to get USDT balance async function getUSDTBalance() { try { const contract = await tronWeb.contract().at(USDT_CONTRACT); const balance = await contract.balanceOf(tronAddress).call(); return balance.toString(); } catch (error) { console.error("Failed to get USDT balance:", error); throw error; } } // Function to get a quote async function getQuote(params) { try { const url = `${BUNGEE_API_BASE_URL}/api/v1/bungee/quote`; const queryParams = new URLSearchParams(params); const fullUrl = `${url}?${queryParams}`; const response = await fetch(fullUrl); console.log(fullUrl); const data = await response.json(); const serverReqId = response.headers.get("server-req-id"); // Check for errors if (!data.success) { throw new Error( `Quote error: ${data.statusCode}: ${data.message}. server-req-id: ${serverReqId}` ); } // Check if autoRoute exists if (!data.result.depositRoute) { throw new Error(`No depositRoute available. server-req-id: ${serverReqId}`); } const quoteId = data.result.depositRoute.quoteId; console.log("- Quote ID:", quoteId); // Extract data based on the response structure const txData = data.result.depositRoute.txData; return { quoteId, txData, fullResponse: data, }; } catch (error) { console.error("Failed to get quote:", error); throw error; } } // Function to submit the transaction to the Deposit contract async function submitNativeTransaction(txData) { try { console.log("- Submitting transaction to Deposit contract..."); console.log(" To:", txData.to); console.log(" Value:", txData.value); console.log(" Data:", txData.data); const transaction = await tronWeb.transactionBuilder.triggerSmartContract( tronWeb.address.fromHex(txData.to), "", // Empty functionSelector when using 'input' { input: txData.data.replace(/^0x/, ""), // Full data including function selector + params + quoteId callValue: parseInt(txData.value) || 0, feeLimit: 100000000, }, [], // Empty parameters since we're using 'input' tronAddress ); // Sign and send const signed = await tronWeb.trx.sign(transaction.transaction); const result = await tronWeb.trx.sendRawTransaction(signed); if (!result.result) { throw new Error(`Transaction failed: ${JSON.stringify(result)}`); } const hash = result.txid; console.log("- Transaction sent:", hash); // Wait for confirmation let receipt; while (!receipt) { await new Promise((resolve) => setTimeout(resolve, 3000)); try { const txInfo = await tronWeb.trx.getTransactionInfo(hash); if (txInfo?.blockNumber) { receipt = { blockNumber: txInfo.blockNumber, status: txInfo.receipt ? "success" : "failed", transactionHash: hash }; } } catch { } } console.log("- Transaction confirmed in block:", receipt.blockNumber); return { hash, receipt }; } catch (error) { console.error("Failed to submit transaction:", error); throw error; } } // Function to check the status of a request async function checkStatus(requestHash) { try { const response = await fetch( `${BUNGEE_API_BASE_URL}/api/v1/bungee/status?requestHash=${requestHash}` ); const data = await response.json(); if (!data.success) { throw new Error( `Status error: ${data.error?.message || "Unknown error"}` ); } return data.result[0]; } catch (error) { console.error("Failed to check status:", error); throw error; } } // Main function to handle the flow async function main() { try { console.log("Starting Bungee Tron to EVM Token Test (Deposit Route)..."); // Get USDT balance console.log("\n1. Getting USDT balance..."); const usdtBalance = await getUSDTBalance(); console.log("- USDT Balance:", usdtBalance); // Quote parameters for ERC20 token test const quoteParamsERC20 = { userAddress: tronAddress, receiverAddress: account.address, originChainId: 728126428, // Tron destinationChainId: 137, // Polygon inputToken: USDT_CONTRACT, // USDT on Tron outputToken: "0x3c499c542cef5e3811e1192ce70d8cc03d5c3359", // USDC on Polygon inputAmount: usdtBalance, // Use actual USDT balance }; // Get the quote and extract data console.log("\n2. Getting quote..."); const quoteResponse = await getQuote(quoteParamsERC20); //console.log(JSON.stringify(quoteResponse.fullResponse, null, 2)); if (quoteResponse.txData) { // Submit the transaction console.log("\n3. Submitting transaction..."); const { hash, receipt } = await submitNativeTransaction(quoteResponse.txData); console.log( "\n4. Transaction submitted:", "\n- Hash:", hash, "\n- Status:", receipt.status ); // Wait for 5 seconds before checking status console.log("\n5. Waiting for 5 seconds..."); let status; do { await new Promise((resolve) => setTimeout(resolve, 5000)); console.log("\n6. Checking status..."); try { status = await checkStatus(quoteResponse.quoteId); console.log("- Status details:", status.bungeeStatusCode); } catch (error) { console.error( "Failed to check status:", error?.message || "Unknown error" ); } } while (status?.bungeeStatusCode !== 3 && status?.bungeeStatusCode !== 4); console.log( "\n7. Transaction complete:", "\n- Hash:", status.destinationData?.txHash || "Transaction hash not available" ); } else { console.log("No transaction data available in the quote response"); } } catch (error) { console.error("Error in processing:", error?.shortMessage || error.message); throw error; } } // Execute the main function main(); ``` ```tsx theme={null} import { privateKeyToAccount } from "viem/accounts"; import { createPublicClient, http, createWalletClient } from "viem"; import { polygon } from "viem/chains"; import { TronWeb } from "tronweb"; // Check if PRIVATE_KEY is set, set in console, i.e.: export PRIVATE_KEY= if (!process.env.PRIVATE_KEY) { console.error("Error: PRIVATE_KEY environment variable is not set"); console.error( "Example: PRIVATE_KEY=" ); process.exit(1); } // Create account from private key // Normalize private key to ensure it has 0x prefix (required by viem) const rawPrivateKey = process.env.PRIVATE_KEY; const normalizedPrivateKey = rawPrivateKey.startsWith('0x') ? rawPrivateKey : `0x${rawPrivateKey}`; const account = privateKeyToAccount(normalizedPrivateKey); // Create Viem clients const publicClient = createPublicClient({ chain: polygon, transport: http(), }); const walletClient = createWalletClient({ account, chain: polygon, transport: http(), }); // Check if TRON_PRIVATE_KEY is set if (!process.env.TRON_PRIVATE_KEY) { console.error("Error: TRON_PRIVATE_KEY environment variable is not set"); console.error( "Example: TRON_PRIVATE_KEY=" ); process.exit(1); } // Derive TRON address from TRON private key const tronPrivateKey = process.env.TRON_PRIVATE_KEY.replace(/^0x/, ""); const tronWeb = new TronWeb({ fullHost: "https://api.trongrid.io", privateKey: tronPrivateKey, }); const tronAddress = tronWeb.address.fromPrivateKey(tronPrivateKey); // API and token parameters const BUNGEE_API_BASE_URL = "https://public-backend.bungee.exchange"; // Quote parameters for ERC20 token test (USDC from Optimism to Arbitrum) const quoteParamsERC20 = { userAddress: account.address, receiverAddress: tronAddress, originChainId: 137, // Polygon destinationChainId: 728126428, // Tron inputToken: "0x3c499c542cef5e3811e1192ce70d8cc03d5c3359", // USDC on Polygon outputToken: "TR7NHqjeKQxGTCi8q8ZY4pL8otSzgjLj6t", // USDT inputAmount: "10000000", // 10 USDC (6 decimals) }; // Function to get a quote async function getQuote(params) { try { const url = `${BUNGEE_API_BASE_URL}/api/v1/bungee/quote`; const queryParams = new URLSearchParams(params); const fullUrl = `${url}?${queryParams}`; const response = await fetch(fullUrl); console.log(fullUrl); const data = await response.json(); const serverReqId = response.headers.get("server-req-id"); // Check for errors if (!data.success) { throw new Error( `Quote error: ${data.statusCode}: ${data.message}. server-req-id: ${serverReqId}` ); } // Check if autoRoute exists if (!data.result.depositRoute) { throw new Error(`No depositRoute available. server-req-id: ${serverReqId}`); } const quoteId = data.result.depositRoute.quoteId; console.log("- Quote ID:", quoteId); // Extract data based on the response structure const txData = data.result.depositRoute.txData; return { quoteId, txData, fullResponse: data, }; } catch (error) { console.error("Failed to get quote:", error); throw error; } } // Function to submit the transaction to the inbox contract async function submitNativeTransaction(txData) { try { console.log("- Submitting transaction to inbox contract..."); console.log(" To:", txData.to); console.log(" Value:", txData.value); console.log(" Data:", txData.data); // Send the transaction const hash = await walletClient.sendTransaction({ to: txData.to, value: BigInt(txData.value), data: txData.data, }); console.log("- Transaction sent:", hash); // Wait for transaction to be mined const receipt = await publicClient.waitForTransactionReceipt({ hash }); console.log("- Transaction confirmed in block:", receipt.blockNumber); return { hash, receipt, }; } catch (error) { console.error("Failed to submit transaction:", error); throw error; } } // Function to check the status of a request async function checkStatus(requestHash) { try { const response = await fetch( `${BUNGEE_API_BASE_URL}/api/v1/bungee/status?requestHash=${requestHash}` ); const data = await response.json(); if (!data.success) { throw new Error( `Status error: ${data.error?.message || "Unknown error"}` ); } return data.result[0]; } catch (error) { console.error("Failed to check status:", error); throw error; } } // Main function to handle the flow async function main() { try { console.log("Starting Bungee EVM to Tron Test (Deposit Route)..."); // Get the quote and extract data console.log("\n1. Getting quote..."); const quoteResponse = await getQuote(quoteParamsERC20); //console.log(JSON.stringify(quoteResponse.fullResponse, null, 2)); if (quoteResponse.txData) { // Submit the transaction console.log("\n2. Submitting transaction..."); const { hash, receipt } = await submitNativeTransaction(quoteResponse.txData); console.log( "\n3. Transaction submitted:", "\n- Hash:", hash, "\n- Status:", receipt.status ); // Wait for 5 seconds before checking status console.log("\n4. Waiting for 5 seconds..."); let status; do { await new Promise((resolve) => setTimeout(resolve, 5000)); console.log("\n5. Checking status..."); try { status = await checkStatus(quoteResponse.quoteId); console.log("- Status details:", status.bungeeStatusCode); } catch (error) { console.error( "Failed to check status:", error?.message || "Unknown error" ); } } while (status?.bungeeStatusCode !== 3 && status?.bungeeStatusCode !== 4); console.log( "\n6. Transaction complete:", "\n- Hash:", status.destinationData?.txHash || "Transaction hash not available" ); } else { console.log("No transaction data available in the quote response"); } } catch (error) { console.error("Error in processing:", error?.shortMessage || error.message); throw error; } } // Execute the main function main(); ``` # Auto routing with Permit2 Source: https://docs.bungee.exchange/bungee-api/integration-guides/auto-erc20-permit2 Integrate Bungee Auto for ERC20 tokens with gasless approvals This guide covers how to integrate Bungee Auto for samechain and crosschain swaps using **ERC20 tokens** as input tokens with Permit2 for gasless approvals. ## Overview The Permit2 integration flow allows users to swap ERC20 tokens across chains without requiring separate approval transactions. This provides a better user experience by: 1. Eliminating the need for separate approval transactions 2. Enabling gasless approvals, saving users gas fees 3. Only transferring tokens if the auction is completed and a transmitter has picked up the request **Smart Contract Wallets** If the wallet supports EIP-1271, you can use the Permit2 signature flow for approvals. Otherwise, use the fallback mechanism by sending the request via the [BungeeInbox contract](/bungee-api/integration-guides/auto-onchain-requests). ## Integration Steps ### Step 1: Get a Quote Request a quote for your ERC20 transfer using the actual parameters from the script. This ensures you have all the required data for the next steps. ```javascript theme={null} const BUNGEE_API_BASE_URL = "https://public-backend.bungee.exchange"; const quoteParamsERC20 = { userAddress: account.address, receiverAddress: account.address, originChainId: 10, // Optimism destinationChainId: 42161, // Arbitrum inputToken: "0x0b2c639c533813f4aa9d7837caf62653d097ff85", // USDC on Optimism outputToken: "0xaf88d065e77c8cC2239327C5EDb3A432268e5831", // USDC on Arbitrum inputAmount: "1000000", // 1 USDC (6 decimals) }; async function getQuote(params) { const url = `${BUNGEE_API_BASE_URL}/api/v1/bungee/quote`; const queryParams = new URLSearchParams(params); const fullUrl = `${url}?${queryParams}`; const response = await fetch(fullUrl); const data = await response.json(); const serverReqId = response.headers.get("server-req-id"); if (!data.success) { throw new Error( `Quote error: ${data.statusCode}: ${data.message}. server-req-id: ${serverReqId}` ); } if (!data.result.autoRoute) { throw new Error(`No autoRoute available. server-req-id: ${serverReqId}`); } const quoteId = data.result.autoRoute.quoteId; const requestType = data.result.autoRoute.requestType; let witness = null; let signTypedData = null; if (data.result.autoRoute.signTypedData) { signTypedData = data.result.autoRoute.signTypedData; if (signTypedData.values && signTypedData.values.witness) { witness = signTypedData.values.witness; } } const approvalData = data.result.autoRoute.approvalData; return { quoteId, requestType, witness, signTypedData, approvalData, fullResponse: data, }; } ``` **Quote Expiry Handling** Bungee quotes are typically valid for **60 seconds**. If the user's token approval transaction takes significant time to confirm, the `quoteId` may expire. For the best user experience, consider **refreshing the quote** after the approval confirmation and before requesting the Permit2 signature. ### Step 2: Check and Approve Token (ERC20 Approval Step) Before signing and submitting the request, you must ensure the permit2 contract has sufficient allowance to spend your tokens. The script checks for allowance and sends an approval transaction if needed. Read more about permit2 [here](/overview/routing-methods/permit2). ```javascript theme={null} async function checkAndApproveToken(approvalData) { if (!approvalData || !approvalData.tokenAddress) { console.log("No approval data found or required"); return; } // ERC20 ABI for allowance and approve functions const erc20Abi = [ { inputs: [ { name: "owner", type: "address" }, { name: "spender", type: "address" }, ], name: "allowance", outputs: [{ name: "", type: "uint256" }], stateMutability: "view", type: "function", }, { inputs: [ { name: "spender", type: "address" }, { name: "amount", type: "uint256" }, ], name: "approve", outputs: [{ name: "", type: "bool" }], stateMutability: "nonpayable", type: "function", }, ]; const currentAllowance = await publicClient.readContract({ address: approvalData.tokenAddress, abi: erc20Abi, functionName: "allowance", args: [ approvalData.userAddress, approvalData.spenderAddress === "0" ? "0x000000000022D473030F116dDEE9F6B43aC78BA3" // Permit2 default : approvalData.spenderAddress, ], }); if (BigInt(currentAllowance) >= BigInt(approvalData.amount)) { console.log("Sufficient allowance already exists."); return; } // Send approval transaction const hash = await walletClient.writeContract({ address: approvalData.tokenAddress, abi: erc20Abi, functionName: "approve", args: [ approvalData.spenderAddress === "0" ? "0x000000000022D473030F116dDEE9F6B43aC78BA3" : approvalData.spenderAddress, approvalData.amount, ], }); console.log(`Approval transaction sent: ${hash}`); await publicClient.waitForTransactionReceipt({ hash }); console.log("Approval confirmed."); } ``` **Important: `approvalData` is NOT a Transaction Object** The `approvalData` returned by the API contains raw parameters (`tokenAddress`, `spenderAddress`, `amount`, `userAddress`). It is **not** a pre-built transaction object that you can blindly send to a wallet. You must use these parameters to construct an `approve()` transaction yourself, as shown in the example below. Additionally, the API may return `approvalData` even if the user already has sufficient allowance. **Always check the onchain allowance** before prompting the user to approve. **Optimization Tip**: When approving for **Permit2**, we recommend approving the maximum amount (`MaxUint256`). This allows the user to perform gasless signatures for all future swaps without needing another onchain transaction. For other flows (e.g. Manual), use the exact amount specified in `approvalData`. ### Step 3: Sign and Submit the Request After ensuring approval, sign the typed data and submit the request. Extract the `witness` object from the quote response at `result.autoRoute.signTypedData.values.witness` and pass it as the `request` parameter when submitting the signed request. ```javascript theme={null} async function viemSignTypedData(signTypedData) { const signature = await account.signTypedData({ types: signTypedData.types, primaryType: "PermitWitnessTransferFrom", message: signTypedData.values, domain: signTypedData.domain, }); return signature; } async function submitSignedRequest( requestType, request, userSignature, quoteId ) { const requestBody = { requestType, request, userSignature, quoteId, }; const response = await fetch(`${BUNGEE_API_BASE_URL}/api/v1/bungee/submit`, { method: "POST", headers: { "Content-Type": "application/json" }, body: JSON.stringify(requestBody), }); const data = await response.json(); if (!data.success) { throw new Error(`Submit error: ${data.error?.message || "Unknown error"}`); } return data.result; } ``` ### Step 4: Check Request Status After submitting the request, check its status to track progress. You can implement a polling mechanism to continuously check until completion: ```javascript theme={null} async function checkStatus(requestHash) { const response = await fetch( `${BUNGEE_API_BASE_URL}/api/v1/bungee/status?requestHash=${requestHash}` ); const data = await response.json(); if (!data.success) { throw new Error(`Status error: ${data.error?.message || "Unknown error"}`); } return data.result[0]; } async function pollForCompletion( requestHash, interval = 5000, maxAttempts = 60 ) { let attempts = 0; while (attempts < maxAttempts) { const status = await checkStatus(requestHash); const code = status?.bungeeStatusCode; if (code === 3 || code === 4) { // FULFILLED or SETTLED console.log("Transaction complete:", status.destinationData?.txHash); return status; } if (code === 5) { throw new Error(`Request expired. Status: ${JSON.stringify(status)}`); } if (code === 6) { throw new Error(`Request cancelled. Status: ${JSON.stringify(status)}`); } if (code === 7) { throw new Error(`Request refunded. Status: ${JSON.stringify(status)}`); } attempts++; await new Promise((resolve) => setTimeout(resolve, interval)); } throw new Error("Polling timed out. Transaction may not have completed."); } ``` *** ## Complete Integration Example ```javascript theme={null} import { privateKeyToAccount } from "viem/accounts"; import { createPublicClient, http, createWalletClient } from "viem"; import { optimism } from "viem/chains"; // Check if PRIVATE_KEY is set if (!process.env.PRIVATE_KEY) { console.error("Error: PRIVATE_KEY environment variable is not set"); process.exit(1); } // Create account from private key const normalizedPrivateKey = process.env.PRIVATE_KEY.startsWith('0x') ? process.env.PRIVATE_KEY : `0x${process.env.PRIVATE_KEY}`; const account = privateKeyToAccount(normalizedPrivateKey); // Create Viem clients const publicClient = createPublicClient({ chain: optimism, transport: http(), }); const walletClient = createWalletClient({ account, chain: optimism, transport: http(), }); // API and token parameters const BUNGEE_API_BASE_URL = "https://public-backend.bungee.exchange"; // Quote parameters for ERC20 token test (USDC from Optimism to Arbitrum) const quoteParamsERC20 = { userAddress: account.address, receiverAddress: account.address, originChainId: 10, // Optimism destinationChainId: 42161, // Arbitrum inputToken: "0x0b2c639c533813f4aa9d7837caf62653d097ff85", // USDC on Optimism outputToken: "0xaf88d065e77c8cC2239327C5EDb3A432268e5831", // USDC on Arbitrum inputAmount: "1000000", // 1 USDC (6 decimals) }; async function getQuote(params) { const url = `${BUNGEE_API_BASE_URL}/api/v1/bungee/quote`; const queryParams = new URLSearchParams(params); const fullUrl = `${url}?${queryParams}`; const response = await fetch(fullUrl); const data = await response.json(); const serverReqId = response.headers.get("server-req-id"); if (!data.success) { throw new Error( `Quote error: ${data.statusCode}: ${data.message}. server-req-id: ${serverReqId}` ); } if (!data.result.autoRoute) { throw new Error(`No autoRoute available. server-req-id: ${serverReqId}`); } const quoteId = data.result.autoRoute.quoteId; const requestType = data.result.autoRoute.requestType; let witness = null; let signTypedData = null; if (data.result.autoRoute.signTypedData) { signTypedData = data.result.autoRoute.signTypedData; if (signTypedData?.values?.witness) { witness = signTypedData.values.witness; } } return { quoteId, requestType, witness, signTypedData, approvalData: data.result.autoRoute.approvalData, fullResponse: data, }; } async function checkAndApproveToken(approvalData) { if (!approvalData || !approvalData.tokenAddress) { console.log("No approval data found or required"); return; } // ERC20 ABI for allowance and approve functions const erc20Abi = [ { inputs: [ { name: "owner", type: "address" }, { name: "spender", type: "address" }, ], name: "allowance", outputs: [{ name: "", type: "uint256" }], stateMutability: "view", type: "function", }, { inputs: [ { name: "spender", type: "address" }, { name: "amount", type: "uint256" }, ], name: "approve", outputs: [{ name: "", type: "bool" }], stateMutability: "nonpayable", type: "function", }, ]; const currentAllowance = await publicClient.readContract({ address: approvalData.tokenAddress, abi: erc20Abi, functionName: "allowance", args: [ approvalData.userAddress, approvalData.spenderAddress === "0" ? "0x000000000022D473030F116dDEE9F6B43aC78BA3" // Permit2 default : approvalData.spenderAddress, ], }); if (BigInt(currentAllowance) >= BigInt(approvalData.amount)) { console.log("Sufficient allowance already exists."); return; } // Send approval transaction const hash = await walletClient.writeContract({ address: approvalData.tokenAddress, abi: erc20Abi, functionName: "approve", args: [ approvalData.spenderAddress === "0" ? "0x000000000022D473030F116dDEE9F6B43aC78BA3" : approvalData.spenderAddress, approvalData.amount, ], }); console.log(`Approval transaction sent: ${hash}`); await publicClient.waitForTransactionReceipt({ hash }); console.log("Approval confirmed."); } async function viemSignTypedData(signTypedData) { const signature = await account.signTypedData({ types: signTypedData.types, primaryType: "PermitWitnessTransferFrom", message: signTypedData.values, domain: signTypedData.domain, }); return signature; } async function submitSignedRequest(requestType, request, userSignature, quoteId) { const requestBody = { requestType, request, userSignature, quoteId }; const response = await fetch(`${BUNGEE_API_BASE_URL}/api/v1/bungee/submit`, { method: "POST", headers: { "Content-Type": "application/json" }, body: JSON.stringify(requestBody), }); const data = await response.json(); if (!data.success) { throw new Error(`Submit error: ${data.error?.message || "Unknown error"}`); } return data.result; } async function checkStatus(requestHash) { const response = await fetch( `${BUNGEE_API_BASE_URL}/api/v1/bungee/status?requestHash=${requestHash}` ); const data = await response.json(); if (!data.success) { throw new Error(`Status error: ${data.error?.message || "Unknown error"}`); } return data.result[0]; } async function pollForCompletion( requestHash, interval = 5000, maxAttempts = 60 ) { let attempts = 0; while (attempts < maxAttempts) { const status = await checkStatus(requestHash); const code = status?.bungeeStatusCode; if (code === 3 || code === 4) { // FULFILLED or SETTLED console.log("Transaction complete:", status.destinationData?.txHash); return status; } if (code === 5) { throw new Error(`Request expired. Status: ${JSON.stringify(status)}`); } if (code === 6) { throw new Error(`Request cancelled. Status: ${JSON.stringify(status)}`); } if (code === 7) { throw new Error(`Request refunded. Status: ${JSON.stringify(status)}`); } console.log("Status:", code); attempts++; await new Promise((resolve) => setTimeout(resolve, interval)); } throw new Error("Polling timed out. Transaction may not have completed."); } async function main() { console.log("Starting Bungee ERC20 Token Test (Auto Route)..."); // Get the quote console.log("\n1. Getting quote..."); const { quoteId, requestType, witness, signTypedData, approvalData } = await getQuote(quoteParamsERC20); // Handle approval if needed if (approvalData) { await checkAndApproveToken(approvalData); } if (signTypedData && witness) { // Sign the typed data console.log("\n2. Signing typed data..."); const signature = await viemSignTypedData(signTypedData); // Submit the signed request console.log("\n3. Submitting signed request..."); const submitResult = await submitSignedRequest( requestType, witness, signature, quoteId ); console.log("Request Hash:", submitResult.requestHash); // Poll for completion console.log("\n4. Checking status..."); const status = await pollForCompletion(submitResult.requestHash); } else { console.error("Missing required data for signing and submission:"); console.error("- signTypedData:", signTypedData ? "present" : "missing"); console.error("- witness:", witness ? "present" : "missing"); console.error("- quoteId:", quoteId); throw new Error("Cannot proceed: signTypedData and witness are required for submitting signed requests. Check your quote response."); } } main(); ``` # Auto routing onchain Source: https://docs.bungee.exchange/bungee-api/integration-guides/auto-onchain-requests Integrate Bungee Auto for native tokens using the Inbox Contract This page covers how to integrate Bungee Auto for samechain and crosschain swaps using **Native tokens** (ETH, POL, etc.) as input tokens by directly interacting with the Bungee Inbox contract. ## Overview The Inbox Contract integration is required for native tokens and can also be used for ERC20 tokens when: * Permit2 is not an option * The integration is directly onchain * You prefer a fully onchain approach This method involves: 1. Getting a quote from the Bungee API 2. Creating and submitting a request via the inbox contract 3. Monitoring the status via the API ## Integration Steps ### Step 1: Get a Quote For native tokens, request a quote using the address `0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE`. ```javascript theme={null} const BUNGEE_API_BASE_URL = "https://public-backend.bungee.exchange"; const quoteParamsNative = { userAddress: "0x...", originChainId: 10, // Optimism destinationChainId: 42161, // Arbitrum inputToken: "0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE", // ETH on Optimism inputAmount: "100000000000000", // 0.0001 ETH in wei receiverAddress: "0x...", outputToken: "0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE", // ETH on Arbitrum }; ``` When integrating Bungee Auto, you can specify the `useInbox` parameter to directly create a request onchain and bypass permit2 gasless signatures: * **`useInbox`**: Enables `autoRoute.txData` for ERC20 tokens and disables `autoRoute.signTypedData` #### Example ```javascript theme={null} /** * Get a quote with ERC20 onchain request information */ async function getQuoteWithUseInbox() { // Set up the parameters for the quote request const quoteParams = { userAddress: "0xYourUsersAddress", originChainId: "1", // Ethereum destinationChainId: "10", // Optimism inputToken: "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48", // USDC on Ethereum outputToken: "0x7F5c764cBc14f9669B88837ca1490cCa17c31607", // USDC on Optimism inputAmount: "1000000", // 1 USDC (6 decimals) receiverAddress: "0xYourUsersAddress", useInbox: true, // Enables autoRoute.txData for ERC20 tokens and disables autoRoute.signTypedData }; // Build the URL with query parameters const url = `${BUNGEE_API_BASE_URL}/api/v1/bungee/quote`; const queryParams = new URLSearchParams(quoteParams); const fullUrl = `${url}?${queryParams}`; // Make the request const response = await fetch(fullUrl, { method: "GET", headers: { "Content-Type": "application/json", }, }); const data = await response.json(); const serverReqId = response.headers.get("server-req-id"); if (!data.success) { throw new Error( `Quote error: ${data.statusCode}: ${data.message}. server-req-id: ${serverReqId}` ); } return data.result; } ``` Before submitting a user request to BungeeInbox, check if the request needs approval. You can verify this by checking if the field `autoRoute.approvalData` contains any data. * If `approvalData` is present and populated, it means approval is required. * If `approvalData` is empty, no approval is needed, and you can submit the request directly. ```javascript theme={null} async function getQuote(params) { try { const url = `${BUNGEE_API_BASE_URL}/api/v1/bungee/quote`; const queryParams = new URLSearchParams(params); const fullUrl = `${url}?${queryParams}`; const response = await fetch(fullUrl); const data = await response.json(); const serverReqId = response.headers.get("server-req-id"); if (!data.success) { throw new Error( `Quote error: ${data.statusCode}: ${data.message}. server-req-id: ${serverReqId}` ); } if (!data.result.autoRoute) { throw new Error(`No autoRoute available. server-req-id: ${serverReqId}`); } // Extract transaction data for native token const txData = data.result.autoRoute.txData; const requestHash = data.result.autoRoute.requestHash; const quoteId = data.result.autoRoute.quoteId; const requestType = data.result.autoRoute.requestType; console.log("- Quote ID:", quoteId); console.log("- Request Type:", requestType); // Log request hash if (data.result.autoRoute.requestHash) { console.log("- Request Hash:", data.result.autoRoute.requestHash); } return { quoteId, requestType, txData, requestHash, fullResponse: data, }; } catch (error) { console.error("Failed to get quote:", error); throw error; } } ``` ### Step 2: Submit the Transaction to the Inbox Contract For native tokens, submit the transaction directly to the inbox contract using the transaction data from the quote. ```javascript theme={null} async function submitNativeTransaction(txData) { const hash = await walletClient.sendTransaction({ to: txData.to, value: BigInt(txData.value), data: txData.data, }); const receipt = await publicClient.waitForTransactionReceipt({ hash }); return { hash, receipt }; } ``` ### Step 3: Check Request Status After submitting the request, check its status to track progress. You can implement a polling mechanism to continuously check until completion: ```javascript theme={null} async function checkStatus(requestHash) { const response = await fetch( `${BUNGEE_API_BASE_URL}/api/v1/bungee/status?requestHash=${requestHash}` ); const data = await response.json(); if (!data.success) { throw new Error(`Status error: ${data.error?.message || "Unknown error"}`); } return data.result[0]; } async function pollForCompletion( requestHash, interval = 5000, maxAttempts = 60 ) { let attempts = 0; while (attempts < maxAttempts) { const status = await checkStatus(requestHash); const code = status?.bungeeStatusCode; if (code === 3 || code === 4) { console.log("Transaction complete:", status.destinationData?.txHash); return status; } if (code === 5) { throw new Error(`Request expired. Status: ${JSON.stringify(status)}`); } if (code === 6) { throw new Error(`Request cancelled. Status: ${JSON.stringify(status)}`); } if (code === 7) { throw new Error(`Request refunded. Status: ${JSON.stringify(status)}`); } attempts++; await new Promise((resolve) => setTimeout(resolve, interval)); } throw new Error("Polling timed out. Transaction may not have completed."); } ``` ## Complete Integration Example ```javascript theme={null} import { createPublicClient, createWalletClient, http } from "viem"; import { privateKeyToAccount } from "viem/accounts"; import { optimism } from "viem/chains"; // Check if PRIVATE_KEY is set if (!process.env.PRIVATE_KEY) { console.error("Error: PRIVATE_KEY environment variable is not set"); process.exit(1); } // Create account from private key // Normalize private key to ensure it has exactly one "0x" prefix (required by viem) const normalizedPrivateKey = `0x${process.env.PRIVATE_KEY.replace(/^0x/i, '')}`; const account = privateKeyToAccount(normalizedPrivateKey); const publicClient = createPublicClient({ chain: optimism, transport: http(), }); const walletClient = createWalletClient({ account, chain: optimism, transport: http(), }); // API and token parameters const BUNGEE_API_BASE_URL = "https://public-backend.bungee.exchange"; // Quote parameters for native token test (ETH from Optimism to Arbitrum) const quoteParamsNative = { userAddress: account.address, receiverAddress: account.address, originChainId: 10, // Optimism destinationChainId: 42161, // Arbitrum inputToken: "0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE", // ETH on Optimism outputToken: "0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE", // ETH on Arbitrum inputAmount: "100000000000000", // 0.0001 ETH in wei }; async function getQuote(params) { const url = `${BUNGEE_API_BASE_URL}/api/v1/bungee/quote`; const queryParams = new URLSearchParams(params); const fullUrl = `${url}?${queryParams}`; const response = await fetch(fullUrl); const data = await response.json(); if (!data.success) { throw new Error(`Quote error: ${data.error?.message || "Unknown error"}`); } if (!data.result.autoRoute) { throw new Error("No autoRoute available for native token transfer"); } return { txData: data.result.autoRoute.txData, requestHash: data.result.autoRoute.requestHash, }; } async function submitNativeTransaction(txData) { const hash = await walletClient.sendTransaction({ to: txData.to, value: BigInt(txData.value), data: txData.data, }); const receipt = await publicClient.waitForTransactionReceipt({ hash }); return { hash, receipt }; } async function checkStatus(requestHash) { const response = await fetch( `${BUNGEE_API_BASE_URL}/api/v1/bungee/status?requestHash=${requestHash}` ); const data = await response.json(); if (!data.success) { throw new Error(`Status error: ${data.error?.message || "Unknown error"}`); } return data.result[0]; } async function main() { console.log("Starting Bungee Native Token Test (Auto Route)..."); // Get the quote console.log("\n1. Getting quote..."); const { txData, requestHash } = await getQuote(quoteParamsNative); if (txData) { // Submit the transaction console.log("\n2. Submitting transaction..."); const { hash, receipt } = await submitNativeTransaction(txData); console.log("Transaction sent:", hash); // Poll for completion console.log("\n3. Checking status..."); let status; let attempts = 0; const maxAttempts = 60; const interval = 5000; while (attempts < maxAttempts) { await new Promise((resolve) => setTimeout(resolve, interval)); status = await checkStatus(requestHash); const code = status?.bungeeStatusCode; console.log("Status:", code); if (code === 3 || code === 4) { console.log("Transaction complete:", status.destinationData?.txHash); break; } if (code === 5) { throw new Error(`Request expired. Status: ${JSON.stringify(status)}`); } if (code === 6) { throw new Error(`Request cancelled. Status: ${JSON.stringify(status)}`); } if (code === 7) { throw new Error(`Request refunded. Status: ${JSON.stringify(status)}`); } attempts++; } if (attempts >= maxAttempts) { throw new Error(`Polling timed out after ${maxAttempts} attempts. Last status: ${JSON.stringify(status)}`); } } } main(); ``` # Request status codes Source: https://docs.bungee.exchange/bungee-api/integration-guides/check-status Understanding Bungee API status codes and how to monitor requests When submitting requests with Bungee, monitoring the status of requests is essential. This is an explainer of the different status codes returned by the Bungee API and how to interpret them. ## Checking Request Status You can use the Bungee API endpoint to check the status of a request from Bungee Auto transactions and Bungee Manual crosschain swaps. The request hash can be either: * The `requestHash` returned from a submit request (for Auto routes) * The transaction hash (for Manual routes) ```javascript theme={null} const BUNGEE_API_BASE_URL = "https://public-backend.bungee.exchange"; async function checkStatus(requestHash) { try { const response = await fetch( `${BUNGEE_API_BASE_URL}/api/v1/bungee/status?requestHash=${requestHash}` ); const data = await response.json(); if (!data.success) { const serverReqId = response.headers.get("server-req-id"); throw new Error( `Status error: ${data.statusCode}: ${data.message}. server-req-id: ${serverReqId}` ); } // It returns an array since we can have multiple requests in one requestHash return data.result[0]; } catch (error) { console.error("Failed to check status:", error); throw error; } } ``` ### Manual samechain swaps For Bungee Manual samechain swaps, the swap is executed in the same onchain transaction you submit. Check the receipt status to determine success. ```javascript theme={null} // Example using viem import { createPublicClient, http } from "viem"; import { mainnet } from "viem/chains"; const client = createPublicClient({ chain: mainnet, transport: http() }); async function checkManualSameChainTx(hash) { const receipt = await client.waitForTransactionReceipt({ hash }); if (!receipt) { throw new Error("Transaction not found"); } if (receipt.status !== "success") { throw new Error("Transaction failed/reverted"); } return receipt; } ``` ## Status Code Enum Bungee uses the following enum to represent the status of a request. These status codes are returned in the `bungeeStatusCode` field of the status response: ```typescript theme={null} export enum RequestStatusEnum { PENDING = 0, ASSIGNED = 1, EXTRACTED = 2, FULFILLED = 3, SETTLED = 4, EXPIRED = 5, CANCELLED = 6, REFUNDED = 7, } ``` ## Status Code Descriptions ### PENDING (0) The request has been submitted to the Bungee Auto system but has not yet been picked up by a solver. This is the initial state of all requests. ### ASSIGNED (1) A solver has been assigned to the request and is working on it. The solver is preparing to execute the request. ### EXTRACTED (2) The solver has extracted the funds from the source chain and is in the process of executing the request. ### FULFILLED (3) The request has been successfully executed on the destination chain. The funds have been delivered to the recipient address. ### SETTLED (4) The request has been fully settled, meaning all operations have been completed and confirmed on both chains. ### EXPIRED (5) The request has expired because it was not processed within the specified time limit. This could happen if no solver was available or if there were network issues. ### CANCELLED (6) The request was cancelled, either by the user or by the system. ### REFUNDED (7) The refund has been processed and the funds have been sent to the user's address. The `refund` object contains details about the transaction hash and chain ID. **Refund recipient:** * If refunded on the source chain: * Onchain: Funds are sent to the `msg.sender` of the `createRequest` transaction * API: Funds are sent to the user address if submitted via `submit` endpoint * If refunded on the destination chain: Funds are sent to the `receiver` address ## Example Implementation with Polling Here's an example of how to poll for status updates until a transaction is complete: ```javascript theme={null} // For Auto routes (using requestHash from submission) // Terminal states: 3 = FULFILLED, 4 = SETTLED (success), 5 = EXPIRED, 6 = CANCELLED, 7 = REFUNDED (failure) const TERMINAL_SUCCESS = [3, 4]; const TERMINAL_FAILURE = [5, 6, 7]; const TERMINAL_STATES = [...TERMINAL_SUCCESS, ...TERMINAL_FAILURE]; let status; do { await new Promise((resolve) => setTimeout(resolve, 5000)); // Wait 5 seconds between checks console.log("Checking status..."); try { status = await checkStatus(submitResult.requestHash); console.log("Status details:", status.bungeeStatusCode); } catch (error) { console.error("Failed to check status:", error?.message || "Unknown error"); } } while (!TERMINAL_STATES.includes(status?.bungeeStatusCode)); // Handle terminal states if (TERMINAL_SUCCESS.includes(status?.bungeeStatusCode)) { console.log( "Transaction complete:", "\n- Hash:", status.destinationData?.txHash || "Transaction hash not available" ); } else { const statusNames = { 5: "EXPIRED", 6: "CANCELLED", 7: "REFUNDED" }; console.error( "Transaction failed:", `\n- Status: ${statusNames[status?.bungeeStatusCode]} (${status?.bungeeStatusCode})`, "\n- Details:", JSON.stringify(status, null, 2) ); throw new Error(`Request ${statusNames[status?.bungeeStatusCode]}`); } ``` ```javascript theme={null} // For Manual routes (using transaction hash) // Terminal states: 3 = FULFILLED, 4 = SETTLED (success), 5 = EXPIRED, 6 = CANCELLED, 7 = REFUNDED (failure) const TERMINAL_SUCCESS = [3, 4]; const TERMINAL_FAILURE = [5, 6, 7]; const TERMINAL_STATES = [...TERMINAL_SUCCESS, ...TERMINAL_FAILURE]; let status; do { await new Promise((resolve) => setTimeout(resolve, 5000)); // Wait 5 seconds between checks console.log("Checking status..."); try { status = await checkStatus(transactionHash); console.log("Status details:", status?.bungeeStatusCode || "Pending"); } catch (error) { console.error("Failed to check status:", error?.message || "Unknown error"); } } while (!status || !TERMINAL_STATES.includes(status?.bungeeStatusCode)); // Handle terminal states if (TERMINAL_SUCCESS.includes(status?.bungeeStatusCode)) { console.log( "Transaction complete:", "\n- Hash:", status.destinationData?.txHash || "Transaction hash not available" ); } else { const statusNames = { 5: "EXPIRED", 6: "CANCELLED", 7: "REFUNDED" }; console.error( "Transaction failed:", `\n- Status: ${statusNames[status?.bungeeStatusCode]} (${status?.bungeeStatusCode})`, "\n- Transaction Hash:", transactionHash, "\n- Details:", JSON.stringify(status, null, 2) ); throw new Error(`Request ${statusNames[status?.bungeeStatusCode]}`); } ``` # Manual routing Source: https://docs.bungee.exchange/bungee-api/integration-guides/manual Integrate Bungee Manual for crosschain swaps with granular control This page covers how to integrate Bungee Manual for crosschain swaps as it is useful when: * You need more control over the crosschain process * You want to compare multiple routes before executing This method involves: 1. Getting a quote from the Bungee API 2. Building the transaction from a selected route 3. Handling any required token approvals 4. Executing the crosschain transaction 5. Monitoring the status via the API **Slippage behavior (Manual vs Auto)** * In Bungee Manual, the `slippage` you provide applies only to the swap that may occur on the origin chain before bridging. If no origin swap is needed, the slippage setting does not apply. The bridge step itself does not use swap-style slippage because bridges have different mechanics. * In Bungee Auto, the `slippage` parameter is applied to the full end-to-end route (origin swap, bridge step, and any destination swap where applicable). ## Integration Steps ### Step 1: Get a Quote For ERC20 & Native tokens, request a quote with all required parameters, including the option to enable manual routes. The `enableManual: true` parameter is **required** to receive manual routes in the response. Without this parameter, only auto routes will be returned. ```javascript theme={null} const BUNGEE_API_BASE_URL = "https://public-backend.bungee.exchange"; const quoteParamsERC20 = { userAddress: USER_ADDRESS, originChainId: 10, // Optimism destinationChainId: 42161, // Arbitrum inputToken: "0x0b2c639c533813f4aa9d7837caf62653d097ff85", // USDC on Optimism inputAmount: "10000000", // 10 USDC (with decimals) receiverAddress: RECEIVER_ADDRESS, outputToken: "0xaf88d065e77c8cC2239327C5EDb3A432268e5831", // USDC on Arbitrum enableManual: true, // Important: enables manual routes }; async function getQuote(params) { const url = `${BUNGEE_API_BASE_URL}/api/v1/bungee/quote`; const queryParams = new URLSearchParams(params); const queryUrl = `${url}?${queryParams}`; const response = await fetch(queryUrl); const data = await response.json(); const serverReqId = response.headers.get("server-req-id"); if (!data.success) { throw new Error( `Quote error: ${data.statusCode}: ${data.message}. server-req-id: ${serverReqId}` ); } if (!data.result.manualRoutes || data.result.manualRoutes.length === 0) { throw new Error( `No manual routes available. server-req-id: ${serverReqId}` ); } return { manualRoutes: data.result.manualRoutes, completeResponse: data, serverReqId, }; } ``` ### Step 2: Build the Transaction from Selected Route The quote response contains multiple manual routes. Select one and build the transaction data by submitting the quote ID of the selected route. ```javascript theme={null} async function buildTransaction(quoteId) { const response = await fetch( `${BUNGEE_API_BASE_URL}/api/v1/bungee/build-tx?quoteId=${quoteId}` ); const data = await response.json(); const serverReqId = response.headers.get("server-req-id"); if (!data.success) { throw new Error( `Build TX error: ${data.statusCode}: ${data.message}. server-req-id: ${serverReqId}` ); } return data.result; } ``` ### Step 3: Handle Token Approvals (if needed) Check if the token needs to be approved for spending and create an approval transaction if required. Approval data is included in the build transaction response. ```javascript theme={null} const ERC20_ABI = parseAbi([ "function approve(address spender, uint256 amount) returns (bool)", "function allowance(address owner, address spender) view returns (uint256)", ]); async function buildApprovalTransaction(chainId, approvalData) { // Check current allowance const currentAllowance = await publicClient.readContract({ address: approvalData.tokenAddress, abi: ERC20_ABI, functionName: "allowance", args: [approvalData.userAddress, approvalData.spenderAddress], }); // If allowance is sufficient, no approval needed if (currentAllowance >= BigInt(approvalData.amount)) { return null; } // Create approval transaction data const data = encodeFunctionData({ abi: ERC20_ABI, functionName: "approve", args: [approvalData.spenderAddress, approvalData.amount], }); return { to: approvalData.tokenAddress, data, chainId: chainId, value: "0x00", }; } ``` ### Step 4: Execute the Transactions From the build transaction response, you can get the transaction data and send it to the blockchain. ```javascript theme={null} async function sendTransaction(txData) { const hash = await walletClient.sendTransaction({ to: txData.to, data: txData.data, value: txData.value ? BigInt(txData.value) : BigInt(0), }); const receipt = await publicClient.waitForTransactionReceipt({ hash }); return { hash, receipt }; } ``` If routing via Stargate, include a `msg.value` equal to the `protocolFees.amount` and ensure the address has enough native tokens to cover it. ### Step 5: Monitor the Transaction Status After submitting the request, check its status to track progress. ```javascript theme={null} async function checkStatus(txHash) { const response = await fetch( `${BUNGEE_API_BASE_URL}/api/v1/bungee/status?txHash=${txHash}` ); const data = await response.json(); const serverReqId = response.headers.get("server-req-id"); if (!data.success) { throw new Error( `Status error: ${data.statusCode}: ${data.message}. server-req-id: ${serverReqId}` ); } return data.result; } async function pollForCompletion( txHash, interval = 5000, maxAttempts = 60 ) { let attempts = 0; while (attempts < maxAttempts) { const status = await checkStatus(txHash); const code = status[0]?.bungeeStatusCode; // Success state if (code === 3) { return status; // Transaction complete } // Terminal failure states if (code === 5 || code === 6 || code === 7) { const statusMessage = status[0]?.message || "No additional message"; const statusNames = { 5: "EXPIRED", 6: "CANCELLED", 7: "REFUNDED" }; throw new Error( `Transaction terminated with status ${code} (${statusNames[code]}): ${statusMessage}` ); } attempts++; await new Promise((resolve) => setTimeout(resolve, interval)); } throw new Error("Polling timed out. Transaction may not have completed."); } ``` For a detailed explanation of all status codes, see the [Request Status Codes](/bungee-api/integration-guides/check-status) guide. ## Complete Integration Example (ERC20) ```javascript theme={null} import { createPublicClient, createWalletClient, http } from "viem"; import { privateKeyToAccount } from "viem/accounts"; import { optimism } from "viem/chains"; // Check if PRIVATE_KEY is set if (!process.env.PRIVATE_KEY) { console.error("Error: PRIVATE_KEY environment variable is not set"); process.exit(1); } // Create account from private key // Normalize private key to ensure it has exactly one "0x" prefix (required by viem) const normalizedPrivateKey = `0x${process.env.PRIVATE_KEY.replace(/^0x/i, '')}`; const account = privateKeyToAccount(normalizedPrivateKey); const publicClient = createPublicClient({ chain: optimism, transport: http(), }); const walletClient = createWalletClient({ account, chain: optimism, transport: http(), }); const BUNGEE_API_BASE_URL = "https://public-backend.bungee.exchange"; const quoteParams = { userAddress: account.address, receiverAddress: account.address, originChainId: 10, destinationChainId: 42161, inputToken: "0x0b2c639c533813f4aa9d7837caf62653d097ff85", outputToken: "0xaf88d065e77c8cC2239327C5EDb3A432268e5831", inputAmount: "10000000", enableManual: true, }; async function getQuote(params) { const url = `${BUNGEE_API_BASE_URL}/api/v1/bungee/quote`; const queryParams = new URLSearchParams(params); const response = await fetch(`${url}?${queryParams}`); const data = await response.json(); if (!data.success || !data.result.manualRoutes?.length) { throw new Error("No manual routes available"); } return data.result.manualRoutes; } async function buildTransaction(quoteId) { const response = await fetch( `${BUNGEE_API_BASE_URL}/api/v1/bungee/build-tx?quoteId=${quoteId}` ); const data = await response.json(); if (!data.success) { throw new Error("Failed to build transaction"); } return data.result; } async function checkStatus(txHash) { const response = await fetch( `${BUNGEE_API_BASE_URL}/api/v1/bungee/status?txHash=${txHash}` ); const data = await response.json(); return data.result[0]; } async function main() { console.log("Starting Bungee Manual Route Test..."); // Get routes const routes = await getQuote(quoteParams); console.log(`Found ${routes.length} routes`); // Select first route const selectedRoute = routes[0]; const quoteId = selectedRoute.quoteId; // Build transaction const txResult = await buildTransaction(quoteId); // Handle approval if needed if (txResult.approvalData) { // ... handle approval } // Send transaction const hash = await walletClient.sendTransaction({ to: txResult.txData.to, data: txResult.txData.data, value: txResult.txData.value ? BigInt(txResult.txData.value) : BigInt(0), }); console.log("Transaction sent:", hash); // Poll for completion // Terminal states: 3 = FULFILLED, 4 = SETTLED (success), 5 = EXPIRED, 6 = CANCELLED, 7 = REFUNDED (failure) const TERMINAL_SUCCESS = [3, 4]; const TERMINAL_FAILURE = [5, 6, 7]; const TERMINAL_STATES = [...TERMINAL_SUCCESS, ...TERMINAL_FAILURE]; let status; do { await new Promise((r) => setTimeout(r, 5000)); status = await checkStatus(hash); } while (!TERMINAL_STATES.includes(status?.bungeeStatusCode)); if (TERMINAL_SUCCESS.includes(status?.bungeeStatusCode)) { console.log("Complete:", status.destinationData?.txHash); } else { const statusNames = { 5: "EXPIRED", 6: "CANCELLED", 7: "REFUNDED" }; throw new Error(`Request ${statusNames[status?.bungeeStatusCode]}: ${JSON.stringify(status)}`); } } main(); ``` # Introduction Source: https://docs.bungee.exchange/bungee-api/integration-introduction Getting started with Bungee API integration Bungee's unified API makes crosschain token swaps simple. This page walks you through the integration process and helps you choose the right approach for your app. ## Integration flow Integrating Bungee Auto involves 4 steps: 1. **Get a quote**: Fetch quote pricing information 2. **Create a Request**: Prepare the request 3. **Submit a Request**: Submit the request either via the `submit` endpoint or onchain via the Inbox Contract 4. **Monitor status**: Track the Request status And that's it! Bungee Auto will handle the rest. See our [integration guides](/bungee-api/integration-guides) for step-by-step instructions on how to integrate Bungee into your application. Integrate Bungee via Permit2 for ERC20s Integrate Bungee via the BungeeInbox contract Integrate Bungee Manual for granular control Swap across EVM & Solana ## Link to Bungee Redirect users to Bungee with chain/tokens for transfers pre-selected. Users can then simply choose a route and start transferring with just a few clicks. ``` https://bungee.exchange/?originChainId=1&inputToken=0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee&destinationChainId=10&outputToken=0x0b2c639c533813f4aa9d7837caf62653d097ff85 ``` See the [Bungee Link](/bungee-api/bungee-link) documentation for more details and parameters. # Bungee Docs Source: https://docs.bungee.exchange/index Explore guides and examples to integrate Bungee swaps into your application
Bungee Bungee

Understand Bungee.
Build faster.

Learn the product, then move into APIs, widgets, and routing guides for cross-chain swaps, bridges, and deposit flows.

Create credentials and start integrating. Use the widget for the quickest embed. Use Bungee docs from coding agents and other LLM-powered tools.
Get help when you hit integration or product questions. Download logos, brand assets, and design resources. Inspect the raw API schema when you need the reference directly.
# Audits Source: https://docs.bungee.exchange/overview/audits # Brand Kit Source: https://docs.bungee.exchange/overview/brand-kit # Chain Support Source: https://docs.bungee.exchange/overview/chain-support This file has been auto-generated on 2026-02-26 This table shows which chains support Bungee Auto and Bungee Manual. | Chain | Bungee Auto | Bungee Manual | | ----------------------------------------------------- | ----------- | ------------- | | [Arbitrum](https://arbiscan.io) | ✅ | ✅ | | [Aurora](https://aurorascan.dev) | ❌ | ✅\* | | [Avalanche](https://snowtrace.io) | ✅ | ✅ | | [B3](https://explorer.b3.fun) | ❌ | ✅ | | [Base](https://basescan.org) | ✅ | ✅ | | [Berachain](https://berascan.com) | ✅ | ✅ | | [Binance Smart Chain](https://bscscan.com) | ✅ | ✅ | | [Blast](https://blastscan.io) | ✅ | ✅ | | [Ethereum](https://etherscan.io) | ✅ | ✅ | | [Fantom](https://explorer.fantom.network) | ✅ | ✅\* | | [Gnosis](https://gnosisscan.io) | ✅ | ✅ | | [Hyperevm](https://purrsec.com) | ✅ | ❌ | | [Ink](https://explorer.inkonchain.com) | ✅ | ✅ | | [Katana](https://katanascan.com) | ✅ | ❌ | | [Linea](https://lineascan.build) | ✅ | ✅ | | [Mantle](https://mantlescan.xyz) | ✅ | ✅ | | [Megaeth](https://mega.etherscan.io) | ✅ | ❌ | | [Mode](https://explorer.mode.network) | ✅ | ✅ | | [Monad](https://monadscan.com) | ✅ | ❌ | | [Optimism](https://optimistic.etherscan.io) | ✅ | ✅ | | [Plasma](https://plasmascan.to) | ✅ | ❌ | | [Plume](https://explorer.plume.org) | ✅ | ❌ | | [Polygon](https://polygonscan.com) | ✅ | ✅ | | [Polygon zkEVM](https://www.oklink.com/polygon-zkevm) | ❌ | ✅ | | [Scroll](https://scrollscan.com) | ✅ | ✅ | | [Sei](https://seistream.app) | ✅ | ❌ | | [Solana](https://solscan.io) | ✅ | ❌ | | [Soneium](https://soneium.blockscout.com) | ✅ | ❌ | | [Sonic](https://sonicscan.org) | ✅ | ✅ | | [Tron](https://tronscan.org) | ✅ | ❌ | | [Unichain](https://unichain.blockscout.com) | ✅ | ✅ | | [Worldchain](https://worldscan.org) | ✅ | ✅ | | [zkSync Era](https://explorer.zksync.io) | ❌ | ✅ | **Notice:** \*Aurora and Fantom have limited support and are being sunsetted. # Deposit Addresses Source: https://docs.bungee.exchange/overview/deposit-addresses Use Bungee deposit addresses to complete the origin transfer directly and route funds cross-chain. ## What Are Deposit Addresses? Deposit addresses let users bridge without connecting a wallet. Instead of initiating a bridge from a connected wallet, users send funds to a designated address provided by Bungee, and Bungee routes funds to the destination chain and delivers tokens to the user’s wallet after processing. This makes it easy to onboard users to a new chain or fund a destination wallet from sources like CEX withdrawals or fiat on-ramps. Once generated, a deposit address expires after 10 minutes and is valid for only a single deposit transaction. This flow is useful when you want: * A direct transfer flow from the source wallet * To support flows where wallet connection is unavailable or intentionally skipped * To onboard users onto a new chain with a single, simple “send to this address” step ## How It Works * **Depositing funds** The deposit transaction **requires no calldata**. You simply send the agreed amount to the deposit address returned by the API. As long as the amount covers the costs, it will be automatically bridged according to the route from the original quote. * **Gas and fee considerations** For **low-value transfers**, the gas costs overhead can be significant, so we generally do not recommend deposit addresses for low-value bridging. * **Post-deposit quote recalculation** After a deposit is detected, the quote is re-generated to account for gas price fluctuations and to recompute all fees. This means the final received amount may differ from the initial quote, but it will always respect the minimum amount specified. If the minimum amount cannot be achieved, the deposit amount is refunded on the origin chain. * **Refund behavior** Failures via deposit addresses are extremely rare, but still possible. By default, Bungee will automatically refund the funds on the origin chain to the `refundAddress` in your quote request. Any filling failure will then refund to this address. ## Common Use Cases * CEX withdrawals that should arrive on a different destination chain. * Fiat on-ramp to app onboarding where users should end up directly on the app’s preferred chain. * Embedded/headless flows where wallet connection is unavailable or intentionally skipped. ## Integration Guide For the full implementation details, including request/response formats and lifecycle handling, see the [Deposit route integration guide](/bungee-api/integration-guides/deposit). # Frequently Asked Questions Source: https://docs.bungee.exchange/overview/faq Bungee is a protocol that powers seamless swaps within and between blockchains. With over \$25B in volume processed and trusted by major wallets and dApps, Bungee provides efficient, secure, and accessible crosschain swaps through two routing modes: Auto and Manual. Bungee Manual Mode is integrated into major wallets and dApps, including: * [Coinbase Wallet](https://wallet.coinbase.com/) * [MetaMask](https://metamask.io/) * [Rabby](https://rabby.io/) * [Rainbow](https://rainbow.me/) Additionally, you can try out both routing modes at our official interface: * **Auto and Manual Modes**: [bungee.exchange](https://bungee.exchange) ## Routing Modes * **Auto Mode** automatically selects and executes the best route through a marketplace of competing offchain agents. Users just sign a message with their preferences. * **Manual Mode** provides multiple routes for users to choose from, giving control over route selection and execution. Read more about the modes in [Integration Guides](/bungee-api/integration-guides) Learn more about Auto Mode in our [Integration Guides](/bungee-api/integration-guides). See [Auto Mode Integration](/bungee-api/integration-guides/auto-permit2-gasless-requests) for detailed implementation steps. Additionally you can try out Auto Mode at [bungee.exchange](https://bungee.exchange). Learn more about Manual Mode in [Manual Mode Integration Guide](/bungee-api/integration-guides/manual) Additionally you can try out Manual Mode at [bungee.exchange](https://bungee.exchange). ## Integration Yes, Bungee Auto and Manual Mode are available for integration via APIs. See [Auto Mode Integration](/bungee-api/integration-guides/auto-permit2-gasless-requests) and [Manual Mode Integration](/bungee-api/integration-guides/manual-route-selection). The API Endpoints provide both Quotes for Bungee Auto and Routes for Bungee Manual. Bungee Auto is enabled by default while Bungee Manual can be enabled via parameter. Ready to integrate? Get started with Manual Mode [Integration Guide](/bungee-api/integration-guides/manual-route-selection) Yes, Bungee Auto is available for integration via APIs. See [Auto Mode Integration](/bungee-api/integration-guides). Yes, we are currently working on Bungee Widget, a component that allows you to use Auto Mode in your App. More information coming soon. ## Technical Questions Auto Mode uses a request-based execution system with off-chain signatures. For each swap, the following steps occur: 1. Get a quote for price estimation 2. Create and sign a request with your preferences 3. Off-chain agents compete to execute your request 4. The winning agent executes the swap 5. The transaction is settled and verified Learn more about Auto Mode integration in our [Integration Guides](/bungee-api/integration-guides). See [Auto Mode with Permit2](/bungee-api/integration-guides/auto-permit2-gasless-requests) or [Auto Mode Onchain](/bungee-api/integration-guides/auto-onchain-requests) for implementation details. Auto Mode has three types of agents: * **Fillers**: Have active capital across networks and fulfill requests * **Solvers**: Use passive staked capital to find and execute optimal routes * **Provers**: Whitelisted by BungeeDAO for secure native bridge integrations Both modes have protection mechanisms: * **Auto Mode**: Requests have timeouts and slippage protection. If execution fails, your funds remain safe in the source chain. * **Manual Mode**: Transactions are atomic, meaning they either complete successfully or revert entirely. ## Support * Discord Community: [Join our Discord](https://discord.com/invite/DrvfYq6fvc) * Twitter Updates: [@BungeeExchange](https://twitter.com/BungeeExchange) * Support: [Contact our support team directly via website](https://bungee.exchange) # Fees & Monetization Source: https://docs.bungee.exchange/overview/fees-monetization Bungee is free to use for third-party integrators and users alike. **For users,** Bungee does not charge any additional fees. For Bungee Auto, all onchain execution costs are covered within the quoted fees. When transactions are routed via other protocols, Bungee does not add any markup or hidden fees to the transaction. **For integrators,** Bungee does not charge a fee for using the API. However, integrations are free to implement fee charging for their own services. If you plan to implement fees, please request API access first. ## Implementing Fee Charging[​](#implementing-fee-charging "Direct link to Implementing Fee Charging") If you plan to implement fees in your integration, please follow these steps: 1. Request API access to ensure reliable service for your users 2. Review the [Charging Fees Guide](/bungee-api/integration-guides/additional-guides/charging-fees) for technical implementation details 3. Understand the fee parameters in the [Quote API Reference](/bungee-api/get-api-access) ## Next Steps[​](#next-steps "Direct link to Next Steps") Technical implementation of fees Request API access for production use Integrate Bungee Auto with fees Integrate Bungee Manual with fees # Incognito Mode Source: https://docs.bungee.exchange/overview/incognito Swap and bridge tokens without a direct on-chain link between your sending and receiving wallets. ## What is Incognito? Incognito brings practical privacy to Bungee. When enabled, your source and destination wallets are unlinked on-chain, so there's no direct on-chain link between them. Think of it like incognito mode in your browser: you just toggle it on and leave no traces. No special tokens to hold. No sign up. No workflow changes. Toggle it on and swap as usual. ## How It Works 1. **Toggle Incognito** on the Bungee app. 2. **Choose your route.** Select source and destination chains and tokens. You can pick the same token on the same chain (e.g. USDC on Arbitrum to USDC on Arbitrum) or bridge across chains, just like a regular swap. 3. **Enter a receiving address.** This is the key step. Use a different wallet from your sending address. The whole point of incognito is that there's no on-chain link between the two. 4. **Confirm the transaction.** Your funds are routed so the sending and receiving wallets are unlinked on-chain. Incognito is powered by [Houdini Swap](https://houdiniswap.com). Under the hood, transactions are routed through regulated centralized exchanges to break the on-chain link between wallets, subject to applicable compliance requirements. This isn't encryption, zero-knowledge proofs, or on-chain mixing. It's practical unlinking using the same infrastructure that already handles millions of transactions daily. Try out Incognito on the [Bungee app](https://bungee.exchange). ## Key Features * **One click.** No extra steps, no complicated setup. * **25+ chains & 100+ tokens.** Works across the networks and assets you already use. * **No KYC.** No identity verification required under normal circumstances. * **Compliant** — transactions are screened subject to applicable legal and compliance requirements and may trigger KYC or other checks depending on jurisdiction. ## Tracking Your Transaction After submitting an incognito swap, you'll receive an **Order ID**. Use this to track the status of your transaction. Since incognito routes break the on-chain link, standard block explorers won't show a direct connection between your wallets. The Order ID is your reference. Do not share it publicly. The Bungee App itself only stores that information locally on your browser. Please note that compliance requirements and KYC policies may vary by jurisdiction and are subject to change. ## FAQs ### Is this like Tornado Cash or mixing services? No. Incognito doesn't use on-chain mixing pools, zero-knowledge proofs, or encryption. It routes through centralized exchanges to unlink source and destination wallets. The exchanges involved are regulated and screen for illicit funds, so there's no risk of your funds being commingled with flagged wallets. ### Do I need KYC? No KYC is required under normal circumstances. However, if a transaction is flagged as suspicious by the compliance layer, KYC may be requested. If this happens, reach out to [Bungee support](https://discord.gg/DrvfYq6fvc) with your Order ID for assistance. ### How private is it? Incognito provides practical privacy. Your sending and receiving wallets are unlinked on-chain. The regulated exchanges involved in routing can see the transaction, similar to how your bank can see your transfers but the public can't. It's not total anonymity. For most users who just don't want every transfer publicly traceable, it's sufficient. ### How long does an incognito swap take? Timing depends on the chains and tokens involved, similar to regular Bungee swaps. Most transactions complete within 10-30 mins. The UI should show you an estimated time before you swap. ### Are there minimum or maximum amounts? Yes, some routes have min/max limits. The app will show these when you enter an amount outside the supported range. ### What if my transaction gets stuck? Use your Order ID to check status in the app. If it's been stuck for an extended period, reach out to [Bungee support](https://discord.gg/DrvfYq6fvc) with your Order ID. # Refuel Source: https://docs.bungee.exchange/overview/refuel ### What is Refuel?[​](#what-is-refuel "Direct link to What is Refuel?") Users going to a new ecosystem frequently encounter the issue of lacking the native token required for transaction fees. Their options are limited to attempting to bridge the native token from a different blockchain. However, they often find that such small amounts are not feasible to be sent to the new chain and that this is an additional step after realizing the need or lack of native tokens on the new chain. For this reason, we have launched Refuel. Refuel is an optional addition to any swap to a chain. It ensures the user has the native token required for subsequent transactions on the destination chain. [Bungee Refuel](https://bungee.exchange/) integrates directly into the token bridging process, either via Bungee Auto or Bungee Manual. Simply toggle the Refuel option in the UI and receive the native token on the destination chain. Refuel ### How does Refuel work?[​](#how-does-refuel-work "Direct link to How does Refuel work?") Refuel operates in two modes: On Bungee Manual, Refuel adds native tokens from the source chain to the destination chain, even if the native tokens are not the same. A small amount will be sent alongside the swap and delivered with the output token to the user. On Bungee Auto it is even more convenient. Here no additional requirements for native input on the source chain is needed. All that is needed is taken from the input. A small amount will be used to fulfill the output plus some native token on the destination chain for further transactions. Refuel operates without charging any protocol fees. The only amount that is deducted from the amount sent to the user is for the gas fees incurred on the destination chain. ## Next Steps[​](#next-steps "Direct link to Next Steps") Add Refuel with Bungee Auto # Gasless Transactions Source: https://docs.bungee.exchange/overview/routing-methods/permit2 Bungee Auto uses Permit2 to enable efficient token transfers, while Bungee Manual uses traditional approvals. This page explains how token approvals work, your options, and important security considerations. ## Comparison of Token Approvals[​](#comparison-of-token-approvals "Direct link to Comparison of Token Approvals") | Aspect | Traditional Approvals (Bungee Manual) | Permit2 Approvals (Bungee Auto) | | ------------ | ------------------------------------------------------ | ------------------------------------------------------------------------------ | | **Gas Cost** | Two transactions needed (approve + transfer) | One-time approval, then gasless signatures | | **Control** | Basic approve amount and revoke onchain | Fine-grained with expiration times | | **Security** | Unlimited approvals can be used to transfer any amount | Unlimited approvals to permit2 contract cannot transfer without your signature | See [Uniswap Permit2](https://github.com/Uniswap/permit2) for technical details. ## How Signatures Work[​](#how-signatures-work "Direct link to How Signatures Work") Each signature for a Permit2 transfer includes: * **Token Details**: Address and amount * **Expiration Time**: When the signature becomes invalid * **Nonce**: Ensures signatures can't be reused * **Chain ID**: Prevents crosschain replay attacks ## How Bungee Uses Permit2[​](#how-bungee-uses-permit2 "Direct link to How Bungee Uses Permit2") Bungee Auto integrates Permit2 to create a better user experience: 1. Initial Setup: * Approve Permit2 for your tokens * Choose between limited or unlimited approval amounts 2. For Each Transfer: * Sign a message specifying exact amount and expiration * No gas needed for approval * Transfer only happens with your signature 3. Security Features: * Each signature has an expiration time * Signatures specify exact amounts * Transfers require explicit approval ## Approval Options[​](#approval-options "Direct link to Approval Options") Permit2 supports two approval methods: 1. **Limited**: Approve specific amounts. Requires new onchain approval for each request, using more gas. 2. **Unlimited**: One-time approval. Future requests only need signatures, saving gas. # Comparison Source: https://docs.bungee.exchange/overview/routing-methods/routing-methods Bungee offers two routing modes: Auto and Manual. Here's how these modes differ and what this means for you. ## Auto Mode[​](#auto-mode "Direct link to Auto Mode") **Auto Mode** is the new advanced routing mode, enabling users to just specify their preferences upfront via a gasless signature and Bungee automatically selects the best route and executes it onchain. Bungee Auto is designed to maximise efficiency, security and UX. Bungee Auto plugs into a vast marketplace of fillers, solvers and provers to provide best chain-abstracted swap execution to end users. Auto Mode ## Manual Mode[​](#manual-mode "Direct link to Manual Mode") **Manual Mode** surfaces multiple routes for users/integrators to choose from. You will need to manually select and execute those routes depending on what your preferences are and also send transactions. Manual Mode surfaces routes that include swapping-providers and bridging-providers integrated by Bungee Team on supported networks. It's a battle-tested solution with a proven track record. Manual Mode ## Key Differences[​](#key-differences "Direct link to Key Differences") ### Features Comparison[​](#features-comparison "Direct link to Features Comparison") | **Feature** | **Manual Mode** | **Auto Mode** | | ------------------------------ | ---------------------------------------------------------------------- | ----------------------------------------------------------------------------- | | **Asset Support** | Limited to bridge-supported tokens | Any token | | **Swap Support** | Only on source atomically, second transaction on destination if needed | Direct any-to-any token transfers | | **Smart Contract Integration** | Limited due to offchain API reliance | Direct integration possible | | **Chain Support** | Limited to existing bridges and DEXs | Any chain can be supported from day one | | **Bridge Integration** | Every bridge and dex needs to be integrated manually by Manual Mode | Marketplace offers to directly join | | **Security** | Dependent on individual bridge security | Protocol-level guarantees | | **Gas Management** | Manual handling required | [No gas required, offchain signature only](/overview/routing-methods/permit2) | ## Continue Reading[​](#continue-reading "Direct link to Continue Reading") Automated swaps with optimal routing Custom routes with manual route selection Integrate Bungee Start building with Bungee # Statistics Source: https://docs.bungee.exchange/overview/statistics # API Status Source: https://docs.bungee.exchange/overview/status-api # Reach out to us Source: https://docs.bungee.exchange/overview/support Reach out to us for support and help. Open a ticket in our webapp via the chat widget in the bottom right corner. Open a ticket in our Discord server. # Terms of Use Source: https://docs.bungee.exchange/overview/tou Terms of Use for Bungee **SOCKET TECHNOLOGIES LIMITED** **TERMS OF USE** *Last updated: March 2nd, 2026* Socket Technologies Limited · Craigmuir Chambers, Road Town, Tortola, VG 1110, British Virgin Islands Socket Technologies Limited, a company incorporated in the British Virgin Islands ("Socket," "we," "our," or "us"), operates a cross-chain bridging and digital asset routing platform. "Socket" consists of: (i) our website and developer documentation located at bungee.exchange, socket.tech and docs.bungee.exchange (the "Socket Website"); (ii) the Bungee API (hosted application programming interfaces for building cross-chain and bridging applications); (iii) the Bungee SDK and any developer toolkits; and (iv) any underlying smart contracts and open-source protocol components (collectively, the "Functionalities"). Details on the components of Bungee can be found at docs.bungee.exchange. These Terms of Use (the "Terms") govern your relationship with Socket and your use of any of the Functionalities, whether you are accessing the Bungee Website as an end user, integrating the Bungee API into your own product or platform as a developer or business (an "Integrator"), or interacting with Socket's open-source protocol components. Please read these Terms and our carefully. By using any of the Functionalities, you agree to be bound by these Terms, which is incorporated herein by reference. If you do not agree completely to these Terms, do not use any of the Functionalities. If you access or use any of the Functionalities on behalf of a legal entity: (a) all references to "you" throughout these Terms include that entity; (b) you represent that you are authorised to accept these Terms on that entity's behalf; and (c) in the event you or the entity violates these Terms, the entity agrees to be responsible to us. > **ARBITRATION NOTICE:** THESE TERMS CONTAIN A BINDING INDIVIDUAL ARBITRATION AGREEMENT AND CLASS ACTION WAIVER IN SECTION 15 (DISPUTE RESOLUTION). THIS AFFECTS YOUR RIGHTS — DISPUTES MAY BE REQUIRED TO BE RESOLVED IN BINDING, INDIVIDUAL ARBITRATION RATHER THAN IN COURT, AND YOU MAY NOT BE ABLE TO HAVE CLAIMS RESOLVED BY A JURY OR AS A CLASS. PLEASE READ SECTION 15 CAREFULLY. YOU HAVE THE RIGHT TO OPT OUT OF ARBITRATION WITHIN 30 DAYS OF FIRST ACCEPTING THESE TERMS AS SET OUT IN SECTION 15.7. *** ## 1. Eligibility **1.1** **Age and Legal Capacity.** You must be at least the age of majority in your jurisdiction (and in any event at least eighteen (18) years of age) to access or use any of the Functionalities. By accessing or using any of the Functionalities, you represent that you meet this requirement and have the full right, power, and authority to enter into and comply with these Terms. **1.2** **Sanctions and Restricted Persons.** You further represent and warrant that you are not: (a) the subject of economic or trade sanctions administered or enforced by any governmental authority, or otherwise designated on any list of prohibited or restricted parties, including the list maintained by the Office of Foreign Assets Control of the U.S. Department of the Treasury ("OFAC"); (b) located, ordinarily resident, organised, established, or domiciled in any Restricted Jurisdiction (as defined in Schedule 1); or (c) engaged in or facilitating any business involving illegal or controlled products or services, including firearms, explosives, drugs, money laundering, terrorist financing, human trafficking, or any other activity that is illegal, dangerous, or harmful under applicable law. **1.3** **No VPN Circumvention.** You will not, and will not permit any person, use a virtual private network, proxy, or other technology to circumvent any geographic restriction or access control applicable to the Functionalities. **1.4** **Jurisdictional Availability.** Socket does not represent that the Functionalities are appropriate or available for use in all jurisdictions, including the United States, and may restrict access where required for legal or regulatory reasons. It is your responsibility to ensure that your access to and use of the Functionalities complies with all laws and regulations applicable to you in your jurisdiction. *** ## 2. Intellectual Property **2.1** **Socket Ownership.** You acknowledge and agree that Socket owns all legal right, title, and interest in: (i) the Socket Website and any contents made available on it, including software, text, images, trademarks, service marks, and trade names; (ii) the Bungee API; (iii) any developer toolkits and SDKs; and (iv) all corrections, bug fixes, enhancements, updates, improvements, or modifications to any of the foregoing (collectively, "Socket Materials"). Socket Materials are protected by intellectual property laws, international conventions, and applicable laws worldwide. **2.2** **Licence to You.** Subject to your compliance with these Terms, Socket grants you a limited, personal, non-exclusive, non-transferable, non-assignable, fully revocable licence to access and use the Functionalities solely for your own personal or internal business purposes or, if you are an Integrator, to integrate the Bungee API into your own product or platform for distribution to your own end users, provided that such distribution and use complies with these Terms and all applicable laws. This licence does not give you any ownership rights in Socket or the Socket Materials, and confers no right to sublicense, resell, or otherwise distribute the Bungee API or any data derived therefrom as a standalone product or service without our prior written consent. **2.3** **Data Use Restriction.** Any data provided to you through any of the Functionalities is for your personal or internal business use only. You may incorporate such data into your own product or service for use by your own end users, provided that such use complies with these Terms. You may not offer such data as a standalone product or service, or permit third parties to access or use such data outside of your own product or service, without our prior written consent. **2.4** **Open Source Components.** Certain components of Socket, including underlying smart contract code and protocol software, may be open-source software. Your use of any such open-source components is additionally governed by the applicable open-source licence terms. Nothing in these Terms limits or restricts your rights under any applicable open-source licence; equally, nothing in any open-source licence limits Socket's rights under these Terms with respect to the Socket Materials. **2.5** **No Implied Rights.** All rights not expressly granted are reserved by Socket. No licence is granted under these Terms by implication, estoppel, or otherwise, under any patent, copyright, trade secret, trademark, or other intellectual property right. Nothing herein shall be deemed to authorise you to use Socket's trademarks or trade names in any advertising, marketing, promotional, or related materials without Socket's prior written consent. **2.6** **Feedback.** You may voluntarily submit questions, comments, suggestions, ideas, or other information about the Functionalities ("Feedback") to us, including through third-party channels such as Discord or GitHub. By submitting any Feedback, you hereby irrevocably grant to Socket and its affiliates a worldwide, perpetual, irrevocable, royalty-free, fully sublicensable licence to use, reproduce, modify, adapt, publish, translate, create derivative works from, distribute, perform, and display such Feedback in any media and in any format now known or later developed, and to incorporate the Feedback into any of Socket's technology or products. You understand that Socket may treat Feedback as non-confidential. *** ## 3. Self-Custodial Nature; No Financial Services **3.1** **Non-Custodial Operation.** The Functionalities operate on a strictly non-custodial basis. Socket does not at any time take possession of, hold, or exercise control over your digital assets, tokens, private keys, or other property. You retain full and continuous possession, custody, and control of your digital assets and private keys at all times. Socket will never ask you for the private key to any wallet you connect to the Functionalities, and you are solely responsible for any disclosure of your private keys. Socket is not and does not become a custodian or counterparty to any transaction executed through or in connection with the Functionalities. **3.2** **No Fiduciary Duties.** Socket does not have a fiduciary relationship or obligation to you regarding any decisions or activities you engage in when using the Functionalities. These Terms do not create or impose any fiduciary duties on Socket. To the fullest extent permitted by applicable law, you acknowledge and agree that Socket owes no fiduciary duties or liabilities to you or any other party, and that to the extent any such duties or liabilities may exist at law or in equity, those duties and liabilities are hereby irrevocably disclaimed, waived, and eliminated. **3.3** **No Financial Services.** Socket does not provide, and the Functionalities do not constitute, any regulated financial service, including brokerage, exchange, payment services, investment advisory, or portfolio management services. Socket merely provides infrastructure for user-initiated, non-custodial transactions. **3.4** **No Investment Advice.** All transactions you submit through the Functionalities are unsolicited, meaning you have not received investment advice from Socket in connection with any such transaction. All information provided through the Functionalities is for informational purposes only and should not be construed as legal, financial, tax, or other professional advice. You should not take, or refrain from taking, any action based solely on information provided through the Functionalities. **3.5** **Third-Party Protocols.** The Functionalities route transactions through third-party bridging protocols, decentralised exchanges, and other blockchain-based services ("Third-Party Protocols"). Socket does not control, operate, or maintain any Third-Party Protocol. Socket disclaims all liability for any Third-Party Protocol, including for its availability, reliability, security, or operability. All transactions executed by Third-Party Protocols are exclusively initiated by you. Socket does not conduct a suitability review of any such transactions. **3.6** **No Support Obligations.** Socket has no maintenance, update, or support obligations with respect to any of the Functionalities. Any updates to the Functionalities may change the requirements necessary to use them, and you are responsible for any necessary actions, including updating software or hardware. Socket is not responsible for any loss or harm related to your inability to access or use any of the Functionalities. *** ## 4. Integrator Obligations **4.1** This Section 4 applies to you if you are an Integrator — meaning you access the Bungee API or SDK for the purpose of integrating the Functionalities into your own product, platform, or service for use by your own end users. **4.2** **Independent Integration.** When you integrate the Functionalities into your platform and make them accessible to your own end users, you will undertake sufficient measures to inform those end users (for example, through appropriate language in your own terms and conditions or end-user-facing documentation) that: (i) you provide this integration independently and without association to Socket; (ii) the Socket smart contracts and any smart contracts based thereon are non-custodial; (iii) such smart contracts route to Third-Party Protocols that execute the transactions initiated by your end users; and (iv) Socket does not warrant the availability, reliability, or operability of such Third-Party Protocols at any time. **4.3** **No Downstream Contractual Relationship.** Integration of the Functionalities into your platform and use of such integration by your end users does not establish any contractual relationship between Socket and those end users. You are solely responsible for your relationship with your end users, including all applicable terms of service, privacy policies, and regulatory compliance obligations. **4.4** **Implementation Responsibility.** You are fully responsible for ensuring the appropriate and successful implementation, configuration, integration, maintenance, and operation of the Functionalities within your platform, considering the specific requirements, constraints, and objectives of your business operations. You are solely responsible for ensuring that your integration complies with all applicable laws and regulations and does not infringe the rights, including intellectual property rights, of any third party. **4.5** **API Credential Security.** You shall treat all API keys, credentials, tokens, and access credentials provided by Socket ("API Credentials") as strictly confidential. You shall: (a) store API Credentials securely and not expose them in client-side code, public repositories, or any publicly accessible location; (b) restrict access to API Credentials to those of your personnel who have a legitimate need; (c) promptly notify Socket at [legal@socket.tech](mailto:legal@socket.tech) upon becoming aware of any actual or suspected unauthorised access to or disclosure of API Credentials; and (d) not transfer, share, or sublicense API Credentials to any third party without Socket's prior written consent. **4.6** **Cease Use on Request.** You undertake, upon Socket's reasonable written request, to immediately cease use of the Functionalities and delete any integration of the Bungee API if Socket determines this is necessary to protect its services, IT infrastructure, or business against immediate harm, damages, or legal risk. *** ## 5. Privacy and Data **5.1** **Privacy.** Socket collects, uses, and discloses information about you in connection with your use of the Functionalities. By using the Functionalities, you acknowledge that Socket may collect certain information as described in this Section 5, including technical data, wallet addresses, and transaction data, and that Socket will handle such information responsibly and in accordance with applicable law. **5.2** **Wallet Data.** When you connect a digital asset wallet to the Functionalities, Socket may collect on-chain data related to your wallet address, including transaction hashes and token balances. This data is publicly available on the relevant blockchain. Socket will never ask you for your private key, seed phrase, or wallet password, and you are solely responsible for the security of those credentials. **5.3** **Data Security.** Socket employs administrative, physical, and technical safeguards designed to protect your data from unauthorised access, disclosure, and use, including industry-standard encryption for data transmission and storage. In the event of a security breach affecting your data, Socket will notify you as required by applicable law and take reasonable steps to limit and remediate the breach. **5.4** **Data Protection Compliance.** Each party will comply with all privacy and data protection laws applicable to its processing of personal data in connection with the Functionalities. If you are an Integrator, you are independently responsible for complying with all data protection laws applicable to your collection and processing of your end users' personal data. *** ## 6. Prohibited Conduct **6.1** You agree not to engage in any of the following conduct (each a "Prohibited Activity") with respect to any of the Functionalities: * **(a) Unlawful or Fraudulent Activity.** Any activity that is illegal, fraudulent, deceptive, or harmful, including: (i) money laundering, terrorist financing, fraud, theft, or any other financial crime; (ii) purchasing, selling, or distributing illegal goods or services; (iii) evading, avoiding, or violating any applicable tax, sanctions, or regulatory requirement; or (iv) infringing, misappropriating, or violating the intellectual property, privacy, or proprietary rights of any person. * **(b) Sanctions Violations.** Transacting with, transferring assets to or from, or otherwise engaging with any person, entity, or jurisdiction that is the subject of applicable sanctions, export controls, embargoes, or other governmental restrictions, or using the Functionalities to circumvent any such restrictions. * **(c) System Interference.** Any activity that seeks to interfere with or compromise the integrity, security, or proper functioning of any computer, server, network, personal device, or information technology system, including the deployment of viruses, malware, or denial-of-service attacks. * **(d) Circumvention.** Any attempt to circumvent a usage or capacity limit of the Functionalities, or to bypass any access controls, authentication mechanisms, or security measures, including blocking measures or IP restrictions implemented by Socket. * **(e) Deceptive or Manipulative Conduct.** Any deceptive or manipulative activity, including: (i) impersonating any person or entity; (ii) providing false or misleading information; (iii) engaging in manipulative trading activities; (iv) using the Functionalities to conceal economic activity or launder proceeds; or (v) financing terrorism. * **(f) Reverse Engineering.** Any attempt to reverse engineer, disassemble, decompile, decode, adapt, or otherwise attempt to derive or gain access to any component of the Functionalities, in whole or in part. * **(g) Unauthorised Automation.** Accessing, querying, or interacting with the Functionalities through any automated means not expressly authorised by Socket, including bots, scrapers, or data-mining tools, or harvesting data from the Functionalities for resale or distribution as a standalone product. * **(h) Unlicensed Financial Activities.** Any activity that seeks to carry out financial activities subject to registration or licensing requirements under applicable law without the requisite authorisation. * **(i) Facilitating the Foregoing.** Causing or permitting any third party to engage in any of the above. **6.2** If you engage in any Prohibited Activity, Socket may, at its sole and absolute discretion, without notice or liability to you and without limiting any other rights or remedies, immediately suspend or terminate your access to any or all of the Functionalities. *** ## 7. Fees **7.1** Socket may charge fees for some or part of the Functionalities. Socket reserves the right to change those fees at its discretion. Socket will disclose the amount of any fees it will charge you at the time you access the relevant Functionality or as indicated in any applicable notice to you. Any fee charged by Socket will be clearly designated as such and presented before you submit your transaction. **7.2** You may also incur charges from Third-Party Protocols or other third parties in connection with your use of the Functionalities. Socket is not responsible for any such third-party fees or charges. **7.3** You are solely responsible for determining any tax implications of your use of the Functionalities and for reporting and remitting all applicable taxes to the appropriate authority. Socket does not provide tax advice. *** ## 8. Termination and Suspension **8.1** Socket may, at any time and in its sole discretion, suspend, terminate, deactivate, or delete your access to all or any part of the Functionalities, with or without notice, for any reason or for no reason at all, including if: (i) you breach any provision of these Terms; (ii) you infringe any intellectual property rights; (iii) you engage in any Prohibited Activity; (iv) your continued access poses a security, legal, or reputational risk to Socket; or (v) Socket is required to do so by applicable law or a regulatory authority. **8.2** If you are an Integrator and Socket terminates or suspends your access, you shall immediately cease all use of the Bungee API and destroy or return all API Credentials. **8.3** The following Sections of these Terms will survive termination: Section 2 (Intellectual Property), Section 5 (Privacy and Data), Section 6 (Prohibited Conduct), Section 9 (Disclaimers), Section 10 (Indemnification), Section 11 (Release), Section 12 (Limitation of Liability), Section 13 (Compliance), Section 15 (Dispute Resolution), Section 16 (Governing Law), and Section 17 (Miscellaneous). *** ## 9. Disclaimers and No Warranties **9.1** **AS IS AND AS AVAILABLE.** YOU EXPRESSLY UNDERSTAND AND AGREE THAT YOUR ACCESS TO AND USE OF ANY OF THE FUNCTIONALITIES IS AT YOUR SOLE RISK, AND THAT THE FUNCTIONALITIES ARE PROVIDED ON AN "AS IS" AND "AS AVAILABLE" BASIS. TO THE FULLEST EXTENT PERMISSIBLE UNDER APPLICABLE LAW, SOCKET MAKES NO EXPRESS WARRANTIES AND HEREBY DISCLAIMS ALL IMPLIED WARRANTIES REGARDING ANY PART OF THE FUNCTIONALITIES, INCLUDING IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, NON-INFRINGEMENT, CORRECTNESS, ACCURACY, OR RELIABILITY. SOCKET DOES NOT REPRESENT OR WARRANT THAT ACCESS TO ANY OF THE FUNCTIONALITIES WILL BE CONTINUOUS, UNINTERRUPTED, TIMELY, OR SECURE; THAT INFORMATION CONTAINED IN OR PROVIDED THROUGH THE FUNCTIONALITIES WILL BE ACCURATE, RELIABLE, COMPLETE, OR CURRENT; OR THAT THE FUNCTIONALITIES WILL BE FREE FROM ERRORS, DEFECTS, VIRUSES, OR OTHER HARMFUL ELEMENTS. SOME JURISDICTIONS DO NOT ALLOW EXCLUSIONS OR LIMITATIONS OF IMPLIED WARRANTIES, SO THE ABOVE MAY NOT APPLY TO YOU. **9.2** **SECURITY RISKS.** YOU ACCEPT THE INHERENT SECURITY RISKS OF PROVIDING INFORMATION AND DEALING ONLINE OVER THE INTERNET. YOU AGREE THAT SOCKET HAS NO LIABILITY OR RESPONSIBILITY FOR ANY BREACH OF SECURITY UNLESS CAUSED BY SOCKET'S GROSS NEGLIGENCE OR WILFUL MISCONDUCT. **9.3** **BLOCKCHAIN AND SMART CONTRACT RISKS.** SOCKET WILL NOT BE RESPONSIBLE OR LIABLE TO YOU FOR ANY LOSSES YOU INCUR AS A RESULT OF YOUR USE OF ANY BLOCKCHAIN NETWORK OR ANY WALLET, INCLUDING LOSSES, DAMAGES, OR CLAIMS ARISING FROM: (i) USER ERROR, SUCH AS FORGOTTEN PASSWORDS, INCORRECTLY CONSTRUCTED SMART CONTRACTS, OR INCORRECT TRANSACTION PARAMETERS; (ii) SERVER FAILURE OR DATA LOSS; (iii) CORRUPTED OR INACCESSIBLE WALLET FILES; OR (iv) UNAUTHORISED ACCESS OR ACTIVITIES BY THIRD PARTIES, INCLUDING THE USE OF VIRUSES, PHISHING, BRUTE-FORCE ATTACKS, OR OTHER MEANS OF ATTACK AGAINST ANY BLOCKCHAIN NETWORK, ANY OF THE FUNCTIONALITIES, OR ANY WALLET. **9.4** **BLOCKCHAIN NETWORK RISKS.** SOCKET IS NOT RESPONSIBLE FOR LOSSES DUE TO BLOCKCHAINS OR ANY OTHER FEATURES OF ANY BLOCKCHAIN NETWORK OR WALLET, INCLUDING LATE OR NO REPORT BY DEVELOPERS OR REPRESENTATIVES OF ANY ISSUES WITH THE BLOCKCHAIN, INCLUDING FORKS, TECHNICAL NODE ISSUES, OR ANY OTHER ISSUES RESULTING IN FUND LOSSES. **9.5** **KEY MANAGEMENT.** YOU ARE SOLELY RESPONSIBLE FOR STORING AND SECURING YOUR PRIVATE KEY(S), RECOVERY PHRASE, SEED PHRASE, AND ANY OTHER CREDENTIALS NECESSARY TO ACCESS YOUR WALLET. SOCKET CANNOT RECOVER LOST KEYS, RECOVER LOST ACCESS, OR REVERSE ANY BLOCKCHAIN TRANSACTION ONCE CONFIRMED ON-CHAIN. **9.6** **THIRD-PARTY PROTOCOLS.** SOCKET DOES NOT CONTROL, ENDORSE, OR GUARANTEE THE AVAILABILITY, RELIABILITY, SECURITY, OR LEGALITY OF ANY THIRD-PARTY PROTOCOL. SOCKET DISCLAIMS ALL LIABILITY FOR ANY THIRD-PARTY PROTOCOL, INCLUDING FOR ANY LOSS OF ASSETS RESULTING FROM A VULNERABILITY, EXPLOIT, HACK, OR FAILURE OF ANY BRIDGE, DECENTRALISED EXCHANGE, OR OTHER THIRD-PARTY PROTOCOL USED IN CONNECTION WITH THE FUNCTIONALITIES. **9.7** **ADAPTOR LIABILITY.** FOR ANY ADAPTATIONS OR MODIFICATIONS OF THE FUNCTIONALITIES MADE BY YOU AS AN INTEGRATOR, SOCKET DISCLAIMS ANY AND ALL LIABILITY. *** ## 10. Indemnification **10.1** To the fullest extent permitted by applicable law, you will indemnify, defend, and hold harmless Socket Technologies Limited, its affiliates, and each of their respective officers, directors, employees, agents, partners, contractors, successors, and assigns (collectively, the "Socket Parties") from and against any and all losses, liabilities, claims, demands, damages, expenses, and costs (including reasonable attorneys' fees) ("Claims") arising out of or related to: (a) your access to or use of any of the Functionalities; (b) your violation of these Terms; (c) your violation, misappropriation, or infringement of any rights of another person or entity, including intellectual property rights or privacy rights; (d) your conduct in connection with any of the Functionalities; or (e) if you are an Integrator, any claim by your end users arising from or relating to your integration, platform, or products. **10.2** You agree to cooperate with the Socket Parties in defending such Claims and pay all fees, costs, and expenses associated with defending such Claims, including attorneys' fees. You agree that the Socket Parties will have control of the defence or settlement, at Socket's sole option, of any third-party Claims. You may not settle or compromise any Claim against any Socket Party without Socket's prior written consent. *** ## 11. Release **11.1** To the fullest extent permitted by applicable law, you release the Socket Parties from responsibility, liability, claims, demands, and damages (actual and consequential) of every kind and nature, known and unknown, including claims of negligence, arising out of or related to: (a) disputes between users of the Functionalities; (b) the acts or omissions of third parties, including Third-Party Protocols; or (c) your use of or interaction with any of the Functionalities. **11.2** If you are a consumer who resides in California, you hereby waive your rights under California Civil Code § 1542, which provides: "A general release does not extend to claims that the creditor or releasing party does not know or suspect to exist in his or her favour at the time of executing the release and that, if known by him or her, would have materially affected his or her settlement with the debtor or released party." *** ## 12. Limitation of Liability **12.1** TO THE FULLEST EXTENT PERMITTED BY APPLICABLE LAW, THE SOCKET PARTIES WILL NOT BE LIABLE TO YOU UNDER ANY THEORY OF LIABILITY — WHETHER BASED IN CONTRACT, TORT, NEGLIGENCE, STRICT LIABILITY, WARRANTY, OR OTHERWISE — FOR ANY INDIRECT, CONSEQUENTIAL, EXEMPLARY, INCIDENTAL, PUNITIVE, OR SPECIAL DAMAGES OR LOST PROFITS, EVEN IF THE SOCKET PARTIES HAVE BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. **12.2** THE TOTAL LIABILITY OF THE SOCKET PARTIES FOR ANY CLAIM ARISING OUT OF OR RELATING TO THE FUNCTIONALITIES OR THESE TERMS, REGARDLESS OF THE FORM OF THE ACTION, IS LIMITED TO THE GREATER OF: (A) ONE HUNDRED UNITED STATES DOLLARS (USD \$100); OR (B) THE AMOUNT PAID BY YOU TO SOCKET DURING THE TWELVE (12) MONTHS PRECEDING THE CLAIM. **12.3** THE LIMITATIONS SET FORTH IN THIS SECTION 12 WILL NOT LIMIT OR EXCLUDE LIABILITY FOR: (A) GROSS NEGLIGENCE, FRAUD, OR INTENTIONAL MISCONDUCT OF SOCKET OR THE OTHER SOCKET PARTIES; OR (B) ANY OTHER MATTERS IN WHICH LIABILITY CANNOT BE EXCLUDED OR LIMITED UNDER APPLICABLE LAW. SOME JURISDICTIONS DO NOT ALLOW THE EXCLUSION OR LIMITATION OF INCIDENTAL OR CONSEQUENTIAL DAMAGES, SO THE ABOVE LIMITATIONS OR EXCLUSIONS MAY NOT APPLY TO YOU. **12.4** SOCKET HAS NO LIABILITY TO YOU OR TO ANY THIRD PARTY FOR ANY CLAIMS OR DAMAGES THAT MAY ARISE AS A RESULT OF ANY PAYMENTS OR TRANSACTIONS THAT YOU ENGAGE IN VIA THE FUNCTIONALITIES OR ANY THIRD-PARTY PROTOCOL. *** ## 13. Compliance **13.1** You agree that you are solely and entirely responsible for compliance with all laws and regulations that may apply to you in connection with your use of the Functionalities. Socket makes no representation that the Functionalities are appropriate or legally permissible in your jurisdiction. **13.2** If you are an Integrator, you are solely responsible for ensuring that your integration complies with all applicable laws and regulations, including financial services laws, data protection laws, consumer protection laws, and anti-money laundering requirements. *** ## 14. Changes to Terms and Functionalities **14.1** **Changes to Terms.** Socket may make changes to these Terms at any time and for any reason at its sole discretion. If Socket makes material changes, it will notify you by posting the changes on the Socket Website or through other reasonable means, and give you an opportunity to review the new Terms. Your continued access or use of any of the Functionalities after notice of changes will mean that you accept all such changes. If you do not agree to the amended Terms, you must stop using the Functionalities. **14.2** **Changes to Functionalities.** Socket may update, amend, alter, change, or stop any of the Functionalities at any time without prior notice. Socket is not responsible for any loss or harm related to your inability to access or use any of the Functionalities as a result of any such change. *** ## 15. Dispute Resolution and Binding Arbitration **15.1** Please read this Section carefully. It requires you to arbitrate certain disputes with Socket and limits the manner in which you can seek relief from us. No class or representative actions or arbitrations are permitted under this provision. **15.2** **Informal Resolution.** Before initiating any arbitration or legal proceedings, you and Socket agree to make reasonable good-faith efforts to resolve any dispute, claim, or controversy arising out of or relating to these Terms or the Functionalities (each, a "Dispute") informally. Either party may start this process by sending a written notice describing the Dispute and the relief sought to [legal@socket.tech](mailto:legal@socket.tech) (for notices to Socket) or to your registered email address (for notices to you). If the Dispute is not resolved within thirty (30) days after such notice is received, either party may proceed to arbitration as set out below. **15.3** **No Representative Actions.** You agree that any Dispute is personal to you and Socket and that any Dispute will be resolved solely through individual action. No Dispute will be brought as a class arbitration, class action, or any other type of representative or collective proceeding. **15.4** **Arbitration of Disputes.** Except for Disputes in which you or Socket seeks injunctive or other equitable relief for the alleged infringement or misappropriation of intellectual property, and except as provided in Section 15.6, you and Socket waive your rights to have any Dispute — including claims related to privacy and data security — resolved in court by a judge or jury. Instead, any such Dispute shall be finally resolved by binding arbitration administered by the International Centre for Dispute Resolution ("ICDR") under its International Arbitration Rules in effect at the time of the arbitration. The arbitration shall be conducted by a single neutral arbitrator with relevant experience in technology or digital-asset matters. The seat of arbitration shall be the British Virgin Islands, and the arbitration shall be conducted in the English language. The arbitrator may award any remedy available under applicable law, subject to the limitations in Section 12. The arbitral award shall be final and binding, and judgment may be entered in any court of competent jurisdiction. **15.5** **Arbitration Costs.** All filing, administration, and arbitrator fees ("Arbitration Fees") will be governed by the ICDR Rules, unless otherwise agreed. Socket and you will split Arbitration Fees equally; provided that if you demonstrate to the arbitrator that you are economically unable to pay your portion, or that the costs of arbitration would be prohibitive compared to the costs of litigation, Socket will pay as much of the Arbitration Fees as the arbitrator deems necessary to prevent the arbitration from being cost-prohibitive. **15.6** **Exceptions.** Nothing in this Section 15 prevents either party from: (a) seeking urgent or interim injunctive relief from a court of competent jurisdiction pending arbitration where necessary to prevent irreparable harm; or (b) bringing an individual claim in a small-claims tribunal or equivalent where permitted by applicable law. Residents of the European Union, the United Kingdom, or any jurisdiction whose laws prohibit mandatory pre-dispute arbitration may elect to bring any Dispute before the courts of their country of habitual residence, and any mandatory consumer rights under applicable local law are preserved and not waived by these Terms. **15.7** **Opt-Out.** You have the right to opt out of binding arbitration within thirty (30) days of the date you first accepted these Terms by sending written notice to [legal@socket.tech](mailto:legal@socket.tech) with the subject line "Arbitration Opt-Out" and including your full name, address, and a clear statement of your intent to opt out. By opting out, you agree to resolve Disputes in accordance with Section 16 (Governing Law). **15.8** **One-Year Limitation.** Any Dispute must be filed within one (1) year after the relevant claim arose; otherwise, the Dispute is permanently barred, and you and Socket will not have the right to assert the claim. **15.9** **Severability.** If any portion of this Section 15 is found to be unenforceable or unlawful for any reason, the unenforceable or unlawful provision shall be severed; such severance shall have no impact on the remainder of this Section 15 or the parties' ability to compel individual arbitration of any remaining claims. *** ## 16. Governing Law and Venue **16.1** These Terms and any Dispute arising from them will be governed by and construed in accordance with the laws of the British Virgin Islands, without regard to its conflict of law rules or principles that would cause the application of the laws of any other jurisdiction. **16.2** To the extent any Dispute is not subject to arbitration under Section 15, or for the purposes of enforcement of any arbitral award, the courts of the British Virgin Islands shall have non-exclusive jurisdiction. Either party may also seek enforcement in any jurisdiction where the other party's assets are located. **16.3** Notwithstanding the foregoing, Socket retains the right to seek urgent injunctive or other equitable relief in any court of competent jurisdiction worldwide. *** ## 17. Miscellaneous **17.1** **Entire Agreement.** These Terms, together with any other terms expressly incorporated herein, reflect the entire agreement between you and Socket relating to the subject matter hereof and supersede all prior agreements, representations, statements, and understandings. **17.2** **Severability.** If any provision or part of a provision of these Terms is unlawful, void, or unenforceable, that provision or part is deemed severable and does not affect the validity and enforceability of any remaining provisions. If a court or arbitrator finds that any provision is invalid but that limiting it would make it valid and enforceable, such provision shall be construed and enforced as so limited. **17.3** **Relationship.** Nothing in these Terms creates the relationship of principal and agent, partnership, joint venture, employment, or franchise between you and Socket. Socket is an independent contractor. **17.4** **Assignment.** Socket may assign or transfer its rights and obligations under these Terms without restriction, including to any affiliate or to any successor entity in connection with a merger, acquisition, or sale of all or substantially all of its assets. You may not assign any rights or obligations under these Terms without Socket's prior written consent, and any attempted assignment without consent is void. **17.5** **Non-Waiver.** Socket's failure to exercise or enforce any right or provision of these Terms will not operate as a waiver of such right or provision. **17.6** **No Third-Party Beneficiaries.** Except as otherwise expressly provided herein, these Terms are intended solely for the benefit of you and Socket and do not confer any third-party beneficiary rights on any other person or entity. **17.7** **Notices.** Socket will deliver notices to you via the email address associated with your account or via the Socket Website. You may deliver notices to Socket at [legal@socket.tech](mailto:legal@socket.tech). Notices are effective upon receipt. **17.8** **Electronic Communications.** You agree that communications and transactions between you and Socket may be conducted electronically. Electronic notices, agreements, and other communications satisfy any requirement that such communications be in writing. **17.9** **Interpretation.** In these Terms: (a) "including" means "including without limitation"; (b) "or" is not exclusive; (c) words in the singular include the plural and vice versa; (d) section headings are for convenience only and have no legal or contractual effect; and (e) "will" and "shall" have the same meaning. **17.10** **Force Majeure.** Neither party will be liable for any failure or delay in performance caused by circumstances beyond its reasonable control, including acts of God, government restrictions, wars, sanctions, insurrections, third-party supplier failures, pandemic, significant market volatility in digital assets, or internet infrastructure failures. This provision does not excuse payment obligations that accrued before the force majeure event. *** ## Schedule 1. Definitions **"Affiliate"** means any entity that directly or indirectly controls, is controlled by, or is under common control with Socket from time to time. **"API Credentials"** means all API keys, credentials, tokens, and access credentials issued by Socket to an Integrator to enable access to the Functionalities. **"Applicable Law"** means, with respect to any person, any federal, state, foreign, local, or other law, statute, legislation, principle of common law, case law, resolution, ordinance, code, decree, rule, regulation, or requirement issued, enacted, adopted, or promulgated by or under the authority of any governmental authority applicable to such person, including AML laws, sanctions laws, OFAC regulations, data privacy laws, and data security laws. **"Bridge Transaction"** means the conversion of a digital asset on one blockchain to the same or another digital asset on another blockchain. **"Claims"** means any and all losses, liabilities, claims, demands, damages, expenses, and costs, including reasonable attorneys' fees. **"Dispute"** means any dispute, claim, or controversy arising out of or in connection with these Terms or the Functionalities, including any question regarding their existence, validity, construction, or termination. **"Functionalities"** means, collectively, the Socket Website, the Bungee API, any developer toolkits and SDKs, and any underlying smart contract or open-source protocol components, as further described in the preamble to these Terms. **"Integrator"** means any person or entity that accesses the Bungee API or SDK for the purpose of integrating the Functionalities into their own product, platform, or service for use by their own end users. **"Loss"** means all monetary losses, claims, damages, liabilities, costs, charges, reasonable documented attorneys' fees, judgments, fines, expenses, amounts paid in settlement, and all other financial liabilities of every nature, kind, and description. **"Personal Data"** means any information relating to an identified or identifiable natural person, as further defined under applicable data protection laws including the General Data Protection Regulation 2016/679 (GDPR), the California Consumer Privacy Act (CCPA), and any equivalent applicable legislation. **"Protocol"** means a set of software rules and accompanying software tools that govern the creation, transmission, custody, use, and exchange of digital assets on a peer-to-peer cryptographic computer network. **"Restricted Jurisdictions"** means any country or territory that is, or whose government is, the subject of comprehensive trade or economic sanctions, embargoes, or similar restrictions imposed or administered by the United States, the United Kingdom, the European Union, the United Nations, or any other competent authority. Restricted Jurisdictions include, without limitation: Afghanistan, Balkans, Belarus, Bosnia and Herzegovina, Burma (Myanmar), Burundi, Central African Republic, the occupied regions of Ukraine, Cuba, Democratic Republic of the Congo, Egypt, Eritrea, Guinea (Rep. of Guinea-Conakry), Guinea-Bissau, Iran, Iraq, Lebanon, Liberia, Libya, Mali, Moldova, North Korea, People's Republic of China (PRC), Russia, Serbia, Somalia, South Sudan, Sudan, Syria, Tunisia, Ukraine, Venezuela, Yemen, and Zimbabwe, together with any other jurisdiction designated from time to time by OFAC, the UN Security Council, the EU, or His Majesty's Treasury (UK). **"Socket Materials"** means the Socket Website and its contents, the Bungee API, developer toolkits and SDKs, and all associated intellectual property, as described in Section 2.1. **"Third-Party Protocol"** means any third-party bridging protocol, decentralised exchange, or other blockchain-based service through which Socket routes transactions in connection with providing the Functionalities. # Bridging Source: https://docs.bungee.exchange/overview/use-cases/bridging Transfer assets from one blockchain to another with low cost (cents) and high speed (seconds) via Bungee ## Transfer/Bridge with Bungee Bungee functions as state of art bridging/transfer solution for users and developers due to its unique architecture that routes via multiple bridges and exchanges under the hood for the user. * **Guaranteed Best Execution**: Bungee automatically scans all existing exchanges and bridges to find the best routes and presents the best options to users/integrator * **More control and optionality**: Bungee presents options in an elegant and simple fashion with tags like `MAX-OUTPUT`, `FASTEST` and `SUGGESTED` giving users control and choice to optimise according to their usecase * **Works for any VM**: Bungee supports all leading EVM as well as non-EVM networks like Tron, Solana, Bitcoin * **Works for any token**: Bungee enables bridging/transfers for basically ANY token (16,000+ tokens today) that has onchain liquidity by composing the exchange and bridge together in 1-click * **Works for any size**:: Bungee enables users to transfer 10\$ or 10 million USD with same 1-click gasless experience due to its ability to route to the best exchange/bridge to fulfil the order under the hood. ## Trusted by leading teams Total volume routed Chains supported Users served Integrated by **MetaMask**, **Coinbase Wallet**, **Rainbow**, **Zerion**, **Synthetix**, **Polymarket**, **OpenSea**, **Zapper**, and more. ## Who this is for **As a user**, I want to simply and instantly move/transfer the asset I am holding on chain-A to chain-B so I can use my assets on applications on chain-B. **As a user**, I want to see various options to move my funds across networks and select the method based on my preferences without visiting 100 different bridging websites. **As a developer**, I want to help users on my app move funds to the network my application is on without them leaving my app-experience to have higher conversion rate **As a developer**, I want to rebalance my company operating funds spread across various blockchain networks for very low cost. ## Quick start Get a quote for moving USDC from Ethereum to Base as the same asset: ```bash theme={null} curl "https://public-backend.bungee.exchange/api/v1/bungee/quote?\ originChainId=1&\ destinationChainId=8453&\ inputToken=0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48&\ outputToken=0xd9aaec86b65d86f6a7b5b1b0c42ffa531710b6ca&\ inputAmount=100000000&\ receiverAddress=0xd8da6bf26964af9d7eed9e03e53415d37aa96045&\ userAddress=0xd8da6bf26964af9d7eed9e03e53415d37aa96045" ``` Guides for quotes, routes, asset mapping, status Start building! # Checkout Source: https://docs.bungee.exchange/overview/use-cases/checkout Let users complete checkout with any asset they already hold across any chain via Bungee ## Checkout with Bungee Bungee functions as a state-of-the-art checkout solution for users and developers due to its unique architecture that handles funding, conversion, and delivery under the hood so users can pay with whatever they hold. * **Pay with any asset**: Users can complete checkout using any token on any chain — Bungee handles the conversion and delivery behind the scenes * **Guaranteed Best Execution**: Bungee automatically finds the best route to convert the user's held assets into the required payment token at the best price * **1-click gasless experience**: Users confirm once from their source chain — no manual bridging, swapping, or gas management required * **Works for any VM**: Bungee supports all leading EVM as well as non-EVM networks like Tron, Solana, Bitcoin * **Higher conversion rates**: By removing funding friction, more users complete checkout instead of dropping off to bridge or swap elsewhere ## Trusted by leading teams Total volume routed Chains supported Users served Integrated by **Fun**. ## Who this is for **As a user**, I want to complete checkout with the assets I already hold so that I can purchase without having to manually move or convert funds first. **As a user**, I want to pay for something on one chain using assets I hold on a different chain without leaving the checkout flow. **As a developer**, I want users to complete checkout with whatever assets they hold so that more purchases complete with less friction. **As a developer**, I want to accept payments in a specific token on a specific chain while letting users pay with anything they have. ## Quick start Get a quote for a checkout-style route from Arbitrum USDC to Base ETH: ```bash theme={null} curl "https://public-backend.bungee.exchange/api/v1/bungee/quote?\ originChainId=42161&\ destinationChainId=8453&\ inputToken=0xaf88d065e77c8cc2239327c5edb3a432268e5831&\ outputToken=0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee&\ inputAmount=100000000&\ receiverAddress=0xd8da6bf26964af9d7eed9e03e53415d37aa96045&\ userAddress=0xd8da6bf26964af9d7eed9e03e53415d37aa96045" ``` Guides for quotes, routes, asset mapping, status Start building! # Swaps Source: https://docs.bungee.exchange/overview/use-cases/swaps Swap any token to any other token same-chain or cross-chain with best pricing and 1-click execution via Bungee ## Swap with Bungee Bungee is most powerful when used as a swapping platform due to following unique abilities: * **Works for any token**: Bungee enables swaps for basically ANY token (16,000+ today) that has onchain liquidity by composing the exchange and bridge together in 1-click * **Fast transactions**: Swaps can be executed with low latency (2 seconds) across chains, making the experience as good as same-chain swaps for the end user * **MEV Protection**: Bungee is the only solution in the market that protects users end to end from sophisticated MEV bots that target user-swaps causing loss of funds. * **Guaranteed Best Execution**: Bungee automatically scans all existing DEXs, exchanges, and bridges to find the best swap routes and presents the best options to users/integrators * **Works for any VM**: Bungee supports all leading EVM as well as non-EVM networks like Tron, Solana, Bitcoin * **Works for any size**: Bungee enables users to swap $10 or $10 million with the same 1-click gasless experience due to its ability to route to the best exchange/bridge to fulfil the order under the hood ## Trusted by leading teams Total volume routed Chains supported Users served Integrated by **MetaMask**, **Coinbase Wallet**, **Rainbow**, **Zerion**, **Synthetix**, **Polymarket**, **OpenSea**, **Zapper**, and more. ## Who this is for **As a user**, I want to swap USDC I hold on Base directly into another token on Solana. **As a user**, I want to see various swap options and select the one that best matches my preference for speed, price, or output amount. **As a developer**, I want users on my app to swap into any token they need without leaving my app experience to have higher conversion and engagement. **As a developer**, I want to earn fees on swaps happening on my platform with minimal setup. ## Quick start Get a quote for swapping USDC on Arbitrum to ETH on Base: ```bash theme={null} curl "https://public-backend.bungee.exchange/api/v1/bungee/quote?\ originChainId=42161&\ destinationChainId=8453&\ inputToken=0xaf88d065e77c8cc2239327c5edb3a432268e5831&\ outputToken=0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee&\ inputAmount=100000000&\ receiverAddress=0xd8da6bf26964af9d7eed9e03e53415d37aa96045&\ userAddress=0xd8da6bf26964af9d7eed9e03e53415d37aa96045" ``` Guides for quotes, routes, asset mapping, status Start building! # Zaps Source: https://docs.bungee.exchange/overview/use-cases/zaps Land users directly into a destination protocol action like vault deposits or position entry in 1-click via Bungee ## Zap with Bungee Bungee functions as a state-of-the-art zap solution for users and developers due to its unique architecture that combines funding, conversion, and destination action execution under the hood in a single flow. * **Fund + execute in 1-click**: Users go from holding any token on any chain to completing a protocol action (vault deposit, position entry, etc.) in a single transaction * **Guaranteed Best Execution**: Bungee automatically finds the best route to fund the destination action at the best price and speed * **Arbitrary destination calldata**: Attach any contract call to execute on the destination chain after funds arrive — vaults, staking, LP deposits, and more * **Works for any VM**: Bungee supports all leading EVM as well as non-EVM networks like Tron, Solana, Bitcoin * **Reduces drop-off**: By combining funding and the final action, users reach completion without extra steps or follow-up transactions ## Trusted by leading teams Total volume routed Chains supported Users served Integrated by **MetaMask**, **Coinbase Wallet**, **Rainbow**, **Zerion**, **Synthetix**, **Polymarket**, **OpenSea**, **Zapper**, and more. ## Who this is for **As a user**, I want to complete the action I came for (deposit into a vault, enter a position, etc.) with the assets I already hold so that I can act immediately. **As a user**, I want to go from holding USDC on Ethereum to being deposited in a vault on Base without multiple manual steps. **As a developer**, I want users to land directly into my protocol's action from any chain so that more users reach the final step without dropping off. **As a developer**, I want to attach my protocol's contract call to a cross-chain transfer so users complete everything in one flow. ## Quick start Start with a quote and then attach destination calldata: ```bash theme={null} curl "https://public-backend.bungee.exchange/api/v1/bungee/quote?\ originChainId=1&\ destinationChainId=8453&\ inputToken=0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48&\ outputToken=0xd9aaec86b65d86f6a7b5b1b0c42ffa531710b6ca&\ inputAmount=100000000&\ userAddress=0xd8da6bf26964af9d7eed9e03e53415d37aa96045&\ receiverAddress=0xd8da6bf26964af9d7eed9e03e53415d37aa96045&\ destinationPayload=0x1234acbd&\ destinationGasLimit=100000" ``` Execute arbitrary contract calls on the destination chain after transfers Start building! # What is Bungee Source: https://docs.bungee.exchange/overview/what-is-bungee Bungee provides seamless swaps between any blockchain. With over $25B in volume and trusted by major wallets and dApps, Bungee makes moving assets between networks efficient, secure, and accessible to everyone. Bungee statistics including total volume routed, chains supported, users served, and leading integrations. ## Why Bungee is trusted by leading teams Whether you're swapping tokens within the same chain or bridging assets across different networks, Bungee automatically finds and executes the optimal route. The platform combines the best of both worlds: the convenience of automated routing with access to the deepest liquidity pools across 30+ blockchain networks. **Key Benefits:** * **Any Token to Any Token**: Swap any token to any token across any supported chain. No restrictions, no limitations * **Best Price Guarantee**: Competitive auctions ensure optimal rates by aggregating liquidity from multiple bridges and DEXs * **Unified Interface**: One API, one integration, access to all major bridges and DEXs * **Seamless Cross-Chain Swaps**: Swap and bridge in a single transaction, eliminating multi-step processes * **Trusted & Secure**: Over \$25B in volume processed, trusted by major wallets and dApps ## Ways to Use Bungee Bungee offers multiple integration methods to suit different use cases and technical requirements: For simple integrations where you want to offload the full UI to Bungee For Apps that want to offer swaps without building custom UI For Apps that need full control over the swap and bridging experience For non-EVM chains like Hyperliquid, Tron and more
Try Bungee App
## Powered by SOCKET Bungee is built by the SOCKET team and leverages SOCKET Protocol as its underlying settlement mechanism. SOCKET is the first chain-abstraction protocol, enabling seamless interactions across 30+ blockchain networks. [Learn more about SOCKET Protocol →](https://docs.socket.tech/introduction/) Start building with Bungee