This transaction spends the entire IOTA supply. Source and destination addresses are the same.


Why does IRI not reject the transaction? The input clearly must be fake.

Or does IRI skip validation of transactions where input address == output address? If this is the case, where in the IRI code base is this handled?

1 Answer 1


That transfer doesn't violate IOTA protocol because no iotas were created out of thin air after the transfer processing. IRI doesn't skip validation of "input address == output address" cases.

  • Thanks, Sergey. There is an intense discussion on Discord. I am aware, you're not joining because you have to focus on other things. Just want to let you know: Your time here is appreciated. There still is some confusion left. Everybody agrees, that a transfer from A to A does not hurt anybody, as no balances change. However, we do want to understand how this works technically. My point is, that the rule „bundle sum has to be zero“ is true for bundles, where the output is a different address than the input(s), too. So this boils down to the following key questions:
    – ralf
    Commented Feb 1, 2018 at 12:31
  • ct'd: 1.) At which point does IRI actually check and validate the input(s) against the tangle? 2.) Or does it work completely different in a sense, that IRI does not validate individual transactions of the bundle, but the bundle as an atomic unit of transfer and hence confirms all transactions of the bundle if the bundle itself is valid? If it works as described in 2), does this mean, that in the very special case I linked in my original question, the bundle is considered valid because IRI detects that the transfer does not change any balances and as a consequence, IRI does not look up the...
    – ralf
    Commented Feb 1, 2018 at 12:36
  • ... inputs on the Tangle. What I don't get: At some point, IRI must make the decision to not check the inputs against the Tangle because otherwise, it would detect that the inputs provided are fake.
    – ralf
    Commented Feb 1, 2018 at 12:38
  • 1
    Bundles are verified during a ledger verification which usually happens when getTransactionsToApprove is invoked. The bundle verification routine returns only changed addresses and corresponding amounts. -5000 and +5000 won't return the address at all, -5000 and +4900 will return that the balance has changed by -100. Commented Feb 1, 2018 at 13:34
  • Does this include signature validation? In other words: Is IRI not verifying signatures for the Input Address == Output Address case?
    – ralf
    Commented Feb 2, 2018 at 0:55

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.