When looking at transactions on a tangle explorer, I often see "Unconfirmed" transactions that (when taking a closer look) can not get confirmed, but the tangle explorer does not show it to me.

So I thought to use this question here to collect reasons why a transaction (that gets propagated to the network) could become invalid so that they can never get confirmed (A transaction without sufficient PoW is rejected by the network so can never appear here anyway), in the hope that this knowledge could be used to make tangle explorers better.

Let's start the list:

  • A transaction whose bundle hash does not match the (actual recomputed) hash of the complete bundle
  • A transaction whose bundle indexes do not match other transactions in the bundle
  • A transaction whose bundle's total sum is not zero
  • A transaction which spends IOTA but where the signature (possible spread over more than one transaction linked by it) does not match the address the IOTA is spent from

These causes above cannot be "cured" by reattaching. The following cause can:

  • It approves a transaction which is invalid for one of the criteria mentioned (including this one); when reattaching to confirmed transactions, your transaction can be confirmed, too.

And there is another special cause, that might get cured by another transaction (somewhere else in the tangle) getting confirmed:

  • The spent values of the bundle (cumulatively in case more than one transaction from the same bundle spends from the same address) are higher than the actual "value" of the address prior to confirmation

[And last but not least, a transaction might not get confirmed if it was injected to a slow node so that it is too old to be picked as a tip by other transactions (can be cured by explicitly referencing it from a new (zero-value) transaction which is connected "better"). But this point cannot really be computed by a block explorer statically.]

Anything I missed?


I finally found time to check the iri source code myself, and there were two conditions missing in my question:

  • A transaction whose bundle is still missing some transactions, based on the indexes (they may arrive later)
  • A transaction whose bundle (in total) tries to spend/receive more than the total number of available IOTA

And for reference, a list of reasons why a transaction gets rejected by the network (and never appear on a tangle explorer):

  • Weight magnitude is too low (not enough PoW)
  • Absolute value is larger than than the total number of available IOTA
  • Timestamp is before 1508760000 (2017-10-23T12:00:00) - probably to detect and reject transactions pre-snapshot

Sources: BundleValidator, LedgerValidator, TransactionValidator

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

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