I am building a script that is indexing all bitcoin transactions in real time with all their details etc. But I am looking here at this transaction - https://www.blockchain.com/btc/tx/8327996113c5ad326853c8af39424e12b02cadcab03a7e3b387902fe7d503081

I wonder why are there so many repeating outputs, I marked them with red. The outputs are absolutely identical with same address and same amount. Some of them might be spent, some of them might be not (actually in other example transactions I think I have seen that - identical outputs with different statuses - spent or unspent).

Also, might be silly question - why are some of them spent while others are unspent?

enter image description here

  • @RedGrittyBrick I don't understand what you really mean?
    – Dan
    May 22, 2022 at 11:46
  • See "Change splitting" at blog.bitgo.com/… May 22, 2022 at 14:12
  • Isn't it more like $40?
    – Murch
    May 22, 2022 at 14:14
  • @Murch. ooops yes. Not sure how I arrived at that number. I blame fuzzy screenshot, bad eyesight and dumb carelessness. But anyway, looked to me like it might be change splitting to some amount the recipient deemed useful. May 22, 2022 at 14:27
  • Change splitting is a good point, but in the context of this transaction, it doesn't seem obvious to me. The amounts are a bit small and the address reuse makes it unlikely to be done for privacy.
    – Murch
    May 22, 2022 at 14:46

1 Answer 1

  1. They're not "identical": transaction outputs are uniquely identified by their outpoint. The outpoint is the combination of the id of the transaction that created the output and the position of the output in the transaction's output list.
  2. The protocol tracks funds based on outputs, not addresses. In fact, the notion of addresses doesn't appear at the protocol level at all, it's just an out-of-band mechanism to convey the receiver's scriptPubKey to the sender. Hence, while weird, it's perfectly legal to create multiple outputs that pay to the same address in one transaction.
  3. Presumably the receiver has some sort of automated process that withdraws from a service whenever the minimum threshold is reached. For convenience they use the same address. The service however batches payments over a longer period of time than the receiver needs to reach the minimum threshold.
  4. Since the UTXOs are not identical (see 1.), UTXOs are individually selected to be used as inputs in transactions. As the receiver apparently has accepted the privacy loss stemming from the address reuse, they also don't seem to mind the privacy loss from spending multiple times from funds received to the same address.
    Alternatively, the receiver prefers to have multiple outputs of a smaller value over having a single output of a bigger value, as @RedGrittyBrick suggested in the comments. However, this usually appears in the context of liquidity management for enterprise wallets, and the amount seems a bit small for this explanation.
  • Thank you very much. Actually I was thinking something like point 3 in your answer.
    – Dan
    May 27, 2022 at 1:40

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.