BIP44 external and internal accounts



Below I may be a bit verbose, so that if my understanding is wrong, it will be glaringly obvious.

Consider two external accounts:

The external accounts are used to receive bitcoin. When we search for new balances, we check only the external accounts. No-one should be sending money to your internal accounts except for you.

m/44'/0'/0'/0/0 : External account 0

m/44'/0'/0'/0/1 : External account 1

If both accounts are used in transaction A, Is there any rule that says the change must go to (Internal account 1) or (Internal account 0)?

If after Transaction A, we receive funds at External account zero and it is the only input in the transaction. Do we send the change to (Internal account 0) or the most updated internal account?

I think that if an address keeps sending change to an address, it can indicate that it is a change address, no?

Kyle Graham

Posted 2018-04-30T11:29:57.723

Reputation: 542



Change can be sent to any address separately specified in the transaction for the change or, paid as fees to the miner if not.

Looking at the examples, it is clear that where the specification mentions change in the path it might well be intended to read chain with possible options of either change or external.

This leads me to believe that depending on who the change is meant for (whose inputs the change is from) - BTW if you are the receiver and not the sender then the change is not for you - then the change derivation path will be either of:

m / 44' / 0' / 0' / 1 / 0 #Account 1
m / 44' / 0' / 0' / 1 / 1 #Account 2


Posted 2018-04-30T11:29:57.723

Reputation: 2 878

1Yes exactly, change can be sent to any address. However, in BIP44 I believe it states that external account A should send the change to internal account A. And so, when you are doing account discovery, you only search the external chain. – Kyle Graham – 2018-04-30T11:36:23.297

@KyleGraham I have added to my answer. HTH. – Willtech – 2018-04-30T11:52:41.143

This is correct. Change (your own change) will always go to the first unused change address by default, even if your inputs are also change. – Raghav Sood – 2018-04-30T22:23:08.913

1the second derivation path doesn't correspond to account 2. those are both paths to change addresses in account 1. – Abdussamad – 2018-10-31T05:30:37.810