I am making an attempt to copy a few of the Electrum’s functionalities with the intention to assist me perceive the Bitcoin protocol. In keeping with what I gathered from BIP-32 there are 3 little one key derivation capabilities:
- non-public father or mother key –> non-public little one key
- public father or mother key –> public little one key
- non-public father or mother key –> public little one key
I began with the next pattern mnemonic: historical inflict mimic valve baggage physician march sort out hour hazard shoot city.
I’ve efficiently derived the grasp non-public key and grasp public key. Nonetheless, when I attempt to derive the general public key related to the trail proven as m/0/0 by the pockets, the outcomes do not match. I’ve tried many code tweaks with a lot of completely different outcomes. The anticipated outcomes are:
- public key: 022586d491bc387b161959e25d05772e98814da69215a3152b54e4d1ae0c1a4168
- tackle: bc1q83ljq9ad7rck4vdz0l7f7rr2zsprgn8rtvpmpa
I consider this is because of misunderstanding of the capabilities themselves. A few of the factors that aren’t clear to me:
- Why are the chain codes similar in the event that they appear to be obtained by completely different processes?
This extension, known as the chain code, is similar for corresponding non-public and public keys, and consists of 32 bytes.
- Aren’t public keys typically anticipated to be independently derived from non-public keys by scalar multiplication? There appears to be two extra routes to derive prolonged public little one keys, particularly, both from a public father or mother key or non-public father or mother key, and by completely different means, based on BIP-32.
- The non-public father or mother key –> public little one key route entails a “neutered” key. What key’s “neutered” and what’s this?