NFID Wallet is a simple, secure, browser-based, soon-to-be-DAO-controlled wallet powered by the Internet Computer Protocol's Chain Fusion technology.
NFID Wallet takes wallet creation down from minutes to seconds with:
- Email onboarding
- Browser-based accessibility
- No need for a seed phrase
Users create an NFID Wallet on any browser from any device in seconds with just an email address. Email onboarding is a managed service offered by Internet Identity Labs, and users can switch this service off by enabling "self-sovereign mode" whereby only user-owned passkeys are able to authenticate wallet access. With this mode enabled, users can bypass email authentication altogether and authenticate directly with a passkey. If users attempt to use an email address, they will be required to authenticate with a passkey anyway.
In contrast to centrally-controlled browser extension or mobile app wallets, NFID Wallet requires only trust in the Internet Computer Protocol:
- Fully on-chain
- Fault-tolerant access
- ICP network key custody
The NFID Wallet frontend and backend code is stored on-chain and served directly into the browser environment, making both the frontend and backend tamper-resistant against malicious actors.
Seed phrases are a single source of failure that have led to the loss of trillions of dollars of crypto. Through the use of passkeys, users can set up multiple ways of authenticating to their wallet, all of which are extremely difficult to lose or steal.
NFID Wallet leverages ICP's native threshold ECDSA (and later threshold Schnorr) feature wherein the protocol handles the key-share distribution and signature generation across ICP nodes. Read more in DFINITY's forum post about NCC Group's public audit report for this feature.
Users have extremely high security guarantees against malicious code updates, lost logins, and lost private keys.
In the very near future, NFID Wallet plans to commit itself to DAO control through DFINITY's SNS launchpad, after which all code updates and treasury allocations will require DAO approval.
With a variety of DEXs on ICP, each with different price markets and liquidity levels, users never know where they can get the best price for their swaps. NFID Wallet plans to create a system of dynamic swaps to route one swap across multiple DEXs to get the most tokens out of the swap.
Paying for gas or making other purchases across networks in a pain. Leveraging ICP's threshold signatures allows NFID Wallet to support a feature where users will be able to pay on any chain with any token they want.
The current repository is the frontend interface for NFID Wallet, where you'll find setup, deployment, and testing instructions, as well as technical information on its architecture.
Before setting up, ensure the following are installed:
- NodeJS
v22.10.0
- Yarn
v1.22.22
Install all necessary dependencies:
yarn
Copy the environment template:
cp .env.local.template .env.local
Start the application locally:
npx nx serve nfid-wallet-client
Access the application in your browser at: http://localhost:9090
To run the legacy SDK playground:
npx nx serve nfid-demo
Run integration tests with:
npx env-cmd -f .env.test nx run-many --target=test --skip-nx-cache --maxAttempts=2 --maxParallel=1
Install Google Chrome for E2E tests.
To start both client and demo apps for testing:
npx nx serve nfid-wallet-client
npx nx serve nfid-demo
Execute end-to-end tests using:
npx env-cmd -f .env.test nx test:e2e nfid-frontend-e2e
Deploying to the Internet Computer is managed with DFX v0.24.1. Ensure it’s installed and configured before proceeding with deployment.
This architecture is inspired by:
Each application, such as nfid-wallet-client
, consists of pages
that render specific URLs. Pages are assembled from components exported via our public interface in package/features
, ensuring modularity and clean separation of concerns.
-
State Management:
-
Client-side Caching - swr
-
Forms - React Hook Form
-
Routing - react-router-dom
Connect with the NFID Wallet community for support, updates, and discussions:
Web3 is all about community! Let’s build, support, and grow together 🚀