Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add Wallet Recovery + Page Updates #66

Merged
merged 12 commits into from
Mar 14, 2024
21 changes: 8 additions & 13 deletions docs/extension/controllers.md
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,12 @@ After the initial creation, there can be up to 3 controllers:

The names of the controllers can vary, depending on the time of your Universal Profile setup. The controller of the extension will either be named **UP Extension** or have the **name of it's blockchain address**. The recovery controller can either be named **UP Recovery**, **Create and manage your UP**, or **recovery-up\<number\>**. Every controller can be _renamed locally_ in your extension at any time.

<img
src="/img/extension/controller-name.png"
alt="Controller Name Change"
width="600"
/>

:::

## What happens during imports and recovery?
Expand All @@ -41,19 +47,14 @@ If you **import or recover** your Universal Profile, it will result in the addit
Please do not **reinstall or reset** your extension if you do not have either of the following safeguards:

- [2FA Recovery set up correctly](./guides/check-2fa-recovery.md)
- [Wallet Recovery](./guides/set-wallet-recovery.md)
fhildeb marked this conversation as resolved.
Show resolved Hide resolved
- [Revealed the private key using File Export](./guides/create-backup.md)
- Access to the profile within another extension

Otherwise, **you will not be able to access your profile, including LYX and assets**, as no new controller can be added without a transaction from one of the existing ones. Not having access to a working controller will cause endless import screens, waiting for a recovery transaction that can never be signed.

:::

:::success Upcoming Feature

We are working on a feature to add controllers using previously saved private keys. The process will allow users to choose autonomous backups using accounts from hardware wallets or 3rd-party wallets. Please hold tight for further announcements.

:::

## How can I add 2FA recovery to an existing Universal Profile?

