Comment on page

Creating a wallet

Once you have a Portal instance, you can now generate a wallet. In the example below, we create a Generate Wallet button:
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 generate command initiates the MPC process to create a set of shares. The users share and the wallet address is automatically stored in the user's secure phone storage.
Ensure you have created and connected the UI element in the storyboard to the action.
import PortalSwift
class ViewController: UIViewController {
public var portal: Portal?
@IBAction func handleGenerate(_ sender: UIButton!) {
portal?.mpc.generate() { (addressResult) -> Void in
if (addressResult.error != nil) {
print("❌ handleGenerate():", addressResult.error!)
print("✅ handleGenerate(): Address:", ?? "N/A")
} progress: { status in
print("Generate Status: ", status)
Be sure to use a Production API key when creating clients for production. Read more details about going to production here.
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 generate function, you will be required to execute the recover function before you can continue using your Portal wallet.

Status Flow

case generatingShare = "Generating share"
case parsingShare = "Parsing share"
case storingShare = "Storing share"
case done = "Done"
Now that you've generated a wallet, let's back it up in the next section.