😶🌫️
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 hey@fluidkey.com.
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 keyspredictStealthSafeAddressWithClient
: 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 Proxy
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.
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'
If you want to run the example, you can clone this repository and use the following commands.
yarn install
ts-node src/example/example.ts
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
- 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