Such a great question.
Derivation paths are related to HD Wallets or HD Keys, a type of wallet where you have a single, human readable, seed phrase that unlocks a number of accounts / addresses / private keys across any supported network. These phrases typically look like brain surround have swap horror body response double fire dumb bring ...
Do it with ethers:
const ethers = require('ethers');
const mnemonic = await ethers.HDNode.entropyToMnemonic(ethers.utils.randomBytes(16));
const wallet = ethers.Wallet.fromMnemonic(mnemonic);
Here is a community you can find ask more questions about it:
If I'm understanding your question correctly, you are asking whether you can go from any key pair in the hierarchy back to the original seed.
This is not possible since each step down the hierarchy is a HMAC-SHA512, which is a just a SHA512 hash with a little extra. SHA512 is a one-way function, so you can't reverse it aka go up in the hierarchy.
Even the ...
In BIP-0044 they gave some recommendations you my want to follow in Account Discovery section.
When the master seed is imported from an external source the software
should start to discover the accounts in the following manner:
derive the first account's node (index = 0)
derive the external chain node of this account
scan addresses of the ...
Entropy implies randomness.
Using deterministic algorithms on a password is not entropy and SHOULD NOT be used!
I would recommend researching how to gather entropic data from whatever programming language you're using.
I realized my error: https://github.com/vergl4s/ethereum-mnemonic-utils works, but the full derivation path I was looking for is m/44'/60'/0'/0/0 (note the extra /0 to select the first account). Here is a full example:
Copyright (c) 2018 Luis Teixeira
Copyright (c) 2019 Niklas Baumstark
Permission is hereby granted, ...
You can use ethereumjs-wallet, from their unit tests
var xpub = 'xpub661MyMwAqRbcGout4B6s29b6gGQsowyoiF6UgXBEr7eFCWYfXuZDvRxP9zEh1Kwq3TLqDQMbkbaRpSnoC28oWvjLeshoQz1StZ9YHM1EpcJ'
var addr = Wallet.fromExtendedPublicKey(xpub).getAddressString()
I figured out an Answer, https://pypi.org/project/eciespy/, this library uses private/public key generated from Sep256k1 curve for encryption and decryption.
from ecies.utils import generate_eth_key
from ecies import encrypt, decrypt
k = generate_eth_key() ##Instead of generating a new key, you can use sep256k1 keys generated with bip39 specifications.