{"templateId":"markdown","sharedDataIds":{"sidebar":"sidebar-products/wallet/sidebars.yaml"},"props":{"metadata":{"markdoc":{"tagList":[]},"type":"markdown"},"seo":{"title":"Automatic chain routing for raw EVM transactions","description":"User guides, API reference, and support resources.","siteUrl":"https://docs.ripple.com","lang":"en-US","llmstxt":{"hide":false,"sections":[{"title":"Table of contents","includeFiles":["**/*"],"excludeFiles":[]}],"excludeFiles":[]}},"dynamicMarkdocComponents":[],"compilationErrors":[],"ast":{"$$mdtype":"Tag","name":"article","attributes":{},"children":[{"$$mdtype":"Tag","name":"Heading","attributes":{"level":1,"id":"automatic-chain-routing-for-raw-evm-transactions","__idx":0},"children":["Automatic chain routing for raw EVM transactions"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Raw EVM transactions now ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["automatically route to the correct blockchain"]}," based on the encoded transaction's chain ID. You no longer need to specify a ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["blockchain"]}," parameter — the platform detects the target chain and routes accordingly."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"what-changed","__idx":1},"children":["What changed"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Previously, raw signing on an EVM wallet required a ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["blockchain"]}," parameter to override the wallet's native chain. Now the platform reads the ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["chainId"]}," from the RLP-encoded transaction and resolves the target blockchain automatically:"]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Known chain ID"]}," (Ethereum, Arbitrum, Polygon, Base, BNB Chain, Avalanche, 1Money) — the platform routes the transaction to that chain's connector and supports both ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["signOnly=true"]}," and ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["signOnly=false"]},"."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Unknown chain ID"]}," — the platform treats the transaction as ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/products/wallet/user-interface/transactions/raw-signing#cross-chain-raw-signing-evm"},"children":["cross-chain raw signing"]},": it signs only and requires a policy with a ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["CHAIN_ID"]}," matcher."]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"whats-deprecated","__idx":2},"children":["What's deprecated"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["The ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["blockchain"]}," field on the raw transaction request is deprecated. Existing API integrations that send the field continue to work — the platform ignores the value for all raw transactions. EVM transactions route by the chain ID in the encoded transaction; non-EVM transactions always execute on the wallet's native blockchain."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"example","__idx":3},"children":["Example"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["An Ethereum wallet signing and broadcasting an Arbitrum transaction:"]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"header":{"controls":{"copy":{}}},"source":"POST /v2/vaults/{vaultId}/wallets/{walletId}/transactions/raw\n{\n  \"encodedTransaction\": \"<RLP-encoded transaction with Arbitrum chainId>\",\n  \"signOnly\": false\n}\n"},"children":[]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["You don't need a ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["blockchain"]}," parameter. The platform extracts the Arbitrum chain ID and routes the transaction to the Arbitrum connector."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"documentation","__idx":4},"children":["Documentation"]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/products/wallet/user-interface/transactions/raw-signing#automatic-chain-routing-evm"},"children":["Automatic chain routing"]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/products/wallet/user-interface/transactions/raw-signing#cross-chain-raw-signing-evm"},"children":["Cross-chain raw signing"]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/products/wallet/user-interface/transactions/cross-chain-transactions"},"children":["Cross-chain transactions"]}]}]}]},"headings":[{"value":"Automatic chain routing for raw EVM transactions","id":"automatic-chain-routing-for-raw-evm-transactions","depth":1},{"value":"What changed","id":"what-changed","depth":2},{"value":"What's deprecated","id":"whats-deprecated","depth":2},{"value":"Example","id":"example","depth":2},{"value":"Documentation","id":"documentation","depth":2}],"frontmatter":{"title":"Automatic chain routing for raw EVM transactions","seo":{"title":"Automatic chain routing for raw EVM transactions"}},"lastModified":"2026-07-17T10:35:35.000Z","pagePropGetterError":{"message":"","name":""}},"slug":"/products/wallet/changelogs/auto-detect-chain-routing","userData":{"isAuthenticated":false,"teams":["anonymous"]},"isPublic":true}