To check the 2FA recovery status and add 2FA, please visit the dashboard on [my.universalprofile.cloud](https://my.universalprofile.cloud/). The Universal Profile card will show the current **2FA recovery status** at the top right corner. If 2FA has not been added yet, continue by clicking the **Add Recovery** button.
Expand Down Expand Up @@ -115,13 +116,7 @@ If you want to reset the controller permissions to their initial state, you can

## Can I add a Ledger account as a controller of my profile?

Currently, we do _not officially support_ adding custom controllers to your Universal Profile. This can be done programmatically, but is not officially supported.

:::success Upcoming Feature

This question has been heard and the team is working on this [feature request](../general/feature-requests.md).

:::
Yes, you can add blockchain accounts or hardware wallets (like Ledger or Trezor) for recovery using the [Wallet Recovery Setup](../extension/guides/set-wallet-recovery.md).

## How can I remove controllers and permissions?

Expand Down
6 changes: 6 additions & 0 deletions docs/extension/guides/check-2fa-recovery.md
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,12 @@ To confirm that the permissions of the recovery controller were [adequately set

The names of the controllers can vary, depending on the time of your Universal Profile setup. The controller of the extension will either be named **UP Extension** or have the **name of it's blockchain address**. The recovery controller can either be named **UP Recovery**, **Create and manage your UP**, or **recovery-up\<number\>**. Every controller can be _renamed locally_ in your extension at any time.

<img
src="/img/extension/controller-name.png"
alt="Controller Name Change"
width="600"
/>

:::

## Verify the recovery controller on the dashboard
Expand Down
25 changes: 10 additions & 15 deletions docs/extension/guides/create-backup.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,31 +8,32 @@ description: 'Extension Support: Create Backup'

If you lost access to the Universal Profile Browser Extension, there are multiple ways to secure your Universal Profile :

- **2FA**: You can set up 2FA for the Universal Profile on [UniversalProfile.cloud](https://universalprofile.cloud/). 2FA is the recommended way of backing up a Universal Profile and will add a new recovery controller to the profile, secured on LUKSO's end. This controller has permission to add new controllers if access to an old extension is lost. For security reasons, users must provide an authentication code from a mobile device and approve via email before a new controller can be added using LUKSO's recovery service.
- **2FA Recovery**: You can set up 2FA for the Universal Profile on [my.universalprofile.cloud](https://my.universalprofile.cloud/). 2FA is the recommended way of backing up a Universal Profile and will add a new recovery controller to the profile, secured on LUKSO's end. The recovery controller has permissions to add additional controllers if access to an old extension is lost. For security reasons, users must provide an authentication code from a mobile device and approve via email before a new controller can be added using LUKSO's recovery service.
- **Wallet Recovery**: You can give recovery rights to an other blockchain account or controller on [my.universalProfile.cloud](https://mw.universalprofile.cloud/). This blockchain account then gains permissions to add additional controllers if access to an old extension is lost. Wallet recovery can also be used if you want to regain access to your Universal Profile using the revealed private key of the profile's extension controller.
fhildeb marked this conversation as resolved.
Show resolved Hide resolved
- **QR Import**: You can import any Universal Profile address into your extension. The import process will create a new local controller. Before it can can be used, the new controller needs to added to the Universal Profile by one of your existing controllers with sufficient permissions. Within the new extension, you will receive a QR code of a transaction that can be scanned or copied. When this QR code is received and the related transaction executed by an existing extension, this new controller will gain permissions on the Universal Profile.
- **File Export**: You can export the Universal Profile directly as a text file, including the private key of the extension's controller. Make sure to store it somewhere safe. This private key will allow you to regain access to the profiles and their current controllers within the Universal Profiles.
- **File Export**: You can export the private keys from the settings. Make sure to export the text into a file and store it safe. Those private keys will allow anyone to regain access to the profiles based on the controller's permissions.

:::info Individual 2FA Controllers

Please note that each Universal Profile has to add a **separate** [UP Recovery controller](../controllers.md) to [complete the 2FA recovery setup](./check-2fa-recovery.md). If you created multiple Universal Profiles through [UniversalProfile.cloud](https://universalprofile.cloud/), please ensure that you **add the 2FA Recovery** during **every single** deployment process. The connected account and authentication code will stay the same across all profiles of one network and is used to authenticate on the LUKSO Transaction Relay Service.

:::

:::danger Paused Import Functionality
:::tip

**QR Import** is currently disabled due to the recent [Controller Recovery Incident](../incidents/controller-recovery.md)
To reduce risk of losing access, it is **recommended** to set up **[2FA](../controllers.md#how-can-i-add-2fa-recovery-to-an-existing-universal-profile)** or **[Wallet Recovery](./set-wallet-recovery.md)**.

:::

:::danger Securing Controllers
:::danger Paused Import Functionality

Due to the nature of [backups and recovery](../controllers.md#what-happens-during-imports-and-recovery), the **controllers of an extension will not be included within 2FA recovery**. If you [fund the extension's controllers](./fund-controller.md) to pay for your transactions, please **always reveal the private key**, e.g., choose **File Export**. Otherwise, you won't be able to [get your controller funds back](./get-controller-funds.md).
**QR Import** is currently disabled due to the recent [Controller Recovery Incident](../incidents/controller-recovery.md)

:::

:::caution
:::danger Securing Controllers

The Universal Profile Browser Extension currently does not feature a way to import profiles using the plain private key described in _File Export_. Therefore, we **recommend [setting up 2FA](../controllers.md#how-can-i-add-2fa-recovery-to-an-existing-universal-profile)**. Optionally, the private key of a controller (EOA) could be imported into a regular wallet to send transactions manually. You can find further information in the [Controller](../controllers.md) section.
Due to the nature of [backups and recovery](../controllers.md#what-happens-during-imports-and-recovery), the **controllers of an extension will not be included within 2FA recovery**. If you [fund the extension's controllers](./fund-controller.md) to pay for your transactions, please **always backup the their related private key** in the settings screen. Otherwise, you won't be able to [get your controller funds back](./get-controller-funds.md).

:::

Expand All @@ -51,10 +52,4 @@ The 2FA recovery system for Universal Profiles on [my.universalprofile.cloud](ht

### Is there a fully decentralized backup method?

If you do not trust 2FA and want an autonomous backup, users can choose the **File Export**. This process reveals the private key of the extension's controller. Please ensure that the revealed private key is stored somewhere safe.

:::success Upcoming Feature

Currently, the extension does not support importing profiles based on a private key. This [feature request](../../general/feature-requests.md) will soon be integrated into the Universal Profile Browser extension. A similar tool will allow you to manually add controllers from an existing private key, making it possible to add a hardware wallet as a recovery controller.

:::
If you do not trust 2FA and want an personal backup solution, you can restore your Universal Profile by [recovering from a private key](./wallet-recovery.md) add by adding additional recovery controllers using the [Wallet Recovery Setup](./set-wallet-recovery.md).
6 changes: 6 additions & 0 deletions docs/extension/guides/fund-controller.md
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,12 @@ You can find the address of the extension's controller within the permission sec

The names of the controllers can vary, depending on the time of your Universal Profile setup. The controller of the extension will either be named **UP Extension** or have the **name of it's blockchain address**. The controller can be _renamed locally_ in your extension at any time.

<img
src="/img/extension/controller-name.png"
alt="Controller Name Change"
width="600"
/>

:::

If you click on the controller, it will show the name, permissions, and blockchain address. Copy the blockchain address from the top of the screen, as shown in the following picture:
Expand Down
63 changes: 63 additions & 0 deletions docs/extension/guides/set-wallet-recovery.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,63 @@
---
sidebar_label: '👛 Set Wallet Recovery'
sidebar_position: 6
description: 'How to set up wallet recovery on the LUKSO Universal Profile Extension?'
---

# Set Wallet Recovery

If you want a personal backup solution for your Universal Profile, you can add another wallet as a recovery controller.

## Preparation

To add a new controller account to your Universal Profile, you will need the [Universal Profile Browser Extension](https://chromewebstore.google.com/detail/universal-profiles/abpickdkkbnbcoepogfhkhennhfhehfn) as well as an [Ethereum wallet with custom network support](../../general/wallet-support.md) installed **in the same [supported browser](../introduction.md#which-browsers-does-the-extension-support)**.

:::tip Wallet Support

The [Wallet Recovery Setup](https://my.universalprofile.cloud/3rd-party/add-recovery) supports **MetaMask** as the wallet. If you experience issues with other wallets, please try again using MetaMask.

:::

After installing both extensions in your browser, you can set up the recovery account. Depending on the wallet, you can either:

- use one of the _default wallet accounts_
- import an _account from a private key_
- connect an _account from your hardware wallet_

Open the wallet and add or select the account from a source of your choice:

<div style={{textAlign: 'center'}}>

<img
src="/img/extension/3rd-party-import.png"
fhildeb marked this conversation as resolved.
Show resolved Hide resolved
alt="3rd-party Account Import"
width="600"
/>

</div>

## Connect the Extensions

After your recovery account is set in the wallet, head to the [Wallet Recovery Setup](https://my.universalprofile.cloud/3rd-party/add-recovery) and connect both extensions.

![Connect the Extensions](/img/extension/set-recovery-1.png)

## Execute the Controller Transaction

The address of the connected wallet account is then used to execute the controller transaction from the Universal Profile Extension.

![Execute the Controller Transaction](/img/extension/set-recovery-2.png)

After the transaction has been executed, your new recovery controller will be set and will show up in the _Controllers_ menu of the Universal Profile.

:::tip Set Controller Names

By default, the new recovery controller will be named after the account's address. To better distinguish between different controllers, it's recommended to _rename them locally_ by opening the controller view and clicking the pencil next to its name.
fhildeb marked this conversation as resolved.
Show resolved Hide resolved

<img
src="/img/extension/controller-name.png"
alt="Controller Name Change"
width="600"
/>

:::
50 changes: 50 additions & 0 deletions docs/extension/guides/wallet-recovery.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,50 @@
---
sidebar_label: '🔐 Wallet Recovery'
sidebar_position: 7
description: 'How to recover a Universal Profile using your private key or 3rd-party wallet'
---

# Wallet Recovery

If you've set a **recovery controller** using the [Wallet Recovery Setup](./set-wallet-recovery.md) or have an **existing private key**, you can use these controllers to restore your Universal Profile.

## Preparation

In order to recover your Universal Profile, you will need the [Universal Profile Browser Extension](https://chromewebstore.google.com/detail/universal-profiles/abpickdkkbnbcoepogfhkhennhfhehfn) and an [Ethereum wallet with custom network support](../../general/wallet-support.md) installed **in the same [supported browser](../introduction.md#which-browsers-does-the-extension-support)**.

:::tip Wallet Support

The [Wallet Recovery Setup](https://my.universalprofile.cloud/3rd-party/add-recovery) officially supports **MetaMask** as the wallet. If you experience issues with other wallets, please try again using MetaMask.

:::

Before you can recover your Universal Profile, ensure that:

- **The recovery controller or private key was added to the third-party wallet**: If the connected account that was [set up in the wallet](./wallet-recovery.md#preparation) does not match one of the controllers of the Universal Profile, you won't be able to continue the recovery.
- **The recovery controller has enough LYX/LYXt to execute the recovery**: During the recovery process, the Universal Profile Extension will generate a new controller key that will be added to the wallet's recovery account. To set the controller and permissions, you will have to execute a transaction costing approximately `0.01` LYX/LYXt. The amount can vary based on network usage. Please fund your controller address from an existing and working wallet or Universal Profile.
- **The extension and wallet are set to the same LUKSO network**: Within your wallet, please [add and switch to the LUKSO network](https://docs.lukso.tech/networks/mainnet/parameters#add-lukso-to-wallets). The network must match that of the Universal Profile Browser Extension in order to call and verify the Universal Profile controllers.
- **The Universal Profile has not been imported into the extension**: You can only recover the Universal Profile if it has not been imported into the Universal Profile Extension already. If the profile already exists, please use a different browser or carefully check if the extension can be reinstalled without losing access to other profiles. You should only delete the extension if you don't have any other profiles, backed up all private keys from the settings screen, or have 2FA or wallet recovery set on all the other profiles.

:::info Using Hardware Wallets

If you are using a hardware wallet to recover your Universal Profile, please ensure that the correct security settings are enabled. For Ledger, you must allow **blind signing** within the Ethereum app on the device to execute smart contract transactions like the recovery. If you are using Trezor, you will have to adjust the [strict security rules](../../general/hardware-wallets.md#how-to-send-transactions-using-trezor-wallet) due to the network ID.

:::

:::caution Restarting the Recovery Process

The recovery transaction will be sent **after the profile is imported**. As already existing profiles in the extension can not be recovered, this might cause problems if the process needs to be restarted from scratch. Therefore, please ensure that the controller address is funded with enough LYX/LYXt and can easily be retried. Otherwise, you might have to reinstall the extension. After recovering a profile, the remaining funds can be [sent back to one of your accounts](./get-controller-funds.md).

:::

## Connect and Import

After all requirements are met, head to the [Wallet Recovery](https://my.universalprofile.cloud/3rd-party/recover) and search for the Universal Profile you want to recover. Next, you will have to connect your wallet. The recovery service will then check if the connected account is permitted to recover the Universal Profile by adding a new controller. If so, you can import your profile. By starting the import, the extension will generate a new controller key, which must be granted permission afterward.

![Connect the Extensions](/img/extension/recover-up-1.png)

## Set the Controller

If the Universal Profile was imported into the extension, you will see that the extension is now awaiting a recovery transaction from one of the existing controllers. By continuing, the recovery service will generate this transaction and add the newly generated extension controller to your profile. After the transaction has been executed, you will have a working extension with access to your Universal Profile.

![Connect the Extensions](/img/extension/recover-up-2.png)
10 changes: 0 additions & 10 deletions docs/general/feature-requests.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,16 +6,6 @@ description: 'Support Center: Feature Requests'

# Feature Requests

## Why can’t I use the private key for recovery?

At the moment, the option to recover an existing profile from a backup file is not available. The team is working on this feature and it will be made available soon.

:::success Private Key Reveal

Until the feature is ready, you can already reveal the private keys of the Universal Profile controllers of your extension for backup purposes. Please store it somewhere safe.

:::

## Why can't I delete my old private keys?

At the moment, the Universal Profile Browser Extension only allows to disable permissions of old controller keys. If you want to improve security, please disable all permissions of an old controller. You can learn more within the [Controllers](../extension/controllers.md) page. Soon, there will be a feature to manually remove controllers completely.
Expand Down
Loading
Loading