Relay vaults are receiving funds from users who deposit their tokens to provide liquidity to the vaults. The contracts are not upgradable, meaning that once deployed, the code cannot be changed.
However, there are several configuration parameters that can be changed by the owner of the vaults (called its curator), such as the base yield pool, or the origins, and few other minor elements. In order to protect the user funds, each vault is deployed and “owned” by a timelock contract, which means that any change submitted by its curator on the contract can only happen after a delay. This allows the community to review the changes, and, if needed, Liquidity Providers can pull their liquidity out of the vaults before the changes are applied.Additionally, for vaults curated by the Relay team, the curator is a multisig wallet with a 3 of 5 policy. This means that any change to the vaults must be approved by at least 3 distinct members of the Relay team, providing an additional layer of security.
Another threat is one where a specific origin (and its bridge) gets compromised. This can take multiple forms, such as a bridge being exploited, or an origin chain reorg that would lead to funds that had been previously bridged, not actually being sent to the vault.In order to mitigate these risks, each origin has a maximum debt setting which specifies the maximum amount of funds that can be bridged from that origin at any given time (capping the loss that a vault can endure). The origins also have a specific cool down period which is the minimum delay between a bridging transaction and the dispersion of funds to the recipient.Finally, each origin has a specific curator who can instantly pause the origin in case of an emergency. This allows the Relay team to quickly react to any potential issues with a specific origin.
{"docsConfig":{"theme":"mint","$schema":"https://mintlify.com/docs.json","name":"Relay","description":"Relay is a developer platform that gives you instant global access to the onchain economy. Swap, pay, and transact across every blockchain from a single onchain balance using a simple set of enterprise-grade APIs.","colors":{"primary":"#4615C8","light":"#A7AAFF","dark":"#4615C8"},"logo":{"light":"https://mintcdn.com/unevenlabs/Gbv82V37Oid9F6eG/logo/relay-black.svg?fit=max\u0026auto=format\u0026n=Gbv82V37Oid9F6eG\u0026q=85\u0026s=7983e6e441ff77eeac7e17c03c2d0e8c","dark":"https://mintcdn.com/unevenlabs/Gbv82V37Oid9F6eG/logo/relay-white.svg?fit=max\u0026auto=format\u0026n=Gbv82V37Oid9F6eG\u0026q=85\u0026s=fbdcf916b96f42397c1470872ab80cda"},"favicon":"https://mintcdn.com/unevenlabs/f--GnNtyUvuqA2AW/favicon.png?fit=max\u0026auto=format\u0026n=f--GnNtyUvuqA2AW\u0026q=85\u0026s=d40a0a20b4bf062cea218d7eed38c576","api":{"openapi":["https://api.relay.link/documentation/json"],"examples":{"defaults":"required","languages":["curl","javascript","python"],"prefill":false},"mdx":{"server":["https://api.relay.link","https://api.testnets.relay.link"]}},"appearance":{"default":"light"},"navbar":{"links":[{"href":"https://support.relay.link/en/","label":"Support"},{"href":"https://forms.gle/XNeELYavjwoJwPEf7","label":"Get in Touch"}],"primary":{"type":"button","label":"Try Relay","href":"https://www.relay.link/"}},"footer":{"socials":{"twitter":"https://twitter.com/RelayProtocol"}},"integrations":{"intercom":{"appId":"b09ps4q8"}},"contextual":{"options":["copy","view","chatgpt","claude","perplexity","mcp","cursor","vscode"],"display":"header"},"markdown":{"instructions":["To quote bridges and swaps, look up chains and tokens, or track Relay transactions from an agent, use the Relay MCP server: `npx -y @relayprotocol/relay-mcp`. It is read-only and does not sign or broadcast transactions. Setup: https://docs.relay.link/resources/developing-with-ai.md","For Relay Protocol's trust model, security architecture, and audits, see https://docs.relay.link/references/protocol/security.md. For address screening, see https://docs.relay.link/security/transaction-screening.md."]},"styling":{"latex":true},"navigation":{"pages":[]}},"deployment":{"deploymentMetadataValue":{"subdomain":"unevenlabs","hasAudioNarration":false,"actualSubdomain":"unevenlabs","customDomains":["docs.relay.link"],"gitSource":{"type":"github","owner":"relayprotocol","repo":"relay-docs","deployBranch":"main","contentDirectory":"","isPrivate":true,"mountPath":"","label":""},"feedback":{"thumbs":true},"entitlements":{"AI_CHAT":{"status":"ENABLED"},"WEB_MCP":{"status":"ENABLED"},"NARRATION":{"status":"ENABLED"}},"buildId":"6af23a0f7f32de11ccf6a57f","clientVersion":"0.0.4102","searchFilterCounts":[{"language":"default","tag":"API Reference","count":97},{"language":"default","tag":"RelayKit","count":48},{"language":"default","tag":"Relay Platform","count":29},{"language":"default","tag":"Relay Protocol","count":29},{"language":"default","tag":"Settlement","count":17},{"language":"default","tag":"Integration Guides","count":13},{"language":"default","tag":"Vaults","count":12},{"language":"default","tag":"Core Concepts","count":11},{"language":"default","tag":"SDK","count":11},{"language":"default","tag":"Features","count":9}]},"assistantConfig":{},"basePath":"","hasChatPermissions":true,"hasWebMcpPermissions":true,"toggles":[{"name":"kill-isr","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"custom-rbac-roles","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-mintlify-slack","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-integrations-settings","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"rbac-expansion","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-pr-grouping","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"custom-prefix","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"analytics-v7","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"user-flows-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"no-publish-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-onboarding","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"llms-txt-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving-live","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"stripTemperatureMiddleware","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"support-platform-pylon-zendesk","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"instant-rollback","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications-server","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-fable","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fixed-ai-action-pricing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automation-resolve-merge-conflict","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"scoped-publishing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"mintql","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"page-level-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-version-history-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-page-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"full-page-search","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workspace-projects","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"assistant-v5","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fork-pr-previews","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"revalidation-jwt","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-sso-scim","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"hobby-abuse-scan","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"dashboard-inbox","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-signup","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"turbopuffer-dual-write","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-enabled","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"approve-review-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-metadata","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"sso-setup-deadline-banner","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"turbopuffer-serve","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"live-agents","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false}],"googleFontsInlined":false},"customCss":[{"filePath":"style.css","content":"#navbar a[href*=\"/references\"]{padding-left:18px;padding-right:18px}.card-link{color:var(--tw-prose-links);text-decoration:none;font-weight:600;margin-top:10px;display:inline-block;margin-right:5px;border-bottom:1px solid transparent}.card-link:hover{border-bottom:1px solid rgb(var(--primary-light))}#ui-kit-overview-cards a>div>div:first-child{float:left;margin-right:12px}#ui-kit-overview-cards a>div h2{margin:0;display:inline}.relay-table{td:not(:first-child) {\n padding-left: 24px;\n }\n\n th:not(:first-child) {\n padding-left: 24px;\n }\n\n .chain-icon-light {\n display: block;\n }\n\n .chain-icon-dark {\n display: none;\n }}.dark .relay-table .chain-icon-light{display:none}.dark .relay-table .chain-icon-dark{display:block}#\\/references\\/api\\/core,#\\/references\\/api\\/utilities,#\\/references\\/api\\/advanced{pointer-events:none;font-weight:700}.loader{width:48px;height:48px;border:5px solid rgb(70 21 200);border-bottom-color:transparent;border-radius:50%;display:inline-block;box-sizing:border-box;animation:rotation 1s linear infinite}@keyframes rotation{0%{transform:rotate(0deg)}100%{transform:rotate(360deg)}}#body-user [data-component-part=\"field-info-pill\"]:has(>span.text-gray-400),#body-origin-chain-id [data-component-part=\"field-info-pill\"]:has(>span.text-gray-400),#body-destination-chain-id [data-component-part=\"field-info-pill\"]:has(>span.text-gray-400),#body-origin-currency [data-component-part=\"field-info-pill\"]:has(>span.text-gray-400),#body-destination-currency [data-component-part=\"field-info-pill\"]:has(>span.text-gray-400),#body-amount [data-component-part=\"field-info-pill\"]:has(>span.text-gray-400),#body-trade-type [data-component-part=\"field-info-pill\"]:has(>span.text-gray-400){display:none}#custom-vm-quicksets{display:flex;gap:10px;margin-top:10px;margin-left:16px;border-bottom:1px solid;border-color:rgb(var(--gray-200)/.7);padding-bottom:16px}#custom-vm-quicksets button{border-radius:4px;overflow:hidden;border:none;cursor:pointer;transition:opacity 0.2s ease;opacity:1}#custom-vm-quicksets button img{width:32px;height:32px}#custom-vm-quicksets button:hover{opacity:0.8}#custom-vm-quicksets-intro{font-weight:600;margin-top:20px;margin-left:16px}#hyperliquid-button{background-color:#fff;padding:2px;max-height:32px}@media (max-width: 699px){[class*=\"intercom-with-namespace\"],.intercom-lightweight-app-launcher{bottom:60px!important}}body:has(.homepage-bg) .nav-tabs-item[href=\"/what-is-relay\"]{color:rgb(75 85 99)!important;text-shadow:none!important}.dark body:has(.homepage-bg) .nav-tabs-item[href=\"/what-is-relay\"],body.dark:has(.homepage-bg) .nav-tabs-item[href=\"/what-is-relay\"]{color:rgb(156 163 175)!important}body:has(.homepage-bg) .nav-tabs-item[href=\"/what-is-relay\"]>div{background:transparent!important}.homepage-bg{width:100%;height:40vh;position:relative;background:var(--Violet-Light-9, #4615C8);pointer-events:none}.homepage-cards{display:flex;gap:24px;margin:40px 50px;justify-content:center}.homepage-card{max-width:400px;min-height:200px;padding:24px;border-radius:12px;border:1px solid rgba(0, 0, 0, 0.1);background-color:#fff;text-decoration:none;color:inherit;display:flex;flex-direction:column;gap:12px;max-width:300px;transition:background-color 0.2s, border-color 0.2s}.dark .homepage-card{border:1px solid rgba(255, 255, 255, 0.1);background-color:#1a1a1a}.homepage-card:hover .homepage-card-link{opacity:0.8}.homepage-card h3{margin:0;font-size:18px;font-weight:700;color:#000;margin-bottom:-8px}.dark .homepage-card h3{color:#fff}.homepage-card-description{margin:0 0 40px 0;font-size:14px;color:#666;line-height:1.5}.dark .homepage-card-description{color:#999}.homepage-card-link{font-size:14px;color:#4615C8;font-weight:500;margin-top:auto}.dark .homepage-card-link{color:#a78bfa}@media (max-width: 699px){.homepage-bg{height:30vh}.homepage-bg-text{font-size:24px!important}.homepage-bg-logo{width:200px}.homepage-cards{margin:40px 12px}}@media (max-width: 599px){.homepage-bg{height:20vh}.homepage-bg-text{font-size:20px!important}.homepage-bg-container>div{gap:0!important}}@media (max-width: 899px){.homepage-cards{flex-direction:column;align-items:center}.homepage-card{max-width:600px;width:100%}}.relay-checkbox{appearance:none;-webkit-appearance:none;width:12px;height:12px;border:1px solid #C8CCFF;border-radius:3px;background-color:#F7F8FF;cursor:pointer;position:relative;transition:all 0.15s ease;flex-shrink:0}.relay-checkbox:hover{border-color:#B4B8FF;background-color:#EFF1FF}.relay-checkbox:focus{outline:none;border-color:#4615C8;box-shadow:0 0 0 2px rgba(70, 21, 200, 0.15)}.relay-checkbox:checked{background-color:#4615C8;border-color:#4615C8}.relay-checkbox:checked:hover{background-color:#3B00B4;border-color:#3B00B4}.relay-checkbox:checked::after{content:'';position:absolute;left:3px;top:0px;width:4px;height:7px;border:solid #fff;border-width:0 1.5px 1.5px 0;transform:rotate(45deg)}.relay-checkbox:disabled{cursor:not-allowed;opacity:0.5;background-color:#EFF1FF;border-color:#D7DBFF}.dark .relay-checkbox{background-color:#141331;border-color:#4016B8}.dark .relay-checkbox:hover{border-color:#4C24D1;background-color:#221166}.dark .relay-checkbox:focus{border-color:#5B2AF9;box-shadow:0 0 0 2px rgba(91, 42, 249, 0.25)}.dark .relay-checkbox:checked{background-color:#4615C8;border-color:#4615C8}.dark .relay-checkbox:checked:hover{background-color:#3901AA;border-color:#3901AA}.dark .relay-checkbox:disabled{background-color:#221166;border-color:#4016B8}[data-page-title=\"Call Execution Integration Guide\"]{h2 #get-a-quote,\n h2 #execute-the-call,\n h2 #monitor-cross-chain-call-status {\n visibility: hidden;\n height: 0;\n margin: 0;\n padding: 0;\n }}[data-page-title=\"Bridging Integration Guide\"]{h2 #get-a-quote,\n h2 #execute-the-bridge,\n h2 #monitor-bridge-status {\n visibility: hidden;\n height: 0;\n margin: 0;\n padding: 0;\n }}.callout .prose>:first-child{margin-top:0}[data-cl-filter-bar]{position:sticky;top:var(--cl-sticky-top, 5rem);z-index:20;display:flex;flex-wrap:wrap;align-items:center;gap:6px;padding:12px 0;margin-bottom:20px;border-bottom:1px solid var(--gray-200)}.dark [data-cl-filter-bar]{border-bottom-color:rgb(55 65 81)}div:has(>[data-component-part=\"update-label\"]){top:calc(var(--scroll-mt, 5rem) + var(--cl-bar-height, 0px))}[data-component-part=\"update-tag\"],[data-cl-filter-bar] button{cursor:pointer;padding:2px 8px;border:1px solid var(--gray-200);border-radius:9999px;transition:border-color 0.15s,\n color 0.15s,\n background-color 0.15s}[data-cl-filter-bar] button{font-size:0.875rem;font-weight:500;line-height:1.5;color:rgb(107 114 128);background:transparent}[data-component-part=\"update-tag\"]:hover,[data-component-part=\"update-tag\"][data-cl-active=\"true\"],[data-cl-filter-bar] button:hover,[data-cl-filter-bar] button[data-cl-active=\"true\"]{border-color:rgb(var(--primary) / var(--tw-text-opacity, 1));color:rgb(var(--primary) / var(--tw-text-opacity, 1))}[data-component-part=\"update-tag\"][data-cl-active=\"true\"],[data-cl-filter-bar] button[data-cl-active=\"true\"]{background:rgb(var(--primary) / 0.08)}.dark [data-component-part=\"update-tag\"],.dark [data-cl-filter-bar] button{border-color:rgb(55 65 81);color:rgb(156 163 175)}.dark [data-component-part=\"update-tag\"]:hover,.dark [data-component-part=\"update-tag\"][data-cl-active=\"true\"],.dark [data-cl-filter-bar] button:hover,.dark [data-cl-filter-bar] button[data-cl-active=\"true\"]{border-color:rgb(var(--primary-light));color:rgb(var(--primary-light))}.dark [data-component-part=\"update-tag\"][data-cl-active=\"true\"],.dark [data-cl-filter-bar] button[data-cl-active=\"true\"]{background:rgb(var(--primary-light) / 0.14)}"}],"page":{"pagePath":"references/protocol/vaults/security","slug":"/references/protocol/vaults/security","pageMetadata":{"title":null,"description":null,"href":"/references/protocol/vaults/security"},"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`,em:`em`,p:`p`,strong:`strong`,..._provideComponents(),...props.components},{Heading}=_components;if(!Heading)_missingMdxReference(`Heading`,true);return _jsxs(_Fragment,{children:[_jsx(Heading,{level:`2`,id:`threat-model`,children:`Threat model`}),`\n`,_jsxs(_components.p,{children:[`Relay vaults are receiving funds from users who deposit their tokens to provide liquidity to the vaults. The contracts are `,_jsx(_components.strong,{children:`not`}),` upgradable, meaning that once deployed, the code cannot be changed.`]}),`\n`,_jsx(Heading,{level:`3`,id:`curator`,children:`Curator`}),`\n`,_jsxs(_components.p,{children:[`However, there are several configuration parameters that can be changed by the owner of the vaults (called its `,_jsx(_components.em,{children:`curator`}),`), such as the base yield pool, or the origins, and few other minor elements. In order to protect the user funds, each vault is deployed and “owned” by a `,_jsx(_components.strong,{children:`timelock contract`}),`, which means that any change submitted by its curator on the contract can only happen after a delay. This allows the community to review the changes, and, if needed, Liquidity Providers can pull their liquidity out of the vaults before the changes are applied.`]}),`\n`,_jsxs(_components.p,{children:[`Additionally, for vaults curated by the Relay team, the curator is a `,_jsx(_components.strong,{children:`multisig wallet`}),` with a 3 of 5 policy. This means that any change to the vaults must be approved by at least 3 distinct members of the Relay team, providing an additional layer of security.`]}),`\n`,_jsx(Heading,{level:`3`,id:`origins`,children:`Origins`}),`\n`,_jsx(_components.p,{children:`Another threat is one where a specific origin (and its bridge) gets compromised. This can take multiple forms, such as a bridge being exploited, or an origin chain reorg that would lead to funds that had been previously bridged, not actually being sent to the vault.`}),`\n`,_jsxs(_components.p,{children:[`In order to mitigate these risks, each origin has a `,_jsx(_components.strong,{children:`maximum debt`}),` setting which specifies the maximum amount of funds that can be bridged from that origin at any given time (capping the loss that a vault can endure). The origins also have a specific `,_jsx(_components.strong,{children:`cool down`}),` period which is the minimum delay between a bridging transaction and the dispersion of funds to the recipient.`]}),`\n`,_jsxs(_components.p,{children:[`Finally, each origin has a specific `,_jsx(_components.strong,{children:`curator`}),` who can instantly pause the origin in case of an emergency. This allows the Relay team to quickly react to any potential issues with a specific origin.`]}),`\n`,_jsx(Heading,{level:`2`,id:`audits`,children:`Audits`}),`\n`,_jsxs(_components.p,{children:[`The Relay Vault contracts have been audited by `,_jsx(_components.a,{href:`https://spearbit.com/`,children:`Spearbit`}),` and you can find the `,_jsx(_components.a,{href:`https://github.com/relayprotocol/relay-vaults/blob/main/docs/README.md`,children:`audit reports in our Github repo`}),`.`]})]})}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":null,"description":null,"href":"/references/protocol/vaults/security"}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[{"title":"Threat model","slug":"threat-model","depth":2,"children":[{"title":"Curator","slug":"curator","depth":3,"children":[]},{"title":"Origins","slug":"origins","depth":3,"children":[]}]},{"title":"Audits","slug":"audits","depth":2,"children":[]}],"codeExamples":{}},"jsLinks":["/_mintlify/custom/unevenlabs/e205e0c83de02f5e/script.js","/_mintlify/custom/unevenlabs/90d7a6a8bc7d1a3b/content/intercom-opener.js","/_mintlify/custom/unevenlabs/a13c5467619df0df/iframe-resizer.js","/_mintlify/custom/unevenlabs/411e1fdad39a2d9e/posthog.js","/_mintlify/custom/unevenlabs/9cf2d871386c2976/playground-enhancer.js"],"subdomain":"unevenlabs","siteName":"Relay","title":"Security - Relay","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-11-06T20:24:01.372Z","originalFileLocation":"references/protocol/vaults/security.mdx"},"headHtml":"\u003cscript data-mint-head>(function(){var d=document.documentElement,p=null;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=\"light\"}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=\"application-name\" content=\"Relay\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/unevenlabs/P-TdogRhaTE5DlJS/_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/unevenlabs/P-TdogRhaTE5DlJS/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/unevenlabs/P-TdogRhaTE5DlJS/_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/unevenlabs/P-TdogRhaTE5DlJS/_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/unevenlabs/P-TdogRhaTE5DlJS/_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/unevenlabs/P-TdogRhaTE5DlJS/_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/unevenlabs/P-TdogRhaTE5DlJS/_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/unevenlabs/P-TdogRhaTE5DlJS/_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/unevenlabs/P-TdogRhaTE5DlJS/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"Security - Relay\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"Relay\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://docs.relay.link/references/protocol/vaults/security\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://unevenlabs.mintlify.site/_mintlify/api/og/v2?division=Vaults\u0026amp;title=Security\u0026amp;theme=8fd39ecb3bdf0498d76260ed\u0026amp;signature=80a83055c46e73d53e12ce1455ce1357b74226af09c4ee11ebbe36de8ed1c204\">\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=\"Security - Relay\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://unevenlabs.mintlify.site/_mintlify/api/og/v2?division=Vaults\u0026amp;title=Security\u0026amp;theme=8fd39ecb3bdf0498d76260ed\u0026amp;signature=80a83055c46e73d53e12ce1455ce1357b74226af09c4ee11ebbe36de8ed1c204\">\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/unevenlabs/P-TdogRhaTE5DlJS/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"Relay\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#4615C8\">\u003clink data-mint-head rel=\"canonical\" href=\"https://docs.relay.link/references/protocol/vaults/security\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/references/protocol/vaults/security.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://docs.relay.link/#organization\",\"name\":\"Relay\",\"url\":\"https://docs.relay.link\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/unevenlabs/Gbv82V37Oid9F6eG/logo/relay-black.svg?fit=max\u0026auto=format\u0026n=Gbv82V37Oid9F6eG\u0026q=85\u0026s=7983e6e441ff77eeac7e17c03c2d0e8c\"}},{\"@type\":\"WebSite\",\"@id\":\"https://docs.relay.link#website\",\"name\":\"Relay\",\"url\":\"https://docs.relay.link\",\"publisher\":{\"@id\":\"https://docs.relay.link/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://docs.relay.link/references/protocol/vaults/security#webpage\",\"url\":\"https://docs.relay.link/references/protocol/vaults/security\",\"name\":\"Security\",\"dateModified\":\"2026-11-06T20:24:01.372Z\",\"isPartOf\":{\"@id\":\"https://docs.relay.link#website\"},\"breadcrumb\":{\"@id\":\"https://docs.relay.link/references/protocol/vaults/security#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://docs.relay.link/references/protocol/vaults/security#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Vaults\",\"item\":\"https://docs.relay.link/references/protocol/vaults/overview\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Security\",\"item\":\"https://docs.relay.link/references/protocol/vaults/security\"}]},{\"@type\":[\"Article\",\"TechArticle\"],\"@id\":\"https://docs.relay.link/references/protocol/vaults/security#article\",\"headline\":\"Security\",\"name\":\"Security\",\"url\":\"https://docs.relay.link/references/protocol/vaults/security\",\"mainEntityOfPage\":{\"@id\":\"https://docs.relay.link/references/protocol/vaults/security#webpage\"},\"dateModified\":\"2026-11-06T20:24:01.372Z\",\"publisher\":{\"@id\":\"https://docs.relay.link/#organization\"},\"isPartOf\":{\"@id\":\"https://docs.relay.link#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"Relay\",\"publisher\":{\"@type\":\"Organization\",\"name\":\"Relay\"},\"provider\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","agentPointerHref":"/references/protocol/vaults/security.md","siteName":"Relay","nav":{"global":null,"tabs":[{"tab":"Relay Platform","groups":[{"group":"Introduction","pages":[{"title":"What is Relay?","href":"/what-is-relay"},{"title":"How Relay Works","href":"/how-relay-works"}]},{"group":"Solutions","pages":[{"title":"Payment Service Providers","href":"/solutions/payment-service-providers"},{"title":"Wallets \u0026 Wallet Providers","href":"/solutions/wallets-and-wallet-providers"},{"title":"Multichain Apps","href":"/solutions/multichain-apps"},{"title":"Chains","href":"/solutions/chains"},{"title":"Commerce \u0026 Payments","href":"/solutions/commerce-and-payments"}]},{"group":"Use Cases","pages":[{"title":"Bridging \u0026 Onboarding","href":"/use-cases/bridging"},{"title":"Swaps","href":"/use-cases/cross-chain-swaps"},{"title":"Call Execution","href":"/use-cases/calling"}]},{"group":"Features","pages":[{"title":"App Fees","href":"/features/app-fees"},{"title":"Fee Sponsorship","href":"/features/fee-sponsorship"},{"title":"Deposit Addresses","href":"/features/deposit-addresses"},{"title":"Gas Top-Up","href":"/features/gas-top-up"},{"title":"Gasless Execution","href":"/features/gasless-execution"},{"title":"Fast Fill","href":"/features/fast-fill"},{"title":"Gasless Swaps","href":"/features/gasless-swaps"},{"title":"Price Stabilization","href":"/features/price-stabilization"},{"title":"Routing Integration Models","href":"/features/routing-integration-models"}]},{"group":"Safety \u0026 Security","pages":[{"title":"Transaction Screening","href":"/security/transaction-screening"},{"title":"Unsupported Exchanges","href":"/security/unsupported-exchanges"},{"title":"Bug Bounty Program","href":"/security/bounties"},{"title":"MEV protection","href":"/security/mev-protection"},{"title":"Community Support","url":"https://support.relay.link/en/collections/12225806-safety-security-loss-prevention","href":"/security/community-support"},{"title":"Contract Audits","url":"/references/protocol/security","href":"/security/contract-audits"}]},{"group":"Resources","pages":[{"title":"Supported Chains","url":"/references/api/api_resources/supported-chains","href":"/resources/supported-chains"},{"title":"Integrating using AI","href":"/resources/developing-with-ai"},{"title":"Support","url":"https://support.relay.link/en/","href":"/resources/support"},{"title":"Brand Assets","href":"/resources/brand-assets"}]}]},{"tab":"API Reference","groups":[{"group":" ","pages":[{"title":"API Overview","href":"/references/api/overview"},{"title":"Quickstart","href":"/references/api/quickstart"},{"title":"Apps, API keys, and Rate Limits","href":"/references/api/api-keys"},{"group":"Core Concepts","pages":[{"title":"Understanding Step Execution","href":"/references/api/api_core_concepts/step-execution"},{"title":"Wallet Detection","href":"/references/api/api_core_concepts/wallet-detection"},{"title":"Cost \u0026 Fee Structure","href":"/references/api/api_core_concepts/fees"},{"title":"Refunds","href":"/references/api/api_core_concepts/refunds"},{"title":"Input Validation","href":"/references/api/api_core_concepts/input-validation"},{"title":"Trade Types","href":"/references/api/api_core_concepts/trade-types"},{"title":"Surplus \u0026 Shortage","href":"/references/api/api_core_concepts/surplus-and-shortage"},{"title":"Handling Quote Errors","href":"/references/api/api_core_concepts/handling-errors"},{"title":"Handling Rate Limits","href":"/references/api/api_core_concepts/handling-rate-limits"},{"title":"Handling Execution Errors","href":"/references/api/api_core_concepts/execution-errors"},{"title":"Contract Compatibility","href":"/references/api/api_core_concepts/contract-compatibility"}]},{"group":"Integration Guides","pages":[{"title":"Bridging Integration Guide","href":"/references/api/api_guides/bridging-integration-guide"},{"title":"Call Execution Integration Guide","href":"/references/api/api_guides/calling-integration-guide"},{"title":"Transaction Indexing","href":"/references/api/api_guides/transaction-indexing"},{"title":"Base Builder Codes","href":"/references/api/api_guides/builder-codes"},{"title":"Smart Accounts in Relay","href":"/references/api/api_guides/smart-accounts"},{"group":"Chain Support Guides","pages":[{"title":"Testnet Support","href":"/references/api/api_guides/testnet"},{"title":"Solana Support","href":"/references/api/api_guides/solana"},{"title":"Bitcoin Support","href":"/references/api/api_guides/bitcoin"},{"title":"Hyperliquid Support","href":"/references/api/api_guides/hyperliquid-support"},{"title":"Lighter Support","href":"/references/api/api_guides/lighter-support"}]},{"title":"Deep Linking","href":"/references/api/api_guides/deep-linking"},{"title":"Websockets","href":"/references/api/api_guides/websockets"},{"title":"Webhooks","href":"/references/api/api_guides/webhooks"}]},{"group":"Migration Guides","pages":[{"title":"Migrating to Requests v3","href":"/references/api/api_guides/migrating-to-requests-v3"},{"title":"Migrating to Currencies v2","href":"/references/api/api_guides/migrating-to-currencies-v2"},{"title":"Migrating to Token Price v2","href":"/references/api/api_guides/migrating-to-token-price-v2"}]},{"group":"Chains, Tokens, Contracts","pages":[{"title":"Supported Chains","href":"/references/api/api_resources/supported-chains"},{"title":"Contract Addresses","href":"/references/api/api_resources/contract-addresses"},{"title":"Supported Tokens \u0026 Routes","href":"/references/api/api_resources/supported-routes"}]},{"title":"Troubleshooting","href":"/references/api/troubleshooting"}]},{"group":"API Reference","pages":[{"title":"Core","href":"/references/api/core"},{"title":"Get Quote","openapi":"post /quote/v2","href":"/references/api/get-quote-v2"},{"title":"Submit Permit","openapi":"post /execute/permits","href":"/references/api/execute-permits"},{"title":"Get Status","openapi":"get /intents/status/v3","href":"/references/api/get-intents-status-v3"},{"title":"Get Requests","openapi":"get /requests/v3","href":"/references/api/get-requests"},{"title":"Get Published Requests","openapi":"get /published-requests","href":"/references/api/get-published-requests"},{"title":"Utilities","href":"/references/api/utilities"},{"title":"Get Chains","openapi":"get /chains","href":"/references/api/get-chains"},{"title":"Get Chains Liquidity","openapi":"get /chains/liquidity","href":"/references/api/get-chains-liquidity"},{"title":"Get Currencies","openapi":"post /currencies/v2","href":"/references/api/get-currencies-v2"},{"title":"Get Currency Classifications","openapi":"get /currencies/classifications","href":"/references/api/get-currency-classifications"},{"title":"Get Token Price","openapi":"get /currencies/token/price/v2","href":"/references/api/get-token-price-v2"},{"title":"Transactions Index","openapi":"post /transactions/index","href":"/references/api/transactions-index"},{"title":"Transactions Single","openapi":"post /transactions/single","href":"/references/api/transactions-single"},{"title":"Deposit Address Reindex","openapi":"post /transactions/deposit-address/reindex","href":"/references/api/deposit-address-reindex"},{"title":"Get App Fee Balances","openapi":"get /app-fees/{wallet}/balances","href":"/references/api/get-app-fee-balances"},{"title":"Get Balance Events","openapi":"get /balance/{wallet}/events","href":"/references/api/get-balance-events"},{"title":"Claim App Fees","openapi":"post /app-fees/{wallet}/claim","href":"/references/api/claim-app-fees"},{"title":"Get Usage","openapi":"get /metrics/usage","href":"/references/api/get-usage"},{"title":"Advanced","href":"/references/api/advanced"},{"title":"Fast Fill","openapi":"post /fast-fill","href":"/references/api/fast-fill"},{"title":"Get Swap Sources","openapi":"get /swap-sources","href":"/references/api/get-swap-sources"},{"title":"Execute Gasless Txs","sidebarTitle":"Gasless Execution","openapi":"post /execute","href":"/references/api/execute"},{"group":"Withdrawals","pages":[{"title":"Attest Deposit","openapi":"post /withdrawals/attest-deposit","href":"/references/api/attest-deposit"},{"title":"Get Recovery Balances","openapi":"get /withdrawals/balances","href":"/references/api/get-withdrawal-balances"},{"title":"Request Withdrawal","openapi":"post /withdrawals/request","href":"/references/api/request-withdrawal"},{"title":"Get Withdrawal Status","openapi":"get /withdrawals/status","href":"/references/api/get-withdrawal-status"}]},{"group":"Deprecated","pages":[{"title":"Get Requests (v2)","openapi":"get /requests/v2","href":"/references/api/get-requests-v2"},{"title":"Get Price","openapi":"post /price","href":"/references/api/get-price"},{"title":"Get Config","openapi":"get /config/v2","href":"/references/api/get-config"},{"title":"Get Execution Status","openapi":"get /intents/status","href":"/references/api/get-intents-status"},{"title":"Get Currencies (v1)","openapi":"post /currencies/v1","href":"/references/api/get-currencies"},{"title":"Get Token Price (v1)","openapi":"get /currencies/token/price","href":"/references/api/get-token-price"},{"title":"Get Quote","openapi":"post /quote","href":"/references/api/get-quote"}]}]},{"group":"Websockets","pages":[{"title":"Intent Status","asyncapi":"websocket-reference.json relay-ws","href":"/references/websockets/intent-status"}]}]},{"tab":"RelayKit","groups":[{"group":"RelayKit","pages":[{"title":"Overview","sidebarTitle":"Overview","href":"/references/relay-kit/overview"},{"group":"SDK","pages":[{"title":"Installation","sidebarTitle":"Installation","href":"/references/relay-kit/sdk/installation"},{"title":"createClient","href":"/references/relay-kit/sdk/createClient"},{"group":"Actions","pages":[{"title":"getQuote","href":"/references/relay-kit/sdk/actions/getQuote"},{"title":"execute","href":"/references/relay-kit/sdk/actions/execute"},{"title":"getAppFees","href":"/references/relay-kit/sdk/actions/getAppFees"},{"title":"claimAppFees","href":"/references/relay-kit/sdk/actions/claimAppFees"},{"title":"fastFill","href":"/references/relay-kit/sdk/actions/fastFill"},{"title":"executeGaslessBatch","href":"/references/relay-kit/sdk/actions/executeGaslessBatch"}]},{"title":"Adapters","href":"/references/relay-kit/sdk/adapters"},{"title":"Typescript API Typings","href":"/references/relay-kit/sdk/api-types"},{"title":"Chain Utils","sidebarTitle":"Chain Utils","href":"/references/relay-kit/sdk/chain-utils"}]},{"group":"Hooks","pages":[{"title":"Installation","sidebarTitle":"Installation","href":"/references/relay-kit/hooks/installation"},{"title":"useQuote","sidebarTitle":"useQuote","href":"/references/relay-kit/hooks/useQuote"},{"title":"useRelayChains","sidebarTitle":"useRelayChains","href":"/references/relay-kit/hooks/useRelayChains"},{"title":"useRequests","sidebarTitle":"useRequests","href":"/references/relay-kit/hooks/useRequests"},{"title":"useTokenList","sidebarTitle":"useTokenList","href":"/references/relay-kit/hooks/useTokenList"},{"title":"useTokenPrice","sidebarTitle":"useTokenPrice","href":"/references/relay-kit/hooks/useTokenPrice"},{"title":"useExecutionStatus","sidebarTitle":"useExecutionStatus","href":"/references/relay-kit/hooks/useExecutionStatus"}]},{"group":"UI","pages":[{"title":"Installation","sidebarTitle":"Installation","href":"/references/relay-kit/ui/installation"},{"title":"RelayKitProvider","sidebarTitle":"RelayKitProvider","href":"/references/relay-kit/ui/relay-kit-provider"},{"title":"SwapWidget","sidebarTitle":"SwapWidget","href":"/references/relay-kit/ui/swap-widget"},{"title":"Theming","sidebarTitle":"Theming","href":"/references/relay-kit/ui/theming"},{"title":"Troubleshooting","sidebarTitle":"Troubleshooting","href":"/references/relay-kit/ui/troubleshooting"}]}]}]},{"tab":"Relay Protocol","groups":[{"group":"Settlement","pages":[{"title":"Relay Protocol","sidebarTitle":"Overview","href":"/references/protocol/overview"},{"title":"How It Works","sidebarTitle":"How It Works","href":"/references/protocol/how-it-works"},{"group":"Components","pages":[{"title":"The Relay Chain","sidebarTitle":"Relay Chain","href":"/references/protocol/components/relay-chain"},{"title":"Depository","sidebarTitle":"Depository","href":"/references/protocol/components/depository"},{"title":"Deposit Addresses","sidebarTitle":"Deposit Addresses","href":"/references/protocol/components/deposit-addresses"},{"title":"Oracle","sidebarTitle":"Oracle","href":"/references/protocol/components/oracle"},{"title":"Hub","sidebarTitle":"Hub","href":"/references/protocol/components/hub"},{"title":"Allocator","sidebarTitle":"Allocator","href":"/references/protocol/components/allocator"},{"title":"Security Council","sidebarTitle":"Security Council","href":"/references/protocol/components/security-council"}]},{"title":"Security \u0026 Audits","sidebarTitle":"Security \u0026 Audits","href":"/references/protocol/security"},{"group":"Guides","pages":[{"title":"For Apps","sidebarTitle":"For Apps","href":"/references/protocol/guides/for-apps"},{"title":"Programmatic Withdrawals","sidebarTitle":"Withdrawals","href":"/references/protocol/guides/withdrawals"},{"title":"Withdrawing with a Safe","sidebarTitle":"Safe Withdrawals","href":"/references/protocol/guides/safe-withdrawals"},{"title":"Operate a Third-Party Relay Oracle","sidebarTitle":"Third-Party Oracle","href":"/references/protocol/guides/third-party-oracle"}]},{"group":"Contracts","pages":[{"title":"Addresses","sidebarTitle":"Addresses","href":"/references/protocol/addresses"},{"title":"EVM Depository Reference","sidebarTitle":"EVM Depository Reference","href":"/references/protocol/contracts/evm-depository"},{"title":"SVM Depository Reference","sidebarTitle":"SVM Depository Reference","href":"/references/protocol/contracts/solana-depository"}]}]},{"group":"Vaults","pages":[{"title":"Overview","sidebarTitle":"Overview","href":"/references/protocol/vaults/overview"},{"title":"Architecture","description":"Architecture of Relay Vaults","sidebarTitle":"Architecture","href":"/references/protocol/vaults/architecture"},{"title":null,"href":"/references/protocol/vaults/security"},{"title":"Relay Vaults Backend","description":"The Relay Vaults backend service is a GraphQL API that allows developers to query vault data.","sidebarTitle":"Backend","href":"/references/protocol/vaults/backend"},{"group":"Guides","pages":[{"title":"Bridging","sidebarTitle":"Bridging","href":"/references/protocol/vaults/guides/bridging"},{"title":"Interacting with Relay Vaults","sidebarTitle":"Interacting","href":"/references/protocol/vaults/guides/interacting"},{"title":"Withdrawing from Relay Vaults","sidebarTitle":"Withdrawing","href":"/references/protocol/vaults/guides/withdrawing"}]},{"group":"Contracts Reference","pages":[{"title":null,"href":"/references/protocol/vaults/contracts/RelayPoolFactory"},{"title":null,"href":"/references/protocol/vaults/contracts/RelayPool"},{"title":null,"href":"/references/protocol/vaults/contracts/RelayPoolNativeGateway"},{"title":null,"href":"/references/protocol/vaults/contracts/RelayBridgeFactory"},{"title":null,"href":"/references/protocol/vaults/contracts/RelayBridge"}]}]}]},{"tab":"Changelog","pages":[{"title":"Changelog","mode":"center","href":"/changelog"}]}]},"basePath":"","title":"Security - Relay","buildId":"dpl_596ePT575z4qnAFksq1biRW97aLY","deploymentId":"dpl_596ePT575z4qnAFksq1biRW97aLY","dynamics":[],"chunks":[]}