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.
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.
An account contains the directions for deriving a cryptographic key pair and corresponding address from a Wallet. In practice, this looks like:
The account address is used to sign with the underlying extended private key.
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:
m/44'/60'/0'/0/0
m/44'/118'/0'/0/0
m/44'/501'/0'/0'
For a complete list of coin types and possible HD paths, refer to the SLIP-0044 specification.
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 |
XRP | ADDRESS_FORMAT_XRP | CURVE_SECP256K1 | m/44’/144’/0’/0/0 |
FLARE | ADDRESS_FORMAT_XRP | CURVE_SECP256K1 | m/44’/144’/0’/0/0 |
In addition to the guide mentioned above on HD Wallets, there is also a page specifically on Derivation Paths.
You can use ADDRESS_FORMAT_COMPRESSED
to generate a public key which can be used to sign with.
Contact us at hello@turnkey.com.
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.
Turnkey also supports raw private keys, but we recommend using Wallets since they offer several advantages:
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.
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.
To delete private 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.
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.
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.
An account contains the directions for deriving a cryptographic key pair and corresponding address from a Wallet. In practice, this looks like:
The account address is used to sign with the underlying extended private key.
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:
m/44'/60'/0'/0/0
m/44'/118'/0'/0/0
m/44'/501'/0'/0'
For a complete list of coin types and possible HD paths, refer to the SLIP-0044 specification.
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 |
XRP | ADDRESS_FORMAT_XRP | CURVE_SECP256K1 | m/44’/144’/0’/0/0 |
FLARE | ADDRESS_FORMAT_XRP | CURVE_SECP256K1 | m/44’/144’/0’/0/0 |
In addition to the guide mentioned above on HD Wallets, there is also a page specifically on Derivation Paths.
You can use ADDRESS_FORMAT_COMPRESSED
to generate a public key which can be used to sign with.
Contact us at hello@turnkey.com.
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.
Turnkey also supports raw private keys, but we recommend using Wallets since they offer several advantages:
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.
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.
To delete private 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.