Giszmo: The account level in BIP44 is hardened, yet it allows to derive the external and change addresses. Nick ODell: @Giszmo, yes, but its children are not hardened. Gizmo: I can perfectly derive from hardened xpriv and xpub keys. hardened.derive(1, true).derive(1, true).xprivkey is "xprv9zTLKFNn1CmW8oB3s8L1B4Bvn9E4nLmg2juMQv2HwbhhQhufDivMWcNSiio59CiNMXkUCBS4Npi‌​‌​9KAtefwB4KUNkrTkprbECsMLg3yEvJM8". Nick ODell: @Giszmo Can you generate a child public key from a hardened public key? Gizmo: something like HDPrivateKey().derive(1,true).hdPublicKey.publicKey.toAddress().toString()? Spits out an address as I would have expected. Nick ODell: @Giszmo No, a child public key. Hi Gizmo: ok, I'm using bitcore js library here. so what would you expect not to work? derivation produces children. Nick ODell: I would expect that you could not derive a hardened public key from an extended public key. I think you would need both the extended key and the corresponding private key. Gizmo: to get to 1/1'/5/3' I can derive(1/1'/5/3') or I can derive(1).derive(1, true).derive(5).derive(3, true). Nick ODell: That's deriving a hardened key from a private key. Which is possible. Gizmo: so ... you don't sound too convinced, neither. Nick ODell: 1:58 AM I'm unsure what you mean by that. Do you mean that you think I'm unconvinced of my own argument, or of yours? Gizmo: As far as I understood, you can always get down in the tree and always from private to public and hardening prevents an attack that would allow you to get up in the tree. Nick ODell: I will find the BIP32 text I base that on; 1sec Gizmo: of yours. You keep telling me that certain things can't be derived but at least I don't get an error trying to derive them here with actual code. Nick ODell: github.com/bitcoin/bips/blob/master/… Because you're also giving it the private key. Try wallet.derive("m").xpubkey.derive("0'") That shouldn't work. Gizmo: it doesn't work as you wrote it literally but with a small tweak it does: wallet.derive("m").hdPublicKey.derive(0, true) xpubkey would be the string yeah, sorry, I studied math and I'm into bitcoin since 3 years but that crypto still gives me a headache. I saw that in the bip32 but couldn't draw my definite conclusions from it. Nick ODell: 2:10 AM lemme take a look at bitcore source code It shouldn't be able to do that Gizmo: :) thank you. Nick ODell: github.com/bitpay/bitcore/blob/… It looks like the pubkey derive doesn't take two arguments So I have no idea what it's doing with the second true argument. Gizmo: Well, I had understood you would expect the last derive to not be available at all, yet it's there, just with implicit hardening (i + 2³¹). let me try ... Nick ODell: Is it actually hardening it? Gizmo: interesting. derive(Math.pow(2,31)-1) works. +1 not. Nick ODell: 2:22 AM Does derive(0, false) and derive(0, true) return the same thing? Gizmo: no, no hardening available but that's weird. I suppose it does if the second parameter is ignored. it does. so hardened keys are invisible to users that have only xpub keys. Nick ODell: yeah Gizmo: harg, bitcore got me confused there.