Technical overview

Overview

SkillWallet ID comes as an Upgradable, Non-Transferable NFT (U-NT-NFT). Each user can create a SkillWallet within a community. SkillWallet allows the users to own their identity and grow it with them while collaborating in web3 communities.

Design

As a user, a SkillWallet NFT ID can be minted only by joining a Community - and by holding SkillWallet, individuals are part of a Community at all times.
SkillWallet.sol is an ERC721 contract that issues Identity tokens.
The SkillWallet stores information about:
  1. 1.
    Community history (previous/current DAOs)
  2. 2.
    Skills, Contributions & Roles
  3. 3.
    Nickname (pseudonymous), Avatar (picture, NFT, ...)
  4. 4.
    PubKey for OSM.
Name, Avatar, and Skills/Roles are stored as metadata of the SkillWallet.
In order to integrate SkillWallet for your own community, you need to sign the Partners Agreement for native platform integration.

Creation

Users can create an SW through our integrators platform by selecting a role and experience, name and, avatar. The users can choose to create their SkillWallet with Torus or Metamask accounts. The SkillWallet is created as NFT owned by the user, but it's inactive until they tie it to their mobile phone by downloading the SkillWallet App and scanning an activation QR code. At this point, the user is already a SkillWallet holder and they own their identity.
By tieing the SkillWallet to their mobile phone, the users:
  1. 1.
    Activate their SW and now it's entirely usable
  2. 2.
    Activate the Off-chain signature mechanism
  3. 3.
    Have a pretty UI-friendly way to see their SkillWallet and its growth

Create SW flow

The user can pick either Metamask or Torus as a wallet. They customize their skill wallet and then they're prompted to scan the activation QR code. They scan it through the SW mobile app and their SW is officially activated.
When the user scans the QR code, the mobile app generates a public/private key pair and stores the private key locally. It calls the backend to store the public key on-chain and associate it to the according tokenID.
The private key is stored in encrypted storage on the mobile device.
When the SW is getting activated the mobile app signs a nonce and sends it to the SkillWallet.sol by using a proxy REST API. The SkillWallet.sol calls a chainlink external adapter for recovering the public key from the signature. If the public key is found and is valid, the SkillWallet.sol contract activates the users' NFT.
Create SW flow