The P2P.ORG Signer SDK allows you to sign transactions for 15+ networks using a unified interface. This guide demonstrates how to configure a signer and sign an transaction using the Hoodi testnet as an example.
The following function illustrates the standard workflow: fetching a fresh nonce from the blockchain, initializing the factory, and signing the payload.
import { SignerFactory, Signers } from '@p2p-org/signer-sdk';import { ethers } from 'ethers';/** * @param unsignedTransactionData - The transaction object received from the Staking API */async function signTransaction(unsignedTransactionData) { // A. Prepare the provider to fetch on-chain metadata const provider = new ethers.providers.JsonRpcProvider(parameters.rpcURL); // B. Ensure the transaction has the correct Nonce for the wallet unsignedTransactionData['nonce'] = await provider.getTransactionCount(parameters.walletAddress); // C. Create a typed signer instance using the SignerFactory // We specify 'Signers.Ethereum' to handle EVM-compatible logic const signer = SignerFactory.createSigner(Signers.Ethereum, signerConfig); // D. Sign the transaction locally // The private key never leaves your environment const signedTx = await signer.sign(unsignedTransactionData); return signedTx;}
{"docsConfig":{"theme":"sequoia","$schema":"https://mintlify.com/docs.json","name":"P2P.ORG","colors":{"primary":"#2656F2","light":"#6687FF","dark":"#335FFF"},"logo":{"light":"https://mintcdn.com/p2p0rg/P8FlZ09_NvIz_-O_/images/logo-light.svg?fit=max\u0026auto=format\u0026n=P8FlZ09_NvIz_-O_\u0026q=85\u0026s=0ff22e98db9b58fe911cfb3ac54c950c","dark":"https://mintcdn.com/p2p0rg/P8FlZ09_NvIz_-O_/images/logo-dark.svg?fit=max\u0026auto=format\u0026n=P8FlZ09_NvIz_-O_\u0026q=85\u0026s=72ac6791b5d4b885b99af206e11c9ad1","href":"https://p2p.org"},"favicon":"https://mintcdn.com/p2p0rg/P8FlZ09_NvIz_-O_/images/favicon.svg?fit=max\u0026auto=format\u0026n=P8FlZ09_NvIz_-O_\u0026q=85\u0026s=18b2f07b9b835c134df11b49cee33902","api":{"playground":{"display":"interactive"}},"appearance":{"default":"light"},"background":{"color":{"light":"#FFFFFF","dark":"#151519"}},"search":{"prompt":"Search"},"fonts":{"heading":{"family":"Inter"},"body":{"family":"Inter"}},"icons":{"library":"lucide"},"contextual":{"options":["copy","view","chatgpt","claude"],"display":"header"},"interaction":{"drilldown":true},"styling":{"latex":false},"navigation":{"pages":[]}},"deployment":{"deploymentMetadataValue":{"subdomain":"p2p0rg","hasAudioNarration":false,"actualSubdomain":"p2p0rg","customDomains":["docs.p2p.org"],"gitSource":{"type":"github","owner":"p2p-org","repo":"p2p-docs","deployBranch":"main","contentDirectory":"","isPrivate":true,"mountPath":"","label":""},"chroma":{"liveDeploymentHistoryId":"6aba501cab4eb664b6a99433","collectionId":"f1e455b5-be39-4414-8835-431ea6de8f28","schemaVersion":"v3","latestBuiltDeploymentHistoryId":"6aba501cab4eb664b6a99433"},"entitlements":{"AI_CHAT":{"status":"ENABLED"},"WEB_MCP":{"status":"ENABLED"},"NARRATION":{"status":"ENABLED"}},"buildId":"6aba501cab4eb664b6a99433","clientVersion":"0.0.4043","searchFilterCounts":[{"language":"default","tag":"API Reference","count":213},{"language":"default","tag":"Staking API","count":174},{"language":"default","tag":"Documentation","count":127},{"language":"default","tag":"API Products","count":87},{"language":"default","tag":"Data API","count":32},{"language":"default","tag":"Ethereum","count":24},{"language":"default","tag":"Unified API","count":23},{"language":"default","tag":"Solana","count":23},{"language":"default","tag":"Polkadot","count":22},{"language":"default","tag":"DeFi API","count":20}]},"assistantConfig":{"enableAskAiButton":false,"enableStarterQuestions":false,"enableContextualStarterQuestions":false,"enableAskAiSearchBar":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":"snapshot-serving-live","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"stripTemperatureMiddleware","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"support-platform-pylon-zendesk","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"instant-rollback","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications-server","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-fable","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fixed-ai-action-pricing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automation-resolve-merge-conflict","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"scoped-publishing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"mintql","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"page-level-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-version-history-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-page-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"full-page-search","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workspace-projects","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"assistant-v5","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"byok-sep-25","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fork-pr-previews","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"revalidation-jwt","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"vite-origin","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-updated-9-15","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-sso-scim","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"hobby-abuse-scan","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"dashboard-inbox","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-signup","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"turbopuffer-dual-write","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-enabled","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"approve-review-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false}],"googleFontsInlined":false},"customCss":[{"filePath":"custom.css","content":":root{--p2p-blue:#2656f2;--p2p-blue-hover:#1646e3;--p2p-link:#2656f2;--p2p-link-hover:#1646e3;--p2p-border:#cbccd1;--p2p-text:#0f0f13;--p2p-heading:#0f0f13;--p2p-body:#4b5563;--p2p-muted:#656c78;--p2p-card-bg:#f0f2f4;--p2p-card-text:#0f0f13;--p2p-card-border-strong:#cbccd1}:root.dark{--p2p-blue:#335fff;--p2p-blue-hover:#4d73ff;--p2p-link:#6687ff;--p2p-link-hover:#8ca4ff;--p2p-border:#232529;--p2p-text:#f0f2f4;--p2p-heading:#f4f5f6;--p2p-body:#b4b6bd;--p2p-muted:#9a9ca5;--p2p-card-bg:#1c1e22;--p2p-card-text:#f0f2f4;--p2p-card-border-strong:#232529}code,pre code{font-family:\"IBM Plex Mono\",ui-monospace,SFMono-Regular,Menlo,monospace!important}.prose table td,.prose table th{min-width:0}.p2p-hub{max-width:1000px;margin:0 auto;padding:3rem 2rem 4rem;color:var(--p2p-text)}.p2p-hub .hub-header{text-align:center}.p2p-hub h1.hub-header__title{margin-bottom:.5rem;font-weight:600;font-size:32px;line-height:1.1875;letter-spacing:-.01em}.p2p-hub .hub-header__subtitle{color:var(--p2p-body);font-weight:400;font-size:16px;line-height:20px;letter-spacing:-.01em}.p2p-hub h2.hub-section__title,.p2p-hub h3{font-weight:600;font-size:24px;line-height:28px}.p2p-hub h2.hub-section__title{margin:4rem 0 1rem;letter-spacing:-.0196em;text-align:center}.p2p-hub h3{text-align:left;margin:2rem 0 1rem}html .p2p-hub .card{border:1px solid transparent;border-radius:.75rem;background-color:var(--p2p-card-bg);box-shadow:none;transition:border-color .2s,background-color .2s}html .p2p-hub .card:hover{border-color:var(--p2p-blue)}.p2p-hub [data-component-part=card-icon] svg{width:24px;height:24px;color:var(--p2p-card-text)}.p2p-hub [data-component-part=card-title]{font-size:1rem;line-height:1.25rem;color:var(--p2p-heading)}.p2p-hub [data-component-part=card-content]{font-size:.875rem;line-height:1.25rem;color:var(--p2p-muted)}.p2p-hub table{font-size:.875rem}.p2p-hub table th{height:32px;padding:0 .75rem;font-weight:600;font-size:14px;line-height:1.15;letter-spacing:-.01em;vertical-align:middle}.p2p-hub table td{padding:.5rem .75rem}.p2p-hub tbody tr{border-top:1px solid var(--p2p-border);vertical-align:top}.p2p-hub table td:first-child,.p2p-hub table th:first-child{padding-left:0}.p2p-hub table a{color:var(--p2p-link)}.p2p-hub table a:hover{color:var(--p2p-link-hover)}.p2p-hub ul{list-style:disc;padding-left:1.25rem}.p2p-hub li{margin-bottom:.5rem;line-height:1.5}.hub-section--cta{margin-top:4rem;text-align:center}.hub-section--cta h2{margin-bottom:.5rem;font-size:2rem;font-weight:600}.hub-section--cta [data-as=p],.hub-section--cta p{display:block;color:var(--p2p-body)}.p2p-hub__actions{font-size:.875rem;margin-top:1.5rem;display:flex;justify-content:center;gap:.75rem}.p2p-hub__button{display:inline-flex;align-items:center;gap:.5rem;padding:.5rem 1rem;border:1px solid var(--p2p-blue);border-radius:.5rem;font-weight:500;text-decoration:none;background-color:var(--p2p-blue);color:#fff;transition:background-color .2s,border-color .2s}.p2p-hub__button:hover{background-color:var(--p2p-blue-hover);border-color:var(--p2p-blue-hover)}.p2p-hub__button--secondary{background-color:transparent;border-color:var(--p2p-card-border-strong);color:var(--p2p-heading)}.p2p-hub__button--secondary:hover{background-color:var(--p2p-card-bg);border-color:var(--p2p-blue)}@media (max-width:768px){.p2p-hub{padding:2rem 1.5rem 3rem}.p2p-hub h1.hub-header__title{font-size:28px}.p2p-hub h2.hub-section__title{margin:3rem 0 1rem;font-size:20px}.hub-section--cta h2{font-size:1.5rem}.p2p-hub__actions{flex-direction:column}.p2p-hub__button{justify-content:center}}"}],"page":{"pagePath":"docs/signer-sdk-getting-started","slug":"/docs/signer-sdk-getting-started","pageMetadata":{"title":"Getting started","description":"The P2P.ORG Signer SDK allows you to sign transactions for 15+ networks using a unified interface. This guide demonstrates how to configure a signer and sign an transaction using the Hoodi testnet as an example.","href":"/docs/signer-sdk-getting-started"},"description":{"compiledSource":"\"use strict\";\nconst {jsx: _jsx} = arguments[0];\nconst {useMDXComponents: _provideComponents} = arguments[0];\nfunction _createMdxContent(props) {\n const _components = {\n p: \"p\",\n ..._provideComponents(),\n ...props.components\n };\n return _jsx(_components.p, {\n children: \"The P2P.ORG Signer SDK allows you to sign transactions for 15+ networks using a unified interface. This guide demonstrates how to configure a signer and sign an transaction using the Hoodi testnet as an example.\"\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`,p:`p`,pre:`pre`,span:`span`,..._provideComponents(),...props.components},{CodeBlock,CodeGroup,Heading}=_components;if(!CodeBlock)_missingMdxReference(`CodeBlock`,true);if(!CodeGroup)_missingMdxReference(`CodeGroup`,true);if(!Heading)_missingMdxReference(`Heading`,true);return _jsxs(_Fragment,{children:[_jsx(Heading,{level:`2`,id:`1-installation`,children:`1. Installation`}),`\n`,_jsxs(_components.p,{children:[`Install the Signer SDK NPM package. Refer to `,_jsx(_components.a,{href:`https://www.npmjs.com/package/@p2p-org/signer-sdk`,children:`this link`}),` for more information.`]}),`\n`,_jsx(Heading,{level:`2`,id:`2-configuration`,children:`2. Configuration`}),`\n`,_jsx(_components.p,{children:`To initialize a signer, you need two sets of data: your Signer Configuration (sensitive keys) and your Network Parameters (RPC and public addresses).`}),`\n`,_jsx(CodeGroup,{children:_jsx(CodeBlock,{filename:`JavaScript`,numberOfLines:`13`,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:`13`,children:[_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#6E7781`,\"--shiki-dark\":`#6A9955`},children:`// 1. Signer Config: Contains sensitive private keys and network targeting`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`const`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#4FC1FF`},children:` signerConfig`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` =`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` {`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` ethereumPrivateKey:`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` process`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`env`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#4FC1FF`},children:`PRIVATE_KEY`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#6E7781`,\"--shiki-dark\":`#6A9955`},children:`// e.g., '0x...'`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` networkName:`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` 'hoodi'`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#6E7781`,\"--shiki-dark\":`#6A9955`},children:`// Use 'mainnet' for production or 'hoodi' for testnet`})]}),`\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:`#6E7781`,\"--shiki-dark\":`#6A9955`},children:`// 2. Network Parameters: Public data for transaction preparation`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`const`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#4FC1FF`},children:` parameters`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` =`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` {`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` apiBase:`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` 'https://api-test.p2p.org/api/v1'`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` token:`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` 'YOUR_P2P_API_TOKEN'`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` rpcURL:`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` 'https://ethereum-hoodi-rpc.publicnode.com'`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` walletAddress:`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` '0x88bf...'`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`};`})}),`\n`]})})})}),`\n`,_jsx(Heading,{level:`2`,id:`3-signing-a-transaction`,children:`3. Signing a transaction`}),`\n`,_jsx(_components.p,{children:`The following function illustrates the standard workflow: fetching a fresh nonce from the blockchain, initializing the factory, and signing the payload.`}),`\n`,_jsx(CodeGroup,{children:_jsx(CodeBlock,{filename:`JavaScript`,numberOfLines:`23`,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:`23`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:`import`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` { `}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`SignerFactory`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`Signers`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` } `}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:`from`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` '@p2p-org/signer-sdk'`}),_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:`import`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` { `}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`ethers`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` } `}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:`from`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` 'ethers'`}),_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:`#6E7781`,\"--shiki-dark\":`#6A9955`},children:`/**`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#6E7781`,\"--shiki-dark\":`#6A9955`},children:` * `}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`@param`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` unsignedTransactionData`}),_jsx(_components.span,{style:{color:`#6E7781`,\"--shiki-dark\":`#6A9955`},children:` - The transaction object received from the Staking API`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#6E7781`,\"--shiki-dark\":`#6A9955`},children:` */`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`async`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:` function`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:` signTransaction`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#9CDCFE`},children:`unsignedTransactionData`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`) {`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#6E7781`,\"--shiki-dark\":`#6A9955`},children:` // A. Prepare the provider to fetch on-chain metadata`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:` const`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#4FC1FF`},children:` provider`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` =`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:` new`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` ethers`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`providers`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:`JsonRpcProvider`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`parameters`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`rpcURL`}),_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:`#6E7781`,\"--shiki-dark\":`#6A9955`},children:` // B. Ensure the transaction has the correct Nonce for the wallet`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` unsignedTransactionData`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`[`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`'nonce'`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`] `}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`=`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:` await`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` provider`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:`getTransactionCount`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`parameters`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`walletAddress`}),_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:`#6E7781`,\"--shiki-dark\":`#6A9955`},children:` // C. Create a typed signer instance using the SignerFactory`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#6E7781`,\"--shiki-dark\":`#6A9955`},children:` // We specify 'Signers.Ethereum' to handle EVM-compatible logic`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:` const`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#4FC1FF`},children:` signer`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` =`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` SignerFactory`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:`createSigner`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`Signers`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`Ethereum`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`signerConfig`}),_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:`#6E7781`,\"--shiki-dark\":`#6A9955`},children:` // D. Sign the transaction locally`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#6E7781`,\"--shiki-dark\":`#6A9955`},children:` // The private key never leaves your environment`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:` const`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#4FC1FF`},children:` signedTx`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` =`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:` await`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` signer`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:`sign`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`unsignedTransactionData`}),_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\":`#C586C0`},children:` return`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` signedTx`}),_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`]})})})})]})}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":"Getting started","description":"The P2P.ORG Signer SDK allows you to sign transactions for 15+ networks using a unified interface. This guide demonstrates how to configure a signer and sign an transaction using the Hoodi testnet as an example.","href":"/docs/signer-sdk-getting-started"}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[{"title":"1. Installation","slug":"1-installation","depth":2,"children":[]},{"title":"2. Configuration","slug":"2-configuration","depth":2,"children":[]},{"title":"3. Signing a transaction","slug":"3-signing-a-transaction","depth":2,"children":[]}],"codeExamples":{}},"jsLinks":[],"subdomain":"p2p0rg","siteName":"P2P.ORG","title":"Getting started - P2P.ORG","relatedPagesConfig":{"enabled":true,"limit":5,"mode":"automatic"},"navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-09-01T11:29:16.084Z","originalFileLocation":"docs/signer-sdk-getting-started.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=\"The P2P.ORG Signer SDK allows you to sign transactions for 15+ networks using a unified interface. This guide demonstrates how to configure a signer and sign an transaction using the Hoodi testnet as an example.\">\u003cmeta data-mint-head name=\"application-name\" content=\"P2P.ORG\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/p2p0rg/ALOL6mOi4b2QQ8JY/_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/p2p0rg/ALOL6mOi4b2QQ8JY/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/p2p0rg/ALOL6mOi4b2QQ8JY/_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/p2p0rg/ALOL6mOi4b2QQ8JY/_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/p2p0rg/ALOL6mOi4b2QQ8JY/_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/p2p0rg/ALOL6mOi4b2QQ8JY/_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/p2p0rg/ALOL6mOi4b2QQ8JY/_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/p2p0rg/ALOL6mOi4b2QQ8JY/_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/p2p0rg/ALOL6mOi4b2QQ8JY/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"Getting started - P2P.ORG\">\u003cmeta data-mint-head property=\"og:description\" content=\"The P2P.ORG Signer SDK allows you to sign transactions for 15+ networks using a unified interface. This guide demonstrates how to configure a signer and sign an transaction using the Hoodi testnet as an example.\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"P2P.ORG\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://docs.p2p.org/docs/signer-sdk-getting-started\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://p2p0rg.mintlify.app/_mintlify/api/og/v2?division=Signer+SDK\u0026amp;title=Getting+started\u0026amp;description=The+P2P.ORG+Signer+SDK+allows+you+to+sign+transactions+for+15%2B+networks+using+a+unified+interface.+This+guide+demonstrates+how+to+configure+a+signer+and+sign+an\u0026amp;theme=9b864cdba342348b15de1c46\u0026amp;signature=c4177a8575f4864d4ebc9b9490ec971cd471f7aa162c447083c1f4fbe0abaaba\">\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=\"Getting started - P2P.ORG\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"The P2P.ORG Signer SDK allows you to sign transactions for 15+ networks using a unified interface. This guide demonstrates how to configure a signer and sign an transaction using the Hoodi testnet as an example.\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://p2p0rg.mintlify.app/_mintlify/api/og/v2?division=Signer+SDK\u0026amp;title=Getting+started\u0026amp;description=The+P2P.ORG+Signer+SDK+allows+you+to+sign+transactions+for+15%2B+networks+using+a+unified+interface.+This+guide+demonstrates+how+to+configure+a+signer+and+sign+an\u0026amp;theme=9b864cdba342348b15de1c46\u0026amp;signature=c4177a8575f4864d4ebc9b9490ec971cd471f7aa162c447083c1f4fbe0abaaba\">\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/p2p0rg/ALOL6mOi4b2QQ8JY/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"P2P.ORG\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#2656F2\">\u003clink data-mint-head rel=\"canonical\" href=\"https://docs.p2p.org/docs/signer-sdk-getting-started\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/docs/signer-sdk-getting-started.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://docs.p2p.org/#organization\",\"name\":\"P2P.ORG\",\"url\":\"https://docs.p2p.org\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/p2p0rg/P8FlZ09_NvIz_-O_/images/logo-light.svg?fit=max\u0026auto=format\u0026n=P8FlZ09_NvIz_-O_\u0026q=85\u0026s=0ff22e98db9b58fe911cfb3ac54c950c\"}},{\"@type\":\"WebSite\",\"@id\":\"https://docs.p2p.org#website\",\"name\":\"P2P.ORG\",\"url\":\"https://docs.p2p.org\",\"publisher\":{\"@id\":\"https://docs.p2p.org/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://docs.p2p.org/docs/signer-sdk-getting-started#webpage\",\"url\":\"https://docs.p2p.org/docs/signer-sdk-getting-started\",\"name\":\"Getting started\",\"description\":\"The P2P.ORG Signer SDK allows you to sign transactions for 15+ networks using a unified interface. This guide demonstrates how to configure a signer and sign an transaction using the Hoodi testnet as an example.\",\"dateModified\":\"2026-09-01T11:29:16.084Z\",\"isPartOf\":{\"@id\":\"https://docs.p2p.org#website\"},\"breadcrumb\":{\"@id\":\"https://docs.p2p.org/docs/signer-sdk-getting-started#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://docs.p2p.org/docs/signer-sdk-getting-started#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Signer SDK\",\"item\":\"https://docs.p2p.org/docs/signer-sdk-overview\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Getting started\",\"item\":\"https://docs.p2p.org/docs/signer-sdk-getting-started\"}]},{\"@type\":[\"Article\",\"TechArticle\"],\"@id\":\"https://docs.p2p.org/docs/signer-sdk-getting-started#article\",\"headline\":\"Getting started\",\"name\":\"Getting started\",\"description\":\"The P2P.ORG Signer SDK allows you to sign transactions for 15+ networks using a unified interface. This guide demonstrates how to configure a signer and sign an transaction using the Hoodi testnet as an example.\",\"url\":\"https://docs.p2p.org/docs/signer-sdk-getting-started\",\"mainEntityOfPage\":{\"@id\":\"https://docs.p2p.org/docs/signer-sdk-getting-started#webpage\"},\"dateModified\":\"2026-09-01T11:29:16.084Z\",\"publisher\":{\"@id\":\"https://docs.p2p.org/#organization\"},\"isPartOf\":{\"@id\":\"https://docs.p2p.org#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"P2P.ORG\",\"creator\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","siteName":"P2P.ORG","nav":{"global":null,"tabs":[{"tab":"Home","pages":[{"title":"Home","href":""}]},{"tab":"Documentation","groups":[{"group":"Introduction","pages":[{"title":"Overview","href":"/docs/platform-overview"},{"title":"Get Started","href":"/docs/get-started"},{"title":"Chains Supported","href":"/docs/networks-supported"},{"title":"Authentication","href":"/docs/authentication"},{"title":"Integration Planning Guide","href":"/docs/planning-considerations"}]},{"group":"Using AI Tools","pages":[{"title":"Overview for AI Tools ✨","href":"/docs/overview-ai"},{"title":"Using MCP to Read API Docs","href":"/docs/mcp"},{"title":"Aggregated Docs for LLMs","href":"/docs/llms"}]},{"group":"API Products","pages":[{"group":"Unified API","root":{"title":"Overview","href":"/docs/unified-api-overview"},"pages":[{"title":"Getting Started","href":"/docs/unified-api-getting-started"},{"group":"Chains Supported","root":{"title":"Chains Supported","href":"/docs/unified-api-networks"},"pages":[{"title":"Aptos","href":"/docs/unified-api-aptos"},{"title":"Cardano","href":"/docs/unified-api-cardano"},{"title":"Celestia","href":"/docs/unified-api-celestia"},{"title":"Cosmos","href":"/docs/unified-api-cosmos"},{"title":"Ethereum","href":"/docs/unified-api-ethereum"},{"title":"Hyperliquid","href":"/docs/unified-api-hyperliquid"},{"title":"Monad","href":"/docs/unified-api-monad"},{"title":"Near","href":"/docs/unified-api-near"},{"title":"Polkadot","href":"/docs/unified-api-polkadot"},{"title":"Polygon","href":"/docs/unified-api-polygon"},{"title":"Sei","href":"/docs/unified-api-sei"},{"title":"Solana","href":"/docs/unified-api-solana"},{"title":"Sui","href":"/docs/unified-api-sui"},{"title":"Story Protocol","href":"/docs/unified-api-story-protocol"},{"title":"Tezos","href":"/docs/unified-api-tezos"},{"title":"The Graph","href":"/docs/unified-api-the-graph"},{"title":"TON","href":"/docs/unified-api-ton"},{"title":"TRON","href":"/docs/unified-api-tron"}]},{"group":"Sign and Broadcast Transaction","root":{"title":"Sign and Broadcast Transaction","href":"/docs/unified-api-signing-transaction"},"pages":[{"title":"Cardano Transaction Signing","href":"/docs/cardano-transaction-signing"},{"title":"Graph Transaction Signing","href":"/docs/docgraph-transaction-signing"},{"title":"Near Transaction Signing","href":"/docs/near-signing-transaction"},{"title":"Tezos Transaction Signing","href":"/docs/tezos-transaction-signing"}]}]},{"group":"Staking API","root":{"title":"Overview","href":"/docs/staking-overview"},"pages":[{"title":"Chains Supported","href":"/docs/networks-supported-staking-api"},{"group":"Aptos","root":{"title":"Overview","href":"/docs/overview-aptos"},"pages":[{"title":"Getting Started","href":"/docs/getting-started-aptos"},{"title":"Withdrawal","href":"/docs/withdrawal-aptos"},{"title":"Sign and Broadcast Transaction","href":"/docs/signing-transaction-aptos"}]},{"group":"Celestia","root":{"title":"Overview","href":"/docs/overview-celestia"},"pages":[{"title":"Getting Started","href":"/docs/getting-started-celestia"},{"title":"Withdrawal","href":"/docs/withdrawal-celestia"},{"title":"Sign and Broadcast Transaction","href":"/docs/signing-transaction-celestia"}]},{"group":"Cosmos","root":{"title":"Overview","href":"/docs/overview-cosmos"},"pages":[{"title":"Getting Started","href":"/docs/staking-cosmos"},{"title":"Withdrawal","href":"/docs/withdrawal-cosmos"},{"title":"Sign and Broadcast Transaction","href":"/docs/signing-transaction-cosmos"}]},{"group":"Ethereum","root":{"title":"Overview","href":"/docs/overview-eth"},"pages":[{"title":"Ethereum Staking 101","href":"/docs/ethereum-staking-a-comprehensive-guide"},{"title":"Getting Started","href":"/docs/staking-ethereum"},{"title":"Withdrawal","href":"/docs/withdrawal-eth"},{"title":"Withdrawal using VEM","href":"/docs/withdrawal-vem"},{"title":"Sign and Broadcast Transaction","href":"/docs/signing-transaction-eth"}]},{"group":"Hyperliquid","root":{"title":"Overview","href":"/docs/overview-hyperliquid"},"pages":[{"title":"Getting Started","href":"/docs/staking-hyperliquid"},{"title":"Withdrawal","href":"/docs/withdrawal-hyperliquid"},{"title":"Sign and Broadcast Transaction","href":"/docs/signing-transaction-hyperliquid"}]},{"group":"Monad","root":{"title":"Overview","href":"/docs/overview-monad"},"pages":[{"title":"Getting Started","href":"/docs/staking-monad"},{"title":"Withdrawal","href":"/docs/withdrawal-monad"},{"title":"Sign and Broadcast Transaction","href":"/docs/signing-transaction-monad"}]},{"group":"Polkadot","root":{"title":"Overview","href":"/docs/overview-polkadot"},"pages":[{"title":"Getting Started","href":"/docs/staking-polkadot"},{"title":"Withdrawal","href":"/docs/withdrawal-polkadot"},{"title":"Sign and Broadcast Transaction","href":"/docs/signing-transaction-polkadot"},{"title":"Sign the Transaction Offline","href":"/docs/signing-transaction-offline-polkadot"}]},{"group":"Polygon","root":{"title":"Overview","href":"/docs/overview-polygon"},"pages":[{"title":"Getting Started","href":"/docs/staking-polygon"},{"title":"Withdrawal","href":"/docs/withdrawal-polygon"},{"title":"Sign and Broadcast Transaction","href":"/docs/signing-transaction-polygon"}]},{"group":"Sei","root":{"title":"Overview","href":"/docs/overview-sei"},"pages":[{"title":"Getting Started","href":"/docs/staking-sei"},{"title":"Withdrawal","href":"/docs/withdrawal-sei"},{"title":"Sign and Broadcast Transaction","href":"/docs/signing-transaction-sei"}]},{"group":"Solana","root":{"title":"Overview","href":"/docs/overview-solana"},"pages":[{"title":"Getting Started","href":"/docs/staking-solana"},{"title":"Withdrawal","href":"/docs/withdrawal-solana"},{"title":"Sign and Broadcast Transaction","href":"/docs/signing-transaction-solana"}]},{"group":"Story Protocol","root":{"title":"Overview","href":"/docs/overview-story"},"pages":[{"title":"Getting Started","href":"/docs/staking-story"},{"title":"Withdrawal","href":"/docs/withdrawal-story"},{"title":"Sign and Broadcast Transaction","href":"/docs/signing-transaction-story"}]},{"group":"Sui","root":{"title":"Overview","href":"/docs/overview-sui"},"pages":[{"title":"Getting Started","href":"/docs/staking-sui"},{"title":"Withdrawal","href":"/docs/withdrawal-sui"},{"title":"Sign and Broadcast Transaction","href":"/docs/signing-transaction-sui"}]},{"group":"TON","root":{"title":"Overview","href":"/docs/overview-ton"},"pages":[{"title":"Getting Started","href":"/docs/staking-ton"},{"title":"Withdrawal","href":"/docs/withdrawal-ton"},{"title":"Sign and Broadcast Transaction","href":"/docs/signing-transaction-ton"}]},{"group":"TRON","root":{"title":"Overview","href":"/docs/overview-tron"},"pages":[{"title":"Getting Started","href":"/docs/staking-tron"},{"title":"Withdrawal","href":"/docs/withdrawal-tron"},{"title":"Sign and Broadcast Transaction","href":"/docs/signing-transaction-tron"},{"title":"Energy Delegation","href":"/docs/energy-delegation"}]}]},{"group":"Restaking API","root":{"title":"Overview","href":"/docs/restaking-overview"},"pages":[{"title":"Getting Started","href":"/docs/restaking-eth"},{"title":"Withdrawal","href":"/docs/withdrawal-restaking"}]},{"group":"DVT Staking API","root":{"title":"Overview","href":"/docs/overview-dvt-solutions"},"pages":[{"group":"SSV 3.1","root":{"title":"Overview","href":"/docs/ssv-31-overview"},"pages":[{"title":"Getting started","href":"/docs/getting-started-ssv-31"},{"title":"Withdrawal","href":"/docs/withdrawal-ssv-31"}]}]},{"group":"Pooled Staking API","root":{"title":"Overview","href":"/docs/pooled-staking-overview"},"pages":[{"title":"Getting Started","href":"/docs/pooled-staking-getting-started"},{"title":"Withdrawal","href":"/docs/withdrawal"},{"title":"Sign and Broadcast Transaction","href":"/docs/pooled-staking-signing-transaction"}]},{"group":"Data API","root":{"title":"Overview","href":"/docs/overview"},"pages":[{"title":"Chains Supported","href":"/docs/networks-supported-data-api"},{"title":"Getting Started","href":"/docs/getting-started-data-api"},{"title":"Network","href":"/docs/network"},{"title":"Validator","href":"/docs/validator"},{"title":"Delegator","href":"/docs/data-delegator"}]},{"group":"DeFi API","root":{"title":"Overview","href":"/docs/defi-api-overview"},"pages":[{"title":"Protocols Supported","href":"/docs/defi-api-protocols"},{"title":"Getting Started","href":"/docs/defi-api-getting-started"},{"group":"Morpho","root":{"title":"Morpho","href":"/docs/morpho"},"pages":[{"title":"Deposit","href":"/docs/morpho-staking"},{"title":"Withdrawal","href":"/docs/morpho-withdrawal"}]},{"title":"Sign and Broadcast Transaction","href":"/docs/defi-api-signing-transaction"}]}]},{"group":"Widget","pages":[{"group":"Getting Started","pages":[{"title":"Widget Overview","href":"/docs/widget-overview"},{"title":"Quick Start","href":"/docs/widget-quick-start"}]},{"group":"Integration Guide","pages":[{"title":"Platform Integration Examples","href":"/docs/widget-platform-integration"},{"title":"Theme Customization","href":"/docs/widget-theme-customization"}]},{"group":"Security \u0026 Compliance","pages":[{"title":"Security Audits","href":"/docs/widget-audits"}]}]},{"group":"Syncro Products","pages":[{"group":"Syncro Sender","root":{"title":"Overview","href":"/docs/syncro-sender-overview"},"pages":[{"title":"Getting Started","href":"/docs/syncro-sender-quick-start"},{"title":"Optimizing Performance","href":"/docs/syncro-sender-optimizing-performance"},{"title":"Pricing, Rate Limits \u0026 Support","href":"/docs/syncro-sender-pricing-rate-limits"}]},{"group":"Syncro Data Products","pages":[{"group":"Hyperliquid","root":{"title":"Overview","href":"/docs/syncro-data-hyperliquid-overview"},"pages":[{"title":"Getting Started","href":"/docs/syncro-data-hyperliquid-quick-start"},{"title":"Protocol Reference","href":"/docs/syncro-data-hyperliquid-reference"},{"title":"Operational Notes","href":"/docs/syncro-data-hyperliquid-operational-notes"}]},{"group":"Sui","root":{"title":"Overview","href":"/docs/syncro-data-sui-overview"},"pages":[{"title":"Stream Semantics","href":"/docs/syncro-data-sui-stream-semantics"},{"title":"Wire Formats \u0026 BCS Conventions","href":"/docs/syncro-data-sui-wire-formats"},{"title":"Submission \u0026 Versioning","href":"/docs/syncro-data-sui-submission-and-versioning"}]}]}]},{"group":"SDK Products","pages":[{"group":"Signer SDK","root":{"title":"Overview","description":"The is a JavaScript/TypeScript library designed to handle the secure signing of blockchain transactions. While the Staking API/SDK helps you build transactions, the Signer SDK provides the tools to authorize them using various signing methods, ensuring a seamless flow from creation to broadcast.","href":"/docs/signer-sdk-overview"},"pages":[{"title":"Getting started","href":"/docs/signer-sdk-getting-started"}]},{"group":"Staking SDK","root":{"title":"Overview","description":"P2P.ORG Staking SDK is a JavaScript/TypeScript library that provides a typed client for interacting with the P2P.ORG Staking API. Currently, the SDK provides functionality for Solana staking workflows.","href":"/docs/staking-sdk"},"pages":[{"title":"StakingApiClient","href":"/docs/staking-sdk-stakingapiclient"},{"group":"Solana","root":{"title":"Overview","href":"/docs/staking-sdk-solana"},"pages":[{"title":"deactivate()","href":"/docs/staking-sdk-solana-deactivate"},{"title":"decodeTransaction()","href":"/docs/staking-sdk-solana-decodetransaction"},{"title":"getStakingAccounts()","href":"/docs/staking-sdk-solana-getstakingaccounts"},{"title":"sendTransaction()","href":"/docs/staking-sdk-solana-sendtransaction"},{"title":"signWithKeypairs()","href":"/docs/staking-sdk-solana-signwithkeypairs"},{"title":"stake()","href":"/docs/staking-sdk-solana-stake"},{"title":"verifyTransaction()","href":"/docs/staking-sdk-solana-verifytransaction"},{"title":"withdraw()","href":"/docs/staking-sdk-solana-withdraw"}]}]}]},{"group":"Deep Dive","pages":[{"group":"Smart Contracts","pages":[{"group":"Ethereum","pages":[{"title":"Direct staking v1-v3","href":"/docs/direct-staking"},{"title":"Direct and SSV staking v3.1 (Unlimited)","href":"/docs/unlimited-unified-api"}]}]},{"group":"Pectra Upgrade","root":{"title":"Overview","href":"/docs/pectra-overview"},"pages":[{"title":"Validator Consolidation","href":"/docs/validator-consolidation"},{"title":"Initial Staking","href":"/docs/initial-staking"},{"title":"Incremental Staking (Top-ups)","href":"/docs/incremental-staking-tops-up"},{"title":"Partial Withdrawals","href":"/docs/partial-withdrawals"}]}]},{"group":"Support","pages":[{"title":"Contacts","href":"/docs/contacts"},{"title":"FAQ","href":"/docs/faq"}]}]},{"tab":"API Reference","pages":[{"title":"API Reference","href":"/reference/introduction-unified"}]}]},"basePath":"","title":"Getting started - P2P.ORG","buildId":"dpl_G9nrg4qeJSZtah1Ziwbc2n6WkLch","deploymentId":"dpl_G9nrg4qeJSZtah1Ziwbc2n6WkLch","dynamics":[],"chunks":[]}