We consider Derivation Paths an advanced topic; please read thoroughly and ensure you understand fully before implementing anything written in this article.
Background
First, let us understand what a wallet is and how wallets are generated behind the scenes.
The Enjin Wallet is a Hierarchical Deterministic Wallet, a type of wallet that generates an infinite number of wallets from a single master private key. This master key is known as the Recovery Phrase, Seed Phrase, or mnemonic phrase.
The way it creates each individual wallet is by using what’s called Derivation Path, which involves complex mathematical and cryptographic calculations.
This is of course more complex than that, but for the sake of this article it should be enough to get a better understanding of how wallets are generated.
Derivation Path explained
A Derivation Path, as the name implies, is used to "derive" wallets from the Seed Phrase (the master key) using mathematical and cryptographic algorithms, essentially creating an infinite number of wallets from a single seed phrase.
Here is the structure of a Derivation Path, which was first introduced in BIP44:
m / purpose' / coin_type' / account' / change / index
For example, here is a standard implementation of BIP 44 Derivation Path, which is widely used on Ethereum:
m/44'/60'/0'/0'/0
The Enjin Wallet uses this derivation path by default for Ethereum wallet generation, starting with the 0th index. If you choose to create more addresses, they are generated simply using subsequent indexes - m/44'/60'/0'/0'/1
m/44'/60'/0'/0'/2
, etc.
This is how the Enjin Wallet can create an unlimited number of wallets from a single seed phrase.
Why is this important to know?
While there are some widely used standard derivation paths, such as m/44'/60'/0'/0'/0
, each wallet developer is free to choose any derivation path for their wallet generation. Therefore, not all wallets use the same derivation path.
This is important to consider when importing a wallet from one app to another.
For example, if you created a wallet using the Bread Wallet app, it was generated using the m/0'/0/0
derivation path, which is quite different from the standard derivation path used by the Enjin Wallet. If you try to import the seed phrase from your Bread wallet into the Enjin Wallet, you will notice that it has generated a different wallet address than the one you had on Bread. This is because the default derivation path the Enjin Wallet uses is m/44'/60'/0'/0'/0
.
That is why, in the new Enjin Wallet 2.0 version, you are able to add addresses with a custom derivation path by turning on Power User Mode in the Preferences screen - essentially allowing you to import from any other wallet.
Which derivation path should I choose?
The Enjin Wallet generates wallets using the standard derivation paths. If there is no particular need to change the derivation path, we recommend sticking with the default derivation path suggested by the Enjin Wallet app.
Some standard derivation paths are listed below. Please note that when importing a wallet that was created using a non-standard derivation path, the Enjin Wallet will not automatically locate it; you must manually adjust the derivation path.
If you want to import your Enjin Wallet into another wallet app, here are the derivation paths that the Enjin Wallet uses:
Wallet | Derivation Path (Including Index) | Note |
Enjin Wallet 2.0 | Ethereum / JumpNet / Polygon / Binance Smart Chain: m/44'/60'/0'/0/0 Bitcoin: m/84'/0'/0' Litecoin: m/84'/2'/0' Enjin Blockchain (Relaychain & Matrixchain) / Polkadot / Kusama / Acala / Karura (sr25519 Schnorrkel): *Empty Path Binance Chain: 44’/714’/0’/0/0 Dogecoin: 44’/3’/0’ |
Wallets created after the 2.0 update (December 2022) and equivalent were generated using these derivation paths *Polkadot based wallets are generated using an empty path to be in sync with Polkadot{.js} which uses an empty path as well. |
Enjin Wallet 1.0 |
Ethereum: m/44'/60'/0'/0/0 Bitcoin: m/44'/0'/0' Litecoin: m/44'/2'/0' Polkadot (ED25519): 44'/354'/0'/0'/0’ Kusama (ED25519): 44'/434'/0'/0'/0’ Binance Chain - 44'/714'/0'/0/0 |
Wallets created after the 1.3.7 update on Android / 1.2.7 on iOS (March 2019) and equivalent and up to version 2.0 (December 2023) were generated using these derivation paths. |
Enjin Wallet 1.0 (Legacy) | Ethereum: m/44'/60'/0'/0 Bitcoin: m/44'/0'/0' Litecoin: m/44'/2'/0' Polkadot (ED25519): 44'/354'/0'/0'/0’ Kusama (ED25519): 44'/434'/0'/0'/0’ Binance Chain - 44'/714'/0'/0/0 |
Wallets created prior to the 1.3.7 update on Android / 1.2.7 on iOS (March 2019) were generated using these derivation paths. |
In summary, when importing a wallet, it is important to make sure that the import was successful by checking that all of the wallet addresses and funds have been added.
If you notice some missing funds, make sure that the same wallet addresses from the imported wallet app have been added to your wallet.
If the imported wallet address is different, it’s probably because the wallet you are importing from is using a non-standard derivation path. In that case, look for the correct derivation path that the wallet app you are importing from is using, and manually change the derivation path when Adding a Blockchain / Address.
Comments
0 comments
Please sign in to leave a comment.