The Wallet Factory allows for the creation of Sequence Wallets using the Factory contract, which generates child MinimalUpgradeableProxies that serve as the base code for all Sequence wallets.
Sequence Wallets are created using the Factory contract, when called it creates child MinimalUpgradeableProxies contracts, which are in essence the “boot” code of all Sequence wallets.
Initial implementation for the new proxy contract, expected to point to a valid Sequence wallet implementation with support for counter-factual initialization.
_salt
bytes32
Arbitrary value to be used as create2 salt. Sequence’s mainModule uses the salt to obtain a hash with the initial configuration for the wallet (See ImageHash).
Unsanitized input
The Factory contract does not check if the provided _mainModule is a valid Sequence wallet implementation, or if _salt is a valid Sequence configuration.Using invalid parameters will result on a proxy contract that may not be usable, and could result in loss of funds.
Sequence wallets are counter-factual by design, this means that the wallet’s address can be known before the wallet is deployed; any two combinations of the mainModule and salt values will result in the same wallet address.This property alongside the use of NanoUniversalDeployer or UniversalDeployer is the reason why Sequence wallets can obtain the same address on multiple chains.
Gas-free wallet creation Sequence wallets are 100% counterfactual,
meaning that funds can be safely transferred to the wallet’s address without
the need for calling the deploy function. Deploying the wallet is only
required before the first transaction is sent from the wallet.
{"docsConfig":{"theme":"mint","$schema":"https://mintlify.com/docs.json","name":"Sequence Docs","colors":{"primary":"#111111","light":"#B1A9FF","dark":"#111111"},"logo":{"light":"https://mintcdn.com/frenglish/jco-kCqEz4S4wsae/logo/sequence-composite-light.svg?fit=max\u0026auto=format\u0026n=jco-kCqEz4S4wsae\u0026q=85\u0026s=3d9f9a9752e8c8dda0d19bb1d835d80d","dark":"https://mintcdn.com/frenglish/jco-kCqEz4S4wsae/logo/sequence-composite-dark.svg?fit=max\u0026auto=format\u0026n=jco-kCqEz4S4wsae\u0026q=85\u0026s=c0fee4c8be0f336d770ef06b95c7a443"},"favicon":"/favicon.png","appearance":{"default":"dark","strict":true},"background":{"decoration":"gradient"},"navbar":{"primary":{"type":"button","label":"Sign In","href":"https://sequence.build"}},"footer":{"socials":{"x":"https://twitter.com/0xsequence","github":"https://github.com/0xsequence","discord":"https://discord.gg/sequence"}},"fonts":{"heading":{"family":"Inter"},"body":{"family":"Inter"}},"contextual":{"options":["copy","view","chatgpt","claude"]},"navigation":{"global":{"anchors":[{"anchor":"Interactive Demo","icon":"wrench","href":"https://blueprints.sequence-demos.xyz/"},{"anchor":"Supported Chains","icon":"heart-pulse","href":"https://status.sequence.info/"},{"anchor":"Changelog","icon":"map","href":"https://0xsequence.featurebase.app/changelog"}]},"languages":[{"language":"en","href":"home"},{"language":"ja","href":"ja/home"},{"language":"es","href":"es/home"}]}},"deployment":{"deploymentMetadataValue":{"subdomain":"frenglish","hasAudioNarration":false,"actualSubdomain":"frenglish","customDomains":[],"gitSource":{"type":"github","owner":"viv-cheung","repo":"sequence_docs","deployBranch":"frenglish-translation","contentDirectory":"","isPrivate":true,"mountPath":"","label":""},"entitlements":{},"buildId":"6ae927cc55210c1811414922:success","clientVersion":"0.0.4102","searchFilterCounts":[{"language":"en","tag":"APIs","count":182},{"language":"ja","tag":"API","count":181},{"language":"en","tag":"Endpoints","count":148},{"language":"ja","tag":"エンドポイント","count":147},{"language":"en","tag":"SDKs","count":118},{"language":"es","tag":"SDKs","count":118},{"language":"ja","tag":"SDK","count":118},{"language":"en","tag":"secret","count":70},{"language":"ja","tag":"シークレット","count":70},{"language":"en","tag":"Game Engine SDKs","count":54},{"language":"es","tag":"SDKs para Motores de Juego","count":54},{"language":"ja","tag":"ゲームエンジンSDK","count":54},{"language":"en","tag":"Solutions","count":52},{"language":"es","tag":"Soluciones","count":51},{"language":"ja","tag":"ソリューション","count":51},{"language":"en","tag":"Web SDK","count":50},{"language":"es","tag":"SDK Web","count":50},{"language":"ja","tag":"Web SDK","count":50},{"language":"en","tag":"Analytics","count":46},{"language":"ja","tag":"アナリティクス","count":46},{"language":"en","tag":"Metadata","count":44},{"language":"ja","tag":"メタデータ","count":44},{"language":"en","tag":"Unity","count":41},{"language":"es","tag":"Unity","count":41},{"language":"ja","tag":"Unity","count":41},{"language":"es","tag":"Hooks","count":37},{"language":"es","tag":"Incorporación","count":27},{"language":"es","tag":"Guías","count":26},{"language":"es","tag":"Funcionalidades","count":26},{"language":"es","tag":"Resources","count":20}]},"assistantConfig":{},"basePath":"","hasChatPermissions":false,"hasWebMcpPermissions":false,"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}],"googleFontsInlined":false},"customCss":[{"filePath":"style.css","content":".bg-matrix-dark{background:linear-gradient(0deg, rgba(13, 13, 15, 1) 0%, rgba(13, 13, 15, 0.95) 5%, rgba(13, 13, 15, 0.8) 15%, rgba(17, 17, 17, 0.1) 30%, rgba(17, 17, 17, 0.1) 70%, rgba(13, 13, 15, 0.8) 85%, rgba(13, 13, 15, 0.95) 95%, rgba(13, 13, 15, 1) 100%),\n linear-gradient(\n 90deg,\n transparent 0%,\n rgba(17, 17, 17, 0.6) 40%,\n rgba(17, 17, 17, 0.6) 60%,\n transparent 100%\n ), url(https://pub-f048362b915448c9b012a2e03c189024.r2.dev/matrix-bg-dark.svg);background-size:cover;background-position:center center}img[alt=\"US\"]{display:none!important}div.relative.w-4.h-4.rounded-full:has(img[alt=\"US\"]){display:none!important}.bg-matrix-light{background:linear-gradient(\n 0deg,\n #f0f0f0 0%,\n rgba(240, 240, 240, 0.6) 30%,\n rgba(240, 240, 240, 0.6) 70%,\n #f0f0f0 100%\n ),\n linear-gradient(\n 90deg,\n transparent 0%,\n rgba(240, 240, 240, 0.6) 40%,\n rgba(240, 240, 240, 0.6) 60%,\n transparent 100%\n ), url(https://pub-f048362b915448c9b012a2e03c189024.r2.dev/matrix-bg-light.svg);background-size:cover;background-position:center center}.bg-gradient-dark{background:linear-gradient(\n 90deg,\n rgba(17, 17, 17, 0) 0%,\n rgba(17, 17, 17, 0.75) 50%,\n rgba(17, 17, 17, 0) 100%\n ),\n linear-gradient(180deg, #111 0%, rgba(17, 17, 17, 0) 40%, rgba(17, 17, 17, 0) 60%, #111 100%),\n linear-gradient(270deg, rgba(11, 106, 249, 0.25) 0%, rgba(29, 146, 255, 0.3) 100%)}.bg-gradient-light{background:linear-gradient(180deg, #f0f0f0 0%, rgba(255, 255, 255, 0) 49.83%, #f0f0f0 100%),\n linear-gradient(\n 90deg,\n #d2e4ff 0%,\n rgba(210, 228, 255, 0.5) 25.3%,\n rgba(255, 255, 255, 0) 49.83%,\n rgba(210, 228, 255, 0.5) 75.47%,\n #d2e4ff 100%\n )}"}],"page":{"pagePath":"solutions/technical-references/internals/v1/wallet-factory","slug":"/solutions/technical-references/internals/v1/wallet-factory","pageMetadata":{"title":"Wallet Factory","description":"The Wallet Factory allows for the creation of Sequence Wallets using the Factory contract, which generates child MinimalUpgradeableProxies that serve as the base code for all Sequence wallets.","sidebarTitle":"Wallet Factory","href":"/solutions/technical-references/internals/v1/wallet-factory"},"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 Wallet Factory allows for the creation of Sequence Wallets using the Factory contract, which generates child MinimalUpgradeableProxies that serve as the base code for all Sequence wallets.\"\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`,strong:`strong`,tbody:`tbody`,td:`td`,th:`th`,thead:`thead`,tr:`tr`,..._provideComponents(),...props.components},{CodeBlock,Heading,Table,Tip,Warning}=_components;if(!CodeBlock)_missingMdxReference(`CodeBlock`,true);if(!Heading)_missingMdxReference(`Heading`,true);if(!Table)_missingMdxReference(`Table`,true);if(!Tip)_missingMdxReference(`Tip`,true);if(!Warning)_missingMdxReference(`Warning`,true);return _jsxs(_Fragment,{children:[_jsxs(_components.p,{children:[`Sequence Wallets are created using the `,_jsx(_components.a,{href:`https://github.com/0xsequence/wallet-contracts/blob/e0c5382636a88b4db4bcf0a70623355d7cd30fb4/contracts/Factory.sol`,children:`Factory`}),` contract, when called it creates child `,_jsx(_components.a,{href:`https://github.com/0xsequence/wallet-contracts/blob/e0c5382636a88b4db4bcf0a70623355d7cd30fb4/contracts/Wallet.sol`,children:`MinimalUpgradeableProxies`}),` contracts, which are in essence the “boot” code of all Sequence wallets.`]}),`\n`,_jsx(Heading,{level:`2`,id:`factory-api`,children:`Factory API`}),`\n`,_jsx(Heading,{level:`3`,id:`deploy`,children:`deploy`}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`4`,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:`4`,children:[_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:` deploy`}),_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:` address`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` _mainModule`}),_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:` bytes32`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` _salt`})]}),`\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\":`#569CD6`},children:`public`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:` payable`}),_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:`address`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` _contract`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`)`})]}),`\n`]})})}),`\n`,_jsxs(_components.p,{children:[`Creates a child MinimalUpgradeableProxy using `,_jsx(_components.a,{href:`https://eips.ethereum.org/EIPS/eip-1014`,children:`CREATE2`}),`, the proxy initially points to the provided `,_jsx(_components.code,{children:`_mainModule`}),`.\\r\nNo initialize code is executed.`]}),`\n`,_jsx(Heading,{level:`4`,id:`parameters`,children:`Parameters:`}),`\n`,_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{children:`Name`}),_jsx(_components.th,{children:`Type`}),_jsx(_components.th,{children:`Description`})]})}),_jsxs(_components.tbody,{children:[_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`_mainModule`}),_jsx(_components.td,{children:`address`}),_jsx(_components.td,{children:`Initial implementation for the new proxy contract, expected to point to a valid Sequence wallet implementation with support for counter-factual initialization.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`_salt`}),_jsx(_components.td,{children:`bytes32`}),_jsxs(_components.td,{children:[`Arbitrary value to be used as `,_jsx(_components.code,{children:`create2`}),` salt. Sequence’s `,_jsx(_components.code,{children:`mainModule`}),` uses the salt to obtain a hash with the initial configuration for the wallet (See `,_jsx(_components.a,{href:`#`,children:`ImageHash`}),`).`]})]})]})]}),`\n`,_jsx(Heading,{level:`4`,id:`return-values`,children:`Return Values:`}),`\n`,_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{children:`Name`}),_jsx(_components.th,{children:`Type`}),_jsx(_components.th,{children:`Description`})]})}),_jsx(_components.tbody,{children:_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`_contract`}),_jsx(_components.td,{children:`address`}),_jsx(_components.td,{children:`Address of the created proxy contract.`})]})})]}),`\n`,_jsxs(Warning,{children:[_jsxs(_components.p,{children:[`Unsanitized input `,_jsx(`br`,{}),`\\r\nThe Factory contract `,_jsx(_components.strong,{children:`does not`}),` check if the provided `,_jsx(_components.code,{children:`_mainModule`}),` is a valid Sequence wallet implementation, or if `,_jsx(_components.code,{children:`_salt`}),` is a valid Sequence configuration.`]}),_jsxs(_components.p,{children:[`Using invalid parameters will result on a proxy contract that `,_jsx(_components.strong,{children:`may not`}),` be usable, and could result in loss of funds.`]})]}),`\n`,_jsx(Heading,{level:`2`,id:`counter-factual-addresses`,children:`Counter factual addresses`}),`\n`,_jsxs(_components.p,{children:[`Sequence wallets are counter-factual by design, this means that the wallet’s address can be known before the wallet is deployed; any two combinations of the `,_jsx(_components.code,{children:`mainModule`}),` and `,_jsx(_components.code,{children:`salt`}),` values will result in the same wallet address.`]}),`\n`,_jsxs(_components.p,{children:[`This property alongside the use of `,_jsx(_components.a,{href:`/solutions/technical-references/internals/v1/deploy#1-deploy-nanouniversaldeployer`,children:`NanoUniversalDeployer`}),` or `,_jsx(_components.a,{href:`/solutions/technical-references/internals/v1/deploy#2-deploy-universaldeployer2`,children:`UniversalDeployer`}),` is the reason why Sequence wallets can obtain the same address on multiple chains.`]}),`\n`,_jsx(Tip,{children:_jsxs(_components.p,{children:[`Gas-free wallet creation `,_jsx(`br`,{}),` Sequence wallets are `,_jsx(_components.strong,{children:`100% counterfactual`}),`,\\r\nmeaning that funds can be safely transferred to the wallet’s address without\\r\nthe need for calling the `,_jsx(_components.code,{children:`deploy`}),` function. Deploying the wallet is only\\r\nrequired before the first transaction is sent `,_jsx(_components.strong,{children:`from`}),` the wallet.`]})})]})}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":"Wallet Factory","description":"The Wallet Factory allows for the creation of Sequence Wallets using the Factory contract, which generates child MinimalUpgradeableProxies that serve as the base code for all Sequence wallets.","sidebarTitle":"Wallet Factory","href":"/solutions/technical-references/internals/v1/wallet-factory"}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[{"title":"Factory API","slug":"factory-api","depth":2,"children":[{"title":"deploy","slug":"deploy","depth":3,"children":[]},{"title":"Parameters:","slug":"parameters","depth":4,"children":[]},{"title":"Return Values:","slug":"return-values","depth":4,"children":[]}]},{"title":"Counter factual addresses","slug":"counter-factual-addresses","depth":2,"children":[]}],"codeExamples":{}},"jsLinks":["/_mintlify/custom/frenglish/5928f07079c865a1/scripts/update_security_schemas.js","/_mintlify/custom/frenglish/c67a34dca3bb4682/snippets/databeat-tracker.js","/_mintlify/custom/frenglish/0281ffbe15eb5584/snippets/dist/databeat-tracker.umd.js","/_mintlify/custom/frenglish/dfa94ae2469b3e93/.github/scripts/fetch-frenglish-configuration.js","/_mintlify/custom/frenglish/e1a7512e5ad7bb7f/.github/scripts/format-locales.js","/_mintlify/custom/frenglish/6a222aac2b02a720/.github/scripts/translate.js"],"subdomain":"frenglish","siteName":"Sequence Docs","title":"Wallet Factory - Sequence Docs","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{"en":{"href":"/solutions/technical-references/internals/v1/wallet-factory","matchLevel":0},"ja":{"href":"/ja/solutions/technical-references/internals/v1/wallet-factory","matchLevel":1},"es":{"href":"/es/solutions/technical-references/internals/v1/wallet-factory","matchLevel":1}}},"lastModified":"2026-01-07T08:00:51.418Z","originalFileLocation":"solutions/technical-references/internals/v1/wallet-factory.mdx","locale":"en"},"headHtml":"\u003cscript data-mint-head>(function(){var d=document.documentElement,p=\"dark\";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=\"dark\"}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 Wallet Factory allows for the creation of Sequence Wallets using the Factory contract, which generates child MinimalUpgradeableProxies that serve as the base code for all Sequence wallets.\">\u003cmeta data-mint-head name=\"application-name\" content=\"Sequence Docs\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/frenglish/R9VVH0lttj2_vGLm/_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/frenglish/R9VVH0lttj2_vGLm/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/frenglish/R9VVH0lttj2_vGLm/_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/frenglish/R9VVH0lttj2_vGLm/_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/frenglish/R9VVH0lttj2_vGLm/_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/frenglish/R9VVH0lttj2_vGLm/_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/frenglish/R9VVH0lttj2_vGLm/_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/frenglish/R9VVH0lttj2_vGLm/_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/frenglish/R9VVH0lttj2_vGLm/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"Wallet Factory - Sequence Docs\">\u003cmeta data-mint-head property=\"og:description\" content=\"The Wallet Factory allows for the creation of Sequence Wallets using the Factory contract, which generates child MinimalUpgradeableProxies that serve as the base code for all Sequence wallets.\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"Sequence Docs\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://frenglish.mintlify.app/solutions/technical-references/internals/v1/wallet-factory\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://frenglish.mintlify.site/_mintlify/api/og/v2?division=Sequence+v1\u0026amp;title=Wallet+Factory\u0026amp;description=The+Wallet+Factory+allows+for+the+creation+of+Sequence+Wallets+using+the+Factory+contract%2C+which+generates+child+MinimalUpgradeableProxies+that+serve+as+the+bas\u0026amp;theme=18334d0526fc2099ea2cc551\u0026amp;signature=e49020d949405c9b514b343dbfd3ef704bbb2d92918f991c006c1394112c34e1\">\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=\"Wallet Factory - Sequence Docs\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"The Wallet Factory allows for the creation of Sequence Wallets using the Factory contract, which generates child MinimalUpgradeableProxies that serve as the base code for all Sequence wallets.\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://frenglish.mintlify.site/_mintlify/api/og/v2?division=Sequence+v1\u0026amp;title=Wallet+Factory\u0026amp;description=The+Wallet+Factory+allows+for+the+creation+of+Sequence+Wallets+using+the+Factory+contract%2C+which+generates+child+MinimalUpgradeableProxies+that+serve+as+the+bas\u0026amp;theme=18334d0526fc2099ea2cc551\u0026amp;signature=e49020d949405c9b514b343dbfd3ef704bbb2d92918f991c006c1394112c34e1\">\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/frenglish/R9VVH0lttj2_vGLm/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"Sequence Docs\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#111111\">\u003clink data-mint-head rel=\"canonical\" href=\"https://frenglish.mintlify.app/solutions/technical-references/internals/v1/wallet-factory\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/solutions/technical-references/internals/v1/wallet-factory.md\">\u003clink data-mint-head rel=\"alternate\" hreflang=\"en\" href=\"https://frenglish.mintlify.app/solutions/technical-references/internals/v1/wallet-factory\">\u003clink data-mint-head rel=\"alternate\" hreflang=\"ja\" href=\"https://frenglish.mintlify.app/ja/solutions/technical-references/internals/v1/wallet-factory\">\u003clink data-mint-head rel=\"alternate\" hreflang=\"es\" href=\"https://frenglish.mintlify.app/es/solutions/technical-references/internals/v1/wallet-factory\">\u003clink data-mint-head rel=\"alternate\" hreflang=\"x-default\" href=\"https://frenglish.mintlify.app/solutions/technical-references/internals/v1/wallet-factory\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://frenglish.mintlify.app/#organization\",\"name\":\"Sequence Docs\",\"url\":\"https://frenglish.mintlify.app\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/frenglish/jco-kCqEz4S4wsae/logo/sequence-composite-light.svg?fit=max\u0026auto=format\u0026n=jco-kCqEz4S4wsae\u0026q=85\u0026s=3d9f9a9752e8c8dda0d19bb1d835d80d\"}},{\"@type\":\"WebSite\",\"@id\":\"https://frenglish.mintlify.app#website\",\"name\":\"Sequence Docs\",\"url\":\"https://frenglish.mintlify.app\",\"publisher\":{\"@id\":\"https://frenglish.mintlify.app/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://frenglish.mintlify.app/solutions/technical-references/internals/v1/wallet-factory#webpage\",\"url\":\"https://frenglish.mintlify.app/solutions/technical-references/internals/v1/wallet-factory\",\"name\":\"Wallet Factory\",\"description\":\"The Wallet Factory allows for the creation of Sequence Wallets using the Factory contract, which generates child MinimalUpgradeableProxies that serve as the base code for all Sequence wallets.\",\"dateModified\":\"2026-01-07T08:00:51.418Z\",\"isPartOf\":{\"@id\":\"https://frenglish.mintlify.app#website\"},\"breadcrumb\":{\"@id\":\"https://frenglish.mintlify.app/solutions/technical-references/internals/v1/wallet-factory#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://frenglish.mintlify.app/solutions/technical-references/internals/v1/wallet-factory#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Technical References\",\"item\":\"https://frenglish.mintlify.app/solutions/technical-references/SequenceMCP\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Contract Internals\",\"item\":\"https://frenglish.mintlify.app/solutions/technical-references/internals/deployment\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Sequence v1\",\"item\":\"https://frenglish.mintlify.app/solutions/technical-references/internals/v1/deploy\"},{\"@type\":\"ListItem\",\"position\":4,\"name\":\"Wallet Factory\",\"item\":\"https://frenglish.mintlify.app/solutions/technical-references/internals/v1/wallet-factory\"}]},{\"@type\":[\"Article\",\"TechArticle\"],\"@id\":\"https://frenglish.mintlify.app/solutions/technical-references/internals/v1/wallet-factory#article\",\"headline\":\"Wallet Factory\",\"name\":\"Wallet Factory\",\"description\":\"The Wallet Factory allows for the creation of Sequence Wallets using the Factory contract, which generates child MinimalUpgradeableProxies that serve as the base code for all Sequence wallets.\",\"url\":\"https://frenglish.mintlify.app/solutions/technical-references/internals/v1/wallet-factory\",\"mainEntityOfPage\":{\"@id\":\"https://frenglish.mintlify.app/solutions/technical-references/internals/v1/wallet-factory#webpage\"},\"dateModified\":\"2026-01-07T08:00:51.418Z\",\"publisher\":{\"@id\":\"https://frenglish.mintlify.app/#organization\"},\"isPartOf\":{\"@id\":\"https://frenglish.mintlify.app#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"Sequence Docs\",\"publisher\":{\"@type\":\"Organization\",\"name\":\"Sequence Docs\"},\"provider\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","agentPointerHref":"/solutions/technical-references/internals/v1/wallet-factory.md","siteName":"Sequence Docs","nav":{"global":{"anchors":[{"anchor":"Interactive Demo","icon":"wrench","href":"https://blueprints.sequence-demos.xyz/"},{"anchor":"Supported Chains","icon":"heart-pulse","href":"https://status.sequence.info/"},{"anchor":"Changelog","icon":"map","href":"https://0xsequence.featurebase.app/changelog"}]},"languages":[{"language":"en","tabs":[{"tab":"Home","pages":[{"title":"Home","href":"/home"}]},{"tab":"Solutions","groups":[{"group":" ","pages":[{"title":"Welcome to Sequence","sidebarTitle":"Welcome to Sequence","href":"/solutions/overview"},{"title":"Get Started","sidebarTitle":"Getting Started","href":"/solutions/getting-started"}]},{"group":"Onboard","pages":[{"title":"Onboard with Sequence","sidebarTitle":"Overview","href":"/solutions/wallets/overview"},{"group":"Ecosystem Wallets","pages":[{"title":"Sequence Ecosystem","sidebarTitle":"Overview","href":"/solutions/wallets/ecosystem/overview"},{"title":"Configuring your Ecosystem Wallet","sidebarTitle":"Configuration","href":"/solutions/wallets/ecosystem/configuration"},{"title":"Cross-App Ecosystem Wallets","sidebarTitle":"Cross App Integration","href":"/solutions/wallets/ecosystem/cross-app"}]},{"group":"Embedded Wallets","pages":[{"title":"Sequence Embedded Wallet","sidebarTitle":"Overview","href":"/solutions/wallets/embedded-wallet/overview"},{"title":"Quickstart","sidebarTitle":"Quickstart","href":"/solutions/wallets/embedded-wallet/quickstart"},{"group":"Setup","pages":[{"title":"Embedded Wallet Configuration","sidebarTitle":"Configuration","href":"/solutions/builder/embedded-wallet/configuration"},{"title":"Google Configuration for Embedded Wallet","sidebarTitle":"Google Setup","href":"/solutions/builder/embedded-wallet/google-configuration"},{"title":"Apple Auth Configuration for Embedded Wallet","sidebarTitle":"Apple Setup","href":"/solutions/builder/embedded-wallet/apple-configuration"},{"title":"Playfab Configuration for Embedded Wallet","sidebarTitle":"PlayFab Setup","href":"/solutions/builder/embedded-wallet/playfab-configuration"},{"title":"Stytch Configuration for Embedded Wallet","sidebarTitle":"Stych Setup","href":"/solutions/builder/embedded-wallet/stytch-configuration"},{"title":"Guest Wallet Configuration for Embedded Wallet","sidebarTitle":"Guest Wallet Setup","href":"/solutions/builder/embedded-wallet/guest-wallet-configuration"}]},{"group":"Architecture","pages":[{"title":"Overview","sidebarTitle":"Overview","href":"/solutions/wallets/embedded-wallet/architecture/overview"},{"title":"Trust Contract Recovery Flow","sidebarTitle":"Trust Contract Recovery Flow","href":"/solutions/wallets/embedded-wallet/architecture/trust-contract-recovery-flow"},{"title":"Enclave verification","sidebarTitle":"Enclave Verification","href":"/solutions/wallets/embedded-wallet/architecture/enclave-verification"},{"title":"Intents","sidebarTitle":"Intents","href":"/solutions/wallets/embedded-wallet/architecture/intents"}]},{"title":"Migration Guide: Moving to Sequence Embedded Wallets","sidebarTitle":"Migrating Sequence","href":"/solutions/wallets/embedded-wallet/migration"},{"title":"FAQ","sidebarTitle":"FAQ","href":"/solutions/wallets/embedded-wallet/faq"}]}]},{"group":"Power","pages":[{"title":"Power with Sequence","sidebarTitle":"Overview","href":"/solutions/power-overview"},{"group":"Deployable Contracts","pages":[{"title":"Contracts","sidebarTitle":"Overview","href":"/solutions/builder/contracts"},{"title":"How to Deploy an Item Collection Contract in Sequence Builder","sidebarTitle":"Deploy a Collection Contract","href":"/solutions/collectibles/contracts/deploy-an-item-collection"},{"title":"How to Deploy in-game Currency in Sequence Builder","sidebarTitle":"Deploy an In-Game Currency(ERC20)","href":"/solutions/collectibles/contracts/deploy-ERC20-currency"},{"title":"How to Deploy a Soulbound Token Contract in Sequence Builder","sidebarTitle":"Deploy a Soulbound Token Contract","href":"/solutions/collectibles/contracts/deploy-soulbound-token"},{"title":"Deploying a Primary Sales Contract in Sequence Builder","sidebarTitle":"Deploy a Primary Sales Contract","href":"/solutions/collectibles/contracts/deploy-primary-sales-contract"}]},{"title":"Collections","sidebarTitle":"Managing Collections","href":"/solutions/builder/collections"},{"group":"Querying Blockchain Data","pages":[{"title":"Indexer","sidebarTitle":"Indexer","href":"/solutions/builder/indexer"},{"title":"Webhooks in Sequence Builder","sidebarTitle":"Webhooks","href":"/solutions/builder/webhooks"}]},{"group":"Sidekick","pages":[{"title":"Sidekick Overview \u0026 Setup","href":"/solutions/sidekick/overview"},{"group":"Guides","pages":[{"title":"Mint NFTs","href":"/solutions/sidekick/guides/mint-nft"}]}]},{"title":"Analytics","sidebarTitle":"Analytics","href":"/solutions/builder/analytics"},{"title":"Gas Sponsorship","sidebarTitle":"Gas Sponsorship","href":"/solutions/builder/gas-tank"},{"title":"Blockchain RPC","sidebarTitle":"Blockchain RPC","href":"/solutions/builder/node-gateway"}]},{"group":"Monetize","pages":[{"title":"Monetize with Sequence","sidebarTitle":"Overview","href":"/solutions/monetization-overview"},{"group":"White-label Marketplace","pages":[{"title":"Launch your White-label Marketplace","sidebarTitle":"Overview","href":"/solutions/marketplaces/white-label-marketplace/overview"},{"title":"Launching Your White-Label Marketplace with Sequence Builder","sidebarTitle":"Guide","href":"/solutions/marketplaces/white-label-marketplace/guide"}]},{"group":"Build your Custom Marketplace","pages":[{"title":"Sequence Market","sidebarTitle":"Overview","href":"/solutions/marketplaces/custom-marketplace/overview"},{"title":"Getting Started with Custom Marketplace","sidebarTitle":"Getting Started","href":"/solutions/marketplaces/custom-marketplace/getting-started"},{"title":"Supported Marketplaces","sidebarTitle":"Supported Marketplaces","href":"/solutions/marketplaces/custom-marketplace/supported-marketplaces"}]},{"group":"Sequence Pay","pages":[{"title":"Overview","sidebarTitle":"Overview","href":"/solutions/payments/overview"}]}]},{"group":"Technical References","pages":[{"title":"Sequence MCP Server Setup","sidebarTitle":"Sequence MCP Server","href":"/solutions/technical-references/SequenceMCP"},{"title":"Why smart contracts wallets?","sidebarTitle":"Why Smart Contracts Wallets?","href":"/solutions/technical-references/wallet-contracts/why"},{"group":"Contract Internals","pages":[{"title":"Contract Deployment","sidebarTitle":"Deployment","href":"/solutions/technical-references/internals/deployment"},{"group":"Sequence v1","pages":[{"title":"Deploy Process V1","description":"The content provides a detailed guide for deploying the Sequence Wallet V1 Context on a new network. It includes steps to deploy NanoUniversalDeployer and UniversalDeployer2 contracts, along with necessary code snippets and pre-signed transactions.","sidebarTitle":"Deploy","href":"/solutions/technical-references/internals/v1/deploy"},{"title":"Wallet Factory","sidebarTitle":"Wallet Factory","href":"/solutions/technical-references/internals/v1/wallet-factory"},{"title":"Wallet Configuration","description":"The Sequence wallet configuration includes a threshold and a list of signers with their weights.","sidebarTitle":"Wallet Configuration","href":"/solutions/technical-references/internals/v1/wallet-configuration"},{"title":"Signature Encoding","sidebarTitle":"Signature Encoding","href":"/solutions/technical-references/internals/v1/signature-encoding"},{"title":"Wallet Context V1","sidebarTitle":"Wallet Context","href":"/solutions/technical-references/internals/v1/wallet-context"}]},{"group":"Sequence v2","pages":[{"title":"Deploy Process V2","sidebarTitle":"Deploy","href":"/solutions/technical-references/internals/v2/deploy"},{"title":"Wallet Configuration","sidebarTitle":"Wallet Configuration","href":"/solutions/technical-references/internals/v2/configuration"}]},{"title":"Contract Audits","sidebarTitle":"Contract Audits","href":"/solutions/technical-references/internals/contract-audits"}]}]}]},{"tab":"SDKs","pages":[{"title":"SDKs","href":"/sdk/overview"}]},{"tab":"APIs","pages":[{"title":"APIs","href":"/api-references/overview"}]},{"tab":"Resources","pages":[{"title":"Resources","href":"/guides/guide-overview"}]},{"tab":"Support","pages":[{"title":"Support","href":"/support"}]}]},{"language":"ja","pages":[{"title":"ja","href":"/ja/solutions/technical-references/internals/v1/wallet-factory"}]},{"language":"es","pages":[{"title":"es","href":"/es/solutions/technical-references/internals/v1/wallet-factory"}]}]},"basePath":"","title":"Wallet Factory - Sequence Docs","buildId":"dpl_596ePT575z4qnAFksq1biRW97aLY","deploymentId":"dpl_596ePT575z4qnAFksq1biRW97aLY","dynamics":[],"chunks":[]}