I do know that Blocksci is now not being actively developed however I used to be studying by means of a number of the documentation about figuring out change addresses and got here throughout this:
change.locktime = <blocksci.heuristics.change.ChangeHeuristic object>
Bitcoin Core units the locktime to the present block peak to stop payment sniping.
If an output has been spent and it matches this transaction’s locktime habits, it's
presumably the change output. (This heuristic will return unspent outputs as potential
candidates.)
My understanding is that locktime is often set to the present block + 1 as a way to stop a payment sniping assault performed by miners the place they remine the present block however with larger payment transactions.
Nonetheless, I’m struggling to grasp how Blocksci makes the connection between locktime and whether or not an deal with is change. Is it saying that if the transaction locktime is say 100,000 and one specific output additionally has a locktime of 100,000 then it might be the change output? However why? If I’ve a change output I may not essentially wish to spend it immediately so why would the locktime be the identical as for the preliminary transaction?