I think combining those scenarios is possible, but not elegant. The idea of HD-Wallets is that you can deterministically derive any key from a seed (which usually is derived from a mnemonic phrase and an optional password). If you have a team working on a project and you want to use a HD-Wallet for your project containing all keys, keys for incoming payments, keys for savings, keys for donations, and so on (which is the basic idea behind it), somebody should be in control of the mnemonic phrase and the password which can be used to reconstruct all private keys for any purpose within your project. If the tree also contains the private keys of the staff members, which they used to derive a address to register in the multisig contract, the person(s) who is/are in control of the mnemonic phrase and password have full control over all private keys of the staff members. This implies that they also could fulfill the multsig requirement by their own. I'd rather suggest the following:
- Every staff member creates his private key (and therefore his address) on his own. It is not important if they use a simple non-deterministic wallet or a HD-wallet to create they private key, what is important is that they use this address as their new permanent identity as a staff member. They register this address in the multisig contract for you token.
- For your project you create a HD-Wallet which will be able to differentiate between different account types (payments, savings, donations, project xyz, education, travel, etc.).
You should define derivation paths for the different account types and document them. BIP44 suggests the following path (https://github.com/bitcoin/bips/blob/master/bip-0044.mediawiki):
m / purpose' / coin_type' / account' / change / address_index
What you should do first is define which coin_type your token will have. You can find a free index and register it at https://github.com/satoshilabs/slips/blob/master/slip-0044.md . 0x800000d5 (alias is d5H) seems to be free, let's take it for example. Then you define different account types and store them (using backups):
- 0H = payments
- 1H = savings
- 2H = donations
- 3H = project MYTOKEN
4H = education
- 0 = Blockchain
- 1 = AI
- 2 = IOT
5H = journey
Now you can clearly define which path you have to derive if you want to access specific funds. For example, if you want to know how much funds are left for education in the field of AI, you derive the address from the private key in the following path: m / 2CH / d5H / 4H / 0 / 1
Further, you can now give staff members who should only manage specific funds access to a partial derivation path. For example, whoever shall manage the education funds can be given access to only this derivation path by giving him the relevant private key and chaincode (both encoded in xprv format, see BIP32) at the level m / 2CH / d5H / 4H