😶🌫️
The Fluidkey Stealth Account Kit is an open source TypeScript library containing the core cryptographic functions used by Fluidkey. It enables anyone to independently generate and recover stealth smart accounts and related funds.
A written companion explaining the usage of the kit in Fluidkey's processes can be found in the technical walkthrough.
We hope to see more developers build privacy-preserving applications with the kit. If you have questions about the kit or want to contribute, reach out at [email protected].
The library is composed of the following functions:
generateKeysFromSignature
: generates a user's private keypair from a signatureextractViewingPrivateKeyNode
: extracts a BIP-32 node from a private viewing keygenerateEphemeralPrivateKey
: generates an ephemeral private key based on the private viewing key nodegenerateStealthAddresses
: generates stealth addresses based on an ephemeral secret and a list of public spending keysgenerateStealthPrivateKey
: generates the private key of the account controlling the stealth SafepredictStealthSafeAddressWithClient
: predicts the address of a stealth Safe based on a list of stealth address owners (EOAs) calling the Safe Proxy Factory Deployment contractpredictStealthSafeAddressWithBytecode
: predicts the address of a stealth Safe based on a list of stealth address owners (EOAs) simulating the CREATE2 call using the bytecode of the to-be deployed Safe ProxygenerateFluidkeyMessage
: generates the Fluidkey-specific key generation message
An example of how to use these functions to recover stealth accounts based on a user's private key can be found in the example
folder.
Warning
generateKeysFromSignature
, extractViewingPrivateKeyNode
, and generateStealthPrivateKey
should only be used client-side, as they expose the user's private keys.
To get started, install the package with your preferred package manager.
npm install @fluidkey/stealth-account-kit
yarn add @fluidkey/stealth-account-kit
Then start using the library by importing the functions you need.
import {
generateKeysFromSignature,
extractViewingPrivateKeyNode,
generateEphemeralPrivateKey,
generateStealthAddresses,
predictStealthSafeAddressWithClient,
} from '@fluidkey/stealth-account-kit'
To recover stealth accounts generated by Fluidkey, the following parameters should be used.
const chainId = 0
const safeVersion = '1.3.0'
const useDefaultAddress = true
const threshold = 1
The Fluidkey Stealth Account Kit has been audited by Dedaub in May 2024. You can find the full audit report here.
- viem and its dependencies, specifically:
- noble-secp256k1
- safe-deployments
This code has been influenced by, and contains code from umbra-js.
This project is licensed under the MIT License - see the LICENSE file for details.
Copyright (c) 2024 Fluid Privacy SA