The TRAIN Protocol makes bridging completely transparent and fully controllable by the client. The integrator has complete control over every aspect, from selecting and ranking Solvers independently to performing final verification, ensuring the entire process is trustless, transparent, and under their control. The detailed implementation steps can be found in the dApp Implementation spec.
{"docsConfig":{"theme":"mint","$schema":"https://mintlify.com/docs.json","name":"TRAIN Docs","colors":{"primary":"#278EF6","light":"#278EF6","dark":"#278EF6"},"logo":{"light":"https://mintcdn.com/trainprotocol/7R9mnlp6I7r6fs1j/logo/logo.svg?fit=max\u0026auto=format\u0026n=7R9mnlp6I7r6fs1j\u0026q=85\u0026s=9bddfecb16c4a22325ae8ed22c717a8b","dark":"https://mintcdn.com/trainprotocol/7R9mnlp6I7r6fs1j/logo/logo.svg?fit=max\u0026auto=format\u0026n=7R9mnlp6I7r6fs1j\u0026q=85\u0026s=9bddfecb16c4a22325ae8ed22c717a8b"},"favicon":"https://mintcdn.com/trainprotocol/7R9mnlp6I7r6fs1j/favicon.svg?fit=max\u0026auto=format\u0026n=7R9mnlp6I7r6fs1j\u0026q=85\u0026s=bbb0ad95b89cc89572a7f282530a5754","appearance":{"default":"dark","strict":true},"background":{"decoration":"gradient"},"navbar":{"links":[{"href":"https://t.me/trainprotocol","label":"Dev Community"},{"href":"https://github.com/trainprotocol","label":"Github"}],"primary":{"type":"button","label":"Try TRAIN","href":"https://testnet.train.tech/"}},"footer":{"socials":{"x":"https://x.com/trainprotocol","github":"https://github.com/trainprotocol","telegram":"https://t.me/trainprotocol"},"links":[{"header":"Protocol","items":[{"label":"Home","href":"https://train.tech"},{"label":"Bridge App","href":"https://testnet.train.tech/"},{"label":"Docs","href":"https://docs.train.tech"}]},{"header":"Extra","items":[{"label":"Brand Assets","href":"https://www.figma.com/design/d6Eg6ehTBdKahTnwxNEoBY/Train-Brand-Assets"}]}]},"seo":{"metatags":{"og:title":"TRAIN Protocol Documentation","og:description":"Access the complete documentation of the TRAIN Protocol – your solution for decentralized and trustless cross-chain asset interoperability.","og:logo":"/logo/logo.svg"},"indexing":"navigable"},"integrations":{},"styling":{"latex":true},"navigation":{"pages":[]}},"deployment":{"deploymentMetadataValue":{"subdomain":"trainprotocol","hasAudioNarration":false,"actualSubdomain":"trainprotocol","customDomains":["docs.train.tech"],"gitSource":{"type":"github","owner":"trainprotocol","repo":"docs","deployBranch":"main","contentDirectory":"","isPrivate":true,"mountPath":"","label":""},"chroma":{"liveDeploymentHistoryId":"6a6c7bdd8d23066823f0d939","collectionId":"851d6339-cd28-43ee-9384-2cf9c25e751f","schemaVersion":"v3","latestBuiltDeploymentHistoryId":"6a6c7bdd8d23066823f0d939"},"entitlements":{"AI_CHAT":{"status":"DISABLED"}},"buildId":"6a6c7bdd8d23066823f0d939:success","clientVersion":"0.0.4043","searchFilterCounts":[{"language":"default","tag":"Documentation","count":13},{"language":"default","tag":"Specification","count":7},{"language":"default","tag":"Protocol Spec","count":7},{"language":"default","tag":"Protocol Concepts","count":7},{"language":"default","tag":"TRAIN Protocol","count":4},{"language":"default","tag":"Changelog","count":2},{"language":"default","tag":"Implementation","count":2},{"language":"default","tag":"Atomic Swaps","count":2},{"language":"default","tag":"Using the Protocol","count":2},{"language":"default","tag":"Resources","count":1}]},"assistantConfig":{},"basePath":"","hasChatPermissions":false,"hasWebMcpPermissions":false,"toggles":[],"googleFontsInlined":false},"customCss":[],"page":{"pagePath":"protocol/usage-swap","slug":"/protocol/usage-swap","pageMetadata":{"title":"Cross-Chain Swap","description":"Explains how the protocol can be used for cross-chain swaps","icon":"swap","href":"/protocol/usage-swap"},"description":{"compiledSource":"\"use strict\";\nconst {jsx: _jsx} = arguments[0];\nconst {useMDXComponents: _provideComponents} = arguments[0];\nfunction _createMdxContent(props) {\n const _components = {\n p: \"p\",\n ..._provideComponents(),\n ...props.components\n };\n return _jsx(_components.p, {\n children: \"Explains how the protocol can be used for cross-chain swaps\"\n });\n}\nfunction MDXContent(props = {}) {\n const {wrapper: MDXLayout} = {\n ..._provideComponents(),\n ...props.components\n };\n return MDXLayout ? _jsx(MDXLayout, {\n ...props,\n children: _jsx(_createMdxContent, {\n ...props\n })\n }) : _createMdxContent(props);\n}\nreturn {\n default: MDXContent\n};\n","frontmatter":{},"scope":{}},"pageType":"default","mdx":{"mdxSource":{"compiledSource":"\"use strict\";const{Fragment:_Fragment,jsx:_jsx,jsxs:_jsxs}=arguments[0];const{useMDXComponents:_provideComponents}=arguments[0];function _createMdxContent(props){const _components={a:`a`,p:`p`,strong:`strong`,..._provideComponents(),...props.components},{Step,Steps}=_components;if(!Step)_missingMdxReference(`Step`,true);if(!Steps)_missingMdxReference(`Steps`,true);return _jsxs(_Fragment,{children:[_jsxs(Steps,{children:[_jsx(Step,{title:`Solver Selection`,children:_jsx(_components.p,{children:`Send an intent to find the best Solver/price for the given source and destination.`})}),_jsx(Step,{title:`User and Solver Atomic Swap`,children:_jsxs(_components.p,{children:[`Perform an atomic swap using `,_jsx(_components.a,{href:`/protocol/atomic-swaps-secret_gen`,children:`HTLC with recoverable secret generation`}),`.`]})})]}),`\n`,_jsxs(_components.p,{children:[`The TRAIN Protocol makes bridging `,_jsx(_components.strong,{children:`completely transparent and fully controllable`}),` by the client. The integrator has complete control over every aspect, from selecting and ranking Solvers independently to performing final verification, ensuring the entire process is `,_jsx(_components.strong,{children:`trustless, transparent, and under their control`}),`. The detailed implementation steps can be found in the `,_jsx(_components.a,{href:`/protocol-spec/implementation-dApp`,children:`dApp Implementation`}),` spec.`]})]})}function MDXContent(props={}){const{wrapper:MDXLayout}={..._provideComponents(),...props.components};return MDXLayout?_jsx(MDXLayout,{...props,children:_jsx(_createMdxContent,{...props})}):_createMdxContent(props)}return{default:MDXContent};function _missingMdxReference(id,component){throw new Error(`Expected `+(component?`component`:`object`)+\" `\"+id+\"` to be defined: you likely forgot to import, pass, or provide it.\")}","frontmatter":{},"scope":{"config":{},"pageMetadata":{"title":"Cross-Chain Swap","description":"Explains how the protocol can be used for cross-chain swaps","icon":"swap","href":"/protocol/usage-swap"}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[],"codeExamples":{}},"jsLinks":[],"subdomain":"trainprotocol","siteName":"TRAIN Docs","title":"TRAIN Protocol Documentation","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-05-05T16:00:13.215Z","originalFileLocation":"protocol/usage-swap.mdx"},"headHtml":"\u003cscript data-mint-head>(function(){var d=document.documentElement,p=\"dark\";if(!p){try{p=localStorage.getItem(\"isDarkMode\")}catch(e){}if(p==='true')p='dark';else if(p==='false')p='light';if(p!=='light'\u0026\u0026p!=='dark'\u0026\u0026p!=='system')p=\"dark\"}var r=p==='system'?(matchMedia(\"(prefers-color-scheme: dark)\").matches?'dark':'light'):p;d.classList.remove(r==='dark'?'light':'dark');d.classList.add(r);d.setAttribute(\"data-theme-preference\",p)})();\u003c/script>\u003cmeta data-mint-head name=\"description\" content=\"Explains how the protocol can be used for cross-chain swaps\">\u003cmeta data-mint-head name=\"application-name\" content=\"TRAIN Docs\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/trainprotocol/grZkRABHfW_u9qZg/_generated/favicon/android-chrome-192x192.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"apple-touch-icon\" type=\"image/png\" sizes=\"180x180\" href=\"/mintlify-assets/_mintlify/favicons/trainprotocol/grZkRABHfW_u9qZg/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/trainprotocol/grZkRABHfW_u9qZg/_generated/favicon/favicon-16x16.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/trainprotocol/grZkRABHfW_u9qZg/_generated/favicon/favicon-32x32.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/trainprotocol/grZkRABHfW_u9qZg/_generated/favicon/favicon.ico\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/trainprotocol/grZkRABHfW_u9qZg/_generated/favicon-dark/android-chrome-192x192.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/trainprotocol/grZkRABHfW_u9qZg/_generated/favicon-dark/favicon-16x16.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/trainprotocol/grZkRABHfW_u9qZg/_generated/favicon-dark/favicon-32x32.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/trainprotocol/grZkRABHfW_u9qZg/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"TRAIN Protocol Documentation\">\u003cmeta data-mint-head property=\"og:description\" content=\"Access the complete documentation of the TRAIN Protocol – your solution for decentralized and trustless cross-chain asset interoperability.\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"TRAIN Docs\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://docs.train.tech/protocol/usage-swap\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://trainprotocol.mintlify.app/_mintlify/api/og/v2?division=Using+the+Protocol\u0026amp;title=Cross-Chain+Swap\u0026amp;description=Explains+how+the+protocol+can+be+used+for+cross-chain+swaps\u0026amp;theme=e8a5ca6a01df5ab22f2a978f\u0026amp;signature=73f8cf25dac9f0ad9af9eeccbc0d29da7421112a7602d80331bb1d3bd573e437\">\u003cmeta data-mint-head property=\"og:image:width\" content=\"1200\">\u003cmeta data-mint-head property=\"og:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"twitter:card\" content=\"summary_large_image\">\u003cmeta data-mint-head name=\"twitter:title\" content=\"TRAIN Protocol Documentation\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"Access the complete documentation of the TRAIN Protocol – your solution for decentralized and trustless cross-chain asset interoperability.\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://trainprotocol.mintlify.app/_mintlify/api/og/v2?division=Using+the+Protocol\u0026amp;title=Cross-Chain+Swap\u0026amp;description=Explains+how+the+protocol+can+be+used+for+cross-chain+swaps\u0026amp;theme=e8a5ca6a01df5ab22f2a978f\u0026amp;signature=73f8cf25dac9f0ad9af9eeccbc0d29da7421112a7602d80331bb1d3bd573e437\">\u003cmeta data-mint-head name=\"twitter:image:width\" content=\"1200\">\u003cmeta data-mint-head name=\"twitter:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"msapplication-config\" content=\"/mintlify-assets/_mintlify/favicons/trainprotocol/grZkRABHfW_u9qZg/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"TRAIN Docs\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#278EF6\">\u003cmeta data-mint-head name=\"og:logo\" content=\"/logo/logo.svg\">\u003clink data-mint-head rel=\"canonical\" href=\"https://docs.train.tech/protocol/usage-swap\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/protocol/usage-swap.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://docs.train.tech/#organization\",\"name\":\"TRAIN Docs\",\"url\":\"https://docs.train.tech\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/trainprotocol/7R9mnlp6I7r6fs1j/logo/logo.svg?fit=max\u0026auto=format\u0026n=7R9mnlp6I7r6fs1j\u0026q=85\u0026s=9bddfecb16c4a22325ae8ed22c717a8b\"}},{\"@type\":\"WebSite\",\"@id\":\"https://docs.train.tech#website\",\"name\":\"TRAIN Docs\",\"url\":\"https://docs.train.tech\",\"publisher\":{\"@id\":\"https://docs.train.tech/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://docs.train.tech/protocol/usage-swap#webpage\",\"url\":\"https://docs.train.tech/protocol/usage-swap\",\"name\":\"Cross-Chain Swap\",\"description\":\"Explains how the protocol can be used for cross-chain swaps\",\"dateModified\":\"2026-05-05T16:00:13.215Z\",\"isPartOf\":{\"@id\":\"https://docs.train.tech#website\"},\"breadcrumb\":{\"@id\":\"https://docs.train.tech/protocol/usage-swap#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://docs.train.tech/protocol/usage-swap#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"TRAIN Protocol\",\"item\":\"https://docs.train.tech/protocol/introduction\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Cross-Chain Swap\",\"item\":\"https://docs.train.tech/protocol/usage-swap\"}]},{\"@type\":[\"Article\",\"TechArticle\"],\"@id\":\"https://docs.train.tech/protocol/usage-swap#article\",\"headline\":\"Cross-Chain Swap\",\"name\":\"Cross-Chain Swap\",\"description\":\"Explains how the protocol can be used for cross-chain swaps\",\"url\":\"https://docs.train.tech/protocol/usage-swap\",\"mainEntityOfPage\":{\"@id\":\"https://docs.train.tech/protocol/usage-swap#webpage\"},\"dateModified\":\"2026-05-05T16:00:13.215Z\",\"publisher\":{\"@id\":\"https://docs.train.tech/#organization\"},\"isPartOf\":{\"@id\":\"https://docs.train.tech#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"TRAIN Docs\",\"creator\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","siteName":"TRAIN Docs","nav":{"global":null,"tabs":[{"tab":"Documentation","groups":[{"group":"TRAIN Protocol","pages":[{"title":"Introduction","icon":"rocket","href":"/protocol/introduction"},{"title":"Security","description":"Key security details of the TRAIN protocol","icon":"lock","href":"/protocol/security"},{"group":"Using the Protocol","icon":"chart-network","pages":[{"title":"Cross-Chain Swap","icon":"swap","href":"/protocol/usage-swap"},{"title":"Adding a New Network","description":"Explains how networks can be added to the protocol","icon":"network-wired","href":"/protocol/usage-add-new-network"}]}]},{"group":"Deployments","pages":[{"title":"Deployments","icon":"file-lock","href":"/deployments"}]},{"group":"Protocol Concepts","pages":[{"title":"The Protocol","icon":"engine","href":"/protocol/the-protocol"},{"group":"Atomic Swaps","icon":"swap","pages":[{"title":"Original HTLC","icon":"atom-simple","href":"/protocol/atomic-swaps-overview"},{"title":"Wallet HTLC","icon":"wallet","href":"/protocol/atomic-swaps-secret_gen"}]},{"title":"Reward-Slash","icon":"slash","href":"/protocol/slashing"},{"title":"dApp","icon":"browser","href":"/protocol/dApp"},{"title":"Gasless Flows","icon":"gas-pump-slash","href":"/protocol/gasless"},{"title":"Cross-Chain Trading","icon":"money-bill-trend-up","href":"/research/cross-chain-trading"}]},{"group":"Resources","pages":[{"title":"Brand Assets","icon":"palette","href":"/brand-assets"}]}]},{"tab":"Specification","pages":[{"title":"Specification","href":"/protocol-spec/model"}]},{"tab":"Changelog","pages":[{"title":"Changelog","href":"/changelog/overview"}]}]},"basePath":"","title":"TRAIN Protocol Documentation","buildId":"dpl_G9nrg4qeJSZtah1Ziwbc2n6WkLch","deploymentId":"dpl_G9nrg4qeJSZtah1Ziwbc2n6WkLch","dynamics":[],"chunks":[]}