Follow the start developing instructions to spin up a local chain.The dev command runs the scripts/deploy_localhost script internally, which deploys all contracts in the correct sequence.
When working on your own smart contracts, update scripts/deploy_localhost to deploy them in the right order.
Add your login email, password, and workspace name to the .env file in the smart-contracts directory.
These values can also be passed as flags to the dev command: --ethernal-login-email, --ethernal-login-password, and --ethernal-workspace. These flags override the environment variables if both are set.
{"docsConfig":{"theme":"aspen","$schema":"https://mintlify.com/docs.json","name":"Polygon Developer Docs","colors":{"primary":"#670DE5","light":"#9551F5","dark":"#500AB2"},"logo":{"light":"https://mintcdn.com/polygon-labs/ll1LL3IdpC3YxXZu/logo/light.svg?fit=max\u0026auto=format\u0026n=ll1LL3IdpC3YxXZu\u0026q=85\u0026s=d54ddb30492807a0eadf38093c075f2f","dark":"https://mintcdn.com/polygon-labs/ll1LL3IdpC3YxXZu/logo/dark.svg?fit=max\u0026auto=format\u0026n=ll1LL3IdpC3YxXZu\u0026q=85\u0026s=3b2b67f82ff1720328da11b176a86499"},"favicon":"https://mintcdn.com/polygon-labs/neKXk5towK-oBDip/favicon.png?fit=max\u0026auto=format\u0026n=neKXk5towK-oBDip\u0026q=85\u0026s=64034729f6d0b52274b3093da8c47b2c","api":{"openapi":"api-reference/openapi.yaml","params":{"expanded":"all"},"playground":{"display":"interactive"},"mdx":{"server":["https://sandbox-api.polygon.technology/v0.13","https://api.polygon.technology/v0.13"]}},"appearance":{"default":"light"},"navbar":{"links":[{"href":"/resources/build-with-ai","label":"Build with AI"},{"href":"https://polygon.technology/get-access?utm_source=docs\u0026utm_medium=navbar\u0026utm_campaign=oms_access","label":"Request OMS Access"}]},"footer":{"socials":{"x":"https://x.com/0xPolygon","github":"https://github.com/0xPolygon","linkedin":"https://www.linkedin.com/company/polygonlabs","discord":"https://discord.com/invite/polygon-support-635865020172861441"},"links":[{"items":[{"label":"Support","href":"https://support.polygon.technology/support/home"}]}]},"fonts":{"family":"Fustat"},"integrations":{"ga4":{"measurementId":"G-RJ6JC0EEY5"}},"contextual":{"options":["copy","view","chatgpt","claude"],"display":"header"},"styling":{"latex":true},"navigation":{"pages":[]}},"deployment":{"deploymentMetadataValue":{"subdomain":"polygon-labs","hasAudioNarration":false,"actualSubdomain":"polygon-labs","customDomains":["docs.polygon.technology"],"gitSource":{"type":"github","owner":"0xpolygon","repo":"new-polygon-docs","deployBranch":"main","contentDirectory":"","isPrivate":true,"mountPath":"","label":""},"chroma":{"liveDeploymentHistoryId":"6ae227de12cf5a20bf48f656","collectionId":"5a6bdf1b-e2a5-41d4-822f-a5b676cf4ba1","schemaVersion":"v3","latestBuiltDeploymentHistoryId":"6ae227de12cf5a20bf48f656"},"feedback":{"contextualFeedback":{"allowEmail":true},"thumbs":true,"agentFeedback":true},"entitlements":{"AI_CHAT":{"status":"ENABLED"},"REMOVE_BRANDING":{"status":"ENABLED"},"CONTEXTUAL_FEEDBACK":{"status":"ENABLED"},"CODE_SNIPPET_FEEDBACK":{"status":"ENABLED"},"WEB_MCP":{"status":"ENABLED"},"NARRATION":{"status":"ENABLED"}},"buildId":"6ae3128c90bdcff7cbc2fb55","clientVersion":"0.0.4006","searchFilterCounts":[{"language":"default","tag":"Polygon Chain","count":385},{"language":"default","tag":"Wallets","count":164},{"language":"default","tag":"Developer Tools","count":94},{"language":"default","tag":"API Reference","count":78},{"language":"default","tag":"Agglayer","count":73},{"language":"default","tag":"Platform","count":64},{"language":"default","tag":"Matic.js","count":59},{"language":"default","tag":"SDK","count":57},{"language":"default","tag":"Non-custodial","count":55},{"language":"default","tag":"Guides","count":46}]},"assistantConfig":{"enableAskAiButton":false,"enableStarterQuestions":true,"enableContextualStarterQuestions":true,"enableAskAiSearchBar":true,"deflection":{"enabled":true,"email":"support@polygon.technology","showHelpButton":true}},"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":"pause-universal-search-reconcile","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":"per-site-search-delta","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":"editor-private-page-search","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":"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}],"starterQuestions":[{"_id":"69cbd3d67f226f107dbd9b72","deploymentId":"69a9bcc427671ec5a2e05f92","questionText":"Can I move assets between different chains with OMS?","status":"active","generatedBy":"manual","createdAt":"2026-03-31T14:01:58.134Z","updatedAt":"2026-03-31T14:01:58.134Z","__v":0},{"_id":"69cbd3b07f226f107dbd9a9b","deploymentId":"69a9bcc427671ec5a2e05f92","questionText":"What are my options for integrating a wallet?","status":"active","generatedBy":"manual","createdAt":"2026-03-31T14:01:20.206Z","updatedAt":"2026-03-31T14:01:20.206Z","__v":0},{"_id":"69cbd3737f226f107dbd9910","deploymentId":"69a9bcc427671ec5a2e05f92","questionText":"How does KYC / KYB work in OMS?","status":"active","generatedBy":"manual","createdAt":"2026-03-31T14:00:19.974Z","updatedAt":"2026-03-31T14:00:19.974Z","__v":0}],"googleFontsInlined":true},"customCss":[{"filePath":"custom.css","content":".nav-tabs{gap:0!important;align-items:center!important}div:has(>.nav-tabs){height:58px!important}.fam-grp .nav-tabs-item,.nav-tabs a.nav-tabs-item{padding:7px 12px!important;font-size:14px;font-weight:500;color:#64708f!important;transition:color 120ms ease,background 120ms ease}.fam-grp .nav-tabs-item:hover,.nav-tabs a.nav-tabs-item:hover{color:#141635!important}html.dark .fam-grp .nav-tabs-item,html.dark .nav-tabs a.nav-tabs-item{color:rgba(255,255,255,.55)!important}html.dark .fam-grp .nav-tabs-item:hover,html.dark .nav-tabs a.nav-tabs-item:hover{color:#fff!important}.fam-grp{display:inline-flex;align-items:center;gap:4px}.fam-gap{width:1px;height:22px;background:#dfe3f0;margin:0 16px;flex-shrink:0}.fam-grp .nav-tabs-item>div{display:none!important}.fam-grp .nav-tabs-item{border-radius:8px;white-space:nowrap;text-decoration:none;transition:color 120ms ease,background 120ms ease!important}.fam-grp .nav-tabs-item.fam-active-tab{background:#eae4f5!important;color:#500ab2!important;font-weight:500!important}.fam-grp .nav-tabs-item.fam-active-tab svg{color:#500ab2!important}html.dark .fam-gap{background:rgba(255,255,255,.14)}html.dark .fam-grp .nav-tabs-item.fam-active-tab{background:rgba(103,13,229,.22)!important;color:#a78bfa!important}html.dark .fam-grp .nav-tabs-item.fam-active-tab svg{color:#a78bfa!important}#navbar a[href*=build-with-ai]{background:#fff!important;color:#141635!important;border:1px solid #c8cfe1!important;font-weight:600!important;transition:border-color 140ms ease,background 140ms ease!important}#navbar a[href*=build-with-ai]:hover{border-color:#141635!important;background:#f6f6fc!important}html.dark #navbar a[href*=build-with-ai]{background:0 0!important;color:#fff!important;border-color:rgba(255,255,255,.25)!important}html.dark #navbar a[href*=build-with-ai]:hover{border-color:#fff!important;background:rgba(255,255,255,.06)!important}#navbar a[href*=get-access]{background:#0b0814!important;color:#fff!important;border:1px solid #0b0814!important;transition:background 140ms ease!important}#navbar a[href*=get-access]:hover{background:#2a2640!important}html.dark #navbar a[href*=get-access]{background:#fff!important;color:#0b0814!important;border-color:#fff!important}html.dark #navbar a[href*=get-access]:hover{background:#e5e7eb!important;border-color:#e5e7eb!important}#sidebar-content a.text-primary,#sidebar-content a[class*=text-primary-light]{background-color:transparent!important}#sidebar-content a:not(.text-primary):not([class*=text-primary-light]):hover{background-color:rgba(103,13,229,.06)!important}#content-area:has(.api-section) #page-title{font-size:1.75rem;line-height:2.25rem}#content-area:has(.api-section) #header .prose{font-size:.9375rem;line-height:1.6}@container page-header (min-width: 520px){#content-area:has(.api-section) #header:has(.eyebrow) .eyebrow{display:flex;align-items:center;min-height:2.25rem;padding-right:11rem}#content-area:has(.api-section) #header:has(.eyebrow) .eyebrow~div:has(#page-context-menu){position:static}#content-area:has(.api-section) #header:has(.eyebrow) .eyebrow~div #page-context-menu{position:absolute;top:0;right:0;margin:0}}.api-section[data-api-section=authorizations]:has(+.api-section[data-api-section=headers]) .api-section-heading-title{font-size:0}.api-section[data-api-section=authorizations]:has(+.api-section[data-api-section=headers]) .api-section-heading-title::after{content:\"Authorization and headers\";font-size:1.125rem}.api-section[data-api-section=authorizations]+.api-section[data-api-section=headers] .api-section-heading{display:none}.api-section[data-api-section=authorizations]:has(+.api-section[data-api-section=headers]) .primitive-param-field:last-child{border-bottom-width:1px}.api-section .api-section-heading .border-b,.api-section .primitive-param-field{border-color:#d1d5db}html.dark .api-section .api-section-heading .border-b,html.dark .api-section .primitive-param-field{border-color:#374151}.api-section .primitive-param-field>.py-6{padding-top:.875rem;padding-bottom:.875rem}.api-section .primitive-param-field .mt-4{margin-top:.5rem}@media (min-width:1600px){#body-content:has(.api-section){max-width:1760px}#body-content:has(.api-section) #content-container{max-width:1440px}}"}],"page":{"pagePath":"tools/dApp-development/launchpad/smart-contracts","slug":"/tools/dApp-development/launchpad/smart-contracts","pageMetadata":{"title":"Smart contracts","description":"How to work with smart contracts in a dApp Launchpad project, including local deployment, the block explorer, and production deployment.","href":"/tools/dApp-development/launchpad/smart-contracts"},"description":{"compiledSource":"\"use strict\";\nconst {jsx: _jsx} = arguments[0];\nconst {useMDXComponents: _provideComponents} = arguments[0];\nfunction _createMdxContent(props) {\n const _components = {\n p: \"p\",\n ..._provideComponents(),\n ...props.components\n };\n return _jsx(_components.p, {\n children: \"How to work with smart contracts in a dApp Launchpad project, including local deployment, the block explorer, and production deployment.\"\n });\n}\nfunction MDXContent(props = {}) {\n const {wrapper: MDXLayout} = {\n ..._provideComponents(),\n ...props.components\n };\n return MDXLayout ? _jsx(MDXLayout, {\n ...props,\n children: _jsx(_createMdxContent, {\n ...props\n })\n }) : _createMdxContent(props);\n}\nreturn {\n default: MDXContent\n};\n","frontmatter":{},"scope":{}},"pageType":"default","mdx":{"mdxSource":{"compiledSource":"\"use strict\";const{Fragment:_Fragment,jsx:_jsx,jsxs:_jsxs}=arguments[0];const{useMDXComponents:_provideComponents}=arguments[0];function _createMdxContent(props){const _components={a:`a`,code:`code`,li:`li`,ol:`ol`,p:`p`,pre:`pre`,span:`span`,ul:`ul`,..._provideComponents(),...props.components},{CodeBlock,Heading,Warning}=_components;if(!CodeBlock)_missingMdxReference(`CodeBlock`,true);if(!Heading)_missingMdxReference(`Heading`,true);if(!Warning)_missingMdxReference(`Warning`,true);return _jsxs(_Fragment,{children:[_jsx(Heading,{level:`2`,id:`prerequisites`,children:`Prerequisites`}),`\n`,_jsxs(_components.p,{children:[`Complete the `,_jsx(_components.a,{href:`/tools/dApp-development/launchpad/quickstart/#step-3-set-up-environment-variables`,children:`environment variable setup in the quickstart`}),` before following the steps below.`]}),`\n`,_jsx(Heading,{level:`2`,id:`smart-contract-framework`,children:`Smart contract framework`}),`\n`,_jsxs(_components.p,{children:[`Contracts are written in `,_jsx(_components.a,{href:`https://docs.soliditylang.org/`,children:`Solidity`}),` and run in a `,_jsx(_components.a,{href:`https://hardhat.org/`,children:`Hardhat`}),` environment. They live in the `,_jsx(_components.code,{children:`smart-contracts`}),` directory.`]}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[`Tests are in the `,_jsx(_components.code,{children:`tests`}),` directory, written in JavaScript or TypeScript. An example test is included.`]}),`\n`,_jsxs(_components.li,{children:[`Deploy scripts are in the `,_jsx(_components.code,{children:`scripts`}),` directory, also in JavaScript or TypeScript. Required scripts are already in place to get started.`]}),`\n`]}),`\n`,_jsx(Heading,{level:`2`,id:`deploy-to-a-local-test-chain`,children:`Deploy to a local test chain`}),`\n`,_jsxs(_components.p,{children:[`Follow the `,_jsx(_components.a,{href:`/tools/dApp-development/launchpad/quickstart/#step-4-start-the-development-environment`,children:`start developing instructions`}),` to spin up a local chain.`]}),`\n`,_jsxs(_components.p,{children:[`The `,_jsx(_components.a,{href:`/tools/dApp-development/launchpad/commands/#dev`,children:_jsx(_components.code,{children:`dev`})}),` command runs the `,_jsx(_components.code,{children:`scripts/deploy_localhost`}),` script internally, which deploys all contracts in the correct sequence.`]}),`\n`,_jsx(Warning,{children:_jsxs(_components.p,{children:[`When working on your own smart contracts, update `,_jsx(_components.code,{children:`scripts/deploy_localhost`}),` to deploy them in the right order.`]})}),`\n`,_jsx(_components.p,{children:`For all available options:`}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`1`,language:`shellscript`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`shellscript`,children:_jsxs(_components.code,{language:`shellscript`,numberOfLines:`1`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#DCDCAA`},children:`dapp-launchpad`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` dev`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` -h`})]}),`\n`]})})}),`\n`,_jsx(Heading,{level:`2`,id:`enable-a-local-block-explorer-with-ethernal`,children:`Enable a local block explorer with Ethernal`}),`\n`,_jsx(_components.p,{children:`You can optionally start a local blockchain explorer that auto-indexes transactions and provides a dashboard with an overview of the chain.`}),`\n`,_jsx(Heading,{level:`3`,id:`set-up-ethernal`,children:`Set up Ethernal`}),`\n`,_jsxs(_components.ol,{children:[`\n`,_jsxs(_components.li,{children:[`Create an account and a workspace at `,_jsx(_components.a,{href:`https://app.tryethernal.com/`,children:`https://app.tryethernal.com/`}),`.`]}),`\n`,_jsxs(_components.li,{children:[`Add your login email, password, and workspace name to the `,_jsx(_components.code,{children:`.env`}),` file in the `,_jsx(_components.code,{children:`smart-contracts`}),` directory.`]}),`\n`]}),`\n`,_jsxs(_components.p,{children:[`These values can also be passed as flags to the `,_jsx(_components.code,{children:`dev`}),` command: `,_jsx(_components.code,{children:`--ethernal-login-email`}),`, `,_jsx(_components.code,{children:`--ethernal-login-password`}),`, and `,_jsx(_components.code,{children:`--ethernal-workspace`}),`. These flags override the environment variables if both are set.`]}),`\n`,_jsx(Heading,{level:`3`,id:`start-the-block-explorer`,children:`Start the block explorer`}),`\n`,_jsxs(_components.p,{children:[`Run the `,_jsx(_components.code,{children:`dev`}),` command with the `,_jsx(_components.code,{children:`-e`}),` flag:`]}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`1`,language:`shellscript`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`shellscript`,children:_jsxs(_components.code,{language:`shellscript`,numberOfLines:`1`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#DCDCAA`},children:`dapp-launchpad`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` dev`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` -e`})]}),`\n`]})})}),`\n`,_jsxs(_components.p,{children:[`Access the explorer at `,_jsx(_components.a,{href:`https://app.tryethernal.com/`,children:`https://app.tryethernal.com/`}),`.`]}),`\n`,_jsx(Heading,{level:`2`,id:`deploy-to-production`,children:`Deploy to production`}),`\n`,_jsxs(_components.p,{children:[`The `,_jsx(_components.a,{href:`/tools/dApp-development/launchpad/commands/#deploy`,children:_jsx(_components.code,{children:`deploy`})}),` command deploys to any EVM-compatible chain. It runs `,_jsx(_components.code,{children:`scripts/deploy_prod`}),` to deploy all contracts in the correct sequence.`]}),`\n`,_jsx(Warning,{children:_jsxs(_components.p,{children:[`When working on your own smart contracts, update `,_jsx(_components.code,{children:`scripts/deploy_prod`}),` to deploy them in the right order.`]})}),`\n`,_jsx(_components.p,{children:`For all available options:`}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`1`,language:`shellscript`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`shellscript`,children:_jsxs(_components.code,{language:`shellscript`,numberOfLines:`1`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#DCDCAA`},children:`dapp-launchpad`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` deploy`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` -h`})]}),`\n`]})})}),`\n`,_jsxs(_components.p,{children:[`See the `,_jsx(_components.a,{href:`/tools/dApp-development/launchpad/quickstart/#deploy-to-production`,children:`deploy section of the quickstart`}),` for usage examples.`]})]})}function MDXContent(props={}){const{wrapper:MDXLayout}={..._provideComponents(),...props.components};return MDXLayout?_jsx(MDXLayout,{...props,children:_jsx(_createMdxContent,{...props})}):_createMdxContent(props)}return{default:MDXContent};function _missingMdxReference(id,component){throw new Error(`Expected `+(component?`component`:`object`)+\" `\"+id+\"` to be defined: you likely forgot to import, pass, or provide it.\")}","frontmatter":{},"scope":{"config":{},"pageMetadata":{"title":"Smart contracts","description":"How to work with smart contracts in a dApp Launchpad project, including local deployment, the block explorer, and production deployment.","href":"/tools/dApp-development/launchpad/smart-contracts"}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[{"title":"Prerequisites","slug":"prerequisites","depth":2,"children":[]},{"title":"Smart contract framework","slug":"smart-contract-framework","depth":2,"children":[]},{"title":"Deploy to a local test chain","slug":"deploy-to-a-local-test-chain","depth":2,"children":[]},{"title":"Enable a local block explorer with Ethernal","slug":"enable-a-local-block-explorer-with-ethernal","depth":2,"children":[{"title":"Set up Ethernal","slug":"set-up-ethernal","depth":3,"children":[]},{"title":"Start the block explorer","slug":"start-the-block-explorer","depth":3,"children":[]}]},{"title":"Deploy to production","slug":"deploy-to-production","depth":2,"children":[]}],"codeExamples":{}},"jsLinks":["/_mintlify/custom/polygon-labs/3aef159c73509324/analytics.js","/_mintlify/custom/polygon-labs/3af50e0aa9bbe82e/custom.js"],"subdomain":"polygon-labs","siteName":"Polygon Developer Docs","title":"Smart contracts - Polygon Developer Docs","contextualStarterQuestions":[{"_id":"6a06fb550233f8d04dd1e28c","deploymentId":"69a9bcc427671ec5a2e05f92","questionText":"How do I set up Ethernal?","status":"active","generatedBy":"contextual","path":"tools/dApp-development/launchpad/smart-contracts","createdAt":"2026-05-15T10:54:13.372Z","updatedAt":"2026-05-15T10:54:13.372Z","__v":0},{"_id":"6a06fb550233f8d04dd1e28a","deploymentId":"69a9bcc427671ec5a2e05f92","questionText":"How do I deploy contracts locally?","status":"active","generatedBy":"contextual","path":"tools/dApp-development/launchpad/smart-contracts","createdAt":"2026-05-15T10:54:13.371Z","updatedAt":"2026-05-15T10:54:13.371Z","__v":0},{"_id":"6a06fb550233f8d04dd1e28b","deploymentId":"69a9bcc427671ec5a2e05f92","questionText":"What framework are contracts in?","status":"active","generatedBy":"contextual","path":"tools/dApp-development/launchpad/smart-contracts","createdAt":"2026-05-15T10:54:13.371Z","updatedAt":"2026-05-15T10:54:13.371Z","__v":0}],"navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-04-15T16:47:55.290Z","originalFileLocation":"tools/dApp-development/launchpad/smart-contracts.mdx"},"headHtml":"\u003cscript data-mint-head>(function(){var d=document.documentElement,p=null;if(!p){try{p=localStorage.getItem(\"isDarkMode\")}catch(e){}if(p==='true')p='dark';else if(p==='false')p='light';if(p!=='light'\u0026\u0026p!=='dark'\u0026\u0026p!=='system')p=\"light\"}var r=p==='system'?(matchMedia(\"(prefers-color-scheme: dark)\").matches?'dark':'light'):p;d.classList.remove(r==='dark'?'light':'dark');d.classList.add(r);d.setAttribute(\"data-theme-preference\",p)})();\u003c/script>\u003cmeta data-mint-head name=\"description\" content=\"How to work with smart contracts in a dApp Launchpad project, including local deployment, the block explorer, and production deployment.\">\u003cmeta data-mint-head name=\"application-name\" content=\"Polygon Developer Docs\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/polygon-labs/62XjF4p_S3sLlTMv/_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/polygon-labs/62XjF4p_S3sLlTMv/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/polygon-labs/62XjF4p_S3sLlTMv/_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/polygon-labs/62XjF4p_S3sLlTMv/_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/polygon-labs/62XjF4p_S3sLlTMv/_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/polygon-labs/62XjF4p_S3sLlTMv/_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/polygon-labs/62XjF4p_S3sLlTMv/_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/polygon-labs/62XjF4p_S3sLlTMv/_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/polygon-labs/62XjF4p_S3sLlTMv/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"Smart contracts - Polygon Developer Docs\">\u003cmeta data-mint-head property=\"og:description\" content=\"How to work with smart contracts in a dApp Launchpad project, including local deployment, the block explorer, and production deployment.\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"Polygon Developer Docs\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://docs.polygon.technology/tools/dApp-development/launchpad/smart-contracts\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://polygon-labs.mintlify.app/_mintlify/api/og/v2?division=Launchpad\u0026amp;title=Smart+contracts\u0026amp;description=How+to+work+with+smart+contracts+in+a+dApp+Launchpad+project%2C+including+local+deployment%2C+the+block+explorer%2C+and+production+deployment.\u0026amp;theme=430e64796fff481709b26ceb\u0026amp;signature=696de2c1379089ed1d51697631f39f9f7ea29c5bbc5c89ff8a01c0144a629c8c\">\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=\"Smart contracts - Polygon Developer Docs\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"How to work with smart contracts in a dApp Launchpad project, including local deployment, the block explorer, and production deployment.\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://polygon-labs.mintlify.app/_mintlify/api/og/v2?division=Launchpad\u0026amp;title=Smart+contracts\u0026amp;description=How+to+work+with+smart+contracts+in+a+dApp+Launchpad+project%2C+including+local+deployment%2C+the+block+explorer%2C+and+production+deployment.\u0026amp;theme=430e64796fff481709b26ceb\u0026amp;signature=696de2c1379089ed1d51697631f39f9f7ea29c5bbc5c89ff8a01c0144a629c8c\">\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/polygon-labs/62XjF4p_S3sLlTMv/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"Polygon Developer Docs\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#670DE5\">\u003clink data-mint-head rel=\"canonical\" href=\"https://docs.polygon.technology/tools/dApp-development/launchpad/smart-contracts\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/tools/dApp-development/launchpad/smart-contracts.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://docs.polygon.technology/#organization\",\"name\":\"Polygon Developer Docs\",\"url\":\"https://docs.polygon.technology\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/polygon-labs/ll1LL3IdpC3YxXZu/logo/light.svg?fit=max\u0026auto=format\u0026n=ll1LL3IdpC3YxXZu\u0026q=85\u0026s=d54ddb30492807a0eadf38093c075f2f\"}},{\"@type\":\"WebSite\",\"@id\":\"https://docs.polygon.technology#website\",\"name\":\"Polygon Developer Docs\",\"url\":\"https://docs.polygon.technology\",\"publisher\":{\"@id\":\"https://docs.polygon.technology/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://docs.polygon.technology/tools/dApp-development/launchpad/smart-contracts#webpage\",\"url\":\"https://docs.polygon.technology/tools/dApp-development/launchpad/smart-contracts\",\"name\":\"Smart contracts\",\"description\":\"How to work with smart contracts in a dApp Launchpad project, including local deployment, the block explorer, and production deployment.\",\"dateModified\":\"2026-04-15T16:47:55.290Z\",\"isPartOf\":{\"@id\":\"https://docs.polygon.technology#website\"},\"breadcrumb\":{\"@id\":\"https://docs.polygon.technology/tools/dApp-development/launchpad/smart-contracts#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://docs.polygon.technology/tools/dApp-development/launchpad/smart-contracts#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Polygon Chain\",\"item\":\"https://docs.polygon.technology/pos/overview\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Developer Tools\",\"item\":\"https://docs.polygon.technology/tools/index\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Dapp Development\",\"item\":\"https://docs.polygon.technology/tools/dApp-development/tutorials/access-node\"},{\"@type\":\"ListItem\",\"position\":4,\"name\":\"Launchpad\",\"item\":\"https://docs.polygon.technology/tools/dApp-development/launchpad/intro\"},{\"@type\":\"ListItem\",\"position\":5,\"name\":\"Smart contracts\",\"item\":\"https://docs.polygon.technology/tools/dApp-development/launchpad/smart-contracts\"}]},{\"@type\":[\"Article\",\"TechArticle\"],\"@id\":\"https://docs.polygon.technology/tools/dApp-development/launchpad/smart-contracts#article\",\"headline\":\"Smart contracts\",\"name\":\"Smart contracts\",\"description\":\"How to work with smart contracts in a dApp Launchpad project, including local deployment, the block explorer, and production deployment.\",\"url\":\"https://docs.polygon.technology/tools/dApp-development/launchpad/smart-contracts\",\"mainEntityOfPage\":{\"@id\":\"https://docs.polygon.technology/tools/dApp-development/launchpad/smart-contracts#webpage\"},\"dateModified\":\"2026-04-15T16:47:55.290Z\",\"publisher\":{\"@id\":\"https://docs.polygon.technology/#organization\"},\"isPartOf\":{\"@id\":\"https://docs.polygon.technology#website\"}}]}\u003c/script>","siteName":"Polygon Developer Docs","nav":{"global":null,"tabs":[{"tab":"Platform","icon":"layer-group","pages":[{"title":"Platform","href":""}]},{"tab":"Payments","pages":[{"title":"Payments","href":"/payments/overview"}]},{"tab":"Wallets","pages":[{"title":"Wallets","href":"/wallets/overview"}]},{"tab":"Cross-chain","pages":[{"title":"Cross-chain","href":"/cross-chain"}]},{"tab":"API Reference","pages":[{"title":"API Reference","href":"/api-reference/overview"}]},{"tab":"Infrastructure","icon":"server","pages":[{"title":"Infrastructure","href":"/infrastructure"}]},{"tab":"Polygon Chain","groups":[{"group":"Polygon Chain","expanded":true,"pages":[{"title":"Polygon Chain overview","sidebarTitle":"Overview","href":"/pos/overview"},{"title":"Building on PoS","sidebarTitle":"Get Started","href":"/pos/get-started/building-on-polygon"},{"group":"Guides","expanded":true,"pages":[{"group":"Stablecoin Integrations","pages":[{"title":"Available stablecoins","href":"/payment-services/stablecoins/available-stablecoins"},{"title":"USDC Native Integration","href":"/payment-services/stablecoins/usdc-native-integration"},{"title":"USDC Gateway Integration","href":"/payment-services/stablecoins/usdc-gateway-integration"}]},{"group":"Run a Node","pages":[{"title":"Prerequisites","href":"/pos/how-to/prerequisites"},{"title":"Sync node using snapshots","href":"/pos/how-to/snapshots"},{"group":"Full Node","pages":[{"title":"Using binaries","href":"/pos/how-to/full-node/full-node-binaries"},{"title":"Using Docker","href":"/pos/how-to/full-node/full-node-docker"},{"title":"Using Ansible","href":"/pos/how-to/full-node/full-node-ansible"},{"title":"Using packages","href":"/pos/how-to/full-node/full-node-packages"},{"title":"Using GCP","href":"/pos/how-to/full-node/full-node-gcp"}]},{"group":"Troubleshoot","pages":[{"title":"Technical FAQs","href":"/pos/how-to/troubleshoot/technical-faqs"},{"title":"Known issues and errors","href":"/pos/how-to/troubleshoot/known-issues"},{"title":"Reporting issues","href":"/pos/how-to/troubleshoot/reporting-issues"}]},{"group":"Bridging","pages":[{"group":"Ethereum Polygon","pages":[{"title":"Polygon Portal","href":"/pos/how-to/bridging/ethereum-polygon/portal-ui"},{"title":"Ethereum to PoS","href":"/pos/how-to/bridging/ethereum-polygon/ethereum-to-matic"},{"title":"PoS to Ethereum","href":"/pos/how-to/bridging/ethereum-polygon/matic-to-ethereum"},{"title":"Submit mapping request","href":"/pos/how-to/bridging/ethereum-polygon/submit-mapping-request"}]},{"group":"L1-L2 Communication","pages":[{"title":"State Transfer","href":"/pos/how-to/bridging/l1-l2-communication/state-transfer"}]}]}]},{"group":"Run a Validator","pages":[{"title":"Becoming a validator","href":"/pos/get-started/becoming-a-validator"},{"group":"Validator","pages":[{"title":"Using binaries","href":"/pos/how-to/validator/validator-binaries"},{"title":"Using Ansible","href":"/pos/how-to/validator/validator-ansible"},{"title":"Using packages","href":"/pos/how-to/validator/validator-packages"}]},{"group":"Operate Validator Node","pages":[{"title":"Validator best practices","href":"/pos/how-to/validator/validator-best-practices"},{"title":"Next steps","href":"/pos/how-to/operate-validator-node/next-steps"},{"title":"Change owner and signer address","href":"/pos/how-to/operate-validator-node/change-signer-address"},{"title":"Top up Heimdall fee","href":"/pos/how-to/operate-validator-node/topup-heimdall-fee"},{"title":"Validator performance requirements","href":"/pos/how-to/operate-validator-node/validator-performance"}]},{"title":"Delegate tokens","href":"/pos/how-to/delegate"}]}]},{"group":"Architecture","expanded":true,"pages":[{"title":"Overview","href":"/pos/architecture/overview"},{"group":"Bor","pages":[{"title":"Introduction","href":"/pos/architecture/bor/introduction"},{"title":"State sync","href":"/pos/architecture/bor/state-sync"},{"title":"Network configuration","href":"/pos/architecture/bor/network-config"}]},{"group":"Heimdall v2","pages":[{"title":"Introduction","href":"/pos/architecture/heimdall_v2/introduction"},{"title":"Changes from v1","href":"/pos/architecture/heimdall_v2/changes-from-v1"},{"title":"Authentication","href":"/pos/architecture/heimdall_v2/authentication"},{"title":"Balance transfers","href":"/pos/architecture/heimdall_v2/balance-transfers"},{"title":"Staking","href":"/pos/architecture/heimdall_v2/staking"},{"title":"Checkpoints","href":"/pos/architecture/heimdall_v2/checkpoints"},{"title":"Topup","href":"/pos/architecture/heimdall_v2/topup"},{"title":"Chain management","href":"/pos/architecture/heimdall_v2/chain-management"},{"title":"Governance","href":"/pos/architecture/heimdall_v2/governance"},{"title":"Clerk","href":"/pos/architecture/heimdall_v2/clerk"},{"title":"Heimdall Bor module","href":"/pos/architecture/heimdall_v2/heimdall-bor-module"},{"title":"Milestones","href":"/pos/architecture/heimdall_v2/milestones"}]}]},{"group":"Paychannels","expanded":true,"pages":[{"title":"Paychannels: high-frequency payments on Polygon Chain","sidebarTitle":"Overview","href":"/pos/paychannels/overview"},{"title":"Try a Paychannels demo","sidebarTitle":"Try a demo","href":"/pos/paychannels/try-a-demo"},{"title":"Accept Paychannels payments","sidebarTitle":"Accept payments","href":"/pos/paychannels/accept-payments"},{"title":"Run a Paychannels hub","sidebarTitle":"Run a hub","href":"/pos/paychannels/run-a-hub"},{"title":"Paychannels trust model","sidebarTitle":"Trust model","href":"/pos/paychannels/trust-model"},{"title":"Privacy with Paychannels","sidebarTitle":"Privacy","href":"/pos/paychannels/privacy"}]},{"group":"Governance","expanded":true,"pages":[{"title":"Governance fundamentals","href":"/pos/governance/governance-fundamentals"}]},{"group":"Concepts","expanded":true,"pages":[{"group":"Finality","pages":[{"title":"Finality","href":"/pos/concepts/finality/finality"}]},{"group":"Tokens","pages":[{"title":"Migrate to POL","href":"/pos/concepts/tokens/matic-to-pol"},{"title":"POL","href":"/pos/concepts/tokens/pol"},{"title":"sPOL","href":"/pos/concepts/tokens/spol"},{"title":"MATIC","href":"/pos/concepts/tokens/matic"}]},{"group":"Transactions","pages":[{"title":"EIP-1559","href":"/pos/concepts/transactions/eip-1559"},{"title":"EIP-4337","href":"/pos/concepts/transactions/eip-4337"},{"title":"Meta transactions","href":"/pos/concepts/transactions/meta-transactions"}]}]},{"group":"Reference","expanded":true,"pages":[{"group":"Contracts","pages":[{"title":"Genesis contracts","href":"/pos/reference/contracts/genesis-contracts"},{"title":"Delegation via validator shares","href":"/pos/reference/contracts/delegation"},{"title":"Staking manager","href":"/pos/reference/contracts/stakingmanager"}]},{"title":"Rewards and staking incentives","href":"/pos/reference/rewards"},{"title":"Setting Up Telemetry","href":"/pos/reference/telemetry-setup-guide"},{"title":"Default ports for nodes","href":"/pos/reference/port-management"},{"title":"Network upgrade process","href":"/pos/reference/network-upgrade-process"},{"title":"Common commands","href":"/pos/reference/commands"},{"title":"Seed and bootnodes","href":"/pos/reference/seed-and-bootnodes"},{"title":"PoS mainnet multi-signatures","href":"/pos/reference/commit-chain-multisigs"},{"title":"RPC endpoints","href":"/pos/reference/rpc-endpoints"},{"title":"Mapped tokens","href":"/pos/reference/mapped-tokens"}]},{"group":"Developer Tools","pages":[{"title":"Developer Tools for Polygon","sidebarTitle":"Overview","href":"/tools/index"},{"title":"On-ramps \u0026 Off-ramps","href":"/payments/onramps-offramps"},{"title":"Payment Providers","href":"/payments/payment-providers"},{"group":"Gas","pages":[{"title":"Test token faucets","href":"/tools/gas/matic-faucet"},{"title":"Estimate gas fees","href":"/tools/gas/polygon-gas-station"}]},{"group":"Wallets","pages":[{"title":"Polygon Portal","href":"/tools/wallets/portal"},{"group":"MetaMask operations","pages":[{"title":"MetaMask on Polygon","sidebarTitle":"Overview","href":"/tools/wallets/metamask/overview"},{"title":"Add Polygon network","href":"/tools/wallets/metamask/add-polygon-network"}]},{"title":"Getting Started with Polygon Wallets","sidebarTitle":"Getting started","href":"/tools/wallets/getting-started"},{"title":"WalletConnect","href":"/tools/wallets/walletconnect"},{"title":"Reown","href":"/tools/wallets/reown"},{"title":"AppKit","href":"/tools/wallets/appkit"},{"title":"WalletKit","href":"/tools/wallets/walletkit"}]},{"group":"Dapp Development","pages":[{"group":"Tutorials","pages":[{"title":"Interact with a node RPC","href":"/tools/dApp-development/tutorials/access-node"}]},{"group":"Common Tools","pages":[{"title":"Hardhat","href":"/tools/dApp-development/common-tools/hardhat"},{"title":"Remix","href":"/tools/dApp-development/common-tools/remix"},{"title":"Replit","href":"/tools/dApp-development/common-tools/replit"}]},{"group":"Launchpad","pages":[{"title":"dApp Launchpad Introduction","sidebarTitle":"Introduction","href":"/tools/dApp-development/launchpad/intro"},{"title":"Quickstart","href":"/tools/dApp-development/launchpad/quickstart"},{"title":"Frontend","description":"How to work with the Next.js frontend in a dApp Launchpad project, including wallet connections, contract interactions, and deployment.","href":"/tools/dApp-development/launchpad/frontend"},{"title":"Smart contracts","href":"/tools/dApp-development/launchpad/smart-contracts"},{"title":"Commands","description":"Complete reference for all dApp Launchpad CLI commands and their options.","href":"/tools/dApp-development/launchpad/commands"},{"title":"Contributing","href":"/tools/dApp-development/launchpad/contributing"},{"title":"Common pitfalls","href":"/tools/dApp-development/launchpad/common-pitfalls"}]},{"title":"Tutorials","href":"/tools/dApp-development/third-party-tutorials"}]},{"group":"Chain Indexer Framework","pages":[{"title":"Chain Indexer Framework Overview","sidebarTitle":"Overview","href":"/tools/chain-indexer-framework/overview"},{"title":"Usage","href":"/tools/chain-indexer-framework/usage"}]},{"group":"Matic.js","pages":[{"title":"Get started","href":"/tools/matic-js/get-started"},{"group":"Polygon Chain","pages":[{"title":"POS client","href":"/tools/matic-js/pos/client"},{"group":"Erc20","pages":[{"title":"ERC20 with Matic.js on Polygon PoS","sidebarTitle":"Overview","href":"/tools/matic-js/pos/erc20/index"},{"title":"approveMax","href":"/tools/matic-js/pos/erc20/approve-max"},{"title":"approve","href":"/tools/matic-js/pos/erc20/approve"},{"title":"deposit","href":"/tools/matic-js/pos/erc20/deposit"},{"title":"getAllowance","href":"/tools/matic-js/pos/erc20/get-allowance"},{"title":"getBalance","href":"/tools/matic-js/pos/erc20/get-balance"},{"title":"isWithdrawExited","href":"/tools/matic-js/pos/erc20/is-withdraw-exited"},{"title":"transfer","href":"/tools/matic-js/pos/erc20/transfer"},{"title":"withdrawExitFaster","href":"/tools/matic-js/pos/erc20/withdraw-exit-faster"},{"title":"withdrawExit","href":"/tools/matic-js/pos/erc20/withdraw-exit"},{"title":"withdrawStart","href":"/tools/matic-js/pos/erc20/withdraw-start"}]},{"group":"Erc721","pages":[{"title":"ERC721 with Matic.js on Polygon PoS","sidebarTitle":"Overview","href":"/tools/matic-js/pos/erc721/index"},{"title":"approveAll","href":"/tools/matic-js/pos/erc721/approve-all"},{"title":"approve","href":"/tools/matic-js/pos/erc721/approve"},{"title":"depositMany","href":"/tools/matic-js/pos/erc721/deposit-many"},{"title":"deposit","href":"/tools/matic-js/pos/erc721/deposit"},{"title":"getAllTokens","href":"/tools/matic-js/pos/erc721/get-all-tokens"},{"title":"getTokenIdAtIndexForUser","href":"/tools/matic-js/pos/erc721/get-token-id-at-index-for-user"},{"title":"getTokensCount","href":"/tools/matic-js/pos/erc721/get-tokens-count"},{"title":"isApprovedAll","href":"/tools/matic-js/pos/erc721/is-approved-all"},{"title":"isApproved","href":"/tools/matic-js/pos/erc721/is-approved"},{"title":"isWithdrawExitedMany","href":"/tools/matic-js/pos/erc721/is-withdraw-exited-many"},{"title":"isWithdrawExited","href":"/tools/matic-js/pos/erc721/is-withdraw-exited"},{"title":"transfer","href":"/tools/matic-js/pos/erc721/transfer"},{"title":"withdrawExitFasterMany","href":"/tools/matic-js/pos/erc721/withdraw-exit-faster-many"},{"title":"withdrawExitFaster","href":"/tools/matic-js/pos/erc721/withdraw-exit-faster"},{"title":"withdrawExitMany","href":"/tools/matic-js/pos/erc721/withdraw-exit-many"},{"title":"withdrawExit","href":"/tools/matic-js/pos/erc721/withdraw-exit"},{"title":"withdrawStartMany","href":"/tools/matic-js/pos/erc721/withdraw-start-many"},{"title":"withdrawStartWithMetaData","href":"/tools/matic-js/pos/erc721/withdraw-start-with-meta-data"},{"title":"withdrawStart","href":"/tools/matic-js/pos/erc721/withdraw-start"}]},{"group":"Erc1155","pages":[{"title":"approveAllForMintable","href":"/tools/matic-js/pos/erc1155/approve-all-for-mintable"},{"title":"approveAll","href":"/tools/matic-js/pos/erc1155/approve-all"},{"title":"depositMany","href":"/tools/matic-js/pos/erc1155/deposit-many"},{"title":"deposit","href":"/tools/matic-js/pos/erc1155/deposit"},{"title":"getBalance","href":"/tools/matic-js/pos/erc1155/get-balance"},{"title":"ERC1155 with Matic.js on Polygon PoS","sidebarTitle":"Overview","href":"/tools/matic-js/pos/erc1155/index"},{"title":"isApprovedAll","href":"/tools/matic-js/pos/erc1155/is-approved-all"},{"title":"isWithdrawExitedMany","href":"/tools/matic-js/pos/erc1155/is-withdraw-exited-many"},{"title":"isWithdrawExited","href":"/tools/matic-js/pos/erc1155/is-withdraw-exited"},{"title":"transfer","href":"/tools/matic-js/pos/erc1155/transfer"},{"title":"withdrawExitFasterMany","href":"/tools/matic-js/pos/erc1155/withdraw-exit-faster-many"},{"title":"withdrawExitFaster","href":"/tools/matic-js/pos/erc1155/withdraw-exit-faster"},{"title":"withdrawExitMany","href":"/tools/matic-js/pos/erc1155/withdraw-exit-many"},{"title":"withdrawExit","href":"/tools/matic-js/pos/erc1155/withdraw-exit"},{"title":"withdrawStartMany","href":"/tools/matic-js/pos/erc1155/withdraw-start-many"},{"title":"withdrawStart","href":"/tools/matic-js/pos/erc1155/withdraw-start"}]},{"title":"Deposit ETH","href":"/tools/matic-js/pos/deposit-ether"},{"title":"isCheckPointed","href":"/tools/matic-js/pos/is-check-pointed"},{"title":"isDeposited","href":"/tools/matic-js/pos/is-deposited"}]},{"title":"Matic.js API Architecture","sidebarTitle":"API overview","href":"/tools/matic-js/api-architecture"},{"group":"Setup","pages":[{"title":"Ethers","href":"/tools/matic-js/setup/ethers"},{"title":"Web3js","href":"/tools/matic-js/setup/web3js"}]},{"title":"Set proof API","href":"/tools/matic-js/set-proof-api"},{"group":"Advanced","pages":[{"title":"ABI manager","href":"/tools/matic-js/advanced/abi-manager"},{"title":"Exit util","href":"/tools/matic-js/advanced/exit-util"},{"title":"Plugin","href":"/tools/matic-js/advanced/plugin"}]}]},{"group":"Data","pages":[{"title":"The Graph","href":"/tools/data/thegraph"}]},{"group":"Storage","pages":[{"title":"IPFS","href":"/tools/storage/ipfs"},{"title":"Filecoin","href":"/tools/storage/filecoinhelpers"},{"title":"Crust network","href":"/tools/storage/crusthelpers"}]},{"group":"Oracles","pages":[{"title":"Getting Started with Polygon Oracles","sidebarTitle":"Getting started","href":"/tools/oracles/getting-started"},{"title":"Chainlink","href":"/tools/oracles/chainlink"},{"title":"Chronicle","href":"/tools/oracles/chronicle"},{"title":"Supra","href":"/tools/oracles/supra"}]}]}]}]},{"tab":"Polygon CDK","pages":[{"title":"Polygon CDK","href":"/chain-development/cdk"}]},{"tab":"Agglayer","pages":[{"title":"Agglayer","href":"/interoperability/overview"}]},{"tab":"Agentic","pages":[{"title":"Agentic","href":"/payment-services/agentic-payments/agent-integration/intro"}]}]},"title":"Smart contracts - Polygon Developer Docs","buildId":"dpl_2xiSHD9XEvLsPGPcfoMtkLTB3dy9","deploymentId":"dpl_2xiSHD9XEvLsPGPcfoMtkLTB3dy9","dynamics":[],"chunks":[]}