Set up your environment and deploy a contract to Plasma Testnet with Hardhat or Foundry.
This guide covers environment setup, contract deployment, and interaction with Plasma’s EVM compatible testnet using Hardhat. It assumes basic familiarity with Ethereum tooling and smart contract development.
const { expect } = require("chai");describe("SimpleStorage", function () { let simpleStorage; beforeEach(async function () { const SimpleStorage = await ethers.getContractFactory("SimpleStorage"); simpleStorage = await SimpleStorage.deploy(); await simpleStorage.waitForDeployment(); }); it("Should return the initial greeting", async function () { expect(await simpleStorage.getData()).to.equal("Hello, Plasma!"); }); it("Should update the stored data", async function () { await simpleStorage.setData("Updated data"); expect(await simpleStorage.getData()).to.equal("Updated data"); });});
Run the tests:
npx hardhat test
This should output something like:
Lock Deployment ✔ Should set the right unlockTime (454ms) ✔ Should set the right owner ✔ Should receive and store the funds to lock ✔ Should fail if the unlockTime is not in the future Withdrawals Validations ✔ Should revert with the right error if called too soon ✔ Should revert with the right error if called from another account ✔ Shouldn't fail if the unlockTime has arrived and the owner calls it Events ✔ Should emit an event on withdrawals Transfers ✔ Should transfer the funds to the ownerSimpleStorage ✔ Should return the initial greeting ✔ Should update the stored data11 passing (541ms)
Ensure .env is configured correctly (no 0x prefix if required)
Explorer delay
Wait a few minutes; explorer may be syncing
{"docsConfig":{"theme":"mint","$schema":"https://mintlify.com/docs.json","name":"Plasma Docs - Build stablecoin applications on Plasma","description":"Guides, references, and architecture for building on Plasma. EVM compatibility, SDKs, RPC, and stablecoin-native features.","colors":{"primary":"#162F29","light":"#162F29","dark":"#162F29"},"logo":{"light":"https://mintcdn.com/plasma-97e11032/40yqhtV73KeVHAe8/Lightmode.svg?fit=max\u0026auto=format\u0026n=40yqhtV73KeVHAe8\u0026q=85\u0026s=b7066f5881b68523d889854df27e2d62","dark":"https://mintcdn.com/plasma-97e11032/40yqhtV73KeVHAe8/Darkmode.svg?fit=max\u0026auto=format\u0026n=40yqhtV73KeVHAe8\u0026q=85\u0026s=f573a76c16a67da0f81179f6a61cd352","href":"https://www.plasma.org/docs"},"favicon":{"light":"https://mintcdn.com/plasma-97e11032/2KAuyFPhADNZ-KAz/favicon-light.png?fit=max\u0026auto=format\u0026n=2KAuyFPhADNZ-KAz\u0026q=85\u0026s=79450dcd85f6e520fe12b3fec3d01d18","dark":"https://mintcdn.com/plasma-97e11032/2KAuyFPhADNZ-KAz/favicon-dark.png?fit=max\u0026auto=format\u0026n=2KAuyFPhADNZ-KAz\u0026q=85\u0026s=06f4eea176b7e16abe1c22029d740704"},"appearance":{"default":"light","strict":true},"background":{"color":{"light":"#F8F8F8","dark":"#0A1913"}},"navbar":{"links":[{"href":"https://www.plasma.org/company/blog","label":"Blog"}],"primary":{"type":"button","label":"Plasma.org","href":"https://www.plasma.org"}},"seo":{"metatags":{"og:description":"The docs platform for Plasma, the high-performance Layer 1 blockchain purpose built for global stablecoin payments.","og:image":"https://mintlify.s3.us-west-1.amazonaws.com/plasma-97e11032/images/docs-social-card.png","og:image:secure_url":"https://docs.plasma.org/images/docs-social-card.png","og:image:type":"image/png","og:image:alt":"Plasma - The high-performance blockchain for stablecoin payments.","og:image:height":"630","og:image:width":"1200","og:site_name":"Plasma Documentation","og:title":"Plasma Docs - Build on Plasma","og:type":"website","twitter:card":"summary_large_image","twitter:creator":"@Plasma","twitter:description":"The docs platform for Plasma, the high-performance Layer 1 blockchain purpose built for global stablecoin payments.","twitter:image":"https://mintlify.s3.us-west-1.amazonaws.com/plasma-97e11032/images/docs-social-card.png","twitter:site":"@Plasma","twitter:title":"Plasma Docs - Build on Plasma","description":"Guides, references, and architecture for building on Plasma. EVM compatibility, SDKs, RPC, and stablecoin-native features.","keywords":"plasma, blockchain, stablecoin, payments, ethereum, bitcoin, defi, documentation","canonical":"https://www.plasma.org/docs"}},"integrations":{"ga4":{"measurementId":"G-XXXXXXXXXX"},"telemetry":{"enabled":true}},"errors":{"404":{"redirect":true}},"contextual":{"options":["copy","view","chatgpt","claude"],"display":"header"},"styling":{"latex":true},"navigation":{"languages":[{"language":"en","href":"docs/get-started/introduction/start-here"},{"language":"pt-BR","href":"pt-BR/docs/get-started/introduction/start-here"},{"language":"cn","href":"cn/docs/get-started/introduction/start-here"},{"language":"fr","href":"fr/docs/get-started/introduction/start-here"},{"language":"de","href":"de/docs/get-started/introduction/start-here"},{"language":"ko","href":"ko/docs/get-started/introduction/start-here"},{"language":"ru","href":"ru/docs/get-started/introduction/start-here"},{"language":"es","href":"es/docs/get-started/introduction/start-here"}]}},"deployment":{"deploymentMetadataValue":{"subdomain":"plasma-97e11032","hasAudioNarration":false,"actualSubdomain":"plasma-97e11032","customDomains":["docs.plasma.org"],"gitSource":{"type":"github","owner":"plasmalaboratories","repo":"plasma-docs","deployBranch":"main","contentDirectory":"","isPrivate":true,"mountPath":"","label":""},"feedback":{"agentFeedback":false,"thumbs":true},"entitlements":{"AI_CHAT":{"status":"ENABLED"},"WEB_MCP":{"status":"ENABLED"},"NARRATION":{"status":"ENABLED"}},"buildId":"6a9ab7422ff9171cd683acd9","clientVersion":"0.0.4102","searchFilterCounts":[{"language":"cn","tag":"Plasma 链","count":17},{"language":"de","tag":"Plasma-Chain","count":17},{"language":"en","tag":"Plasma Chain","count":17},{"language":"es","tag":"Plasma Chain","count":17},{"language":"fr","tag":"Chaîne Plasma","count":17},{"language":"ko","tag":"Plasma 체인","count":17},{"language":"pt-BR","tag":"Plasma Chain","count":17},{"language":"ru","tag":"Plasma Chain","count":17},{"language":"cn","tag":"节点运营商","count":10},{"language":"de","tag":"Node-Betreiber","count":10},{"language":"en","tag":"Node Operators","count":10},{"language":"es","tag":"Operadores de Nodos","count":10},{"language":"fr","tag":"Opérateurs de Nœud","count":10},{"language":"ko","tag":"노드 운영자","count":10},{"language":"pt-BR","tag":"Operadores de Nó","count":10},{"language":"ru","tag":"Операторы узлов","count":10},{"language":"cn","tag":"工具","count":9},{"language":"de","tag":"Werkzeuge","count":9},{"language":"en","tag":"Guides","count":9},{"language":"en","tag":"Tools","count":9},{"language":"es","tag":"Herramientas","count":9},{"language":"fr","tag":"Outils","count":9},{"language":"ko","tag":"도구","count":9},{"language":"pt-BR","tag":"Ferramentas","count":9},{"language":"ru","tag":"Инструменты","count":9},{"language":"cn","tag":"指南","count":8},{"language":"de","tag":"Anleitungen","count":8},{"language":"es","tag":"Guías","count":8},{"language":"fr","tag":"Guides","count":8},{"language":"ko","tag":"가이드","count":8},{"language":"pt-BR","tag":"Guias","count":8},{"language":"ru","tag":"Руководства","count":8},{"language":"cn","tag":"入门","count":6},{"language":"de","tag":"Erste Schritte","count":6},{"language":"en","tag":"Get Started","count":6},{"language":"es","tag":"Comenzar","count":6},{"language":"fr","tag":"Commencer","count":6},{"language":"ko","tag":"시작하기","count":6},{"language":"pt-BR","tag":"Começar","count":6},{"language":"ru","tag":"Начало работы","count":6},{"language":"cn","tag":"设置与配置","count":5},{"language":"cn","tag":"网络信息","count":5},{"language":"de","tag":"Setup \u0026 Konfiguration","count":5},{"language":"de","tag":"Netzwerk-Informationen","count":5},{"language":"en","tag":"Setup \u0026 Configuration","count":5},{"language":"en","tag":"Network Information","count":5},{"language":"es","tag":"Configuración e Instalación","count":5},{"language":"es","tag":"Información de Red","count":5},{"language":"fr","tag":"Installation et Configuration","count":5},{"language":"fr","tag":"Informations Réseau","count":5},{"language":"ko","tag":"설정 및 구성","count":5},{"language":"ko","tag":"네트워크 정보","count":5},{"language":"pt-BR","tag":"Configuração e Instalação","count":5},{"language":"pt-BR","tag":"Informações da Rede","count":5},{"language":"ru","tag":"Установка и настройка","count":5},{"language":"ru","tag":"Информация о сети","count":5},{"language":"cn","tag":"维护","count":4},{"language":"cn","tag":"支付","count":4},{"language":"de","tag":"Wartung","count":4},{"language":"de","tag":"Zahlungen","count":4},{"language":"en","tag":"Maintenance","count":4},{"language":"en","tag":"Payments","count":4},{"language":"es","tag":"Mantenimiento","count":4},{"language":"es","tag":"Pagos","count":4},{"language":"fr","tag":"Maintenance","count":4},{"language":"fr","tag":"Paiements","count":4},{"language":"ko","tag":"유지관리","count":4},{"language":"ko","tag":"결제","count":4},{"language":"pt-BR","tag":"Manutenção","count":4},{"language":"pt-BR","tag":"Pagamentos","count":4},{"language":"ru","tag":"Обслуживание","count":4},{"language":"ru","tag":"Платежи","count":4},{"language":"cn","tag":"学习","count":3},{"language":"de","tag":"Lernen","count":3},{"language":"en","tag":"Learn","count":3},{"language":"es","tag":"Aprender","count":3},{"language":"fr","tag":"Apprendre","count":3},{"language":"ko","tag":"학습","count":3},{"language":"pt-BR","tag":"Aprender","count":3},{"language":"ru","tag":"Изучение","count":3}]},"assistantConfig":{"enableAskAiButton":true,"enableAskAiSearchBar":false},"basePath":"","hasChatPermissions":true,"hasWebMcpPermissions":true,"toggles":[{"name":"kill-isr","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"custom-rbac-roles","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-mintlify-slack","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-integrations-settings","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"rbac-expansion","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-pr-grouping","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"custom-prefix","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"analytics-v7","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"user-flows-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"no-publish-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-onboarding","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"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":"fork-pr-previews","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"revalidation-jwt","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-sso-scim","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"hobby-abuse-scan","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"dashboard-inbox","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-signup","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"turbopuffer-dual-write","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-enabled","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"approve-review-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-metadata","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"sso-setup-deadline-banner","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"turbopuffer-serve","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"live-agents","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false}],"privacy":{"consentBanner":{"enabled":true}},"googleFontsInlined":false},"customCss":[{"filePath":"style.css","content":"#footer{display:none!important}"}],"page":{"pagePath":"docs/guides/development/quickstart","slug":"/docs/guides/development/quickstart","pageMetadata":{"title":"Quickstart","description":"Set up your environment and deploy a contract to Plasma Testnet with Hardhat or Foundry.","canonical":"https://www.plasma.org/docs/guides/development/quickstart","og:type":"article","og:title":"Quickstart - Deploy to Plasma Testnet","og:description":"Environment setup and first deployment.","og:image":"https://docs.plasma.org/images/quickstart-social-card.png","twitter:title":"Quickstart - Deploy to Plasma Testnet","twitter:description":"Environment setup and first deployment.","twitter:image":"https://docs.plasma.org/images/quickstart-social-card.png","href":"/docs/guides/development/quickstart"},"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: \"Set up your environment and deploy a contract to Plasma Testnet with Hardhat or Foundry.\"\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`,strong:`strong`,tbody:`tbody`,td:`td`,th:`th`,thead:`thead`,tr:`tr`,ul:`ul`,..._provideComponents(),...props.components},{CodeBlock,Heading,Table,Warning}=_components;if(!CodeBlock)_missingMdxReference(`CodeBlock`,true);if(!Heading)_missingMdxReference(`Heading`,true);if(!Table)_missingMdxReference(`Table`,true);if(!Warning)_missingMdxReference(`Warning`,true);return _jsxs(_Fragment,{children:[_jsx(_components.p,{children:`This guide covers environment setup, contract deployment, and interaction with Plasma’s EVM compatible testnet using Hardhat. It assumes basic familiarity with Ethereum tooling and smart contract development.`}),`\n`,_jsx(Heading,{level:`2`,id:`prerequisites`,children:`Prerequisites`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`Node.js 20+`}),`\n`,_jsx(_components.li,{children:`Basic knowledge of Ethereum development`}),`\n`,_jsx(_components.li,{children:`Browser wallet`}),`\n`]}),`\n`,_jsx(Heading,{level:`2`,id:`environment-setup`,children:`Environment Setup`}),`\n`,_jsx(_components.p,{children:`Use Hardhat to build and deploy contracts.`}),`\n`,_jsx(Heading,{level:`3`,id:`hardhat-setup`,children:`Hardhat Setup`}),`\n`,_jsxs(_components.ol,{children:[`\n`,_jsxs(_components.li,{children:[`\n`,_jsx(_components.p,{children:`Create a new project directory and initialize:`}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`6`,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:`6`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:`mkdir`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` my-plasma-project`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:`cd`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` my-plasma-project`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:`npm`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` init -y`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:`npm`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` install --save-dev hardhat @nomicfoundation/hardhat-toolbox`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:`npm`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` install dotenv`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:`npx`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` hardhat init`})]}),`\n`]})})}),`\n`]}),`\n`,_jsxs(_components.li,{children:[`\n`,_jsxs(_components.p,{children:[`Follow the steps to create a JavaScript project. Save the project wherever you want. You likely don’t need a `,_jsx(_components.code,{children:`.gitignore`}),` file for this quickstart.`]}),`\n`]}),`\n`,_jsxs(_components.li,{children:[`\n`,_jsxs(_components.p,{children:[`Configure `,_jsx(_components.code,{children:`hardhat.config.js`}),` for Plasma testnet:`]}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`14`,language:`javascript`,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:`javascript`,children:_jsxs(_components.code,{language:`javascript`,numberOfLines:`14`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`require(`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"@nomicfoundation/hardhat-toolbox\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`);`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`require(`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"dotenv\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`).config();`})]}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#6E7781`,\"--shiki-dark\":`#6A9955`},children:`/** @type import('hardhat/config').HardhatUserConfig */`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`module.exports = {`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` solidity: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"0.8.28\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` networks: {`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` plasmaTestnet: {`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` url: process.env.RPC_ENDPOINT,`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` chainId: 9746,`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` accounts: [process.env.PRIVATE_KEY] `}),_jsx(_components.span,{style:{color:`#6E7781`,\"--shiki-dark\":`#6A9955`},children:`// We'll set this up next.`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` }`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` }`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`};`})}),`\n`]})})}),`\n`]}),`\n`]}),`\n`,_jsx(Heading,{level:`2`,id:`wallet-\u0026-testnet-setup`,children:`Wallet \u0026 Testnet Setup`}),`\n`,_jsx(Heading,{level:`3`,id:`add-plasma-testnet-to-your-browser-wallet`,children:`Add Plasma Testnet to Your Browser Wallet`}),`\n`,_jsxs(_components.ol,{children:[`\n`,_jsx(_components.li,{children:`Open your browser wallet (MetaMask, Trust Wallet, or Rabby) and click the network selector.`}),`\n`,_jsxs(_components.li,{children:[`Select the option to add a custom network (for example, `,_jsx(_components.strong,{children:`Add Network`}),`, `,_jsx(_components.strong,{children:`Add manually`}),`, or `,_jsx(_components.strong,{children:`Add custom network`}),`).`]}),`\n`,_jsxs(_components.li,{children:[`Enter these details:`,`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Network Name`}),`: Plasma Testnet`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`New RPC URL`}),`: `,_jsx(_components.code,{children:`https://testnet-rpc.plasma.to`})]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Chain ID`}),`: `,_jsx(_components.code,{children:`9746`})]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Currency Symbol`}),`: `,_jsx(_components.code,{children:`XPL`})]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Block Explorer URL`}),`: `,_jsx(_components.code,{children:`https://testnet.plasmascan.to`})]}),`\n`]}),`\n`]}),`\n`,_jsx(_components.li,{children:`Save the network and switch to the Plasma Testnet in your wallet.`}),`\n`]}),`\n`,_jsx(Heading,{level:`3`,id:`get-testnet-tokens`,children:`Get Testnet Tokens`}),`\n`,_jsxs(_components.ol,{children:[`\n`,_jsx(_components.li,{children:`Copy your wallet address from your browser wallet.`}),`\n`,_jsxs(_components.li,{children:[`Visit `,_jsx(_components.a,{href:`https://openfaucet.org/`,children:`openfaucet.org`}),`.`]}),`\n`,_jsx(_components.li,{children:`Enter your address and request testnet tokens.`}),`\n`,_jsx(_components.li,{children:`Wait for the transaction to complete (it should appear in your wallet within a few seconds).`}),`\n`]}),`\n`,_jsx(Heading,{level:`3`,id:`set-up-environment-variables`,children:`Set Up Environment Variables`}),`\n`,_jsxs(_components.ol,{children:[`\n`,_jsxs(_components.li,{children:[`\n`,_jsx(_components.p,{children:`Export your account’s private key using your browser wallet’s account settings.`}),`\n`]}),`\n`,_jsxs(_components.li,{children:[`\n`,_jsxs(_components.p,{children:[`Create a `,_jsx(_components.code,{children:`.env`}),` file in your project root:`]}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`2`,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:`2`,children:[_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`PRIVATE_KEY=your_private_key_here`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`RPC_ENDPOINT=https://testnet-rpc.plasma.to`})}),`\n`]})})}),`\n`]}),`\n`]}),`\n`,_jsx(Warning,{children:_jsxs(_components.p,{children:[`Never commit your private key or mnemonic to version control. Add `,_jsx(_components.code,{children:`.env`}),` to your `,_jsx(_components.code,{children:`.gitignore`}),` file.`]})}),`\n`,_jsx(Heading,{level:`2`,id:`write-a-simple-smart-contract`,children:`Write a Simple Smart Contract`}),`\n`,_jsxs(_components.ol,{children:[`\n`,_jsxs(_components.li,{children:[`\n`,_jsxs(_components.p,{children:[`Create a basic storage contract `,_jsx(_components.code,{children:`contracts/SimpleStorage.sol`}),`:`]}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`21`,language:`solidity`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`solidity`,children:_jsxs(_components.code,{language:`solidity`,numberOfLines:`21`,children:[_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#6E7781`,\"--shiki-dark\":`#6A9955`},children:`// SPDX-License-Identifier: MIT`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:`pragma`}),_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:` solidity`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#D4D4D4`},children:` ^0.8.28`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`;`})]}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`contract`}),_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#4EC9B0`},children:` SimpleStorage`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` {`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#4EC9B0`},children:` string`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:` private`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` storedData;`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` `})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:` event`}),_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#4EC9B0`},children:` DataStored`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#4EC9B0`},children:`string`}),_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#9CDCFE`},children:` data`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`);`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` `})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:` constructor`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`() {`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` storedData `}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`=`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"Hello, Plasma!\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`;`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` }`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` `})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:` function`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:` setData`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#4EC9B0`},children:`string`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:` memory`}),_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#9CDCFE`},children:` data`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`) `}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`public`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` {`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` storedData `}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`=`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` data;`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:` emit`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:` DataStored`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(data);`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` }`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` `})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:` function`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:` getData`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`() `}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`public`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:` view`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:` returns`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` (`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#4EC9B0`},children:`string`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:` memory`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`) {`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:` return`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` storedData;`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` }`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`}`})}),`\n`]})})}),`\n`]}),`\n`,_jsxs(_components.li,{children:[`\n`,_jsx(_components.p,{children:`Compile the contract:`}),`\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:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:`npx`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` hardhat compile`})]}),`\n`]})})}),`\n`,_jsx(_components.p,{children:`This should output something like:`}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`4`,language:`text`,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:`text`,children:_jsxs(_components.code,{language:`text`,numberOfLines:`4`,children:[_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`Downloading compiler 0.8.28`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`Downloading compiler 0.8.28`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`Compiled 2 Solidity files successfully (evm target: paris).`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{})})]})})}),`\n`]}),`\n`]}),`\n`,_jsx(Heading,{level:`2`,id:`testing`,children:`Testing`}),`\n`,_jsxs(_components.ol,{children:[`\n`,_jsxs(_components.li,{children:[`\n`,_jsxs(_components.p,{children:[`Create a test script `,_jsx(_components.code,{children:`test/SimpleStorage.js`}),`:`]}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`20`,language:`javascript`,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:`javascript`,children:_jsxs(_components.code,{language:`javascript`,numberOfLines:`20`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:`const`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` { expect } = require(`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"chai\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`);`})]}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`describe(`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"SimpleStorage\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:`function`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` () {`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:` let`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` simpleStorage;`})]}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` beforeEach(`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:`async`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:` function`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` () {`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:` const`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` SimpleStorage = `}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:`await`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` ethers.getContractFactory(`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"SimpleStorage\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`);`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` simpleStorage = `}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:`await`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` SimpleStorage.deploy();`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:` await`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` simpleStorage.waitForDeployment();`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` });`})}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` it(`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"Should return the initial greeting\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:`async`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:` function`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` () {`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` expect(`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:`await`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` simpleStorage.getData()).to.equal(`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"Hello, Plasma!\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`);`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` });`})}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` it(`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"Should update the stored data\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:`async`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:` function`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` () {`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:` await`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` simpleStorage.setData(`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"Updated data\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`);`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` expect(`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:`await`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` simpleStorage.getData()).to.equal(`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"Updated data\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`);`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` });`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`});`})}),`\n`]})})}),`\n`]}),`\n`,_jsxs(_components.li,{children:[`\n`,_jsx(_components.p,{children:`Run the tests:`}),`\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:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:`npx`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` hardhat test`})]}),`\n`]})})}),`\n`,_jsx(_components.p,{children:`This should output something like:`}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`23`,language:`text`,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:`text`,children:_jsxs(_components.code,{language:`text`,numberOfLines:`23`,children:[_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`Lock`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:` Deployment`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:` ✔ Should set the right unlockTime (454ms)`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:` ✔ Should set the right owner`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:` ✔ Should receive and store the funds to lock`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:` ✔ Should fail if the unlockTime is not in the future`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:` Withdrawals`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:` Validations`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:` ✔ Should revert with the right error if called too soon`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:` ✔ Should revert with the right error if called from another account`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:` ✔ Shouldn't fail if the unlockTime has arrived and the owner calls it`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:` Events`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:` ✔ Should emit an event on withdrawals`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:` Transfers`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:` ✔ Should transfer the funds to the owner`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`SimpleStorage`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:` ✔ Should return the initial greeting`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:` ✔ Should update the stored data`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`11 passing (541ms)`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{})})]})})}),`\n`]}),`\n`]}),`\n`,_jsx(Heading,{level:`3`,id:`deploy-to-plasma-testnet`,children:`Deploy to Plasma Testnet`}),`\n`,_jsxs(_components.ol,{children:[`\n`,_jsxs(_components.li,{children:[`\n`,_jsxs(_components.p,{children:[`First, make a `,_jsx(_components.code,{children:`scripts`}),` directory:`]}),`\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:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:`mkdir`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` scripts`})]}),`\n`]})})}),`\n`]}),`\n`,_jsxs(_components.li,{children:[`\n`,_jsxs(_components.p,{children:[`Next, create a script to deploy the contract `,_jsx(_components.code,{children:`scripts/deploy.js`}),`:`]}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`17`,language:`javascript`,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:`javascript`,children:_jsxs(_components.code,{language:`javascript`,numberOfLines:`17`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:`async`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:` function`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` main() {`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:` const`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` SimpleStorage = `}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:`await`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` ethers.getContractFactory(`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"SimpleStorage\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`);`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` `})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` console.log(`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"Deploying SimpleStorage...\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`);`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:` const`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` simpleStorage = `}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:`await`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` SimpleStorage.deploy();`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:` await`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` simpleStorage.waitForDeployment();`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` `})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:` const`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` address = `}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:`await`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` simpleStorage.getAddress();`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` console.log(`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"SimpleStorage deployed to:\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, address);`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`}`})}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`main()`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` .then(() => process.exit(0))`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` .`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:`catch`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`((error) => {`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` console.error(error);`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` process.exit(1);`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` });`})}),`\n`]})})}),`\n`]}),`\n`,_jsxs(_components.li,{children:[`\n`,_jsx(_components.p,{children:`Deploy the contract:`}),`\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:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:`npx`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` hardhat run scripts/deploy.js --network plasmaTestnet`})]}),`\n`]})})}),`\n`,_jsx(_components.p,{children:`This should output something like:`}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`3`,language:`text`,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:`text`,children:_jsxs(_components.code,{language:`text`,numberOfLines:`3`,children:[_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`Deploying SimpleStorage...`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`SimpleStorage deployed to: 0xaa4FB2A8eD6953A4e57b8097BAf048d7919e6262`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{})})]})})}),`\n`]}),`\n`,_jsxs(_components.li,{children:[`\n`,_jsxs(_components.p,{children:[`Make a note of the `,_jsx(_components.code,{children:`deployed to:`}),` address. This is the address of your contract on the Plasma testnet.`]}),`\n`]}),`\n`]}),`\n`,_jsx(Heading,{level:`2`,id:`verify-deployment`,children:`Verify Deployment`}),`\n`,_jsxs(_components.ol,{children:[`\n`,_jsx(_components.li,{children:`Copy the contract address.`}),`\n`,_jsxs(_components.li,{children:[`Visit the `,_jsx(_components.a,{href:`https://testnet.plasmascan.to/`,children:`Plasma testnet explorer`}),`.`]}),`\n`,_jsx(_components.li,{children:`Search for your contract address to view the deployment transaction.`}),`\n`]}),`\n`,_jsx(Heading,{level:`2`,id:`troubleshooting`,children:`Troubleshooting`}),`\n`,_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{style:{textAlign:`left`},children:`Issue`}),_jsx(_components.th,{style:{textAlign:`left`},children:`Resolution`})]})}),_jsxs(_components.tbody,{children:[_jsxs(_components.tr,{children:[_jsx(_components.td,{style:{textAlign:`left`},children:`Gas estimation errors`}),_jsx(_components.td,{style:{textAlign:`left`},children:`Ensure wallet has sufficient XPL`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{style:{textAlign:`left`},children:`Network connection errors`}),_jsx(_components.td,{style:{textAlign:`left`},children:`Verify RPC URL and testnet availability`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{style:{textAlign:`left`},children:`Private key errors`}),_jsxs(_components.td,{style:{textAlign:`left`},children:[`Ensure `,_jsx(_components.code,{children:`.env`}),` is configured correctly (no `,_jsx(_components.code,{children:`0x`}),` prefix if required)`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{style:{textAlign:`left`},children:`Explorer delay`}),_jsx(_components.td,{style:{textAlign:`left`},children:`Wait a few minutes; explorer may be syncing`})]})]})]})]})}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":"Quickstart","description":"Set up your environment and deploy a contract to Plasma Testnet with Hardhat or Foundry.","canonical":"https://www.plasma.org/docs/guides/development/quickstart","og:type":"article","og:title":"Quickstart - Deploy to Plasma Testnet","og:description":"Environment setup and first deployment.","og:image":"https://docs.plasma.org/images/quickstart-social-card.png","twitter:title":"Quickstart - Deploy to Plasma Testnet","twitter:description":"Environment setup and first deployment.","twitter:image":"https://docs.plasma.org/images/quickstart-social-card.png","href":"/docs/guides/development/quickstart"}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[{"title":"Prerequisites","slug":"prerequisites","depth":2,"children":[]},{"title":"Environment Setup","slug":"environment-setup","depth":2,"children":[{"title":"Hardhat Setup","slug":"hardhat-setup","depth":3,"children":[]}]},{"title":"Wallet \u0026 Testnet Setup","slug":"wallet-\u0026-testnet-setup","depth":2,"children":[{"title":"Add Plasma Testnet to Your Browser Wallet","slug":"add-plasma-testnet-to-your-browser-wallet","depth":3,"children":[]},{"title":"Get Testnet Tokens","slug":"get-testnet-tokens","depth":3,"children":[]},{"title":"Set Up Environment Variables","slug":"set-up-environment-variables","depth":3,"children":[]}]},{"title":"Write a Simple Smart Contract","slug":"write-a-simple-smart-contract","depth":2,"children":[]},{"title":"Testing","slug":"testing","depth":2,"children":[{"title":"Deploy to Plasma Testnet","slug":"deploy-to-plasma-testnet","depth":3,"children":[]}]},{"title":"Verify Deployment","slug":"verify-deployment","depth":2,"children":[]},{"title":"Troubleshooting","slug":"troubleshooting","depth":2,"children":[]}],"codeExamples":{}},"jsLinks":[],"subdomain":"plasma-97e11032","siteName":"Plasma Docs - Build stablecoin applications on Plasma","title":"Quickstart - Deploy to Plasma Testnet","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{"en":{"href":"/docs/guides/development/quickstart","matchLevel":0},"pt-BR":{"href":"/pt-BR/docs/guides/development/quickstart","matchLevel":1,"canonicalOverride":true},"cn":{"href":"/cn/docs/guides/development/quickstart","matchLevel":1,"canonicalOverride":true},"fr":{"href":"/fr/docs/guides/development/quickstart","matchLevel":1,"canonicalOverride":true},"de":{"href":"/de/docs/guides/development/quickstart","matchLevel":1,"canonicalOverride":true},"ko":{"href":"/ko/docs/guides/development/quickstart","matchLevel":1,"canonicalOverride":true},"ru":{"href":"/ru/docs/guides/development/quickstart","matchLevel":1,"canonicalOverride":true},"es":{"href":"/es/docs/guides/development/quickstart","matchLevel":1,"canonicalOverride":true}}},"lastModified":"2026-06-14T23:19:20.007Z","originalFileLocation":"docs/guides/development/quickstart.mdx","locale":"en"},"headHtml":"\u003cscript data-mint-head>(function(){var d=document.documentElement,p=\"light\";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=\"Set up your environment and deploy a contract to Plasma Testnet with Hardhat or Foundry.\">\u003cmeta data-mint-head name=\"keywords\" content=\"plasma, blockchain, stablecoin, payments, ethereum, bitcoin, defi, documentation\">\u003cmeta data-mint-head name=\"application-name\" content=\"Plasma Docs - Build stablecoin applications on Plasma\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/plasma-97e11032/IhiRMsnO8Fwqb8ud/_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/plasma-97e11032/IhiRMsnO8Fwqb8ud/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/plasma-97e11032/IhiRMsnO8Fwqb8ud/_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/plasma-97e11032/IhiRMsnO8Fwqb8ud/_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/plasma-97e11032/IhiRMsnO8Fwqb8ud/_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/plasma-97e11032/IhiRMsnO8Fwqb8ud/_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/plasma-97e11032/IhiRMsnO8Fwqb8ud/_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/plasma-97e11032/IhiRMsnO8Fwqb8ud/_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/plasma-97e11032/IhiRMsnO8Fwqb8ud/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"Quickstart - Deploy to Plasma Testnet\">\u003cmeta data-mint-head property=\"og:description\" content=\"Environment setup and first deployment.\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"Plasma Documentation\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://www.plasma.org/docs/guides/development/quickstart\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://docs.plasma.org/images/quickstart-social-card.png\">\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=\"Quickstart - Deploy to Plasma Testnet\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"Environment setup and first deployment.\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://docs.plasma.org/images/quickstart-social-card.png\">\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/plasma-97e11032/IhiRMsnO8Fwqb8ud/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"Plasma Docs - Build stablecoin applications on Plasma\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#162F29\">\u003cmeta data-mint-head name=\"og:image:secure_url\" content=\"https://docs.plasma.org/images/docs-social-card.png\">\u003cmeta data-mint-head name=\"og:image:type\" content=\"image/png\">\u003cmeta data-mint-head name=\"og:image:alt\" content=\"Plasma - The high-performance blockchain for stablecoin payments.\">\u003cmeta data-mint-head name=\"twitter:creator\" content=\"@Plasma\">\u003clink data-mint-head rel=\"canonical\" href=\"https://www.plasma.org/docs/guides/development/quickstart\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/docs/guides/development/quickstart.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://www.plasma.org/#organization\",\"name\":\"Plasma Docs - Build stablecoin applications on Plasma\",\"url\":\"https://www.plasma.org\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/plasma-97e11032/40yqhtV73KeVHAe8/Lightmode.svg?fit=max\u0026auto=format\u0026n=40yqhtV73KeVHAe8\u0026q=85\u0026s=b7066f5881b68523d889854df27e2d62\"}},{\"@type\":\"WebSite\",\"@id\":\"https://www.plasma.org/docs#website\",\"name\":\"Plasma Docs - Build stablecoin applications on Plasma\",\"url\":\"https://www.plasma.org/docs\",\"publisher\":{\"@id\":\"https://www.plasma.org/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://www.plasma.org/docs/guides/development/quickstart#webpage\",\"url\":\"https://www.plasma.org/docs/guides/development/quickstart\",\"name\":\"Quickstart\",\"description\":\"Set up your environment and deploy a contract to Plasma Testnet with Hardhat or Foundry.\",\"dateModified\":\"2026-06-14T23:19:20.007Z\",\"isPartOf\":{\"@id\":\"https://www.plasma.org/docs#website\"},\"breadcrumb\":{\"@id\":\"https://www.plasma.org/docs/guides/development/quickstart#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://www.plasma.org/docs/guides/development/quickstart#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Development\",\"item\":\"https://www.plasma.org/docs/docs/guides/development/quickstart\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Quickstart\",\"item\":\"https://www.plasma.org/docs/guides/development/quickstart\"}]},{\"@type\":[\"Article\",\"TechArticle\"],\"@id\":\"https://www.plasma.org/docs/guides/development/quickstart#article\",\"headline\":\"Quickstart\",\"name\":\"Quickstart\",\"description\":\"Set up your environment and deploy a contract to Plasma Testnet with Hardhat or Foundry.\",\"url\":\"https://www.plasma.org/docs/guides/development/quickstart\",\"mainEntityOfPage\":{\"@id\":\"https://www.plasma.org/docs/guides/development/quickstart#webpage\"},\"image\":\"https://docs.plasma.org/images/quickstart-social-card.png\",\"dateModified\":\"2026-06-14T23:19:20.007Z\",\"publisher\":{\"@id\":\"https://www.plasma.org/#organization\"},\"isPartOf\":{\"@id\":\"https://www.plasma.org/docs#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"Plasma Docs - Build stablecoin applications on Plasma\",\"publisher\":{\"@type\":\"Organization\",\"name\":\"Plasma Docs - Build stablecoin applications on Plasma\"},\"provider\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","agentPointerHref":"/docs/guides/development/quickstart.md","siteName":"Plasma Docs - Build stablecoin applications on Plasma","nav":{"global":null,"languages":[{"language":"en","tabs":[{"tab":"Get Started","pages":[{"title":"Get Started","href":"/docs/get-started/introduction/start-here"}]},{"tab":"Plasma Chain","pages":[{"title":"Plasma Chain","href":"/docs/plasma-chain/introduction/start-here"}]},{"tab":"Payments","pages":[{"title":"Payments","href":"/docs/payments/learn/introduction"}]},{"tab":"Node Operators","pages":[{"title":"Node Operators","href":"/docs/node-operators/setup-and-configuration/overview"}]},{"tab":"Guides","groups":[{"group":"Development","pages":[{"title":"Quickstart","href":"/docs/guides/development/quickstart"},{"title":"Set Up Dev Environment","description":"Configure your tools and connect to Plasma for smart contract development.","href":"/docs/guides/development/set-up-a-dev-environment"}]},{"group":"Asset Management","pages":[{"title":"Browser Wallet Setup","href":"/docs/guides/asset-management/browser-wallet-setup"},{"title":"Bridge USDC with Bridge Kit","href":"/docs/guides/asset-management/bridge-usdc-with-bridge-kit"}]},{"group":"Network Configuration","pages":[{"title":"Mainnet Details","href":"/docs/guides/network-configuration/mainnet-details"},{"title":"Testnet Details","href":"/docs/guides/network-configuration/testnet-details"}]},{"group":"Smart Contracts","pages":[{"title":"Deploy a Contract","href":"/docs/guides/smart-contracts/deploy-a-contract"},{"title":"Verify a Contract","href":"/docs/guides/smart-contracts/verify-a-contract"}]},{"group":"Testing and Resources","pages":[{"title":"Get Testnet XPL","href":"/docs/guides/testing-and-resources/get-test-tokens"}]}],"global":{"anchors":[{"anchor":"Explorer","icon":"magnifying-glass","href":"https://plasmascan.to/"},{"anchor":"Status","icon":"signal","href":"https://statuspage.incident.io/plasmanetwork"},{"anchor":"Bridge","icon":"bridge","href":"https://stargate.finance/bridge?srcChain=ethereum\u0026srcToken=0xdAC17F958D2ee523a2206206994597C13D831ec7\u0026dstChain=plasma\u0026dstToken=0xB8CE59FC3717ada4C02eaDF9682A9e934F625ebb"},{"anchor":"Faucet","icon":"droplet","href":"https://www.plasma.org/docs/plasma-chain/tools/faucets"},{"anchor":"Support","icon":"discord","href":"https://discord.com/invite/plasmafdn"}]}}]},{"language":"pt-BR","pages":[{"title":"pt-BR","href":"/pt-BR/docs/guides/development/quickstart"}]},{"language":"cn","pages":[{"title":"cn","href":"/cn/docs/guides/development/quickstart"}]},{"language":"fr","pages":[{"title":"fr","href":"/fr/docs/guides/development/quickstart"}]},{"language":"de","pages":[{"title":"de","href":"/de/docs/guides/development/quickstart"}]},{"language":"ko","pages":[{"title":"ko","href":"/ko/docs/guides/development/quickstart"}]},{"language":"ru","pages":[{"title":"ru","href":"/ru/docs/guides/development/quickstart"}]},{"language":"es","pages":[{"title":"es","href":"/es/docs/guides/development/quickstart"}]}]},"basePath":"","title":"Quickstart - Deploy to Plasma Testnet","buildId":"dpl_596ePT575z4qnAFksq1biRW97aLY","deploymentId":"dpl_596ePT575z4qnAFksq1biRW97aLY","dynamics":[],"chunks":[]}