8

On BlockChain.info, I have noticed a few transactions which send money to "Unable to decode output address".

For example, here is one: https://blockchain.info/tx/624928439d2f668bab9f4cc1d9c4d2bc62a9603d8109d73d4fff8cf3043b68bd

All of the ones that I have seen with this message have 0 Bitcoins associated with that transfer and then some other greater than zero amount of Bitcoins sent to a valid looking address. These weird addresses also have their money marked as "unspent". Do they ever get marked as "spent"?

What does this message mean and why are people sending Bitcoins this way?

4 Answers 4

9

If you look at the output script for that output, you can see it looks like this:

 RETURN PUSHDATA(32) [some garbage]

This script, beginning with OP_RETURN, is called a null-data output, and is used to store arbitrary data in the blockchain. These outputs can never be spent, there is no way to make the script ever evaluate to true. Because of this, they will always show up as unspent on blockchain, and can be pruned from full node UTXO sets.

In general it's required that these outputs are accompanied by at least one 'normal' output. Any bitcoins in an OP_RETURN output are destroyed forever because they cannot be redeemed, that is why they all have 0 value

2
  • Are you saying bitcoins could be in an OP_RETURN but that it would be silly to do so since they can never be redeemed? To be honest, I got lost when you said "can be pruned from full node UTXO sets". Thanks for your answer.
    – Scott
    Dec 9, 2017 at 15:14
  • 2
    The UTXO set is the set of all unspent bitcoins in the whole blockchain. Full nodes use this set to check whether new transactions are spending valid outputs. These OP_RETURN outputs do not need to be stored there because they can never be spent Dec 9, 2017 at 19:40
7

Click "Show scripts and coinbase" to see what that output really is. In this case it's RETURN PUSHDATA(32)[8013...]

RETURN (or OP_RETURN) causes the output to be unspendable. The PUSHDATA then is just a way to insert the 32 bytes 8013... into the blockchain.

The significance of that data is not necessarily known to anyone except the person who created the transaction. But one possibility is that it's a hash of some other piece of data, which the creator wants to be able to prove was in existence on the date of the transaction. This has a number of possible applications: the data could be an unpublished scientific discovery, or a nonce used in a provably fair random number scheme, or many other things.

See for other questions about this.

1
  • Wow, op-return is a complicated area, thanks for the link, I'll have to read up more.
    – Scott
    Dec 9, 2017 at 15:31
3

It's possibly omni data, such as tether, which blockchain.info can't decode, see https://www.reddit.com/r/omni/comments/5zs411/i_cant_receive_btc_unable_to_decode_output_address/ - used for coins like tether, safex, etc.

It's like ERC20 tokens on ETH, but on the BTC blockchain instead - these coins, e.g. tether, don't have their own blockchain, instead they are sent as data in a btc transaction, where the small amount of BTC sent with it is used as miners fee. For omni coins, data encoded with Omni Protocol is stored in OP_RETURN field, to decode this data it needs to be viewed with a compatible block explorer, e.g. http://www.omniexplorer.info, otherwise "Unable to decode output address" is displayed.

1
  • 1
    Are you saying that if I look up this address in particular on something like OmniExplorer that I should see some proof of it having Omni data associated with it? Perhaps this proves this one isn't Omni data since nothing appears here.
    – Scott
    Dec 9, 2017 at 15:23
3

Unable to decode output is what Blockchain.info displays for any output that does not conform to a set of standard output script templates. Such outputs do not have associated addresses so there really isn't anything that a block explorer can show about them.

As stated by other answerers, the specific reason that this output could not be decoded is because it is an OP_RETURN output. There are many other things that could result in that message. Essentially any script that is not one of the standard templates will result in that message being shown.

2

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