Wallets
A hierarchical deterministic (HD) Wallet is a collection of cryptographic private/public key pairs that share a common seed. A Wallet is used to generate Accounts.
{
"walletId": "eb98ae4c-07eb-4117-9b2d-8a453c0e1e64",
"walletName": "default"
}
Configuration
Wallet seeds are generated with a default mnemonic length of 12 words. The BIP-39 specification supports mnemonic lengths of 12, 15, 18, 21, and 24 words. To enhance your Wallet's security, you may consider opting for a longer mnemonic length. This optional mnemonicLength
field can be set when creating a Wallet. It's important to note that once the Wallet seed is generated, the mnemonic is permanent and cannot be altered.
Accounts
An account contains the directions for deriving a cryptographic key pair and corresponding address from a Wallet. In practice, this looks like:
- The Wallet seed and Account curve are used to create a root key pair
- The Account path format and path are used to derive an extended key pair from the root key pair
- The Account address format is used to derive the address from the extended public key
{
"address": "0x7aAE6F67798D1Ea0b8bFB5b64231B2f12049DB5e",
"addressFormat": "ADDRESS_FORMAT_ETHEREUM",
"curve": "CURVE_SECP256K1",
"path": "m/44'/60'/0'/0/0",
"pathFormat": "PATH_FORMAT_BIP32",
"walletId": "eb98ae4c-07eb-4117-9b2d-8a453c0e1e64"
}
The account address is used to sign with the underlying extended private key.
HD Wallet Default Paths
HD wallets use standardized derivation paths to generate multiple accounts from a single seed. These paths follow a specific structure that allows for consistent address generation across different wallet implementations. Here are common default paths for some of the ecosystems supported by Turnkey:
- Ethereum:
m/44'/60'/0'/0/0
- Cosmos:
m/44'/118'/0'/0/0
- Solana:
m/44'/501'/0'/0'
For a complete list of coin types and possible HD paths, refer to the SLIP-0044 specification.
Address formats and curves
See below for specific address formats that you can currently derive on Turnkey:
Type | Address Format | Curve | Default HD Path |
---|---|---|---|
n/a | ADDRESS_FORMAT_COMPRESSED | CURVE_SECP256K1 | m/0'/0 |
n/a | ADDRESS_FORMAT_UNCOMPRESSED | CURVE_SECP256K1 | m/0'/0 |
Ethereum | ADDRESS_FORMAT_ETHEREUM | CURVE_SECP256K1 | m/44'/60'/0'/0/0 |
Cosmos | ADDRESS_FORMAT_COSMOS | CURVE_SECP256K1 | m/44'/118'/0'/0/0 |
Solana | ADDRESS_FORMAT_SOLANA | CURVE_ED25519 | m/44'/501'/0'/0 |
Tron | ADDRESS_FORMAT_TRON | CURVE_SECP256K1 | m/44'/195'/0'/0/0 |
Sui | ADDRESS_FORMAT_SUI | CURVE_ED25519 | m/44'/784'/0'/0/0 |
Aptos | ADDRESS_FORMAT_APTOS | CURVE_ED25519 | m/44'/637'/0'/0'/0 |
Bitcoin | ADDRESS_FORMAT_BITCOIN_MAINNET_P2PKH | CURVE_SECP256K1 | m/44'/0'/0'/0/0 |
Bitcoin | ADDRESS_FORMAT_BITCOIN_MAINNET_P2SH | CURVE_SECP256K1 | m/49'/0'/0'/0/0 |
Bitcoin | ADDRESS_FORMAT_BITCOIN_MAINNET_P2WPKH | CURVE_SECP256K1 | m/84'/0'/0'/0/0 |
Bitcoin | ADDRESS_FORMAT_BITCOIN_MAINNET_P2WSH | CURVE_SECP256K1 | m/48'/0'/0'/2'/0/0 |
Bitcoin | ADDRESS_FORMAT_BITCOIN_MAINNET_P2TR | CURVE_SECP256K1 | m/86'/0'/0'/0/0 |
Bitcoin | ADDRESS_FORMAT_BITCOIN_TESTNET_P2PKH | CURVE_SECP256K1 | m/44'/1'/0'/0/0 |
Bitcoin | ADDRESS_FORMAT_BITCOIN_TESTNET_P2SH | CURVE_SECP256K1 | m/49'/1'/0'/0/0 |
Bitcoin | ADDRESS_FORMAT_BITCOIN_TESTNET_P2WPKH | CURVE_SECP256K1 | m/84'/1'/0'/0/0 |
Bitcoin | ADDRESS_FORMAT_BITCOIN_TESTNET_P2WSH | CURVE_SECP256K1 | m/48'/1'/0'/2'/0/0 |
Bitcoin | ADDRESS_FORMAT_BITCOIN_TESTNET_P2TR | CURVE_SECP256K1 | m/86'/1'/0'/0/0 |
Bitcoin | ADDRESS_FORMAT_BITCOIN_SIGNET_P2PKH | CURVE_SECP256K1 | m/44'/1'/0'/0/0 |
Bitcoin | ADDRESS_FORMAT_BITCOIN_SIGNET_P2SH | CURVE_SECP256K1 | m/49'/1'/0'/0/0 |
Bitcoin | ADDRESS_FORMAT_BITCOIN_SIGNET_P2WPKH | CURVE_SECP256K1 | m/84'/1'/0'/0/0 |
Bitcoin | ADDRESS_FORMAT_BITCOIN_SIGNET_P2WSH | CURVE_SECP256K1 | m/48'/1'/0'/2'/0/0 |
Bitcoin | ADDRESS_FORMAT_BITCOIN_SIGNET_P2TR | CURVE_SECP256K1 | m/86'/1'/0'/0/0 |
Bitcoin | ADDRESS_FORMAT_BITCOIN_REGTEST_P2PKH | CURVE_SECP256K1 | m/44'/1'/0'/0/0 |
Bitcoin | ADDRESS_FORMAT_BITCOIN_REGTEST_P2SH | CURVE_SECP256K1 | m/49'/1'/0'/0/0 |
Bitcoin | ADDRESS_FORMAT_BITCOIN_REGTEST_P2WPKH | CURVE_SECP256K1 | m/84'/1'/0'/0/0 |
Bitcoin | ADDRESS_FORMAT_BITCOIN_REGTEST_P2WSH | CURVE_SECP256K1 | m/48'/1'/0'/2'/0/0 |
Bitcoin | ADDRESS_FORMAT_BITCOIN_REGTEST_P2TR | CURVE_SECP256K1 | m/86'/1'/0'/0/0 |
Sei | ADDRESS_FORMAT_SEI | CURVE_ED25519 | m/44'/118'/0'/0/0 |
Stellar | ADDRESS_FORMAT_XLM | CURVE_ED25519 | m/44'/148'/0'/0'/0 |
Dogecoin | ADDRESS_FORMAT_DOGE_MAINNET | CURVE_SECP256K1 | m/44'/3'/0'/0/0 |
Dogecoin | ADDRESS_FORMAT_DOGE_TESTNET | CURVE_SECP256K1 | m/44'/1'/0'/0/0 |
TON | ADDRESS_FORMAT_TON_V3R2 | CURVE_ED25519 | m/44'/607'/0'/0/0 |
TON | ADDRESS_FORMAT_TON_V4R2 | CURVE_ED25519 | m/44'/607'/0'/0/0 |
Where can I learn more?
In addition to the guide mentioned above on HD Wallets, there is also a page specifically on Derivation Paths.
What if I don't see the address format for my network?
You can use ADDRESS_FORMAT_COMPRESSED
to generate a public key which can be used to sign with.
What if I don't see the curve for my network?
Contact us at hello@turnkey.com.
Delete wallets
To delete wallets you can call the delete wallets activity. Before deleting a wallet it must have been exported to prevent loss of funds, or you can pass in the deleteWithoutExport
parameter with the value true
to override this. The deleteWithoutExport
parameter, if not passed in, is default false
. Note that this activity must be initiated by the wallet owner.
Private Keys
Turnkey also supports raw private keys, but we recommend using Wallets since they offer several advantages:
- Wallets can be used across various cryptographic curves
- Wallets can generate millions of addresses for various digital assets
- Wallets can be represented by a checksummed, mnemonic phrase making them easier to backup and recover
Export keys
Exporting on Turnkey enables you or your end users to export a copy of a Wallet or Private Key from our system at any time. While most Turnkey users opt to keep Wallets within Turnkey's secure infrastructure, the export functionality means you are never locked into Turnkey, and gives you the freedom to design your own backup processes as you see fit. Check out our Export Wallet guide to allow your users to securely export their wallets.
Import keys
Importing on Turnkey enables you or your end users to import a Wallet or Private Key to our system. Check out our Import Wallet guide to allow your users to securely import their wallets.
Delete keys
To delete prviate keys you can call the delete private keys activity. Before deleting a private key it must have been exported to prevent loss of funds, or you can pass in the deleteWithoutExport
parameter with the value true
to override this. The deleteWithoutExport
parameter, if not passed in, is default false
. Note that this activity must be initiated by the private key owner.