Explains how the system penalizes Solver misbehavior and rewards others for acting to release user funds.
While users can always manually claim their funds, this protocol aims to prevent delays and inconvenience through economic incentives.
Solvers can exhibit unpredictable behavior that leads to various edge cases, such as refusing to release user funds. While users always retain the ability to manually claim their funds, preventing any permanent loss, this situation creates significant inconvenience.
Core Mechanism
The Reward-Slashing Mechanism incentivizes proper Solver behavior. The process begins when a Solver locks funds for a user. At this point, they must also lock an additional reward amount secured by a timelock. This reward serves as an incentive - if the Solver successfully transfers the user’s assets before the timelock expires, they receive their reward back. However, if they fail to act within the specified timeframe, the reward transfers to whoever executes the function to release the user’s assets.
Implementation Details
When a Solver locks funds for a user, the solverLock function escrows an additional reward amount along with a rewardTimelock parameter. This timelock must be set to a future timestamp and cannot exceed the timelock duration of the associated lock. The reward details are recorded in the SolverLocked event and stored inside the solver’s lock itself — solver locks are keyed by (hashlock, solver address), so anyone can read the reward for a given swap by calling getSolverLock(hashlock, solver).
The rewardTimelock must always be set to a future timestamp and cannot exceed the HTLC timelock duration.
Redemption Process
The redeemSolver function routes the reward differently based on timing. The logic is illustrated below using pseudocode:
transfer(funds, recipient);if (!rewardTimelock.expired) { transfer(reward, rewardRecipient); // the Solver acted in time} else { transfer(reward, msg.sender); // bounty for whoever redeems}
Security Considerations
The rewardTimelock serves as a crucial protection against MEV attacks. It provides Solvers adequate time to assess whether they can execute the redeemSolver function within the specified timeframe. Even if Solvers miss their initial window, they can still call the function later to retrieve their reward, provided no one else has already executed it.
{"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":""},"entitlements":{"AI_CHAT":{"status":"DISABLED"}},"buildId":"6ae924e97d386b1c81f068cc:success","clientVersion":"0.0.4142","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":[{"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":"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},{"name":"llms-txt-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false}],"googleFontsInlined":false},"customCss":[],"page":{"pagePath":"protocol-spec/reward-slashing","slug":"/protocol-spec/reward-slashing","pageMetadata":{"title":"Reward-Slash","description":"Explains how the system penalizes Solver misbehavior and rewards others for acting to release user funds.","icon":"slash","href":"/protocol-spec/reward-slashing"},"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 system penalizes Solver misbehavior and rewards others for acting to release user funds.\"\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={code:`code`,p:`p`,pre:`pre`,span:`span`,strong:`strong`,..._provideComponents(),...props.components},{CodeBlock,Heading,Warning}=_components;if(!CodeBlock)_missingMdxReference(`CodeBlock`,true);if(!Heading)_missingMdxReference(`Heading`,true);if(!Warning)_missingMdxReference(`Warning`,true);return _jsxs(_Fragment,{children:[_jsx(Warning,{children:_jsx(_components.p,{children:`While users can always manually claim their funds, this protocol aims to prevent delays and inconvenience through economic incentives.`})}),`\n`,_jsx(_components.p,{children:`Solvers can exhibit unpredictable behavior that leads to various edge cases, such as refusing to release user funds. While users always retain the ability to manually claim their funds, preventing any permanent loss, this situation creates significant inconvenience.`}),`\n`,_jsx(Heading,{level:`2`,id:`core-mechanism`,children:`Core Mechanism`}),`\n`,_jsxs(_components.p,{children:[`The `,_jsx(_components.strong,{children:`Reward-Slashing Mechanism`}),` incentivizes proper Solver behavior. The process begins when a Solver locks funds for a user. At this point, they must also lock an additional reward amount secured by a timelock. This reward serves as an incentive - if the Solver successfully transfers the user’s assets before the timelock expires, they receive their reward back. However, if they fail to act within the specified timeframe, the reward transfers to whoever executes the function to release the user’s assets.`]}),`\n`,_jsx(Heading,{level:`2`,id:`implementation-details`,children:`Implementation Details`}),`\n`,_jsxs(_components.p,{children:[`When a Solver locks funds for a user, the `,_jsx(_components.strong,{children:`solverLock`}),` function escrows an additional `,_jsx(_components.strong,{children:`reward`}),` amount along with a `,_jsx(_components.strong,{children:`rewardTimelock`}),` parameter. This timelock must be set to a future timestamp and cannot exceed the timelock duration of the associated lock. The reward details are recorded in the `,_jsx(_components.strong,{children:`SolverLocked`}),` event and stored inside the solver’s lock itself — solver locks are keyed by `,_jsx(_components.strong,{children:`(hashlock, solver address)`}),`, so anyone can read the reward for a given swap by calling `,_jsx(_components.strong,{children:`getSolverLock(hashlock, solver)`}),`.`]}),`\n`,_jsx(Warning,{children:_jsxs(_components.p,{children:[`The `,_jsx(_components.code,{children:`rewardTimelock`}),` must always be set to a future timestamp and cannot exceed the HTLC timelock duration.`]})}),`\n`,_jsx(Heading,{level:`2`,id:`redemption-process`,children:`Redemption Process`}),`\n`,_jsxs(_components.p,{children:[`The `,_jsx(_components.strong,{children:`redeemSolver`}),` function routes the reward differently based on timing. The logic is illustrated below using pseudocode:`]}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`6`,language:`solidity`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`solidity`,children:_jsxs(_components.code,{language:`solidity`,numberOfLines:`6`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:`transfer`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(funds, recipient);`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:`if`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` (`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`!`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`rewardTimelock.expired) {`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:` transfer`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(reward, rewardRecipient); `}),_jsx(_components.span,{style:{color:`#6E7781`,\"--shiki-dark\":`#6A9955`},children:`// the Solver acted in time`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`} `}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:`else`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` {`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:` transfer`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(reward, `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:`msg.sender`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`); `}),_jsx(_components.span,{style:{color:`#6E7781`,\"--shiki-dark\":`#6A9955`},children:`// bounty for whoever redeems`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`}`})}),`\n`]})})}),`\n`,_jsx(Heading,{level:`2`,id:`security-considerations`,children:`Security Considerations`}),`\n`,_jsxs(_components.p,{children:[`The `,_jsx(_components.code,{children:`rewardTimelock`}),` serves as a crucial protection against MEV attacks. It provides Solvers adequate time to assess whether they can execute the `,_jsx(_components.strong,{children:`redeemSolver`}),` function within the specified timeframe. Even if Solvers miss their initial window, they can still call the function later to retrieve their reward, provided no one else has already executed it.`]})]})}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":"Reward-Slash","description":"Explains how the system penalizes Solver misbehavior and rewards others for acting to release user funds.","icon":"slash","href":"/protocol-spec/reward-slashing"}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[{"title":"Core Mechanism","slug":"core-mechanism","depth":2,"children":[]},{"title":"Implementation Details","slug":"implementation-details","depth":2,"children":[]},{"title":"Redemption Process","slug":"redemption-process","depth":2,"children":[]},{"title":"Security Considerations","slug":"security-considerations","depth":2,"children":[]}],"codeExamples":{}},"jsLinks":[],"subdomain":"trainprotocol","siteName":"TRAIN Docs","title":"TRAIN Protocol Documentation","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-07-31T10:41:49.585Z","originalFileLocation":"protocol-spec/reward-slashing.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 system penalizes Solver misbehavior and rewards others for acting to release user funds.\">\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-spec/reward-slashing\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://trainprotocol.mintlify.site/_mintlify/api/og/v2?division=Protocol+Spec\u0026amp;title=Reward-Slash\u0026amp;description=Explains+how+the+system+penalizes+Solver+misbehavior+and+rewards+others+for+acting+to+release+user+funds.\u0026amp;theme=ebe014c7787a4815e7ac6f75\u0026amp;signature=9697e03bbb4da23a83b9c6d310180a667b842f4033d5530bc5d5266b345dcf37\">\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.site/_mintlify/api/og/v2?division=Protocol+Spec\u0026amp;title=Reward-Slash\u0026amp;description=Explains+how+the+system+penalizes+Solver+misbehavior+and+rewards+others+for+acting+to+release+user+funds.\u0026amp;theme=ebe014c7787a4815e7ac6f75\u0026amp;signature=9697e03bbb4da23a83b9c6d310180a667b842f4033d5530bc5d5266b345dcf37\">\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-spec/reward-slashing\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/protocol-spec/reward-slashing.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-spec/reward-slashing#webpage\",\"url\":\"https://docs.train.tech/protocol-spec/reward-slashing\",\"name\":\"Reward-Slash\",\"description\":\"Explains how the system penalizes Solver misbehavior and rewards others for acting to release user funds.\",\"dateModified\":\"2026-07-31T10:41:49.585Z\",\"isPartOf\":{\"@id\":\"https://docs.train.tech#website\"},\"breadcrumb\":{\"@id\":\"https://docs.train.tech/protocol-spec/reward-slashing#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://docs.train.tech/protocol-spec/reward-slashing#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Protocol Spec\",\"item\":\"https://docs.train.tech/protocol-spec/model\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Reward-Slash\",\"item\":\"https://docs.train.tech/protocol-spec/reward-slashing\"}]},{\"@type\":[\"Article\",\"TechArticle\"],\"@id\":\"https://docs.train.tech/protocol-spec/reward-slashing#article\",\"headline\":\"Reward-Slash\",\"name\":\"Reward-Slash\",\"description\":\"Explains how the system penalizes Solver misbehavior and rewards others for acting to release user funds.\",\"url\":\"https://docs.train.tech/protocol-spec/reward-slashing\",\"mainEntityOfPage\":{\"@id\":\"https://docs.train.tech/protocol-spec/reward-slashing#webpage\"},\"dateModified\":\"2026-07-31T10:41:49.585Z\",\"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\",\"publisher\":{\"@type\":\"Organization\",\"name\":\"TRAIN Docs\"},\"provider\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","agentPointerHref":"/protocol-spec/reward-slashing.md","siteName":"TRAIN Docs","nav":{"global":null,"tabs":[{"tab":"Documentation","pages":[{"title":"Documentation","href":"/protocol/introduction"}]},{"tab":"Specification","groups":[{"group":"Protocol Spec","pages":[{"title":"Model","icon":"table-tree","href":"/protocol-spec/model"},{"title":"Edge Cases","icon":"light-emergency","href":"/protocol-spec/edge-cases"},{"title":"Core","description":"The core HTLC contract interface of the TRAIN protocol","icon":"engine","href":"/protocol-spec/core"},{"title":"Reward-Slash","icon":"slash","href":"/protocol-spec/reward-slashing"},{"title":"HKDF","description":"Describes HMAC-based Key Derivation Function(HKDF) usage in TRAIN","icon":"hashtag","href":"/protocol-spec/HKDF"},{"group":"Implementation","icon":"chart-network","pages":[{"title":"dApp Implementation","icon":"browser","href":"/protocol-spec/implementation-dApp"},{"title":"Solver Implementation","icon":"network-wired","href":"/protocol-spec/implementation-solver"}]}]}]},{"tab":"Changelog","pages":[{"title":"Changelog","href":"/changelog/overview"}]}]},"basePath":"","title":"TRAIN Protocol Documentation","buildId":"dpl_G2Qd45vZZ7MkBiGF9yYx8ZsbbKXX","deploymentId":"dpl_G2Qd45vZZ7MkBiGF9yYx8ZsbbKXX","dynamics":[],"chunks":[]}