How to add your contracts’ function and event signatures into Boost’s well-known registry
The One-Time Actions docs are under active development and will be subject to changes.
The Boost Protocol, fundamentally, needs to be able to validate that certain actions have occured in order to allow users to claim incentives. So in order to make it simple to create Boosts and validate them, we publish @boostxyz/signatures which is a registry of known function and event signatures, their 32 byte selectors, and AbiEvents or AbiFunctions in an easy to consume JSON format.You can use this library as you’re creating a Boost and building out action steps for use with the Event Actions. You’ll need to specify the function or event’s signature, which allows Boost’s validators to parse the event or function arguments, and compare them against the rest of the actions’ parameters.So in order to simplify applications that would otherwise need to know the hex encoded 4 byte function selector, or 32 byte event selector, and their associated ABI items, you can instead use this library to save on code and complexity.
// you can import both events and functions registriesimport { events, functions } from '@boostxyz/signatures'// ...or individuallyimport events from '@boostxyz/signatures/events'import functions from '@boostxyz/signatures/functions'// both events and functions manifests have the following interface:type eventsOrFunctionsRegistry = { abi: Record<(Hex | string), AbiItem>, selectors: Record<string, Hex> }// where string keys are the signature ie: Transfer(address indexed,address indexed,uint256 indexed)// the event signature we'll be using to compose the actionconst knownSignature = "Transfer(address indexed,address indexed,uint256 indexed)"const selector = events.selectors[knownSignature] // 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efconst abiItem = events.abi[knownSignature] // {name:"Transfer",type:"event",inputs:[{type:"address",indexed:true},{type:"address",indexed:true},{type:"uint256",indexed:true}]}// now you have everything you need to construct your event actionconst filterOnReceiver: ActionStep = { chainid: 8453, signature: selector, signatureType: SignatureType.EVENT, // We're working with an event targetContract: targetContract, // Address of the contract emitting the `Transfer` event // We want to target the 'receiver' property on the Transfer event actionParameter: { filterType: FilterType.EQUAL, // Filter to check for equality fieldType: PrimitiveType.ADDRESS, // The field we're filtering is an address fieldIndex: 1, // We want to target the second argument (index 1) of the event signature filterData: '0xc0ffee', // Filtering based on the recipient's address },};
If you’ve used a function or event signature from @boostxyz/signatures in the creation of your Boost, then you don’t have to do anything else for validation to work.Otherwise, if you’re supplying a custom event signature unknown to @boostxyz/signatures and dealing with a Boost using a custom validator, you’ll need to additionally supply your own AbiEvent to validation methods so event logs can be correctly pulled off transactions.
If using the default Boost validator, you also have the option of submitting your contract events and functions to openchain.xyz or 4byte.directory, but contributing to @boostxyz/signatures is preferred due to its approach as a static manifest as opposed to a third party API.
To integrate your contracts with the Boost protocol:
First, check to see if @boostxyz/signaturesalready supports your signature. We include several popular signatures and you may not need to do anything at all.
The Boost Protocol team will review the submission and promptly release a new version of the @boostxyz/signatures package so you can continue your Boost Protocol integrations.
{"docsConfig":{"theme":"mint","$schema":"https://mintlify.com/docs.json","name":"Boost Docs","description":"Documentation for Boost Time-Based Incentives, One-Time Actions, and API integrations.","colors":{"primary":"#202042","light":"#43e661","dark":"#202042"},"logo":{"light":"https://mintcdn.com/boost-b69a8212/8awWvH29Q4HvirwY/assets/boost-icon-black.svg?fit=max\u0026auto=format\u0026n=8awWvH29Q4HvirwY\u0026q=85\u0026s=37d5ec9610c332ffef9272be581b0c0f","dark":"https://mintcdn.com/boost-b69a8212/8awWvH29Q4HvirwY/assets/boost-icon-white.svg?fit=max\u0026auto=format\u0026n=8awWvH29Q4HvirwY\u0026q=85\u0026s=f1898e4885d18e584ae88147b48ffb9c"},"favicon":"https://mintcdn.com/boost-b69a8212/8awWvH29Q4HvirwY/assets/boost-icon-black.svg?fit=max\u0026auto=format\u0026n=8awWvH29Q4HvirwY\u0026q=85\u0026s=37d5ec9610c332ffef9272be581b0c0f","api":{"openapi":"https://api-v2.boost.xyz/openapi.json"},"navbar":{"links":[{"href":"mailto:[email protected]","label":"Support"}],"primary":{"type":"button","label":"boost.xyz","href":"https://boost.xyz"}},"footer":{"socials":{"x":"https://x.com/boost_xyz","github":"https://github.com/orgs/boostxyz/repositories?type=source\u0026q=visibility%3Apublic+archived%3Afalse"}},"styling":{"latex":false},"navigation":{"pages":[]}},"deployment":{"deploymentMetadataValue":{"subdomain":"boost-b69a8212","hasAudioNarration":false,"actualSubdomain":"boost-b69a8212","customDomains":["docs.boost.xyz"],"gitSource":{"type":"github","owner":"boostxyz","repo":"boost-docs","deployBranch":"main","contentDirectory":"","isPrivate":true,"mountPath":"","label":""},"chroma":{"liveDeploymentHistoryId":"6a21e64333a4518725aab547","collectionId":"c63c9871-afe3-4abb-974b-cddd3d03023f","schemaVersion":"v2"},"entitlements":{"AI_CHAT":{"status":"DISABLED"},"WEB_MCP":{"status":"DISABLED"},"NARRATION":{"status":"DISABLED"}},"buildId":"6a21e64333a4518725aab547:success","clientVersion":"0.0.4044","searchFilterCounts":[{"language":"default","tag":"One-Time Actions","count":64},{"language":"default","tag":"SDK","count":40},{"language":"default","tag":"Reference","count":28},{"language":"default","tag":"One-Time Actions API","count":27},{"language":"default","tag":"Incentives","count":18},{"language":"default","tag":"Boost","count":12},{"language":"default","tag":"Action Creation","count":10},{"language":"default","tag":"Time-Based Incentives","count":9},{"language":"default","tag":"Developers","count":5},{"language":"default","tag":"Core Concepts","count":4}]},"assistantConfig":{},"basePath":"","hasChatPermissions":false,"hasWebMcpPermissions":false,"toggles":[{"name":"kill-isr","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":"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":"byok-sep-25","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":"vite-origin","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-updated-9-15","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":"sso-setup-deadline-banner","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false}],"googleFontsInlined":false},"customCss":[],"page":{"pagePath":"v2/boost-sdk/integrating-your-contracts","slug":"/v2/boost-sdk/integrating-your-contracts","pageMetadata":{"title":"Integrating your Protocol or DApp","description":"How to add your contracts' function and event signatures into Boost's well-known registry","href":"/v2/boost-sdk/integrating-your-contracts"},"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: \"How to add your contracts’ function and event signatures into Boost’s well-known registry\"\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`,code:`code`,li:`li`,p:`p`,pre:`pre`,span:`span`,ul:`ul`,..._provideComponents(),...props.components},{CodeBlock,Heading,Tip,Warning}=_components;if(!CodeBlock)_missingMdxReference(`CodeBlock`,true);if(!Heading)_missingMdxReference(`Heading`,true);if(!Tip)_missingMdxReference(`Tip`,true);if(!Warning)_missingMdxReference(`Warning`,true);return _jsxs(_Fragment,{children:[_jsx(Warning,{children:_jsx(_components.p,{children:`The One-Time Actions docs are under active development and will be subject to changes.`})}),`\n`,_jsxs(_components.p,{children:[`The Boost Protocol, fundamentally, needs to be able to validate that certain actions have occured in order to allow users to claim incentives. So in order to make it simple to create Boosts and validate them, we publish `,_jsx(_components.a,{href:`https://www.npmjs.com/package/@boostxyz/signatures`,children:`@boostxyz/signatures`}),` which is a registry of known function and event signatures, their 32 byte selectors, and `,_jsx(_components.a,{href:`https://viem.sh/docs/glossary/types#abievent`,children:`AbiEvents`}),` or `,_jsx(_components.a,{href:`https://viem.sh/docs/glossary/types#abifunction`,children:`AbiFunctions`}),` in an easy to consume JSON format.`]}),`\n`,_jsxs(_components.p,{children:[`You can use this library as you’re creating a Boost and building out `,_jsx(_components.a,{href:`https://sdk.boost.xyz/interfaces/ActionStep.html`,children:`action steps`}),` for use with the `,_jsx(_components.a,{href:`https://sdk.boost.xyz/classes/EventAction.html`,children:`Event Actions`}),`. You’ll need to specify the function or event’s `,_jsx(_components.a,{href:`https://sdk.boost.xyz/interfaces/ActionStep.html#signature`,children:`signature`}),`, which allows Boost’s validators to parse the event or function arguments, and compare them against the rest of the actions’ parameters.`]}),`\n`,_jsx(_components.p,{children:`So in order to simplify applications that would otherwise need to know the hex encoded 4 byte function selector, or 32 byte event selector, and their associated ABI items, you can instead use this library to save on code and complexity.`}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`29`,language:`typescript`,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:`typescript`,children:_jsxs(_components.code,{language:`typescript`,numberOfLines:`29`,children:[_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#6E7781`,\"--shiki-dark\":`#6A9955`},children:`// you can import both events and functions registries`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:`import`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` { `}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`events`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`functions`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` } `}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:`from`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` '@boostxyz/signatures'`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#6E7781`,\"--shiki-dark\":`#6A9955`},children:`// ...or individually`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:`import`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` events`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:` from`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` '@boostxyz/signatures/events'`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:`import`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` functions`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:` from`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` '@boostxyz/signatures/functions'`})]}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#6E7781`,\"--shiki-dark\":`#6A9955`},children:`// both events and functions manifests have the following interface:`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`type`}),_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#4EC9B0`},children:` eventsOrFunctionsRegistry`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` =`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` { `}),_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#9CDCFE`},children:`abi`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`:`}),_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#4EC9B0`},children:` Record`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`\u003c(`}),_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#4EC9B0`},children:`Hex`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` |`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#4EC9B0`},children:` string`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`), `}),_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#4EC9B0`},children:`AbiItem`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`>, `}),_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#9CDCFE`},children:`selectors`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`:`}),_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#4EC9B0`},children:` Record`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`\u003c`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#4EC9B0`},children:`string`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#4EC9B0`},children:`Hex`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`> }`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#6E7781`,\"--shiki-dark\":`#6A9955`},children:`// where string keys are the signature ie: Transfer(address indexed,address indexed,uint256 indexed)`})}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#6E7781`,\"--shiki-dark\":`#6A9955`},children:`// the event signature we'll be using to compose the action`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`const`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#4FC1FF`},children:` knownSignature`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` =`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"Transfer(address indexed,address indexed,uint256 indexed)\"`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`const`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#4FC1FF`},children:` selector`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` =`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` events`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`selectors`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`[`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`knownSignature`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`] `}),_jsx(_components.span,{style:{color:`#6E7781`,\"--shiki-dark\":`#6A9955`},children:`// 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`const`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#4FC1FF`},children:` abiItem`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` =`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` events`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`abi`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`[`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`knownSignature`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`] `}),_jsx(_components.span,{style:{color:`#6E7781`,\"--shiki-dark\":`#6A9955`},children:`// {name:\"Transfer\",type:\"event\",inputs:[{type:\"address\",indexed:true},{type:\"address\",indexed:true},{type:\"uint256\",indexed:true}]}`})]}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#6E7781`,\"--shiki-dark\":`#6A9955`},children:`// now you have everything you need to construct your event action`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`const`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#4FC1FF`},children:` filterOnReceiver`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`:`}),_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#4EC9B0`},children:` ActionStep`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` =`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` {`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` chainid:`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#B5CEA8`},children:` 8453`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` signature:`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` selector`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` signatureType:`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` SignatureType`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#4FC1FF`},children:`EVENT`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#6E7781`,\"--shiki-dark\":`#6A9955`},children:`// We're working with an event`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` targetContract:`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` targetContract`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#6E7781`,\"--shiki-dark\":`#6A9955`},children:\"// Address of the contract emitting the `Transfer` event\"})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#6E7781`,\"--shiki-dark\":`#6A9955`},children:` // We want to target the 'receiver' property on the Transfer event`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` actionParameter:`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` {`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` filterType:`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` FilterType`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#4FC1FF`},children:`EQUAL`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#6E7781`,\"--shiki-dark\":`#6A9955`},children:`// Filter to check for equality`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` fieldType:`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` PrimitiveType`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#4FC1FF`},children:`ADDRESS`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#6E7781`,\"--shiki-dark\":`#6A9955`},children:`// The field we're filtering is an address`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` fieldIndex:`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#B5CEA8`},children:` 1`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#6E7781`,\"--shiki-dark\":`#6A9955`},children:`// We want to target the second argument (index 1) of the event signature`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` filterData:`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` '0xc0ffee'`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#6E7781`,\"--shiki-dark\":`#6A9955`},children:`// Filtering based on the recipient's address`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` },`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`};`})}),`\n`]})})}),`\n`,_jsxs(_components.p,{children:[`If you’ve used a function or event signature from `,_jsx(_components.code,{children:`@boostxyz/signatures`}),` in the creation of your Boost, then you don’t have to do anything else for validation to work.`]}),`\n`,_jsxs(_components.p,{children:[`Otherwise, if you’re supplying a custom event signature unknown to `,_jsx(_components.code,{children:`@boostxyz/signatures`}),` and dealing with a Boost using a custom validator, you’ll need to additionally supply your own `,_jsx(_components.code,{children:`AbiEvent`}),` to validation methods so event logs can be correctly pulled off transactions.`]}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`14`,language:`typescript`,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:`typescript`,children:_jsxs(_components.code,{language:`typescript`,numberOfLines:`14`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:`await`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` boostCore`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:`validateActionSteps`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`({`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` ...`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` knownEvents:`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` {`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` '0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef'`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`:`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` {`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` name:`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"Transfer\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` type:`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"event\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` inputs:`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` [`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` { `}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`type:`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"address\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`indexed:`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` true`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` },`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` { `}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`type:`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"address\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`indexed:`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` true`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` },`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` { `}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`type:`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"uint256\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`indexed:`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` true`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` }`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` ]`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` }`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` }`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`})`})}),`\n`]})})}),`\n`,_jsxs(_components.p,{children:[`For more detailed examples, see `,_jsx(_components.a,{href:`https://github.com/boostxyz/boost-protocol/tree/main/examples`,children:`sample use cases`})]}),`\n`,_jsx(Heading,{level:`2`,id:`contributing-new-signatures`,children:`Contributing new signatures`}),`\n`,_jsx(Tip,{children:_jsxs(_components.p,{children:[`If using the default Boost validator, you also have the option of submitting your contract events and functions to `,_jsx(_components.a,{href:`https://openchain.xyz/signatures/import`,children:`openchain.xyz`}),` or `,_jsx(_components.a,{href:`https://www.4byte.directory/submit/`,children:`4byte.directory`}),`, but contributing to `,_jsx(_components.code,{children:`@boostxyz/signatures`}),` is preferred due to its approach as a static manifest as opposed to a third party API.`]})}),`\n`,_jsx(_components.p,{children:`To integrate your contracts with the Boost protocol:`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[`First, check to see if `,_jsx(_components.code,{children:`@boostxyz/signatures`}),` `,_jsx(_components.a,{href:`https://github.com/boostxyz/boost-protocol/tree/main/packages/signatures/manifests`,children:`already supports your signature`}),`. We include several popular signatures and you may not need to do anything at all.`]}),`\n`,_jsx(_components.li,{children:_jsxs(_components.a,{href:`https://github.com/boostxyz/boost-protocol/fork`,children:[`Fork the `,_jsx(_components.code,{children:`boostxyz/boost-protocol`}),` repository`]})}),`\n`,_jsxs(_components.li,{children:[`Add your function or event signature to the `,_jsx(_components.a,{href:`https://github.com/boostxyz/boost-protocol/tree/main/packages/signatures/manifests`,children:`correct manifest JSON file`}),` following the existing formatting and conventions.`,`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[`Entries starting with `,_jsx(_components.code,{children:`//`}),` are treated as comments so you can distinguish a block of related signatures`]}),`\n`]}),`\n`]}),`\n`,_jsx(_components.li,{children:`Commit your modified manifest file`}),`\n`,_jsx(_components.li,{children:_jsx(_components.a,{href:`https://docs.github.com/en/pull-requests/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/creating-a-pull-request-from-a-fork`,children:`Create a pull request`})}),`\n`]}),`\n`,_jsxs(_components.p,{children:[`The Boost Protocol team will review the submission and promptly release a new version of the `,_jsx(_components.code,{children:`@boostxyz/signatures`}),` package so you can continue your Boost Protocol integrations.`]})]})}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":"Integrating your Protocol or DApp","description":"How to add your contracts' function and event signatures into Boost's well-known registry","href":"/v2/boost-sdk/integrating-your-contracts"}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[{"title":"Contributing new signatures","slug":"contributing-new-signatures","depth":2,"children":[]}],"codeExamples":{}},"jsLinks":[],"subdomain":"boost-b69a8212","siteName":"Boost Docs","title":"Integrating your Protocol or DApp - Boost Docs","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-04-29T17:00:01.844Z","originalFileLocation":"v2/boost-sdk/integrating-your-contracts.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=\"system\"}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=\"How to add your contracts\u0026#x27; function and event signatures into Boost\u0026#x27;s well-known registry\">\u003cmeta data-mint-head name=\"application-name\" content=\"Boost 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/boost-b69a8212/_qFsTjBsJi7OTb98/_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/boost-b69a8212/_qFsTjBsJi7OTb98/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/boost-b69a8212/_qFsTjBsJi7OTb98/_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/boost-b69a8212/_qFsTjBsJi7OTb98/_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/boost-b69a8212/_qFsTjBsJi7OTb98/_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/boost-b69a8212/_qFsTjBsJi7OTb98/_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/boost-b69a8212/_qFsTjBsJi7OTb98/_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/boost-b69a8212/_qFsTjBsJi7OTb98/_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/boost-b69a8212/_qFsTjBsJi7OTb98/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"Integrating your Protocol or DApp - Boost Docs\">\u003cmeta data-mint-head property=\"og:description\" content=\"How to add your contracts\u0026#x27; function and event signatures into Boost\u0026#x27;s well-known registry\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"Boost Docs\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://docs.boost.xyz/v2/boost-sdk/integrating-your-contracts\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://boost-b69a8212.mintlify.app/_mintlify/api/og/v2?division=SDK\u0026amp;title=Integrating+your+Protocol+or+DApp\u0026amp;description=How+to+add+your+contracts%27+function+and+event+signatures+into+Boost%27s+well-known+registry\u0026amp;theme=335bc0a7a6d43dc58130bb5e\u0026amp;signature=f8d16ad80fcfeadbc344401571b0afc16245bc37e520a7ef95f4e6264f29efb0\">\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=\"Integrating your Protocol or DApp - Boost Docs\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"How to add your contracts\u0026#x27; function and event signatures into Boost\u0026#x27;s well-known registry\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://boost-b69a8212.mintlify.app/_mintlify/api/og/v2?division=SDK\u0026amp;title=Integrating+your+Protocol+or+DApp\u0026amp;description=How+to+add+your+contracts%27+function+and+event+signatures+into+Boost%27s+well-known+registry\u0026amp;theme=335bc0a7a6d43dc58130bb5e\u0026amp;signature=f8d16ad80fcfeadbc344401571b0afc16245bc37e520a7ef95f4e6264f29efb0\">\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/boost-b69a8212/_qFsTjBsJi7OTb98/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"Boost Docs\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#202042\">\u003clink data-mint-head rel=\"canonical\" href=\"https://docs.boost.xyz/v2/boost-sdk/integrating-your-contracts\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/v2/boost-sdk/integrating-your-contracts.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://docs.boost.xyz/#organization\",\"name\":\"Boost Docs\",\"url\":\"https://docs.boost.xyz\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/boost-b69a8212/8awWvH29Q4HvirwY/assets/boost-icon-black.svg?fit=max\u0026auto=format\u0026n=8awWvH29Q4HvirwY\u0026q=85\u0026s=37d5ec9610c332ffef9272be581b0c0f\"}},{\"@type\":\"WebSite\",\"@id\":\"https://docs.boost.xyz#website\",\"name\":\"Boost Docs\",\"url\":\"https://docs.boost.xyz\",\"publisher\":{\"@id\":\"https://docs.boost.xyz/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://docs.boost.xyz/v2/boost-sdk/integrating-your-contracts#webpage\",\"url\":\"https://docs.boost.xyz/v2/boost-sdk/integrating-your-contracts\",\"name\":\"Integrating your Protocol or DApp\",\"description\":\"How to add your contracts' function and event signatures into Boost's well-known registry\",\"dateModified\":\"2026-04-29T17:00:01.844Z\",\"isPartOf\":{\"@id\":\"https://docs.boost.xyz#website\"},\"breadcrumb\":{\"@id\":\"https://docs.boost.xyz/v2/boost-sdk/integrating-your-contracts#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://docs.boost.xyz/v2/boost-sdk/integrating-your-contracts#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"SDK\",\"item\":\"https://docs.boost.xyz/v2/boost-sdk/overview\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Integrating your Protocol or DApp\",\"item\":\"https://docs.boost.xyz/v2/boost-sdk/integrating-your-contracts\"}]},{\"@type\":[\"Article\",\"TechArticle\"],\"@id\":\"https://docs.boost.xyz/v2/boost-sdk/integrating-your-contracts#article\",\"headline\":\"Integrating your Protocol or DApp\",\"name\":\"Integrating your Protocol or DApp\",\"description\":\"How to add your contracts' function and event signatures into Boost's well-known registry\",\"url\":\"https://docs.boost.xyz/v2/boost-sdk/integrating-your-contracts\",\"mainEntityOfPage\":{\"@id\":\"https://docs.boost.xyz/v2/boost-sdk/integrating-your-contracts#webpage\"},\"dateModified\":\"2026-04-29T17:00:01.844Z\",\"publisher\":{\"@id\":\"https://docs.boost.xyz/#organization\"},\"isPartOf\":{\"@id\":\"https://docs.boost.xyz#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"Boost Docs\",\"creator\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","siteName":"Boost Docs","nav":{"global":null,"tabs":[{"tab":"Boost","pages":[{"title":"Boost","href":"/platform/overview"}]},{"tab":"Time-Based Incentives","pages":[{"title":"Time-Based Incentives","href":"/tbi/introduction"}]},{"tab":"One-Time Actions","groups":[{"group":"Overview","pages":[{"title":"One-Time Actions","href":"/v2/documentation/overview/introduction"}]},{"group":"Getting Started","pages":[{"title":"Setting up Accounts","href":"/v2/documentation/getting-started/setting-up-accounts"},{"title":"Setting up an Action","href":"/v2/documentation/getting-started/setting-up-an-action"},{"title":"Deploying a One-Time Action","href":"/v2/documentation/getting-started/deploying-a-boost"},{"title":"Managing One-Time Actions","href":"/v2/documentation/getting-started/managing-boosts"}]},{"group":"Action Creation","pages":[{"title":"Introduction to Boost Action Creation","href":"/v2/documentation/action-creation/introduction"},{"title":"Getting Started with Etherscan","href":"/v2/documentation/action-creation/getting-started"},{"title":"Understanding Etherscan Data","href":"/v2/documentation/action-creation/understanding-etherscan-data"},{"title":"Understanding the Action Section","href":"/v2/documentation/action-creation/action-section"},{"title":"Identifying Claimant Information","href":"/v2/documentation/action-creation/claimant-information"},{"title":"Working with Parameter Filters","href":"/v2/documentation/action-creation/parameter-filters"},{"title":"Analyzing the Logs Section","href":"/v2/documentation/action-creation/logs-section"},{"title":"Advanced Techniques and Best Practices","href":"/v2/documentation/action-creation/advanced-techniques"},{"title":null,"href":"/v2/documentation/action-creation/effective-actions"},{"title":null,"href":"/v2/documentation/action-creation/practical-tips"}]},{"group":"Developers","pages":[{"title":"One-Time Actions Architecture","href":"/v2/documentation/architecture/core-boost-v2"},{"title":"Deployed Contracts","mode":"wide","href":"/v2/documentation/contract-deployments/contracts"},{"title":"Boost SDK","url":"/v2/boost-sdk/overview","icon":"code","href":"/v2/documentation/links/boost-sdk"},{"title":"Boost API","url":"/v2/boost-api/fetch-boosts","icon":"code","href":"/v2/documentation/links/boost-api"},{"title":"Boost API Reference","url":"v2/api-reference/openapi-json","icon":"code","href":"/v2/documentation/links/boost-api-reference"}]},{"group":"SDK","pages":[{"title":"Overview","href":"/v2/boost-sdk/overview"},{"title":"Installation","href":"/v2/boost-sdk/installation"},{"title":"Quick Start","href":"/v2/boost-sdk/quick-start"},{"title":"Usage With React","href":"/v2/boost-sdk/usage-with-react"},{"title":"Working with Events","description":"Learn how to get logs and listen for new events emitted by the protocol","href":"/v2/boost-sdk/working-with-events"},{"title":"Integrating your Protocol or DApp","href":"/v2/boost-sdk/integrating-your-contracts"},{"title":"Asset Retrieval","description":"Learn how to retrieve assets from a budget or incentive","href":"/v2/boost-sdk/asset-retrieval"},{"title":"Protocol Fees","href":"/v2/boost-sdk/protocol-fees"},{"group":"Examples","pages":[{"title":"Boost an NFT Mint on Zora","href":"/v2/boost-sdk/examples/zora-mint"},{"title":"Boost a Vote on Agora","href":"/v2/boost-sdk/examples/agora-vote"},{"title":"Claim Rewards from a Boost","href":"/v2/boost-sdk/examples/claim-example"},{"title":"Deploy a Boost","href":"/v2/boost-sdk/examples/deploy-example"}]},{"group":"Boost Registry","pages":[{"title":"Overview","href":"/v2/boost-sdk/boost-registry/overview"},{"title":"Initializing Components","href":"/v2/boost-sdk/boost-registry/initializing-components"},{"title":"Cloned Components","href":"/v2/boost-sdk/boost-registry/clones"}]},{"group":"Boost Core","pages":[{"title":"Overview","href":"/v2/boost-sdk/boost-core/overview"},{"title":"Get Boosts","href":"/v2/boost-sdk/boost-core/get-boosts"},{"title":"Claiming Incentives","href":"/v2/boost-sdk/boost-core/claim-incentive"}]},{"group":"Managed Budget","pages":[{"title":"Overview","href":"/v2/boost-sdk/budgets/managed/overview"},{"title":"Authorization","href":"/v2/boost-sdk/budgets/managed/authorization"},{"title":"Funding","href":"/v2/boost-sdk/budgets/managed/funding"},{"title":"Retrieval","href":"/v2/boost-sdk/budgets/managed/retrieval"}]},{"group":"Incentives","pages":[{"group":"ERC20","pages":[{"title":"Overview","href":"/v2/boost-sdk/incentives/erc20/overview"},{"title":"Rewards","href":"/v2/boost-sdk/incentives/erc20/rewards"},{"title":"Claims","href":"/v2/boost-sdk/incentives/erc20/claims"}]},{"group":"ERC20 Pegged","pages":[{"title":"Overview","href":"/v2/boost-sdk/incentives/erc20-pegged/overview"},{"title":"Rewards","href":"/v2/boost-sdk/incentives/erc20-pegged/rewards"},{"title":"Claims","href":"/v2/boost-sdk/incentives/erc20-pegged/claims"}]},{"group":"ERC20 Variable","pages":[{"title":"Overview","href":"/v2/boost-sdk/incentives/erc20-variable/overview"},{"title":"Rewards","href":"/v2/boost-sdk/incentives/erc20-variable/rewards"},{"title":"Claims","href":"/v2/boost-sdk/incentives/erc20-variable/claims"}]},{"group":"ERC20 Variable Criteria","pages":[{"title":"Overview","href":"/v2/boost-sdk/incentives/erc20-variable-criteria/overview"},{"title":"Rewards","href":"/v2/boost-sdk/incentives/erc20-variable-criteria/rewards"},{"title":"Claims","href":"/v2/boost-sdk/incentives/erc20-variable-criteria/claims"}]},{"group":"ERC20 Pegged Variable Criteria","pages":[{"title":"Overview","href":"/v2/boost-sdk/incentives/erc20-pegged-variable-criteria/overview"},{"title":"Rewards","href":"/v2/boost-sdk/incentives/erc20-pegged-variable-criteria/rewards"},{"title":"Claims","href":"/v2/boost-sdk/incentives/erc20-pegged-variable-criteria/claims"}]},{"group":"Gradual Dutch Auction","pages":[{"title":"Overview","href":"/v2/boost-sdk/incentives/cgda/overview"},{"title":"Rewards","href":"/v2/boost-sdk/incentives/cgda/rewards"},{"title":"Claims","href":"/v2/boost-sdk/incentives/cgda/claims"}]}]}]},{"group":"API Guides","pages":[{"group":"Campaigns","pages":[{"title":"Fetch Boosts","href":"/v2/boost-api/fetch-boosts"},{"title":"Boost Details","href":"/v2/boost-api/boost-details"},{"title":"Boost Activity","href":"/v2/boost-api/boost-activity"}]},{"group":"Claiming","pages":[{"title":"Get Claim Signature","href":"/v2/boost-api/get-signature"}]}]}]},{"tab":"Reference","pages":[{"title":"Reference","href":"/reference/tbi-api"}]}]},"basePath":"","title":"Integrating your Protocol or DApp - Boost Docs","buildId":"dpl_DeHjVRGfFnhYQwHnfC2pjeXXv8h9","deploymentId":"dpl_DeHjVRGfFnhYQwHnfC2pjeXXv8h9","dynamics":[],"chunks":[]}