x/nft is an implementation of a Cosmos SDK module, per ADR 43, that allows you to create nft classification, create nft, transfer nft, update nft, and support various queries by integrating the module. It is fully compatible with the ERC721 specification.
x/nft module defines a struct Class to describe the common characteristics of a class of nft, under this class, you can create a variety of nft, which is equivalent to an erc721 contract for Ethereum. The design is defined in the ADR 043.
The full name of NFT is Non-Fungible Tokens. Because of the irreplaceable nature of NFT, it means that it can be used to represent unique things. The nft implemented by this module is fully compatible with Ethereum ERC721 standard.
Class is mainly composed of id, name, symbol, description, uri, uri_hash,data where id is the unique identifier of the class, similar to the Ethereum ERC721 contract address, the others are optional.
NFT is mainly composed of class_id, id, uri, uri_hash and data. Among them, class_id and id are two-tuples that identify the uniqueness of nft, uri and uri_hash is optional, which identifies the off-chain storage location of the nft, and data is an Any type. Use Any chain of x/nft modules can be customized by extending this field
Since there is no extra field in NFT to indicate the owner of nft, an additional key-value pair is used to save the ownership of nft. With the transfer of nft, the key-value pair is updated synchronously.
TotalSupply is responsible for tracking the number of all nfts under a certain class. Mint operation is performed under the changed class, supply increases by one, burn operation, and supply decreases by one.
You can use the MsgSend message to transfer the ownership of nft. This is a function provided by the x/nft module. Of course, you can use the Transfer method to implement your own transfer logic, but you need to pay extra attention to the transfer permissions.The message handling should fail if:
{"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.4039","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":"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.53/build/modules/nft/README","slug":"/sdk/v0.53/build/modules/nft/README","pageMetadata":{"noindex":true,"canonical":"https://docs.cosmos.network/sdk/latest/","title":"x/nft","description":"## Abstract","href":"/sdk/v0.53/build/modules/nft/README"},"description":{"compiledSource":"\"use strict\";\nconst {jsx: _jsx} = arguments[0];\nconst {useMDXComponents: _provideComponents} = arguments[0];\nfunction _createMdxContent(props) {\n const _components = {\n h2: \"h2\",\n ..._provideComponents(),\n ...props.components\n };\n return _jsx(_components.h2, {\n children: \"Abstract\"\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`,br:`br`,code:`code`,li:`li`,p:`p`,ul:`ul`,..._provideComponents(),...props.components},{Heading,Warning}=_components;if(!Heading)_missingMdxReference(`Heading`,true);if(!Warning)_missingMdxReference(`Warning`,true);return _jsxs(_Fragment,{children:[_jsx(Heading,{level:`2`,id:`contents`,children:`Contents`}),`\n`,_jsx(Heading,{level:`2`,id:`abstract`,children:`Abstract`}),`\n`,_jsxs(_components.p,{children:[_jsx(_components.code,{children:`x/nft`}),` is an implementation of a Cosmos SDK module, per `,_jsx(_components.a,{href:`https://github.com/cosmos/cosmos-sdk/blob/main/docs/architecture/adr-043-nft-module.md`,children:`ADR 43`}),`, that allows you to create nft classification, create nft, transfer nft, update nft, and support various queries by integrating the module. It is fully compatible with the ERC721 specification.`]}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[_jsx(_components.a,{href:`#concepts`,children:`Concepts`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:_jsx(_components.a,{href:`#class`,children:`Class`})}),`\n`,_jsx(_components.li,{children:_jsx(_components.a,{href:`#nft`,children:`NFT`})}),`\n`]}),`\n`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.a,{href:`#state`,children:`State`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:_jsx(_components.a,{href:`#class-1`,children:`Class`})}),`\n`,_jsx(_components.li,{children:_jsx(_components.a,{href:`#nft-1`,children:`NFT`})}),`\n`,_jsx(_components.li,{children:_jsx(_components.a,{href:`#nftofclassbyowner`,children:`NFTOfClassByOwner`})}),`\n`,_jsx(_components.li,{children:_jsx(_components.a,{href:`#owner`,children:`Owner`})}),`\n`,_jsx(_components.li,{children:_jsx(_components.a,{href:`#totalsupply`,children:`TotalSupply`})}),`\n`]}),`\n`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.a,{href:`#messages`,children:`Messages`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:_jsx(_components.a,{href:`#msgsend`,children:`MsgSend`})}),`\n`]}),`\n`]}),`\n`,_jsx(_components.li,{children:_jsx(_components.a,{href:`#events`,children:`Events`})}),`\n`]}),`\n`,_jsx(Heading,{level:`2`,id:`concepts`,children:`Concepts`}),`\n`,_jsx(Heading,{level:`3`,id:`class`,children:`Class`}),`\n`,_jsxs(_components.p,{children:[_jsx(_components.code,{children:`x/nft`}),` module defines a struct `,_jsx(_components.code,{children:`Class`}),` to describe the common characteristics of a class of nft, under this class, you can create a variety of nft, which is equivalent to an erc721 contract for Ethereum. The design is defined in the `,_jsx(_components.a,{href:`https://github.com/cosmos/cosmos-sdk/blob/main/docs/architecture/adr-043-nft-module.md`,children:`ADR 043`}),`.`]}),`\n`,_jsx(Heading,{level:`3`,id:`nft`,children:`NFT`}),`\n`,_jsx(_components.p,{children:`The full name of NFT is Non-Fungible Tokens. Because of the irreplaceable nature of NFT, it means that it can be used to represent unique things. The nft implemented by this module is fully compatible with Ethereum ERC721 standard.`}),`\n`,_jsx(Heading,{level:`2`,id:`state`,children:`State`}),`\n`,_jsx(Heading,{level:`3`,id:`class-2`,children:`Class`}),`\n`,_jsxs(_components.p,{children:[`Class is mainly composed of `,_jsx(_components.code,{children:`id`}),`, `,_jsx(_components.code,{children:`name`}),`, `,_jsx(_components.code,{children:`symbol`}),`, `,_jsx(_components.code,{children:`description`}),`, `,_jsx(_components.code,{children:`uri`}),`, `,_jsx(_components.code,{children:`uri_hash`}),`,`,_jsx(_components.code,{children:`data`}),` where `,_jsx(_components.code,{children:`id`}),` is the unique identifier of the class, similar to the Ethereum ERC721 contract address, the others are optional.`]}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[`Class: `,_jsx(_components.code,{children:`0x01 | classID | -> ProtocolBuffer(Class)`})]}),`\n`]}),`\n`,_jsx(Heading,{level:`3`,id:`nft-2`,children:`NFT`}),`\n`,_jsxs(_components.p,{children:[`NFT is mainly composed of `,_jsx(_components.code,{children:`class_id`}),`, `,_jsx(_components.code,{children:`id`}),`, `,_jsx(_components.code,{children:`uri`}),`, `,_jsx(_components.code,{children:`uri_hash`}),` and `,_jsx(_components.code,{children:`data`}),`. Among them, `,_jsx(_components.code,{children:`class_id`}),` and `,_jsx(_components.code,{children:`id`}),` are two-tuples that identify the uniqueness of nft, `,_jsx(_components.code,{children:`uri`}),` and `,_jsx(_components.code,{children:`uri_hash`}),` is optional, which identifies the off-chain storage location of the nft, and `,_jsx(_components.code,{children:`data`}),` is an Any type. Use Any chain of `,_jsx(_components.code,{children:`x/nft`}),` modules can be customized by extending this field`]}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[`NFT: `,_jsx(_components.code,{children:`0x02 | classID | 0x00 | nftID |-> ProtocolBuffer(NFT)`})]}),`\n`]}),`\n`,_jsx(Heading,{level:`3`,id:`nftofclassbyowner`,children:`NFTOfClassByOwner`}),`\n`,_jsx(_components.p,{children:`NFTOfClassByOwner is mainly to realize the function of querying all nfts using classID and owner, without other redundant functions.`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[`NFTOfClassByOwner: `,_jsx(_components.code,{children:`0x03 | owner | 0x00 | classID | 0x00 | nftID |-> 0x01`})]}),`\n`]}),`\n`,_jsx(Heading,{level:`3`,id:`owner`,children:`Owner`}),`\n`,_jsx(_components.p,{children:`Since there is no extra field in NFT to indicate the owner of nft, an additional key-value pair is used to save the ownership of nft. With the transfer of nft, the key-value pair is updated synchronously.`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[`OwnerKey: `,_jsx(_components.code,{children:`0x04 | classID | 0x00 | nftID |-> owner`})]}),`\n`]}),`\n`,_jsx(Heading,{level:`3`,id:`totalsupply`,children:`TotalSupply`}),`\n`,_jsx(_components.p,{children:`TotalSupply is responsible for tracking the number of all nfts under a certain class. Mint operation is performed under the changed class, supply increases by one, burn operation, and supply decreases by one.`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[`OwnerKey: `,_jsx(_components.code,{children:`0x05 | classID |-> totalSupply`})]}),`\n`]}),`\n`,_jsx(Heading,{level:`2`,id:`messages`,children:`Messages`}),`\n`,_jsx(_components.p,{children:`In this section we describe the processing of messages for the NFT module.`}),`\n`,_jsx(Warning,{children:_jsxs(_components.p,{children:[`The validation of `,_jsx(_components.code,{children:`ClassID`}),` and `,_jsx(_components.code,{children:`NftID`}),` is left to the app developer.`,_jsx(_components.br,{}),`\n`,`The SDK does not provide any validation for these fields.`]})}),`\n`,_jsx(Heading,{level:`3`,id:`msgsend`,children:`MsgSend`}),`\n`,_jsxs(_components.p,{children:[`You can use the `,_jsx(_components.code,{children:`MsgSend`}),` message to transfer the ownership of nft. This is a function provided by the `,_jsx(_components.code,{children:`x/nft`}),` module. Of course, you can use the `,_jsx(_components.code,{children:`Transfer`}),` method to implement your own transfer logic, but you need to pay extra attention to the transfer permissions.`]}),`\n`,_jsx(_components.p,{children:`The message handling should fail if:`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[`provided `,_jsx(_components.code,{children:`ClassID`}),` does not exist.`]}),`\n`,_jsxs(_components.li,{children:[`provided `,_jsx(_components.code,{children:`Id`}),` does not exist.`]}),`\n`,_jsxs(_components.li,{children:[`provided `,_jsx(_components.code,{children:`Sender`}),` does not the owner of nft.`]}),`\n`]}),`\n`,_jsx(Heading,{level:`2`,id:`events`,children:`Events`}),`\n`,_jsxs(_components.p,{children:[`The nft module emits proto events defined in `,_jsx(_components.a,{href:`https://buf.build/cosmos/cosmos-sdk/docs/main:cosmos.nft.v1beta1`,children:`the Protobuf reference`}),`.`]})]})}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":"x/nft","description":"## Abstract","href":"/sdk/v0.53/build/modules/nft/README"}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[{"title":"Contents","slug":"contents","depth":2,"children":[]},{"title":"Abstract","slug":"abstract","depth":2,"children":[]},{"title":"Concepts","slug":"concepts","depth":2,"children":[{"title":"Class","slug":"class","depth":3,"children":[]},{"title":"NFT","slug":"nft","depth":3,"children":[]}]},{"title":"State","slug":"state","depth":2,"children":[{"title":"Class","slug":"class-2","depth":3,"children":[]},{"title":"NFT","slug":"nft-2","depth":3,"children":[]},{"title":"NFTOfClassByOwner","slug":"nftofclassbyowner","depth":3,"children":[]},{"title":"Owner","slug":"owner","depth":3,"children":[]},{"title":"TotalSupply","slug":"totalsupply","depth":3,"children":[]}]},{"title":"Messages","slug":"messages","depth":2,"children":[{"title":"MsgSend","slug":"msgsend","depth":3,"children":[]}]},{"title":"Events","slug":"events","depth":2,"children":[]}],"codeExamples":{}},"jsLinks":[],"subdomain":"cosmos-docs","siteName":"Cosmos Docs","title":"x/nft - 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/build/modules/nft/README","matchLevel":0},"v0.50":{"href":"/sdk/v0.50/build/modules/nft/README","matchLevel":1,"noindex":true,"canonicalOverride":true},"v0.47":{"href":"/sdk/v0.47/build/modules/nft/README","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-01-27T17:26:27.927Z","originalFileLocation":"sdk/v0.53/build/modules/nft/README.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=\"## Abstract\">\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=\"x/nft - 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=Open+Source+Modules\u0026amp;title=x%2Fnft\u0026amp;description=%23%23+Abstract\u0026amp;theme=fcf436d6188c17e0fd925a75\u0026amp;signature=39f5a9cc102497857091d87c369ffd850846640e90c40c87e7a8be0d1890b40d\">\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=\"x/nft - 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=Open+Source+Modules\u0026amp;title=x%2Fnft\u0026amp;description=%23%23+Abstract\u0026amp;theme=fcf436d6188c17e0fd925a75\u0026amp;signature=39f5a9cc102497857091d87c369ffd850846640e90c40c87e7a8be0d1890b40d\">\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.53/build/modules/nft/README.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","tabs":[{"tab":"Cosmos SDK","groups":[{"group":"Learn","pages":[{"title":"Cosmos SDK Documentation","href":"/sdk/v0.53/learn"},{"group":"Overview","expanded":true,"pages":[{"title":"The Cosmos Stack","href":"/sdk/v0.53/learn/intro/cosmos-stack"},{"title":"What is the Cosmos SDK","href":"/sdk/v0.53/learn/intro/overview"},{"title":"Introduction to Blockchains","href":"/sdk/v0.53/learn/intro/blockchain-basics"},{"title":"Cosmos SDK Architecture","href":"/sdk/v0.53/learn/intro/sdk-app-architecture"},{"title":"Main Components of the Cosmos SDK","href":"/sdk/v0.53/learn/intro/sdk-design"}]},{"group":"Fundamentals","pages":[{"title":"Anatomy of a Cosmos SDK Application","href":"/sdk/v0.53/learn/beginner/app-anatomy"},{"title":"Transaction Lifecycle","href":"/sdk/v0.53/learn/beginner/tx-lifecycle"},{"title":"Query Lifecycle","href":"/sdk/v0.53/learn/beginner/query-lifecycle"},{"title":"Accounts","href":"/sdk/v0.53/learn/beginner/accounts"},{"title":"Gas and Fees","href":"/sdk/v0.53/learn/beginner/gas-fees"}]},{"group":"In-depth Concepts","pages":[{"group":"Core Components","expanded":true,"pages":[{"title":"BaseApp","href":"/sdk/v0.53/learn/advanced/baseapp"},{"title":"Transactions","href":"/sdk/v0.53/learn/advanced/transactions"},{"title":"Context","href":"/sdk/v0.53/learn/advanced/context"},{"title":"Encoding","href":"/sdk/v0.53/learn/advanced/encoding"},{"title":"Store","href":"/sdk/v0.53/learn/advanced/store"},{"title":"Address Encoding","href":"/sdk/v0.53/build/spec/addresses/bech32"}]},{"group":"Security \u0026 Execution","expanded":true,"pages":[{"title":"Object-Capability Model","href":"/sdk/v0.53/learn/advanced/ocap"},{"title":"RunTx recovery middleware","href":"/sdk/v0.53/learn/advanced/runtx_middleware"}]},{"title":"Events","href":"/sdk/v0.53/learn/advanced/events"},{"title":"Node Client (Daemon)","href":"/sdk/v0.53/learn/advanced/node"},{"group":"Chain CLI \u0026 Endpoints","expanded":true,"pages":[{"title":"gRPC, REST, and CometBFT Endpoints","href":"/sdk/v0.53/learn/advanced/grpc_rest"},{"title":"Command-Line Interface","href":"/sdk/v0.53/learn/advanced/cli"},{"title":"AutoCLI","href":"/sdk/v0.53/learn/advanced/autocli"}]}]}]},{"group":"Building a Chain","pages":[{"title":"Overview","href":"/sdk/v0.53/build"},{"group":"Chain Development","pages":[{"title":"Overview of app.go","href":"/sdk/v0.53/build/building-apps/app-go"},{"title":"What is runtime?","href":"/sdk/v0.53/build/building-apps/runtime"},{"title":"Overview of app_di.go","href":"/sdk/v0.53/build/building-apps/app-go-di"},{"title":"Application Mempool","href":"/sdk/v0.53/build/building-apps/app-mempool"},{"title":"Chain Upgrades","href":"/sdk/v0.53/build/building-apps/app-upgrade"},{"title":"Vote Extensions","href":"/sdk/v0.53/build/building-apps/vote-extensions"},{"title":"Application Testnets","href":"/sdk/v0.53/build/building-apps/app-testnet"}]},{"title":"Building a Transaction","href":"/sdk/v0.53/tutorials/transactions/building-a-transaction"},{"title":"Cosmos Blockchain Simulator","href":"/sdk/v0.53/learn/advanced/simulation"},{"group":"SDK Packages","pages":[{"title":"Packages","href":"/sdk/v0.53/build/packages"},{"title":"Depinject","href":"/sdk/v0.53/build/packages/depinject"},{"title":"Collections","href":"/sdk/v0.53/build/packages/collections"}]},{"group":"ABCI","pages":[{"title":"Introduction","href":"/sdk/v0.53/build/abci/introduction"},{"title":"Prepare Proposal","href":"/sdk/v0.53/build/abci/prepare-proposal"},{"title":"Process Proposal","href":"/sdk/v0.53/build/abci/process-proposal"},{"title":"Vote Extensions","href":"/sdk/v0.53/build/abci/vote-extensions"},{"title":"CheckTx","href":"/sdk/v0.53/build/abci/checktx"}]}]},{"group":"Building a Module","pages":[{"group":"Module Development","pages":[{"title":"Introduction to Cosmos SDK Modules","href":"/sdk/v0.53/build/building-modules/intro"},{"group":"Core Architecture","expanded":true,"pages":[{"title":"Recommended Folder Structure","href":"/sdk/v0.53/build/building-modules/structure"},{"title":"Module Manager","href":"/sdk/v0.53/build/building-modules/module-manager"},{"title":"Keepers","href":"/sdk/v0.53/build/building-modules/keeper"},{"title":"Module Interfaces","href":"/sdk/v0.53/build/building-modules/module-interfaces"}]},{"group":"Messages \u0026 Queries","expanded":true,"pages":[{"title":"Messages and Queries","href":"/sdk/v0.53/build/building-modules/messages-and-queries"},{"title":"Msg Services","href":"/sdk/v0.53/build/building-modules/msg-services"},{"title":"Query Services","href":"/sdk/v0.53/build/building-modules/query-services"},{"title":"ProtocolBuffer Annotations","href":"/sdk/v0.53/build/building-modules/protobuf-annotations"}]},{"group":"Lifecycle \u0026 State","expanded":true,"pages":[{"title":"Module Genesis","href":"/sdk/v0.53/build/building-modules/genesis"},{"title":"PreBlocker","href":"/sdk/v0.53/build/building-modules/preblock"},{"title":"BeginBlocker and EndBlocker","href":"/sdk/v0.53/build/building-modules/beginblock-endblock"},{"title":"Invariants","href":"/sdk/v0.53/build/building-modules/invariants"}]},{"group":"Advanced Development","expanded":true,"pages":[{"title":"Modules depinject-ready","href":"/sdk/v0.53/build/building-modules/depinject"},{"title":"Errors","href":"/sdk/v0.53/build/building-modules/errors"},{"title":"Upgrading Modules","href":"/sdk/v0.53/build/building-modules/upgrade"},{"title":"Testing","href":"/sdk/v0.53/build/building-modules/testing"},{"title":"Module Simulation","href":"/sdk/v0.53/build/building-modules/simulator"}]}]},{"group":"Open Source Modules","pages":[{"title":"List of Modules","href":"/sdk/v0.53/build/modules/modules"},{"group":"x/auth","pages":[{"title":"x/auth","href":"/sdk/v0.53/build/modules/auth/auth"},{"title":"x/auth/vesting","href":"/sdk/v0.53/build/modules/auth/vesting"},{"title":"x/auth/tx","href":"/sdk/v0.53/build/modules/auth/tx"}]},{"title":"x/authz","href":"/sdk/v0.53/build/modules/authz/README"},{"title":"x/bank","href":"/sdk/v0.53/build/modules/bank/README"},{"title":"x/consensus","href":"/sdk/v0.53/build/modules/consensus/README"},{"title":"x/crisis","href":"/sdk/v0.53/build/modules/crisis/README"},{"title":"x/distribution","href":"/sdk/v0.53/build/modules/distribution/README"},{"title":"x/epochs","href":"/sdk/v0.53/build/modules/epochs/README"},{"title":"x/evidence","href":"/sdk/v0.53/build/modules/evidence/README"},{"title":"x/feegrant","href":"/sdk/v0.53/build/modules/feegrant/README"},{"title":"x/gov","href":"/sdk/v0.53/build/modules/gov/README"},{"title":"x/group","href":"/sdk/v0.53/build/modules/group/README"},{"title":"x/mint","description":"The x/mint module handles the regular minting of new tokens in a configurable manner.","href":"/sdk/v0.53/build/modules/mint/README"},{"title":"x/nft","href":"/sdk/v0.53/build/modules/nft/README"},{"title":"x/params","description":"NOTE: x/params is deprecated as of Cosmos SDK v0.53 and will be removed in the next release.","href":"/sdk/v0.53/build/modules/params/README"},{"title":"x/protocolpool","href":"/sdk/v0.53/build/modules/protocolpool/README"},{"title":"x/slashing","href":"/sdk/v0.53/build/modules/slashing/README"},{"title":"x/staking","href":"/sdk/v0.53/build/modules/staking/README"},{"title":"x/upgrade","href":"/sdk/v0.53/build/modules/upgrade/README"},{"title":"x/circuit","href":"/sdk/v0.53/build/modules/circuit/README"},{"title":"x/genutil","href":"/sdk/v0.53/build/modules/genutil/README"}]}]},{"group":"Run a Node","pages":[{"title":"Node Tutorial","href":"/sdk/v0.53/tutorials"},{"group":"Get Started","pages":[{"title":"Prerequisites","href":"/sdk/v0.53/user/run-node/prerequisites"},{"title":"Setting up the keyring","href":"/sdk/v0.53/user/run-node/keyring"},{"title":"Running a Node","href":"/sdk/v0.53/user/run-node/run-node"},{"title":"Interacting with a Node","href":"/sdk/v0.53/user/run-node/interact-node"},{"title":"Generating, Signing and Broadcasting Transactions","href":"/sdk/v0.53/user/run-node/txs"}]},{"group":"Testnet \u0026 Production","pages":[{"title":"Configuration","href":"/sdk/v0.53/learn/advanced/config"},{"title":"Running a Testnet","href":"/sdk/v0.53/user/run-node/run-testnet"},{"title":"Running in Production","href":"/sdk/v0.53/user/run-node/run-production"}]},{"title":"Telemetry","href":"/sdk/v0.53/learn/advanced/telemetry"},{"group":"Upgrades \u0026 Migrations","pages":[{"title":"In-Place Store Migrations","href":"/sdk/v0.53/learn/advanced/upgrade"},{"title":"Cosmovisor","href":"/sdk/v0.53/build/tooling/cosmovisor"}]}]},{"group":"How-to Guides","pages":[{"title":"Guides Intro","href":"/sdk/v0.53/user"},{"group":"Vote Extensions - Auction Front-Running","pages":[{"title":"Getting Started","href":"/sdk/v0.53/tutorials/vote-extensions/auction-frontrunning/getting-started"},{"title":"Understanding Front-Running and more","href":"/sdk/v0.53/tutorials/vote-extensions/auction-frontrunning/understanding-frontrunning"},{"title":"Mitigating Front-running with Vote Extensions","href":"/sdk/v0.53/tutorials/vote-extensions/auction-frontrunning/mitigating-front-running-with-vote-extensions"},{"title":"Mitigating Front-running with Vote Extensions","href":"/sdk/v0.53/tutorials/vote-extensions/auction-frontrunning/mitigating-front-running-with-vote-extesions"},{"title":"Demo of Mitigating Front-Running with Vote Extensions","href":"/sdk/v0.53/tutorials/vote-extensions/auction-frontrunning/demo-of-mitigating-front-running"}]},{"group":"Vote Extensions - Oracle","pages":[{"title":"Getting Started","href":"/sdk/v0.53/tutorials/vote-extensions/oracle/getting-started"},{"title":"What is an Oracle?","href":"/sdk/v0.53/tutorials/vote-extensions/oracle/what-is-an-oracle"},{"title":"Implementing Vote Extensions","href":"/sdk/v0.53/tutorials/vote-extensions/oracle/implementing-vote-extensions"},{"title":"Testing the Oracle Module","href":"/sdk/v0.53/tutorials/vote-extensions/oracle/testing-oracle"}]}]},{"group":"Tooling","pages":[{"title":"Tool Guide","href":"/sdk/v0.53/build/tooling"},{"title":"Protocol Buffers","href":"/sdk/v0.53/build/tooling/protobuf"},{"title":"Confix","href":"/sdk/v0.53/build/tooling/confix"}]},{"group":"Reference","pages":[{"group":"Migrations","pages":[{"title":"SDK Migrations","href":"/sdk/v0.53/build/migrations/intro"},{"title":"Upgrade Reference","href":"/sdk/v0.53/build/migrations/upgrade-reference"},{"title":"Upgrade Guide","href":"/sdk/v0.53/build/migrations/upgrade-guide"}]},{"group":"ADRs","pages":[{"title":"Architecture Decision Records (ADR)","href":"/sdk/v0.53/build/architecture/README"},{"title":"ADR Creation Process","href":"/sdk/v0.53/build/architecture/PROCESS"},{"title":"ADR 002: SDK Documentation Structure","href":"/sdk/v0.53/build/architecture/adr-002-docs-structure"},{"title":"ADR 003: Dynamic Capability Store","href":"/sdk/v0.53/build/architecture/adr-003-dynamic-capability-store"},{"title":"ADR 004: Split Denomination Keys","href":"/sdk/v0.53/build/architecture/adr-004-split-denomination-keys"},{"title":"ADR 006: Secret Store Replacement","href":"/sdk/v0.53/build/architecture/adr-006-secret-store-replacement"},{"title":"ADR 007: Specialization Groups","href":"/sdk/v0.53/build/architecture/adr-007-specialization-groups"},{"title":"ADR 008: Decentralized Computer Emergency Response Team (dCERT) Group","href":"/sdk/v0.53/build/architecture/adr-008-dCERT-group"},{"title":"ADR 009: Evidence Module","href":"/sdk/v0.53/build/architecture/adr-009-evidence-module"},{"title":"ADR 010: Modular AnteHandler","href":"/sdk/v0.53/build/architecture/adr-010-modular-antehandler"},{"title":"ADR 011: Generalize Genesis Accounts","href":"/sdk/v0.53/build/architecture/adr-011-generalize-genesis-accounts"},{"title":"ADR 012: State Accessors","href":"/sdk/v0.53/build/architecture/adr-012-state-accessors"},{"title":"ADR 013: Observability","href":"/sdk/v0.53/build/architecture/adr-013-metrics"},{"title":"ADR 14: Proportional Slashing","href":"/sdk/v0.53/build/architecture/adr-014-proportional-slashing"},{"title":"ADR 016: Validator Consensus Key Rotation","href":"/sdk/v0.53/build/architecture/adr-016-validator-consensus-key-rotation"},{"title":"ADR 17: Historical Header Module","href":"/sdk/v0.53/build/architecture/adr-017-historical-header-module"},{"title":"ADR 18: Extendable Voting Periods","href":"/sdk/v0.53/build/architecture/adr-018-extendable-voting-period"},{"title":"ADR 019: Protocol Buffer State Encoding","href":"/sdk/v0.53/build/architecture/adr-019-protobuf-state-encoding"},{"title":"ADR 020: Protocol Buffer Transaction Encoding","href":"/sdk/v0.53/build/architecture/adr-020-protobuf-transaction-encoding"},{"title":"ADR 021: Protocol Buffer Query Encoding","href":"/sdk/v0.53/build/architecture/adr-021-protobuf-query-encoding"},{"title":"ADR 022: Custom BaseApp panic handling","href":"/sdk/v0.53/build/architecture/adr-022-custom-panic-handling"},{"title":"ADR 023: Protocol Buffer Naming and Versioning Conventions","href":"/sdk/v0.53/build/architecture/adr-023-protobuf-naming"},{"title":"ADR 024: Coin Metadata","href":"/sdk/v0.53/build/architecture/adr-024-coin-metadata"},{"title":"ADR 027: Deterministic Protobuf Serialization","href":"/sdk/v0.53/build/architecture/adr-027-deterministic-protobuf-serialization"},{"title":"ADR 028: Public Key Addresses","href":"/sdk/v0.53/build/architecture/adr-028-public-key-addresses"},{"title":"ADR 029: Fee Grant Module","href":"/sdk/v0.53/build/architecture/adr-029-fee-grant-module"},{"title":"ADR 030: Authorization Module","href":"/sdk/v0.53/build/architecture/adr-030-authz-module"},{"title":"ADR 031: Protobuf Msg Services","href":"/sdk/v0.53/build/architecture/adr-031-msg-service"},{"title":"ADR 032: Typed Events","href":"/sdk/v0.53/build/architecture/adr-032-typed-events"},{"title":"ADR 033: Protobuf-based Inter-Module Communication","href":"/sdk/v0.53/build/architecture/adr-033-protobuf-inter-module-comm"},{"title":"ADR 034: Account Rekeying","href":"/sdk/v0.53/build/architecture/adr-034-account-rekeying"},{"title":"ADR 035: Rosetta API Support","href":"/sdk/v0.53/build/architecture/adr-035-rosetta-api-support"},{"title":"ADR 036: Arbitrary Message Signature Specification","href":"/sdk/v0.53/build/architecture/adr-036-arbitrary-signature"},{"title":"ADR 037: Governance split votes","href":"/sdk/v0.53/build/architecture/adr-037-gov-split-vote"},{"title":"ADR 038: KVStore state listening","href":"/sdk/v0.53/build/architecture/adr-038-state-listening"},{"title":"ADR 039: Epoched Staking","href":"/sdk/v0.53/build/architecture/adr-039-epoched-staking"},{"title":"ADR 040: Storage and SMT State Commitments","href":"/sdk/v0.53/build/architecture/adr-040-storage-and-smt-state-commitments"},{"title":"ADR 041: In-Place Store Migrations","href":"/sdk/v0.53/build/architecture/adr-041-in-place-store-migrations"},{"title":"ADR 042: Group Module","href":"/sdk/v0.53/build/architecture/adr-042-group-module"},{"title":"ADR 43: NFT Module","href":"/sdk/v0.53/build/architecture/adr-043-nft-module"},{"title":"ADR 044: Guidelines for Updating Protobuf Definitions","href":"/sdk/v0.53/build/architecture/adr-044-protobuf-updates-guidelines"},{"title":null,"href":"/sdk/v0.53/build/architecture/adr-045-check-delivertx-middlewares"},{"title":"ADR 046: Module Params","href":"/sdk/v0.53/build/architecture/adr-046-module-params"},{"title":"ADR 047: Extend Upgrade Plan","href":"/sdk/v0.53/build/architecture/adr-047-extend-upgrade-plan"},{"title":"ADR 048: Multi Tire Gas Price System","href":"/sdk/v0.53/build/architecture/adr-048-consensus-fees"},{"title":"ADR 049: State Sync Hooks","href":"/sdk/v0.53/build/architecture/adr-049-state-sync-hooks"},{"title":"ADR 050: SIGN_MODE_TEXTUAL: Annex 1 Value Renderers","href":"/sdk/v0.53/build/architecture/adr-050-sign-mode-textual-annex1"},{"title":"ADR 050: SIGN_MODE_TEXTUAL: Annex 2 XXX","href":"/sdk/v0.53/build/architecture/adr-050-sign-mode-textual-annex2"},{"title":"ADR 050: SIGN_MODE_TEXTUAL","href":"/sdk/v0.53/build/architecture/adr-050-sign-mode-textual"},{"title":"ADR 053: Go Module Refactoring","href":"/sdk/v0.53/build/architecture/adr-053-go-module-refactoring"},{"title":"ADR 054: Semver Compatible SDK Modules","href":"/sdk/v0.53/build/architecture/adr-054-semver-compatible-modules"},{"title":"ADR 055: ORM","href":"/sdk/v0.53/build/architecture/adr-055-orm"},{"title":"ADR 057: App Wiring","href":"/sdk/v0.53/build/architecture/adr-057-app-wiring"},{"title":"ADR 058: Auto-Generated CLI","href":"/sdk/v0.53/build/architecture/adr-058-auto-generated-cli"},{"title":"ADR 059: Test Scopes","href":"/sdk/v0.53/build/architecture/adr-059-test-scopes"},{"title":"ADR 60: ABCI 1.0 Integration (Phase I)","href":"/sdk/v0.53/build/architecture/adr-060-abci-1.0"},{"title":"ADR ADR-061: Liquid Staking","href":"/sdk/v0.53/build/architecture/adr-061-liquid-staking"},{"title":"ADR 062: Collections, a simplified storage layer for cosmos-sdk modules.","href":"/sdk/v0.53/build/architecture/adr-062-collections-state-layer"},{"title":"ADR 063: Core Module API","href":"/sdk/v0.53/build/architecture/adr-063-core-module-api"},{"title":"ADR 64: ABCI 2.0 Integration (Phase II)","href":"/sdk/v0.53/build/architecture/adr-064-abci-2.0"},{"title":"ADR-065: Store V2","href":"/sdk/v0.53/build/architecture/adr-065-store-v2"},{"title":"ADR 068: Preblock","href":"/sdk/v0.53/build/architecture/adr-068-preblock"},{"title":"ADR 070: Unordered Transactions","href":"/sdk/v0.53/build/architecture/adr-070-unordered-account"},{"title":"Cosmos SDK Transaction Malleability Risk Review and Recommendations","href":"/sdk/v0.53/build/architecture/adr-076-tx-malleability"}]},{"group":"RFCs","pages":[{"title":"Requests for Comments","href":"/sdk/v0.53/build/rfc"},{"title":"RFC Creation Process","href":"/sdk/v0.53/build/rfc/PROCESS"},{"title":"RFC 001: Transaction Validation","href":"/sdk/v0.53/build/rfc/rfc-001-tx-validation"}]},{"group":"Specifications","pages":[{"title":"Specifications","href":"/sdk/v0.53/build/spec"},{"title":"Specification of Modules","href":"/sdk/v0.53/build/spec/SPEC_MODULE"},{"title":"What is an SDK standard?","href":"/sdk/v0.53/build/spec/SPEC_STANDARD"},{"group":"Store","pages":[{"title":"Store","href":"/sdk/v0.53/build/spec/store/store"},{"title":"Inter-block Cache","href":"/sdk/v0.53/build/spec/store/interblock-cache"}]}]},{"group":"API Documentation","pages":[{"title":"Protobuf Documentation","href":"/sdk/v0.53/learn/advanced/proto-docs"}]}]},{"group":"Security","pages":[{"title":"Security and Maintenance Policy","href":"/sdk/v0.53/security/security-policy"},{"title":"Bug Bounty Program","href":"/sdk/v0.53/security/bug-bounty"},{"title":"Security Audits","href":"/sdk/v0.53/security/audits"}]}]},{"tab":"Changelog","pages":[{"title":"Changelog","href":"/sdk/v0.53/changelog/release-notes"}]}]},{"version":"v0.50","pages":[{"title":"v0.50","href":"/sdk/v0.50/build/modules/nft/README"}]},{"version":"v0.47","pages":[{"title":"v0.47","href":"/sdk/v0.47/build/modules/nft/README"}]}]},{"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/index"}]},{"version":"v25","pages":[{"title":"v25","href":"/hub/v25/index"}]}]}]},"basePath":"","title":"x/nft - Cosmos Docs","buildId":"dpl_77Hw7ZuAABM8E3WMbYAf2ohQCr3v","deploymentId":"dpl_77Hw7ZuAABM8E3WMbYAf2ohQCr3v","dynamics":[],"chunks":[]}