The Cosmos SDK offers a full fledged simulation framework to fuzz test every message defined by a module.
The Cosmos SDK offers a full fledged simulation framework to fuzz test every
message defined by a module.On the Cosmos SDK, this functionality is provided by SimApp, which is a
Baseapp application that is used for running the simulation module.
This module defines all the simulation logic as well as the operations for
randomized parameters like accounts, balances etc.
The blockchain simulator tests how the blockchain application would behave under
real life circumstances by generating and sending randomized messages.
The goal of this is to detect and debug failures that could halt a live chain,
by providing logs and statistics about the operations run by the simulator as
well as exporting the latest application state when a failure was found.Its main difference with integration testing is that the simulator app allows
you to pass parameters to customize the chain that’s being simulated.
This comes in handy when trying to reproduce bugs that were generated in the
provided operations (randomized or not).
The simulation app has different commands, each of which tests a different
failure type:
AppImportExport: The simulator exports the initial app state and then it
creates a new app with the exported genesis.json as an input, checking for
inconsistencies between the stores.
AppSimulationAfterImport: Queues two simulations together. The first one provides the app state (i.e genesis) to the second. Useful to test software upgrades or hard-forks from a live chain.
AppStateDeterminism: Checks that all the nodes return the same values, in the same order.
BenchmarkInvariants: Analysis of the performance of running all modules’ invariants (i.e sequentially runs a benchmark test). An invariant checks for
differences between the values that are on the store and the passive tracker. Eg: total coins held by accounts vs total supply tracker.
FullAppSimulation: General simulation mode. Runs the chain and the specified operations for a given number of blocks. Tests that there’re no panics on the simulation. It does also run invariant checks on every Period but they are not benchmarked.
Each simulation must receive a set of inputs (i.e flags) such as the number of
blocks that the simulation is run, seed, block size, etc.
Check the full list of flags here.
In addition to the various inputs and commands, the simulator runs in three modes:
Completely random where the initial state, module parameters and simulation
parameters are pseudo-randomly generated.
From a genesis.json file where the initial state and the module parameters are defined.
This mode is helpful for running simulations on a known state such as a live network export where a new (mostly likely breaking) version of the application needs to be tested.
From a params.json file where the initial state is pseudo-randomly generated but the module and simulation parameters can be provided manually.
This allows for a more controlled and deterministic simulation setup while allowing the state space to still be pseudo-randomly simulated.
The list of available parameters are listed here.
These modes are not mutually exclusive. So you can for example run a randomly
generated genesis state (1) with manually generated simulation params (3).
{"docsConfig":{"theme":"mint","$schema":"https://mintlify.com/docs.json","name":"Cosmos Docs","description":"Developer documentation for the Cosmos stack. Build secure, reliable, and high-performance blockchains.","colors":{"primary":"#000000","light":"#cccccc","dark":"#0E0E0E"},"logo":{"light":"https://mintcdn.com/cosmos-docs/QQRcm34voxlHZJJD/assets/brand/cosmos-wordmark-dark.svg?fit=max\u0026auto=format\u0026n=QQRcm34voxlHZJJD\u0026q=85\u0026s=cd248dfba0e2e05e30786f2bb3f64fe9","dark":"https://mintcdn.com/cosmos-docs/QQRcm34voxlHZJJD/assets/brand/cosmos-wordmark.svg?fit=max\u0026auto=format\u0026n=QQRcm34voxlHZJJD\u0026q=85\u0026s=bec1c5143607bae16714a74214e59936"},"favicon":{"light":"https://mintcdn.com/cosmos-docs/QQRcm34voxlHZJJD/assets/brand/cosmos.svg?fit=max\u0026auto=format\u0026n=QQRcm34voxlHZJJD\u0026q=85\u0026s=894cf1378c2e13292b5729f71ffcdfa3","dark":"https://mintcdn.com/cosmos-docs/QQRcm34voxlHZJJD/assets/brand/cosmos-dark.svg?fit=max\u0026auto=format\u0026n=QQRcm34voxlHZJJD\u0026q=85\u0026s=84a9ac891f12ecddec2f5bbc50774eb1"},"appearance":{"default":"system","strict":false},"background":{"color":{"light":"#F1F1F1","dark":"#000000"}},"navbar":{"links":[{"href":"/sdk/latest/learn","label":"Cosmos SDK"},{"href":"/evm/latest/documentation/overview","label":"Cosmos EVM"},{"href":"https://ibcprotocol.dev/docs","label":"IBC"},{"href":"/cometbft/latest/docs/README","label":"CometBFT"}]},"footer":{"socials":{"twitter":"https://twitter.com/cosmos","github":"https://github.com/cosmos","discord":"https://discord.gg/interchain","website":"https://cosmos.network"},"links":[{"header":"Technology","items":[{"label":"Cosmos SDK","href":"/sdk/latest/learn"},{"label":"Cosmos EVM","href":"/evm"},{"label":"IBC","href":"https://ibcprotocol.dev/docs"},{"label":"CometBFT","href":"/cometbft"},{"label":"Cosmos Github","href":"https://github.com/cosmos"},{"label":"Cosmos HackerOne","href":"https://hackerone.com/cosmos"},{"label":"Skip Go","href":"/skip-go/general/getting-started"},{"label":"Cosmos Hub","href":"/hub/latest"}]},{"header":"Get In Touch","items":[{"label":"Developer Discord","href":"https://discord.gg/interchain"},{"label":"Community Telegram","href":"https://t.me/CosmosOG"},{"label":"Contact Us","href":"https://www.cosmoslabs.io/contact"},{"label":"Cosmos Website","href":"https://cosmos.network/"}]},{"header":"Legal","items":[{"label":"Privacy","href":"https://cosmos.network/privacy-policy"},{"label":"Trademark","href":"https://cosmos.network/trademark"},{"label":"Security Policy","href":"/sdk/latest/security/security-policy"},{"label":"Security Audits","href":"/sdk/latest/security/audits"},{"label":"Bug Bounty Program","href":"/sdk/latest/security/bug-bounty"}]}]},"search":{"prompt":"Search..."},"seo":{"metatags":{"description":"Developer documentation for the Cosmos stack. Build secure, reliable, and high-performance blockchains.","og:description":"Developer documentation for the Cosmos stack. Build secure, reliable, and high-performance blockchains.","twitter:description":"Developer documentation for the Cosmos stack. Build secure, reliable, and high-performance blockchains."}},"icons":{"library":"lucide"},"styling":{"codeblocks":{"theme":{"light":"github-light-high-contrast","dark":"github-dark-high-contrast"}},"latex":true},"integrations":{"gtm":{"tagId":"GTM-5XMZ695Z"}},"errors":{"404":{"redirect":false,"title":"Page not found","description":"The page you are looking for has either moved or doesn't exist anymore.\n\nPlease create an issue on the [Cosmos Docs GitHub repository](https://github.com/cosmos/docs/issues/new) to report the problem and it will be fixed as soon as possible."}},"contextual":{"options":["copy","view","chatgpt","claude","perplexity","mcp","cursor","vscode"],"display":"header"},"interaction":{"drilldown":false},"navigation":{"pages":[]}},"deployment":{"deploymentMetadataValue":{"subdomain":"cosmos-docs","hasAudioNarration":false,"actualSubdomain":"cosmos-docs","customDomains":["docs.cosmos.network","cosmos.network"],"gitSource":{"type":"github","owner":"cosmos","repo":"docs","deployBranch":"main","contentDirectory":"","isPrivate":true,"mountPath":"","label":""},"chroma":{"liveDeploymentHistoryId":"6ae4d7a84af72709c3cb8597","collectionId":"935d4ee8-69ed-48ea-88d5-81d6941678d2","schemaVersion":"v3","latestBuiltDeploymentHistoryId":"6ae4d7a84af72709c3cb8597"},"feedback":{"thumbs":true,"edits":true,"issues":true},"entitlements":{"AI_CHAT":{"status":"ENABLED"},"REMOVE_BRANDING":{"status":"ENABLED"},"CONTEXTUAL_FEEDBACK":{"status":"DISABLED"},"CODE_SNIPPET_FEEDBACK":{"status":"DISABLED"},"WEB_MCP":{"status":"ENABLED"},"NARRATION":{"status":"ENABLED"}},"buildId":"6ae4d7a84af72709c3cb8597","clientVersion":"0.0.4043","searchFilterCounts":[{"language":"default","tag":"Cosmos SDK","count":629},{"language":"default","tag":"API Reference","count":401},{"language":"default","tag":"CometBFT","count":236},{"language":"default","tag":"REST (gRPC Gateway)","count":216},{"language":"default","tag":"Documentation","count":154},{"language":"default","tag":"RPC Methods","count":120},{"language":"default","tag":"Cosmos Hub","count":106},{"language":"default","tag":"Info","count":91},{"language":"default","tag":"Architecture Reference","count":70},{"language":"default","tag":"Learn","count":69}]},"assistantConfig":{},"basePath":"","hasChatPermissions":true,"hasWebMcpPermissions":true,"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}],"googleFontsInlined":false},"customCss":[{"filePath":"style.css","content":"/* cyrillic-ext */\n@font-face {\n font-family: 'Fira Code';\n font-style: normal;\n font-weight: 400;\n font-display: swap;\n src: url(/_mintlify/assets/fonts/google/s/firacode/v27/uU9NCBsR6Z2vfE9aq3bh0NSDulI.woff2) format('woff2');\n unicode-range: U+0460-052F, U+1C80-1C8A, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F;\n}\n/* cyrillic */\n@font-face {\n font-family: 'Fira Code';\n font-style: normal;\n font-weight: 400;\n font-display: swap;\n src: url(/_mintlify/assets/fonts/google/s/firacode/v27/uU9NCBsR6Z2vfE9aq3bh2dSDulI.woff2) format('woff2');\n unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;\n}\n/* greek-ext */\n@font-face {\n font-family: 'Fira Code';\n font-style: normal;\n font-weight: 400;\n font-display: swap;\n src: url(/_mintlify/assets/fonts/google/s/firacode/v27/uU9NCBsR6Z2vfE9aq3bh0dSDulI.woff2) format('woff2');\n unicode-range: U+1F00-1FFF;\n}\n/* greek */\n@font-face {\n font-family: 'Fira Code';\n font-style: normal;\n font-weight: 400;\n font-display: swap;\n src: url(/_mintlify/assets/fonts/google/s/firacode/v27/uU9NCBsR6Z2vfE9aq3bh3tSDulI.woff2) format('woff2');\n unicode-range: U+0370-0377, U+037A-037F, U+0384-038A, U+038C, U+038E-03A1, U+03A3-03FF;\n}\n/* symbols2 */\n@font-face {\n font-family: 'Fira Code';\n font-style: normal;\n font-weight: 400;\n font-display: swap;\n src: url(/_mintlify/assets/fonts/google/s/firacode/v27/uU9NCBsR6Z2vfE9aq3bhZ_Wmh2uX.woff2) format('woff2');\n unicode-range: U+2000-2001, U+2004-2008, U+200A, U+23B8-23BD, U+2500-259F;\n}\n/* latin-ext */\n@font-face {\n font-family: 'Fira Code';\n font-style: normal;\n font-weight: 400;\n font-display: swap;\n src: url(/_mintlify/assets/fonts/google/s/firacode/v27/uU9NCBsR6Z2vfE9aq3bh09SDulI.woff2) format('woff2');\n unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C4, U+2113, U+2C60-2C7F, U+A720-A7FF;\n}\n/* latin */\n@font-face {\n font-family: 'Fira Code';\n font-style: normal;\n font-weight: 400;\n font-display: swap;\n src: url(/_mintlify/assets/fonts/google/s/firacode/v27/uU9NCBsR6Z2vfE9aq3bh3dSD.woff2) format('woff2');\n unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;\n}\n/* cyrillic-ext */\n@font-face {\n font-family: 'Fira Code';\n font-style: normal;\n font-weight: 500;\n font-display: swap;\n src: url(/_mintlify/assets/fonts/google/s/firacode/v27/uU9NCBsR6Z2vfE9aq3bh0NSDulI.woff2) format('woff2');\n unicode-range: U+0460-052F, U+1C80-1C8A, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F;\n}\n/* cyrillic */\n@font-face {\n font-family: 'Fira Code';\n font-style: normal;\n font-weight: 500;\n font-display: swap;\n src: url(/_mintlify/assets/fonts/google/s/firacode/v27/uU9NCBsR6Z2vfE9aq3bh2dSDulI.woff2) format('woff2');\n unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;\n}\n/* greek-ext */\n@font-face {\n font-family: 'Fira Code';\n font-style: normal;\n font-weight: 500;\n font-display: swap;\n src: url(/_mintlify/assets/fonts/google/s/firacode/v27/uU9NCBsR6Z2vfE9aq3bh0dSDulI.woff2) format('woff2');\n unicode-range: U+1F00-1FFF;\n}\n/* greek */\n@font-face {\n font-family: 'Fira Code';\n font-style: normal;\n font-weight: 500;\n font-display: swap;\n src: url(/_mintlify/assets/fonts/google/s/firacode/v27/uU9NCBsR6Z2vfE9aq3bh3tSDulI.woff2) format('woff2');\n unicode-range: U+0370-0377, U+037A-037F, U+0384-038A, U+038C, U+038E-03A1, U+03A3-03FF;\n}\n/* symbols2 */\n@font-face {\n font-family: 'Fira Code';\n font-style: normal;\n font-weight: 500;\n font-display: swap;\n src: url(/_mintlify/assets/fonts/google/s/firacode/v27/uU9NCBsR6Z2vfE9aq3bhZ_Wmh2uX.woff2) format('woff2');\n unicode-range: U+2000-2001, U+2004-2008, U+200A, U+23B8-23BD, U+2500-259F;\n}\n/* latin-ext */\n@font-face {\n font-family: 'Fira Code';\n font-style: normal;\n font-weight: 500;\n font-display: swap;\n src: url(/_mintlify/assets/fonts/google/s/firacode/v27/uU9NCBsR6Z2vfE9aq3bh09SDulI.woff2) format('woff2');\n unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C4, U+2113, U+2C60-2C7F, U+A720-A7FF;\n}\n/* latin */\n@font-face {\n font-family: 'Fira Code';\n font-style: normal;\n font-weight: 500;\n font-display: swap;\n src: url(/_mintlify/assets/fonts/google/s/firacode/v27/uU9NCBsR6Z2vfE9aq3bh3dSD.woff2) format('woff2');\n unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;\n}\n:root{--background-light:255 255 255}.bg-primary\\/10{background-color:#40b3ff}.dark .bg-primary\\/10{background-color:#4251fa}.bg-primary\\/10 .text-primary,.bg-primary\\/10.text-primary{color:#fff}.dark\\:bg-primary-light\\/10:is(.dark *){background-color:#4251fa}@font-face{font-family:'The Future';src:url(/assets/fonts/the-future-regular.woff2) format('woff2');font-weight:400;font-style:normal;font-display:swap}@font-face{font-family:'The Future';src:url(/assets/fonts/the-future-medium.woff2) format('woff2');font-weight:500;font-style:normal;font-display:swap}@font-face{font-family:'The Future';src:url(/assets/fonts/the-future-bold.woff2) format('woff2');font-weight:700;font-style:normal;font-display:swap}@font-face{font-family:'The Future';src:url(/assets/fonts/the-future-light.woff2) format('woff2');font-weight:300;font-style:normal;font-display:swap}body:has(#custom-index-content) #header,body:has(#custom-index-content) #navbar,body:has(#custom-index-content) #search-bar-entry,body:has(#custom-index-content) #search-bar-entry-mobile,body:has(#custom-index-content) .chat-assistant-floating-input,body:has(#custom-index-content) :has(>.chat-assistant-floating-input),body:has(#custom-index-content) button#search-bar-entry,body:has(#custom-index-content) button#search-bar-entry-mobile,body:has(#custom-index-content) header,body:has(#custom-index-content) nav[aria-label]{display:none!important;visibility:hidden!important;opacity:0!important;width:0!important;height:0!important;position:absolute!important;left:-99999px!important;pointer-events:none!important}body:has(#custom-index-content) #custom-index-content,body:has(#custom-index-content) #custom-index-content a,body:has(#custom-index-content) #custom-index-content h1,body:has(#custom-index-content) #custom-index-content h2,body:has(#custom-index-content) #custom-index-content h3,body:has(#custom-index-content) #custom-index-content p{font-family:'The Future',sans-serif}@media (max-width:768px){button[aria-label=\"More actions\"]{display:none!important}#custom-index-content{margin-top:-120px}}@media (min-width:769px) and (max-width:1023px){#custom-index-content{margin-top:-120px}}.prose .callout a,.prose .info a,.prose .note a,.prose .step a,.prose .steps a,.prose .tip a,.prose .warning a,.prose [role=listitem] a,.prose div[data-callout-type] a,.prose li a,.prose p a,.prose span a,.prose ul a{border-bottom-color:#0e0e0e!important;text-decoration-color:#0e0e0e!important}.dark .prose .callout a,.dark .prose .info a,.dark .prose .note a,.dark .prose .step a,.dark .prose .steps a,.dark .prose .tip a,.dark .prose .warning a,.dark .prose [role=listitem] a,.dark .prose div[data-callout-type] a,.dark .prose li a,.dark .prose p a,.dark .prose span a,.dark .prose ul a{border-bottom-color:#ccc!important;text-decoration-color:#ccc!important}.highlighted-card-bg{background-color:#ffb84d;position:relative;overflow:hidden;transition:box-shadow .3s ease-in-out}.highlighted-card-bg:hover{box-shadow:0 0 30px rgba(255,184,77,.5),0 0 60px rgba(255,184,77,.3),0 10px 40px rgba(255,184,77,.2)}.highlighted-card-bg::before{content:'';position:absolute;top:-50%;left:-50%;width:200%;height:200%;background:linear-gradient(45deg,transparent 30%,rgba(255,255,255,.4) 50%,transparent 70%);transform:translateX(-100%) translateY(-100%) rotate(45deg);transition:transform .6s ease-in-out}.highlighted-card-bg:hover::before{transform:translateX(100%) translateY(100%) rotate(45deg)}@layer utilities{body:has(#custom-index-content) #footer{display:flex!important}}code,pre,pre code{font-family:'Fira Code','Cascadia Code','JetBrains Mono',monospace!important}"}],"page":{"pagePath":"sdk/v0.50/learn/advanced/simulation","slug":"/sdk/v0.50/learn/advanced/simulation","pageMetadata":{"noindex":true,"canonical":"https://docs.cosmos.network/sdk/latest/","title":"Cosmos Blockchain Simulator","description":"The Cosmos SDK offers a full fledged simulation framework to fuzz test every message defined by a module.","href":"/sdk/v0.50/learn/advanced/simulation"},"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: \"The Cosmos SDK offers a full fledged simulation framework to fuzz test every message defined by a module.\"\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`,em:`em`,li:`li`,ol:`ol`,p:`p`,pre:`pre`,span:`span`,strong:`strong`,ul:`ul`,..._provideComponents(),...props.components},{CodeBlock,Heading,Tip}=_components;if(!CodeBlock)_missingMdxReference(`CodeBlock`,true);if(!Heading)_missingMdxReference(`Heading`,true);if(!Tip)_missingMdxReference(`Tip`,true);return _jsxs(_Fragment,{children:[_jsx(_components.p,{children:`The Cosmos SDK offers a full fledged simulation framework to fuzz test every\nmessage defined by a module.`}),`\n`,_jsxs(_components.p,{children:[`On the Cosmos SDK, this functionality is provided by `,_jsx(_components.a,{href:`https://github.com/cosmos/cosmos-sdk/blob/v0.50.0-alpha.0/simapp/app_v2.go`,children:_jsx(_components.code,{children:`SimApp`})}),`, which is a\n`,_jsx(_components.code,{children:`Baseapp`}),` application that is used for running the `,_jsx(_components.a,{href:`https://github.com/cosmos/cosmos-sdk/blob/v0.50.0-alpha.0/x/simulation`,children:_jsx(_components.code,{children:`simulation`})}),` module.\nThis module defines all the simulation logic as well as the operations for\nrandomized parameters like accounts, balances etc.`]}),`\n`,_jsx(Heading,{level:`2`,id:`goals`,children:`Goals`}),`\n`,_jsx(_components.p,{children:`The blockchain simulator tests how the blockchain application would behave under\nreal life circumstances by generating and sending randomized messages.\nThe goal of this is to detect and debug failures that could halt a live chain,\nby providing logs and statistics about the operations run by the simulator as\nwell as exporting the latest application state when a failure was found.`}),`\n`,_jsx(_components.p,{children:`Its main difference with integration testing is that the simulator app allows\nyou to pass parameters to customize the chain that’s being simulated.\nThis comes in handy when trying to reproduce bugs that were generated in the\nprovided operations (randomized or not).`}),`\n`,_jsx(Heading,{level:`2`,id:`simulation-commands`,children:`Simulation commands`}),`\n`,_jsx(_components.p,{children:`The simulation app has different commands, each of which tests a different\nfailure type:`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[_jsx(_components.code,{children:`AppImportExport`}),`: The simulator exports the initial app state and then it\ncreates a new app with the exported `,_jsx(_components.code,{children:`genesis.json`}),` as an input, checking for\ninconsistencies between the stores.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.code,{children:`AppSimulationAfterImport`}),`: Queues two simulations together. The first one provides the app state (`,_jsx(_components.em,{children:`i.e`}),` genesis) to the second. Useful to test software upgrades or hard-forks from a live chain.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.code,{children:`AppStateDeterminism`}),`: Checks that all the nodes return the same values, in the same order.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.code,{children:`BenchmarkInvariants`}),`: Analysis of the performance of running all modules’ invariants (`,_jsx(_components.em,{children:`i.e`}),` sequentially runs a `,_jsx(_components.a,{href:`https://pkg.go.dev/testing/#hdr-Benchmarks`,children:`benchmark`}),` test). An invariant checks for\ndifferences between the values that are on the store and the passive tracker. Eg: total coins held by accounts vs total supply tracker.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.code,{children:`FullAppSimulation`}),`: General simulation mode. Runs the chain and the specified operations for a given number of blocks. Tests that there’re no `,_jsx(_components.code,{children:`panics`}),` on the simulation. It does also run invariant checks on every `,_jsx(_components.code,{children:`Period`}),` but they are not benchmarked.`]}),`\n`]}),`\n`,_jsxs(_components.p,{children:[`Each simulation must receive a set of inputs (`,_jsx(_components.em,{children:`i.e`}),` flags) such as the number of\nblocks that the simulation is run, seed, block size, etc.\nCheck the full list of flags `,_jsx(_components.a,{href:`https://github.com/cosmos/cosmos-sdk/blob/v0.50.0-alpha.0/x/simulation/client/cli/flags.go#L35-L59`,children:`here`}),`.`]}),`\n`,_jsx(Heading,{level:`2`,id:`simulator-modes`,children:`Simulator Modes`}),`\n`,_jsx(_components.p,{children:`In addition to the various inputs and commands, the simulator runs in three modes:`}),`\n`,_jsxs(_components.ol,{children:[`\n`,_jsxs(_components.li,{children:[`Completely random where the initial state, module parameters and simulation\nparameters are `,_jsx(_components.strong,{children:`pseudo-randomly generated`}),`.`]}),`\n`,_jsxs(_components.li,{children:[`From a `,_jsx(_components.code,{children:`genesis.json`}),` file where the initial state and the module parameters are defined.\nThis mode is helpful for running simulations on a known state such as a live network export where a new (mostly likely breaking) version of the application needs to be tested.`]}),`\n`,_jsxs(_components.li,{children:[`From a `,_jsx(_components.code,{children:`params.json`}),` file where the initial state is pseudo-randomly generated but the module and simulation parameters can be provided manually.\nThis allows for a more controlled and deterministic simulation setup while allowing the state space to still be pseudo-randomly simulated.\nThe list of available parameters are listed `,_jsx(_components.a,{href:`https://github.com/cosmos/cosmos-sdk/blob/v0.50.0-alpha.0/x/simulation/client/cli/flags.go#L59-L78`,children:`here`}),`.`]}),`\n`]}),`\n`,_jsx(Tip,{children:_jsxs(_components.p,{children:[`These modes are not mutually exclusive. So you can for example run a randomly\ngenerated genesis state (`,_jsx(_components.code,{children:`1`}),`) with manually generated simulation params (`,_jsx(_components.code,{children:`3`}),`).`]})}),`\n`,_jsx(Heading,{level:`2`,id:`usage`,children:`Usage`}),`\n`,_jsxs(_components.p,{children:[`This is a general example of how simulations are run. For more specific examples\ncheck the Cosmos SDK `,_jsx(_components.a,{href:`https://github.com/cosmos/cosmos-sdk/blob/v0.50.0-alpha.0/Makefile#L282-L318`,children:`Makefile`}),`.`]}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`4`,language:`shellscript`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-high-contrast github-dark-high-contrast`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0a0c10`,color:`#0e1116`,\"--shiki-dark\":`#f0f3f6`},language:`shellscript`,children:_jsxs(_components.code,{language:`shellscript`,numberOfLines:`4`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#702C00`,\"--shiki-dark\":`#FFB757`},children:` $`}),_jsx(_components.span,{style:{color:`#032563`,\"--shiki-dark\":`#ADDCFF`},children:` go`}),_jsx(_components.span,{style:{color:`#032563`,\"--shiki-dark\":`#ADDCFF`},children:` test`}),_jsx(_components.span,{style:{color:`#023B95`,\"--shiki-dark\":`#91CBFF`},children:` -mod=readonly`}),_jsx(_components.span,{style:{color:`#032563`,\"--shiki-dark\":`#ADDCFF`},children:` github.com/cosmos/cosmos-sdk/simapp`}),_jsx(_components.span,{style:{color:`#A0111F`,\"--shiki-dark\":`#FF9492`},children:` \\\\`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#023B95`,\"--shiki-dark\":`#91CBFF`},children:` -run=TestApp`}),_jsx(_components.span,{style:{color:`#A0111F`,\"--shiki-dark\":`#FF9492`},children:`\u003c`}),_jsx(_components.span,{style:{color:`#023B95`,\"--shiki-dark\":`#91CBFF`},children:`simulation_command`}),_jsx(_components.span,{style:{color:`#A0111F`,\"--shiki-dark\":`#FF9492`},children:`>`}),_jsx(_components.span,{style:{color:`#A0111F`,\"--shiki-dark\":`#FF9492`},children:` \\\\`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#032563`,\"--shiki-dark\":`#ADDCFF`},children:` ...`}),_jsx(_components.span,{style:{color:`#A0111F`,\"--shiki-dark\":`#FF9492`},children:`\u003c`}),_jsx(_components.span,{style:{color:`#032563`,\"--shiki-dark\":`#ADDCFF`},children:`flag`}),_jsx(_components.span,{style:{color:`#032563`,\"--shiki-dark\":`#ADDCFF`},children:`s`}),_jsx(_components.span,{style:{color:`#A0111F`,\"--shiki-dark\":`#FF9492`},children:`>`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#702C00`,\"--shiki-dark\":`#FFB757`},children:` -v`}),_jsx(_components.span,{style:{color:`#023B95`,\"--shiki-dark\":`#91CBFF`},children:` -timeout`}),_jsx(_components.span,{style:{color:`#032563`,\"--shiki-dark\":`#ADDCFF`},children:` 24h`})]}),`\n`]})})}),`\n`,_jsx(Heading,{level:`2`,id:`debugging-tips`,children:`Debugging Tips`}),`\n`,_jsx(_components.p,{children:`Here are some suggestions when encountering a simulation failure:`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[`Export the app state at the height where the failure was found. You can do this\nby passing the `,_jsx(_components.code,{children:`-ExportStatePath`}),` flag to the simulator.`]}),`\n`,_jsxs(_components.li,{children:[`Use `,_jsx(_components.code,{children:`-Verbose`}),` logs. They could give you a better hint on all the operations\ninvolved.`]}),`\n`,_jsxs(_components.li,{children:[`Reduce the simulation `,_jsx(_components.code,{children:`-Period`}),`. This will run the invariants checks more\nfrequently.`]}),`\n`,_jsxs(_components.li,{children:[`Print all the failed invariants at once with `,_jsx(_components.code,{children:`-PrintAllInvariants`}),`.`]}),`\n`,_jsxs(_components.li,{children:[`Try using another `,_jsx(_components.code,{children:`-Seed`}),`. If it can reproduce the same error and if it fails\nsooner, you will spend less time running the simulations.`]}),`\n`,_jsxs(_components.li,{children:[`Reduce the `,_jsx(_components.code,{children:`-NumBlocks`}),` . How’s the app state at the height previous to the\nfailure?`]}),`\n`,_jsxs(_components.li,{children:[`Run invariants on every operation with `,_jsx(_components.code,{children:`-SimulateEveryOperation`}),`. `,_jsx(_components.em,{children:`Note`}),`: this\nwill slow down your simulation `,_jsx(_components.strong,{children:`a lot`}),`.`]}),`\n`,_jsxs(_components.li,{children:[`Try adding logs to operations that are not logged. You will have to define a\n`,_jsx(_components.a,{href:`https://github.com/cosmos/cosmos-sdk/blob/v0.50.0-alpha.0/x/staking/keeper/keeper.go#L65-L68`,children:`Logger`}),` on your `,_jsx(_components.code,{children:`Keeper`}),`.`]}),`\n`]}),`\n`,_jsx(Heading,{level:`2`,id:`use-simulation-in-your-cosmos-sdk-based-application`,children:`Use simulation in your Cosmos SDK-based application`}),`\n`,_jsx(_components.p,{children:`Learn how you can build the simulation into your Cosmos SDK-based application:`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`Application Simulation Manager`}),`\n`,_jsx(_components.li,{children:_jsx(_components.a,{href:`/sdk/v0.50/build/building-modules/simulator`,children:`Building modules: Simulator`})}),`\n`,_jsx(_components.li,{children:`Simulator tests`}),`\n`]})]})}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":{"codeStyling":{"theme":{"light":"github-light-high-contrast","dark":"github-dark-high-contrast"}},"config":{},"pageMetadata":{"noindex":true,"canonical":"https://docs.cosmos.network/sdk/latest/","title":"Cosmos Blockchain Simulator","description":"The Cosmos SDK offers a full fledged simulation framework to fuzz test every message defined by a module.","href":"/sdk/v0.50/learn/advanced/simulation"}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[{"title":"Goals","slug":"goals","depth":2,"children":[]},{"title":"Simulation commands","slug":"simulation-commands","depth":2,"children":[]},{"title":"Simulator Modes","slug":"simulator-modes","depth":2,"children":[]},{"title":"Usage","slug":"usage","depth":2,"children":[]},{"title":"Debugging Tips","slug":"debugging-tips","depth":2,"children":[]},{"title":"Use simulation in your Cosmos SDK-based application","slug":"use-simulation-in-your-cosmos-sdk-based-application","depth":2,"children":[]}],"codeExamples":{}},"jsLinks":[],"subdomain":"cosmos-docs","siteName":"Cosmos Docs","title":"Cosmos Blockchain Simulator - Cosmos Docs","navMaps":{"firstHrefInVersion":{"v0.55":{"href":"/sdk/latest/learn","matchLevel":4},"next":{"href":"/sdk/next/learn","matchLevel":4},"v0.54":{"href":"/sdk/v0.54/learn","matchLevel":4},"v0.53":{"href":"/sdk/v0.53/learn/advanced/simulation","matchLevel":1,"noindex":true,"canonicalOverride":true},"v0.50":{"href":"/sdk/v0.50/learn/advanced/simulation","matchLevel":0},"v0.47":{"href":"/sdk/v0.47/learn/advanced/simulation","matchLevel":1,"noindex":true,"canonicalOverride":true},"v0.7.0":{"href":"/evm/latest/documentation/overview","matchLevel":4},"v0.6.0":{"href":"/evm/v0.6.0/documentation/overview","matchLevel":4},"v0.5.0":{"href":"/evm/v0.5.0/documentation/overview","matchLevel":4},"v0.4.x":{"href":"/evm/v0.4.x/documentation/overview","matchLevel":4},"v0.40":{"href":"/cometbft/latest/docs/README","matchLevel":4},"v0.39":{"href":"/cometbft/v0.39/docs/README","matchLevel":4},"v0.38":{"href":"/cometbft/v0.38/docs/README","matchLevel":4},"v0.37":{"href":"/cometbft/v0.37/docs/README","matchLevel":4},"Latest":{"href":"/hub/latest","matchLevel":4},"v25":{"href":"/hub/v25/index","matchLevel":4}},"firstHrefInLanguage":{}},"lastModified":"2026-03-31T20:12:48.213Z","originalFileLocation":"sdk/v0.50/learn/advanced/simulation.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=\"The Cosmos SDK offers a full fledged simulation framework to fuzz test every message defined by a module.\">\u003cmeta data-mint-head name=\"application-name\" content=\"Cosmos Docs\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003cmeta data-mint-head name=\"robots\" content=\"noindex\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/cosmos-docs/48l-dIoPdyiiCW5H/_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/cosmos-docs/48l-dIoPdyiiCW5H/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/cosmos-docs/48l-dIoPdyiiCW5H/_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/cosmos-docs/48l-dIoPdyiiCW5H/_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/cosmos-docs/48l-dIoPdyiiCW5H/_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/cosmos-docs/48l-dIoPdyiiCW5H/_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/cosmos-docs/48l-dIoPdyiiCW5H/_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/cosmos-docs/48l-dIoPdyiiCW5H/_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/cosmos-docs/48l-dIoPdyiiCW5H/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"Cosmos Blockchain Simulator - Cosmos Docs\">\u003cmeta data-mint-head property=\"og:description\" content=\"Developer documentation for the Cosmos stack. Build secure, reliable, and high-performance blockchains.\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"Cosmos Docs\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://docs.cosmos.network/sdk/latest/\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://cosmos-docs.mintlify.app/_mintlify/api/og/v2?division=Advanced\u0026amp;title=Cosmos+Blockchain+Simulator\u0026amp;description=The+Cosmos+SDK+offers+a+full+fledged+simulation+framework+to+fuzz+test+every+message+defined+by+a+module.\u0026amp;theme=fcf436d6188c17e0fd925a75\u0026amp;signature=f6e58f5592920b76e11f32f5b7e6168c12d7320264c82558be3001ba40e80ae5\">\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=\"Cosmos Blockchain Simulator - Cosmos Docs\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"Developer documentation for the Cosmos stack. Build secure, reliable, and high-performance blockchains.\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://cosmos-docs.mintlify.app/_mintlify/api/og/v2?division=Advanced\u0026amp;title=Cosmos+Blockchain+Simulator\u0026amp;description=The+Cosmos+SDK+offers+a+full+fledged+simulation+framework+to+fuzz+test+every+message+defined+by+a+module.\u0026amp;theme=fcf436d6188c17e0fd925a75\u0026amp;signature=f6e58f5592920b76e11f32f5b7e6168c12d7320264c82558be3001ba40e80ae5\">\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/cosmos-docs/48l-dIoPdyiiCW5H/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"Cosmos Docs\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#000000\">\u003clink data-mint-head rel=\"canonical\" href=\"https://docs.cosmos.network/sdk/latest/\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/sdk/v0.50/learn/advanced/simulation.md\">","siteName":"Cosmos Docs","nav":{"global":null,"dropdowns":[{"dropdown":"Home","pages":[{"title":"Cosmos Developer Documentation","mode":"custom","href":""}]},{"dropdown":"Cosmos SDK","icon":"https://mintlify.s3.us-west-1.amazonaws.com/cosmos-docs/assets/icons/cosmos-sdk.svg","versions":[{"version":"v0.55","default":true,"tag":"Latest","pages":[{"title":"v0.55","href":"/sdk/latest/learn"}]},{"version":"next","tag":"Unreleased","pages":[{"title":"next","href":"/sdk/next/learn"}]},{"version":"v0.54","pages":[{"title":"v0.54","href":"/sdk/v0.54/learn"}]},{"version":"v0.53","pages":[{"title":"v0.53","href":"/sdk/v0.53/learn/advanced/simulation"}]},{"version":"v0.50","tabs":[{"tab":"Learn","groups":[{"group":"Cosmos SDK","pages":[{"title":"Learn","href":"/sdk/v0.50/learn"},{"group":"Introduction","pages":[{"title":"What is the Cosmos SDK","href":"/sdk/v0.50/learn/intro/overview"},{"title":"Blockchain Architecture","href":"/sdk/v0.50/learn/intro/sdk-app-architecture"},{"title":"Main Components of the Cosmos SDK","href":"/sdk/v0.50/learn/intro/sdk-design"}]},{"group":"Beginner","pages":[{"title":"Anatomy of a Cosmos SDK Application","href":"/sdk/v0.50/learn/beginner/app-anatomy"},{"title":"Transaction Lifecycle","href":"/sdk/v0.50/learn/beginner/tx-lifecycle"},{"title":"Query Lifecycle","href":"/sdk/v0.50/learn/beginner/query-lifecycle"},{"title":"Accounts","href":"/sdk/v0.50/learn/beginner/accounts"},{"title":"Gas and Fees","href":"/sdk/v0.50/learn/beginner/gas-fees"}]},{"group":"Advanced","pages":[{"title":"BaseApp","href":"/sdk/v0.50/learn/advanced/baseapp"},{"title":"Transactions","href":"/sdk/v0.50/learn/advanced/transactions"},{"title":"Context","href":"/sdk/v0.50/learn/advanced/context"},{"title":"Node Client (Daemon)","href":"/sdk/v0.50/learn/advanced/node"},{"title":"Store","href":"/sdk/v0.50/learn/advanced/store"},{"title":"Encoding","href":"/sdk/v0.50/learn/advanced/encoding"},{"title":"gRPC, REST, and CometBFT Endpoints","href":"/sdk/v0.50/learn/advanced/grpc_rest"},{"title":"Command-Line Interface","href":"/sdk/v0.50/learn/advanced/cli"},{"title":"Events","href":"/sdk/v0.50/learn/advanced/events"},{"title":"Telemetry","href":"/sdk/v0.50/learn/advanced/telemetry"},{"title":"Object-Capability Model","href":"/sdk/v0.50/learn/advanced/ocap"},{"title":"RunTx recovery middleware","description":null,"href":"/sdk/v0.50/learn/advanced/runtx_middleware"},{"title":"Cosmos Blockchain Simulator","href":"/sdk/v0.50/learn/advanced/simulation"},{"title":"Protobuf Documentation","description":"See Cosmos SDK Buf Proto-docs","href":"/sdk/v0.50/learn/advanced/proto-docs"},{"title":"In-Place Store Migrations","href":"/sdk/v0.50/learn/advanced/upgrade"},{"title":"Configuration","href":"/sdk/v0.50/learn/advanced/config"},{"title":"AutoCLI","href":"/sdk/v0.50/learn/advanced/autocli"}]}]}]},{"tab":"Build","pages":[{"title":"Build","href":"/sdk/v0.50/build"}]},{"tab":"User Guides","pages":[{"title":"User Guides","href":"/sdk/v0.50/user"}]},{"tab":"Tutorials","pages":[{"title":"Tutorials","href":"/sdk/v0.50/tutorials"}]},{"tab":"Changelog","pages":[{"title":"Changelog","href":"/sdk/v0.50/changelog/release-notes"}]}]},{"version":"v0.47","pages":[{"title":"v0.47","href":"/sdk/v0.47/learn/advanced/simulation"}]}]},{"dropdown":"Cosmos EVM","icon":"https://mintlify.s3.us-west-1.amazonaws.com/cosmos-docs/assets/icons/cosmos-evm.svg","versions":[{"version":"v0.7.0","default":true,"tag":"Latest","tabs":[{"tab":"Documentation","groups":[{"group":"About","pages":[{"title":"Overview","href":"/evm/latest/documentation/overview"},{"title":"EVM Compatibility","href":"/evm/latest/documentation/evm-compatibility"},{"title":"Frequently Asked Questions","href":"/evm/latest/documentation/getting-started/faq"}]},{"group":"Build","pages":[{"title":"Run an EVM Chain","href":"/evm/latest/documentation/getting-started/build-a-chain/quick-start"},{"group":"Additional Configuration","expanded":true,"pages":[{"title":"Mempool Configuration","href":"/evm/latest/documentation/getting-started/build-a-chain/additional-configuration/mempool-integration"},{"title":"Predeployed Contracts","href":"/evm/latest/documentation/getting-started/build-a-chain/additional-configuration/predeployed-contracts"},{"title":"Precompile Configuration","href":"/evm/latest/documentation/getting-started/build-a-chain/additional-configuration/precompiles"},{"title":"Node Configuration","mode":"wide","href":"/evm/latest/documentation/getting-started/network-operators/node-configuration"}]},{"title":"Tooling \u0026 Resources","href":"/evm/latest/documentation/getting-started/tooling-and-resources"}]},{"group":"Learn","pages":[{"group":"Concepts","pages":[{"title":"Overview","icon":"microchip","href":"/evm/latest/documentation/concepts/overview"},{"title":"Accounts","icon":"wallet","href":"/evm/latest/documentation/concepts/accounts"},{"title":"Chain ID","icon":"fingerprint","href":"/evm/latest/documentation/concepts/chain-id"},{"title":"Encoding","icon":"binary","href":"/evm/latest/documentation/concepts/encoding"},{"title":"Gas and Fees","icon":"fuel","href":"/evm/latest/documentation/concepts/gas-and-fees"},{"title":"IBC","icon":"network","href":"/evm/latest/documentation/concepts/ibc"},{"title":"Mempool","icon":"layers","href":"/evm/latest/documentation/concepts/mempool"},{"title":"State Export/Import","icon":"git-branch","href":"/evm/latest/documentation/concepts/migrations"},{"title":"Pending State","icon":"hourglass","href":"/evm/latest/documentation/concepts/pending-state"},{"title":"EIP-155: Replay Protection","icon":"shield","href":"/evm/latest/documentation/concepts/replay-protection"},{"title":"Signing","icon":"pen-tool","href":"/evm/latest/documentation/concepts/signing"},{"title":"Single Token Representation","icon":"coins","href":"/evm/latest/documentation/concepts/single-token-representation"},{"title":"Tokens","icon":"coins","href":"/evm/latest/documentation/concepts/tokens"},{"title":"Transactions","icon":"arrow-up-down","href":"/evm/latest/documentation/concepts/transactions"},{"title":"EIP-1559 Fee Market","icon":"chart-line","href":"/evm/latest/documentation/concepts/eip-1559-feemarket"}]},{"group":"Precompiles","pages":[{"title":"Overview","icon":"code","href":"/evm/latest/documentation/smart-contracts/precompiles/overview"},{"title":"Bank","icon":"vault","href":"/evm/latest/documentation/smart-contracts/precompiles/bank"},{"title":"Bech32","icon":"binary","href":"/evm/latest/documentation/smart-contracts/precompiles/bech32"},{"title":"Callbacks","icon":"webhook","href":"/evm/latest/documentation/smart-contracts/precompiles/callbacks"},{"title":"Distribution","icon":"coins","href":"/evm/latest/documentation/smart-contracts/precompiles/distribution"},{"title":"ERC20","icon":"refresh-cw","href":"/evm/latest/documentation/smart-contracts/precompiles/erc20"},{"title":"Governance","icon":"scale","href":"/evm/latest/documentation/smart-contracts/precompiles/governance"},{"title":"ICS20","icon":"chevrons-left-right-ellipsis","href":"/evm/latest/documentation/smart-contracts/precompiles/ics20"},{"title":"P256","icon":"shield-check","href":"/evm/latest/documentation/smart-contracts/precompiles/p256"},{"title":"Slashing","icon":"gavel","href":"/evm/latest/documentation/smart-contracts/precompiles/slashing"},{"title":"Staking","icon":"coins","href":"/evm/latest/documentation/smart-contracts/precompiles/staking"},{"title":"WERC20","icon":"refresh-ccw","href":"/evm/latest/documentation/smart-contracts/precompiles/werc20"}]},{"group":"Cosmos SDK","pages":[{"title":"Overview","mode":"wide","href":"/evm/latest/documentation/cosmos-sdk/overview"},{"title":"Command Line Interface (CLI)","href":"/evm/latest/documentation/cosmos-sdk/cli"},{"title":"Technical Architecture","href":"/evm/latest/documentation/cosmos-sdk/protocol"},{"group":"Modules","pages":[{"title":"ERC20","href":"/evm/latest/documentation/cosmos-sdk/modules/erc20"},{"title":"Fee Market","href":"/evm/latest/documentation/cosmos-sdk/modules/feemarket"},{"title":"IBC","href":"/evm/latest/documentation/cosmos-sdk/modules/ibc"},{"title":"PreciseBank","href":"/evm/latest/documentation/cosmos-sdk/modules/precisebank"},{"title":"VM","href":"/evm/latest/documentation/cosmos-sdk/modules/vm"}]}]}]},{"group":"Migrations","pages":[{"title":"Migration: v0.6.0 to v0.7.0","href":"/evm/latest/documentation/migrations/migration-v0.6-to-v0.7"},{"title":"Migrating off x/precisebank: Gas Converter Precompile","href":"/evm/latest/documentation/migrations/gas-converter-migration"},{"group":"Previous Versions","pages":[{"title":"Migration: v0.4.x to v0.5.0","href":"/evm/latest/documentation/migrations/migration-v0.4-to-v0.5"},{"title":"Migration: v0.3.0 to v0.4.0","href":"/evm/latest/documentation/migrations/migration-v0.3-to-v0.4"},{"title":"Migration: v0.5.0 to v0.6.0","href":"/evm/latest/documentation/migrations/migration-v0.5-to-v0.6"},{"title":"ERC20 Precompiles Migration","href":"/evm/latest/documentation/migrations/erc20-precompiles-migration"}]},{"group":"Advanced","pages":[{"title":"Upgrade Handlers","href":"/evm/latest/documentation/migrations/upgrade-handlers"},{"title":"Custom Improvement Proposals","href":"/evm/latest/documentation/custom-improvement-proposals"},{"title":"Adding EVM to an Existing Chain","href":"/evm/latest/documentation/migrations/add-evm-to-existing-chain"}]}]}]},{"tab":"API Reference","pages":[{"title":"Ethereum JSON-RPC","href":"/evm/latest/api-reference/ethereum-json-rpc/index"},{"title":"Methods","href":"/evm/latest/api-reference/ethereum-json-rpc/methods"},{"title":"JSON-RPC Explorer","mode":"custom","href":"/evm/latest/api-reference/ethereum-json-rpc/rpc-explorer"}]},{"tab":"Changelog","pages":[{"title":"Changelog","mode":"wide","href":"/evm/latest/changelog/release-notes"}]}]},{"version":"next","tag":"Unreleased","pages":[{"title":"next","href":"/evm/next/documentation/overview"}]},{"version":"v0.6.0","pages":[{"title":"v0.6.0","href":"/evm/v0.6.0/documentation/overview"}]},{"version":"v0.5.0","pages":[{"title":"v0.5.0","href":"/evm/v0.5.0/documentation/overview"}]},{"version":"v0.4.x","pages":[{"title":"v0.4.x","href":"/evm/v0.4.x/documentation/overview"}]}]},{"dropdown":"CometBFT","icon":"https://mintlify.s3.us-west-1.amazonaws.com/cosmos-docs/assets/icons/comet-bft.svg","versions":[{"version":"v0.40","default":true,"tag":"Latest","tabs":[{"tab":"Learn","groups":[{"group":"CometBFT","pages":[{"title":"CometBFT Documentation","href":"/cometbft/latest/docs/README"},{"title":null,"href":"/cometbft/latest/docs/introduction/intro"},{"group":"Guides","pages":[{"title":"Quick Start","href":"/cometbft/latest/docs/guides/Quick-Start"},{"title":"Install CometBFT","href":"/cometbft/latest/docs/guides/Install-CometBFT"},{"title":"Creating an application in Go","href":"/cometbft/latest/docs/guides/Creating-an-application-in-Go"},{"title":"Creating a built-in application in Go","href":"/cometbft/latest/docs/guides/Creating-a-built-in-application-in-Go"}]},{"group":"Apps","pages":[{"title":"Getting Started","href":"/cometbft/latest/docs/app-dev/Getting-Started"},{"title":"Application Architecture Guide","href":"/cometbft/latest/docs/app-dev/Application-Architecture-Guide"},{"title":"Using ABCI-CLI","href":"/cometbft/latest/docs/app-dev/Using-ABCI-CLI"},{"title":"Indexing Transactions","href":"/cometbft/latest/docs/app-dev/Indexing-Transactions"}]},{"group":"Core","pages":[{"title":"Using CometBFT","href":"/cometbft/latest/docs/core/Using-CometBFT"},{"title":"Running in production","href":"/cometbft/latest/docs/core/Running-in-production"},{"title":"Configuration","href":"/cometbft/latest/docs/core/configuration"},{"title":"Mempool","href":"/cometbft/latest/docs/core/mempool"},{"title":"Block Sync","href":"/cometbft/latest/docs/core/block-sync"},{"title":"State Sync","href":"/cometbft/latest/docs/core/state-sync"},{"title":"RPC","href":"/cometbft/latest/docs/core/RPC"},{"title":"Subscribing to events via Websocket","href":"/cometbft/latest/docs/core/Subscribing-to-events-via-Websocket"},{"title":"Metrics","href":"/cometbft/latest/docs/core/metrics"},{"title":"Validators","href":"/cometbft/latest/docs/core/Validators"},{"title":"Light Client","href":"/cometbft/latest/docs/core/light-client"},{"title":"Block Structure","href":"/cometbft/latest/docs/core/block-structure"},{"title":"How to read logs","href":"/cometbft/latest/docs/core/how-to-read-logs"},{"group":"Experimental","pages":[{"title":"Lib-P2P Networking","icon":"waypoints","href":"/cometbft/latest/docs/experimental/lib-p2p"}]}]},{"group":"Developer Tools","pages":[{"title":"Overview","href":"/cometbft/latest/docs/tools/Overview"},{"title":"Debugging","href":"/cometbft/latest/docs/tools/debugging"}]},{"group":"Networks","pages":[{"title":"Docker Compose","href":"/cometbft/latest/docs/networks/Docker-Compose"}]},{"group":"CometBFT Quality Assurance","pages":[{"title":"CometBFT Quality Assurance","href":"/cometbft/latest/docs/qa/CometBFT-qa"},{"title":"Method","href":"/cometbft/latest/docs/qa/Method"},{"title":null,"href":"/cometbft/latest/docs/qa/CometBFT-QA-38"},{"title":null,"href":"/cometbft/latest/docs/qa/CometBFT-QA-37"},{"title":null,"href":"/cometbft/latest/docs/qa/CometBFT-QA-34"},{"title":null,"href":"/cometbft/latest/docs/qa/TMCore-QA-37"},{"title":null,"href":"/cometbft/latest/docs/qa/TMCore-QA-34"}]}]}]},{"tab":"Specification","groups":[{"group":"CometBFT Spec","pages":[{"title":"Overview","href":"/cometbft/latest/spec/CometBFT-Spec"},{"group":"Core","pages":[{"title":null,"href":"/cometbft/latest/spec/core/Overview"},{"title":"Data Structures","href":"/cometbft/latest/spec/core/Data_structures"},{"title":"Encoding","href":"/cometbft/latest/spec/core/encoding"},{"title":"Genesis","href":"/cometbft/latest/spec/core/genesis"},{"title":"State","href":"/cometbft/latest/spec/core/state"}]},{"group":"ABCI++","pages":[{"title":null,"href":"/cometbft/latest/spec/abci/Overview"},{"title":"Overview and basic concepts","href":"/cometbft/latest/spec/abci/Outline"},{"title":"Methods","href":"/cometbft/latest/spec/abci/Methods"},{"title":"Requirements for the Application","href":"/cometbft/latest/spec/abci/Requirements-for-the-Application"},{"title":"CometBFT's expected behavior","href":"/cometbft/latest/spec/abci/CometBFTs-expected-behavior"},{"title":"Client and Server","href":"/cometbft/latest/spec/abci/Client-and-server"},{"title":"ABCI++ extra","href":"/cometbft/latest/spec/abci/Introduction"}]},{"group":"Consensus","pages":[{"title":null,"href":"/cometbft/latest/spec/consensus/Overview"},{"title":"Consensus Paper","href":"/cometbft/latest/spec/consensus/Consensus-Paper"},{"title":"Byzantine Consensus Algorithm","href":"/cometbft/latest/spec/consensus/Byzantine-Consensus-Algorithm"},{"title":null,"href":"/cometbft/latest/spec/consensus/Light-Client"},{"title":"Creating a proposal","href":"/cometbft/latest/spec/consensus/Creating-Proposal"},{"title":"BFT Time","href":"/cometbft/latest/spec/consensus/BFT-Time"},{"title":null,"href":"/cometbft/latest/spec/consensus/Proposer-Selection"},{"title":"Evidence","href":"/cometbft/latest/spec/consensus/Evidence"},{"title":"Validator Signing","href":"/cometbft/latest/spec/consensus/Validator-Signing"},{"title":"WAL","href":"/cometbft/latest/spec/consensus/WAL"}]},{"group":"Light Client","pages":[{"title":"Light Client Specification","href":"/cometbft/latest/spec/light-client/Light-Client-Specification"},{"title":null,"href":"/cometbft/latest/spec/light-client/verification"},{"title":null,"href":"/cometbft/latest/spec/light-client/Fork-Detection"},{"title":null,"href":"/cometbft/latest/spec/light-client/Accountability"}]},{"group":"P2P","pages":[{"title":null,"href":"/cometbft/latest/spec/p2p/Peer-to-Peer"},{"title":"Implementation","href":"/cometbft/latest/spec/p2p/Implementation-of-the-p2p-layer"},{"group":"Legacy Docs","pages":[{"title":"Legacy Docs","href":"/cometbft/latest/spec/p2p/legacy-docs/Overview"},{"group":"Messages","pages":[{"title":null,"href":"/cometbft/latest/spec/p2p/legacy-docs/messages/Overview"},{"title":"Block Sync","href":"/cometbft/latest/spec/p2p/legacy-docs/messages/block-sync"},{"title":"Evidence","href":"/cometbft/latest/spec/p2p/legacy-docs/messages/evidence"},{"title":"Mempool","href":"/cometbft/latest/spec/p2p/legacy-docs/messages/mempool"},{"title":"State Sync","href":"/cometbft/latest/spec/p2p/legacy-docs/messages/state-sync"},{"title":"Peer Exchange","href":"/cometbft/latest/spec/p2p/legacy-docs/messages/Peer-Exchange"},{"title":"Consensus","href":"/cometbft/latest/spec/p2p/legacy-docs/messages/consensus"}]},{"title":"P2P Multiplex Connection","href":"/cometbft/latest/spec/p2p/legacy-docs/P2P-Multiplex-Connection"},{"title":"Peers","href":"/cometbft/latest/spec/p2p/legacy-docs/Peers"},{"title":"P2P Config","href":"/cometbft/latest/spec/p2p/legacy-docs/P2P-Config"},{"title":"Peer Discovery","href":"/cometbft/latest/spec/p2p/legacy-docs/Peer-Discovery"},{"group":"Reactors","pages":[{"title":"Reactors","href":"/cometbft/latest/spec/p2p/reactor-api/Reactors"},{"title":"Reactor API","href":"/cometbft/latest/spec/p2p/reactor-api/Reactor-Api"},{"title":"API for Reactors","href":"/cometbft/latest/spec/p2p/reactor-api/API-for-Reactors"}]}]}]},{"group":"RPC","pages":[{"title":"RPC spec","href":"/cometbft/latest/spec/rpc/Rpc-Spe"}]},{"group":"Blockchain","pages":[{"title":"Blockchain","href":"/cometbft/latest/spec/blockchain/Blockchain"}]}]}]},{"tab":"API Reference","groups":[{"group":"Overview","pages":[{"title":"CometBFT RPC","href":"/cometbft/latest/api-reference/rpc/index"}]},{"group":"RPC Methods","pages":[{"group":"Tx","pages":[{"title":"broadcast_tx_sync","deprecated":null,"version":null,"openapi":"/cometbft/latest/api-reference/rpc/openapi.yaml get /broadcast_tx_sync","href":"/cometbft/latest/api-reference/rpc/tx/broadcast_tx_sync"},{"title":"broadcast_tx_async","deprecated":null,"version":null,"openapi":"/cometbft/latest/api-reference/rpc/openapi.yaml get /broadcast_tx_async","href":"/cometbft/latest/api-reference/rpc/tx/broadcast_tx_async"},{"title":"broadcast_tx_commit","deprecated":null,"version":null,"openapi":"/cometbft/latest/api-reference/rpc/openapi.yaml get /broadcast_tx_commit","href":"/cometbft/latest/api-reference/rpc/tx/broadcast_tx_commit"},{"title":"check_tx","deprecated":null,"version":null,"openapi":"/cometbft/latest/api-reference/rpc/openapi.yaml get /check_tx","href":"/cometbft/latest/api-reference/rpc/tx/check_tx"}]},{"group":"Info","pages":[{"title":"health","deprecated":null,"version":null,"openapi":"/cometbft/latest/api-reference/rpc/openapi.yaml get /health","href":"/cometbft/latest/api-reference/rpc/info/health"},{"title":"status","deprecated":null,"version":null,"openapi":"/cometbft/latest/api-reference/rpc/openapi.yaml get /status","href":"/cometbft/latest/api-reference/rpc/info/status"},{"title":"net_info","deprecated":null,"version":null,"openapi":"/cometbft/latest/api-reference/rpc/openapi.yaml get /net_info","href":"/cometbft/latest/api-reference/rpc/info/net_info"},{"title":"blockchain","deprecated":null,"version":null,"openapi":"/cometbft/latest/api-reference/rpc/openapi.yaml get /blockchain","href":"/cometbft/latest/api-reference/rpc/info/blockchain"},{"title":"header","deprecated":null,"version":null,"openapi":"/cometbft/latest/api-reference/rpc/openapi.yaml get /header","href":"/cometbft/latest/api-reference/rpc/info/header"},{"title":"header_by_hash","deprecated":null,"version":null,"openapi":"/cometbft/latest/api-reference/rpc/openapi.yaml get /header_by_hash","href":"/cometbft/latest/api-reference/rpc/info/header_by_hash"},{"title":"block","deprecated":null,"version":null,"openapi":"/cometbft/latest/api-reference/rpc/openapi.yaml get /block","href":"/cometbft/latest/api-reference/rpc/info/block"},{"title":"block_by_hash","deprecated":null,"version":null,"openapi":"/cometbft/latest/api-reference/rpc/openapi.yaml get /block_by_hash","href":"/cometbft/latest/api-reference/rpc/info/block_by_hash"},{"title":"block_results","deprecated":null,"version":null,"openapi":"/cometbft/latest/api-reference/rpc/openapi.yaml get /block_results","href":"/cometbft/latest/api-reference/rpc/info/block_results"},{"title":"commit","deprecated":null,"version":null,"openapi":"/cometbft/latest/api-reference/rpc/openapi.yaml get /commit","href":"/cometbft/latest/api-reference/rpc/info/commit"},{"title":"validators","deprecated":null,"version":null,"openapi":"/cometbft/latest/api-reference/rpc/openapi.yaml get /validators","href":"/cometbft/latest/api-reference/rpc/info/validators"},{"title":"genesis","deprecated":null,"version":null,"openapi":"/cometbft/latest/api-reference/rpc/openapi.yaml get /genesis","href":"/cometbft/latest/api-reference/rpc/info/genesis"},{"title":"genesis_chunked","deprecated":null,"version":null,"openapi":"/cometbft/latest/api-reference/rpc/openapi.yaml get /genesis_chunked","href":"/cometbft/latest/api-reference/rpc/info/genesis_chunked"},{"title":"dump_consensus_state","deprecated":null,"version":null,"openapi":"/cometbft/latest/api-reference/rpc/openapi.yaml get /dump_consensus_state","href":"/cometbft/latest/api-reference/rpc/info/dump_consensus_state"},{"title":"consensus_state","deprecated":null,"version":null,"openapi":"/cometbft/latest/api-reference/rpc/openapi.yaml get /consensus_state","href":"/cometbft/latest/api-reference/rpc/info/consensus_state"},{"title":"consensus_params","deprecated":null,"version":null,"openapi":"/cometbft/latest/api-reference/rpc/openapi.yaml get /consensus_params","href":"/cometbft/latest/api-reference/rpc/info/consensus_params"},{"title":"unconfirmed_txs","deprecated":null,"version":null,"openapi":"/cometbft/latest/api-reference/rpc/openapi.yaml get /unconfirmed_txs","href":"/cometbft/latest/api-reference/rpc/info/unconfirmed_txs"},{"title":"num_unconfirmed_txs","deprecated":null,"version":null,"openapi":"/cometbft/latest/api-reference/rpc/openapi.yaml get /num_unconfirmed_txs","href":"/cometbft/latest/api-reference/rpc/info/num_unconfirmed_txs"},{"title":"tx_search","deprecated":null,"version":null,"openapi":"/cometbft/latest/api-reference/rpc/openapi.yaml get /tx_search","href":"/cometbft/latest/api-reference/rpc/info/tx_search"},{"title":"block_search","deprecated":null,"version":null,"openapi":"/cometbft/latest/api-reference/rpc/openapi.yaml get /block_search","href":"/cometbft/latest/api-reference/rpc/info/block_search"},{"title":"tx","deprecated":null,"version":null,"openapi":"/cometbft/latest/api-reference/rpc/openapi.yaml get /tx","href":"/cometbft/latest/api-reference/rpc/info/tx"},{"title":"broadcast_evidence","deprecated":null,"version":null,"openapi":"/cometbft/latest/api-reference/rpc/openapi.yaml get /broadcast_evidence","href":"/cometbft/latest/api-reference/rpc/info/broadcast_evidence"}]},{"group":"Unsafe","pages":[{"title":"dial_seeds","deprecated":null,"version":null,"openapi":"/cometbft/latest/api-reference/rpc/openapi.yaml get /dial_seeds","href":"/cometbft/latest/api-reference/rpc/unsafe/dial_seeds"},{"title":"dial_peers","deprecated":null,"version":null,"openapi":"/cometbft/latest/api-reference/rpc/openapi.yaml get /dial_peers","href":"/cometbft/latest/api-reference/rpc/unsafe/dial_peers"}]},{"group":"ABCI","pages":[{"title":"abci_info","deprecated":null,"version":null,"openapi":"/cometbft/latest/api-reference/rpc/openapi.yaml get /abci_info","href":"/cometbft/latest/api-reference/rpc/abci/abci_info"},{"title":"abci_query","deprecated":null,"version":null,"openapi":"/cometbft/latest/api-reference/rpc/openapi.yaml get /abci_query","href":"/cometbft/latest/api-reference/rpc/abci/abci_query"}]}]}]},{"tab":"Changelog","pages":[{"title":"Changelog","mode":"wide","href":"/cometbft/latest/changelog/release-notes"}]}]},{"version":"next","tag":"Unreleased","pages":[{"title":"next","href":"/cometbft/next/docs/README"}]},{"version":"v0.39","pages":[{"title":"v0.39","href":"/cometbft/v0.39/docs/README"}]},{"version":"v0.38","pages":[{"title":"v0.38","href":"/cometbft/v0.38/docs/README"}]},{"version":"v0.37","pages":[{"title":"v0.37","href":"/cometbft/v0.37/docs/README"}]}]},{"dropdown":"Skip Go","icon":"https://mintlify.s3.us-west-1.amazonaws.com/cosmos-docs/assets/icons/skip-go.svg","hidden":false,"tabs":[{"tab":"Documentation","groups":[{"group":"General API Docs","pages":[{"title":"Introduction","href":"/skip-go/general/getting-started"},{"title":"Quickstart Guide","href":"/skip-go/general/quickstart-guide"},{"title":"Overview \u0026 Common Usage Patterns","href":"/skip-go/general/overview-and-typical-usage"},{"title":"Supported Ecosystems","href":"/skip-go/general/supported-ecosystems-and-bridges"},{"title":"Transaction Tracking","href":"/skip-go/general/multi-chain-realtime-transaction-and-packet-tracking"},{"title":"Skip Explorer Integration","href":"/skip-go/general/explorer-integration"},{"title":"Requesting \u0026 Using API Keys","href":"/skip-go/general/api-keys"},{"title":"Smart Relay","href":"/skip-go/general/smart-relay"},{"title":"Post-Route Actions","href":"/skip-go/general/post-route-actions"},{"title":"Setting Affiliate Fees","href":"/skip-go/general/affiliate-fees"},{"title":"Getting Fee Info","href":"/skip-go/general/fee-info"},{"title":"Transaction Support","href":"/skip-go/general/transaction-support"},{"title":"FAQ","href":"/skip-go/general/faq"}]},{"group":"Skip Go Widget","pages":[{"title":"Getting Started","href":"/skip-go/widget/getting-started"},{"title":"Configuration","href":"/skip-go/widget/configuration"},{"title":"Gas on Receive","href":"/skip-go/widget/gas-on-receive"},{"title":"Web Component","href":"/skip-go/widget/web-component"},{"title":"Migration Guide","href":"/skip-go/widget/migration-guide"},{"title":"FAQ","href":"/skip-go/widget/faq"}]},{"group":"Skip Go Client","pages":[{"title":"Getting Started","href":"/skip-go/client/getting-started"},{"title":"Balances, Gas and Transaction Fee Utilities","href":"/skip-go/client/balance-gas-and-fee-tooling"},{"title":"Executing a route","href":"/skip-go/client/executing-a-route"},{"title":"Gas on Receive with Custom Frontends","href":"/skip-go/client/gas-on-receive"},{"title":"Advanced Features","href":"/skip-go/client/advanced-features"},{"title":"Migration Guide","href":"/skip-go/client/migration-guide"}]},{"group":"Advanced Transfer","pages":[{"title":"Cross-chain Failure Cases","href":"/skip-go/advanced-transfer/handling-cross-chain-failure-cases"},{"title":"Interpreting Transaction \u0026 Transfer Status","href":"/skip-go/advanced-transfer/interpreting-transaction-status"},{"title":"IBC Token Routing: Problem + Skip Go API Routing Algorithm","href":"/skip-go/advanced-transfer/ibc-routing-algorithm"},{"title":"EVM Transactions","href":"/skip-go/advanced-transfer/evm-transactions"},{"title":"SVM Transactions","href":"/skip-go/advanced-transfer/svm-transaction-details"},{"title":"CW20 Tokens \u0026 Their Limitations","href":"/skip-go/advanced-transfer/cw20-swaps"},{"title":"Experimental Features","href":"/skip-go/advanced-transfer/experimental-features"},{"title":"Go Fast","href":"/skip-go/advanced-transfer/go-fast"}]},{"group":"Advanced Swapping","pages":[{"title":"Understanding Quote Quality Metrics","href":"/skip-go/advanced-swapping/understanding-quote-quality-metrics"},{"title":"`allow_unsafe`: Preventing \u0026 Handling Bad Execution","href":"/skip-go/advanced-swapping/allow_unsafe-preventing-handling-bad-execution"},{"title":"SAFE Swapping: How to Protect Users from Bad Trades","href":"/skip-go/advanced-swapping/safe-swapping-how-to-protect-users-from-harming-themselves"},{"title":"Smart Swap","href":"/skip-go/advanced-swapping/smart-swap-options"}]},{"group":"Support Requirements","pages":[{"title":"Chain Support Requirements","href":"/skip-go/support-requirements/chain-support-requirements"},{"title":"Token \u0026 Route Support Requirements","href":"/skip-go/support-requirements/token-support-requirements"},{"title":"Skip Go Asset Registry \u0026 Overrides","href":"/skip-go/support-requirements/asset-registry-overrides"},{"title":"Swap Venue Requirements","href":"/skip-go/support-requirements/swap-venue-requirements"},{"title":"Chain Integration Request","url":"https://42jzxo.share-na2.hsforms.com/2BKju688uROaORNxmEgY2Ug","href":"/skip-go/support-requirements/chain-integration-request"}]},{"group":"Eureka","pages":[{"title":"Overview","href":"/skip-go/eureka/eureka-overview"},{"title":"Technical Overview","href":"/skip-go/eureka/eureka-tech-overview"},{"title":"Integration Guide","href":"/skip-go/eureka/integration-guide"},{"title":"Custom ERC20 Integration","href":"/skip-go/eureka/custom-erc20-integration"},{"title":"Security Properties","href":"/skip-go/eureka/security-properties"},{"title":"Contract Addresses","href":"/skip-go/eureka/contract-addresses"}]}]},{"tab":"API Reference","groups":[{"group":"Prod Endpoints","pages":[{"group":"Info","pages":[{"title":"Get /v2/info/chains","openapi":"swagger get /v2/info/chains","href":"/skip-go/api-reference/prod/info/get-v2infochains"},{"title":"Get /v2/info/bridges","openapi":"swagger get /v2/info/bridges","href":"/skip-go/api-reference/prod/info/get-v2infobridges"},{"title":"Post /v2/info/balances","openapi":"swagger post /v2/info/balances","href":"/skip-go/api-reference/prod/info/post-v2infobalances"}]},{"group":"Fungible","pages":[{"title":"Get /v2/fungible/venues","openapi":"swagger get /v2/fungible/venues","href":"/skip-go/api-reference/prod/fungible/get-v2fungiblevenues"},{"title":"Get /v2/fungible/assets","openapi":"swagger get /v2/fungible/assets","href":"/skip-go/api-reference/prod/fungible/get-v2fungibleassets"},{"title":"Post /v2/fungible/assets_from_source","openapi":"swagger post /v2/fungible/assets_from_source","href":"/skip-go/api-reference/prod/fungible/post-v2fungibleassets_from_source"},{"title":"Post /v2/fungible/route","openapi":"swagger post /v2/fungible/route","href":"/skip-go/api-reference/prod/fungible/post-v2fungibleroute"},{"title":"Post /v2/fungible/msgs","openapi":"swagger post /v2/fungible/msgs","href":"/skip-go/api-reference/prod/fungible/post-v2fungiblemsgs"},{"title":"Post /v2/fungible/msgs_direct","openapi":"swagger post /v2/fungible/msgs_direct","href":"/skip-go/api-reference/prod/fungible/post-v2fungiblemsgs_direct"},{"title":"Post /v2/fungible/ibc_origin_assets","openapi":"swagger post /v2/fungible/ibc_origin_assets","href":"/skip-go/api-reference/prod/fungible/post-v2fungibleibc_origin_assets"},{"title":"Post /v2/fungible/assets_between_chains","openapi":"swagger post /v2/fungible/assets_between_chains","href":"/skip-go/api-reference/prod/fungible/post-v2fungibleassets_between_chains"}]},{"group":"Transaction","pages":[{"title":"Post /v2/tx/submit","openapi":"swagger post /v2/tx/submit","href":"/skip-go/api-reference/prod/transaction/post-v2txsubmit"},{"title":"Post /v2/tx/track","openapi":"swagger post /v2/tx/track","href":"/skip-go/api-reference/prod/transaction/post-v2txtrack"},{"title":"Get /v2/tx/status","openapi":"swagger get /v2/tx/status","href":"/skip-go/api-reference/prod/transaction/get-v2txstatus"}]}]},{"group":"Reference Guides","pages":[{"title":"API Error Codes \u0026 Status Messages","href":"/skip-go/api-reference/error-codes"}]}]}]},{"dropdown":"Cosmos Hub","icon":"https://mintlify.s3.us-west-1.amazonaws.com/cosmos-docs/assets/icons/hub.svg","hidden":false,"versions":[{"version":"Latest","default":true,"tag":"Latest","tabs":[{"tab":"Documentation","groups":[{"group":"Cosmos Hub","pages":[{"group":"Start here","pages":[{"title":"Cosmos Hub operator docs","href":"/hub/latest"},{"title":"What is gaia","href":"/hub/latest/getting-started/what-is-gaia"},{"title":"Versions","href":"/hub/latest/start/versions"}]},{"group":"Run a node","pages":[{"title":"System requirements","href":"/hub/latest/getting-started/system-requirements"},{"title":"Install gaiad","href":"/hub/latest/getting-started/installation"},{"title":"Join mainnet","href":"/hub/latest/hub-tutorials/join-mainnet"},{"title":"Sync a node","href":"/hub/latest/node/sync"},{"title":"Database backends","href":"/hub/latest/node/database"},{"title":"Run gaiad as a service","href":"/hub/latest/node/service"},{"title":"Join the testnet","href":"/hub/latest/hub-tutorials/join-testnet"}]},{"group":"Upgrade a node","pages":[{"title":"Upgrade a node","href":"/hub/latest/hub-tutorials/upgrade-node"},{"title":"Upgrade history","href":"/hub/latest/upgrade/history"}]},{"group":"Run a validator","pages":[{"title":"Validator overview","href":"/hub/latest/validators/overview"},{"title":"Validator onboarding checklist","href":"/hub/latest/validators/README"},{"title":"Create and manage a validator","href":"/hub/latest/validators/validator-setup"},{"title":"Validator security","href":"/hub/latest/validators/security"},{"title":"Remote signing","href":"/hub/latest/validators/remote-signing"},{"title":"Monitoring","href":"/hub/latest/validators/monitoring"},{"title":"Validator FAQ","href":"/hub/latest/validators/validator-faq"}]},{"group":"Run public infrastructure","pages":[{"title":"Run public endpoints","href":"/hub/latest/infrastructure/endpoints"},{"title":"Snapshots","href":"/hub/latest/infrastructure/snapshots"},{"title":"Peering","href":"/hub/latest/infrastructure/peering"},{"title":"Relaying","href":"/hub/latest/infrastructure/relaying"},{"title":"Archive nodes and chain archives","href":"/hub/latest/resources/archives"}]},{"group":"Delegate and stake","pages":[{"title":"Delegate and stake","href":"/hub/latest/delegators/README"},{"title":"Delegator CLI guide","href":"/hub/latest/delegators/delegator-guide-cli"},{"title":"Liquid staking module","href":"/hub/latest/modules/liquid"},{"title":"Delegator security","href":"/hub/latest/delegators/delegator-security"},{"title":"Delegator FAQ","href":"/hub/latest/delegators/delegator-faq"}]},{"group":"Governance","pages":[{"title":"Governance process","href":"/hub/latest/governance/process"},{"title":"Submitting a proposal","href":"/hub/latest/governance/submitting"},{"group":"Proposal types","pages":[{"title":"Proposal types","href":"/hub/latest/governance/proposal-types/README"},{"title":"Text proposals","href":"/hub/latest/governance/proposal-types/text-prop"},{"title":"Parameter change proposals","href":"/hub/latest/governance/proposal-types/param-change"},{"title":"Software upgrade proposals","href":"/hub/latest/governance/proposal-types/software-upgrade"},{"title":"Community pool spend","href":"/hub/latest/governance/proposal-types/community-pool-spend"}]}]},{"group":"Reference","pages":[{"title":"gaiad reference","href":"/hub/latest/hub-tutorials/gaiad"},{"group":"Modules","pages":[{"title":"Modules on the Hub","href":"/hub/latest/modules/README"},{"title":"Tokenfactory module","href":"/hub/latest/modules/tokenfactory"},{"title":"Fee market module","href":"/hub/latest/modules/feemarket"},{"title":"Metaprotocols module","href":"/hub/latest/modules/metaprotocols"}]},{"title":"Genesis file","href":"/hub/latest/resources/genesis"},{"title":"Build and verify gaiad","href":"/hub/latest/resources/reproducible-builds"},{"group":"Wallets","pages":[{"title":"HD wallets","href":"/hub/latest/resources/hd-wallets"},{"title":"Ledger hardware wallets","href":"/hub/latest/resources/ledger"}]},{"group":"Architecture and ADRs","pages":[{"title":"Architecture Decision Records (ADR)","href":"/hub/latest/architecture/README"},{"title":"ADR Creation Process","href":"/hub/latest/architecture/PROCESS"},{"title":"Architecture Decision Records (ADR)","href":"/hub/latest/architecture/adr/README"},{"title":"ADR Creation Process","href":"/hub/latest/architecture/adr/PROCESS"},{"title":"ADR 001: Interchain Accounts","href":"/hub/latest/architecture/adr/adr-001-interchain-accounts"},{"title":"ADR 002: Globalfee Module [DEPRECATED]","href":"/hub/latest/architecture/adr/adr-002-globalfee"},{"title":"ADR 003: Interchain Accounts Controller Module","href":"/hub/latest/architecture/adr/adr-003-ica-controller"},{"title":null,"href":"/hub/latest/architecture/templates/adr-template"}]}]}]}]}]},{"version":"next","tag":"Unreleased","pages":[{"title":"next","href":"/hub/next"}]},{"version":"v25","pages":[{"title":"v25","href":"/hub/v25/index"}]}]}]},"basePath":"","title":"Cosmos Blockchain Simulator - Cosmos Docs","buildId":"dpl_G9nrg4qeJSZtah1Ziwbc2n6WkLch","deploymentId":"dpl_G9nrg4qeJSZtah1Ziwbc2n6WkLch","dynamics":[],"chunks":[]}