Skip to main content
In the MPC wallet generation process, two sets of key shares are generated. The signing key shares are used for signing transactions, and the backup key shares are used for recovery if the device storing a signing key shares is lost. The portal.createWallet command initiates the MPC process to create a set of shares for each curve we support (SECP256K1 for EVM, Bitcoin and Tron, ED25519 for Solana and Stellar). The users’ shares are automatically stored in the user’s secure phone storage using your configured mobile storage adapter. createWallet returns the wallet’s available addresses by namespace. Only eip155 is guaranteed to be present — read the other namespaces optionally, and note that Bitcoin addresses are nested by script type and network. See AddressesByNamespace for the full shape.
Be sure to use a Production API key when creating clients for production. Read more details about going to production here.
Want faster wallet creation? Enable the usePreGeneratedWallet feature flag—no changes to the code above are needed.

Choosing an Implementation

Now that you’ve generated a wallet, it’s time to choose a Portal implementation for your app! We provide ready-to-use components that are able to be plugged in to your mobile app. We also provide the functions that power those components for you to build your own experience powered by Portal.
WARNING: To create a wallet with the Portal SDK, your device must be configured to use passcode authentication. If you change your passcode, your Portal wallet will continue to operate as expected. However, if you disable passcode authentication after running the createWallet function, you will be required to execute the recover function before you can continue using your Portal wallet.

Next Steps

Choose either the components or native implementation as the next step!