Yes, I do understand that it is inappropriate to pollute the already large blockchain with data not necessary to make the currency work. But I know people are using Bitcoin as an underlying system for certain applications, like data storage or reaching common consensus about matters not directly related to the currency itself.

What methods are mostly employed to inject the blockchain with arbitrary data (like custom scripts representing data or payouts to addresses that represent data)? Is there a need to stop this in order to prevent an undownloadable large blockchain from forming in the future? If so, how can this be accomplished?


3 Answers 3


The accepted method of doing this is by putting the data in the output script along with op code OP_RETURN which tells clients to mark the transaction as invalid. This way, it doesn't use up as much resources on clients who don't care about non-transaction related data.

There are two schools of thought regarding putting arbitrary data in the blockchain. Some believe that as long as the method used to put arbitrary data in the blockchain follows all the rules of the bitcoin protocol, there is no harm done and that it actually strengthens the network by increasing usage. Others believe that it is detrimental and that these kinds of data should be kept from using up resources on a network that is designed to process transactions and not designed to store arbitrary data.

In my opinion, it all really comes down to what miners think about these kinds of use of the blockchain and from their perspective , they really don't care. To a miner, it makes no difference what the transaction is as long as it pays a transaction fee ,and they can add it to their block. So I believe that this kind of usage of the blockchain is here to stay.

  • 3
    This answer could mention that there are other ways to put data into the blockchain, too, such as using an 1 of 3 raw multisig output, where 1 of the public keys is real and the other 2 are just data. Obviously hacks like this are not recommended, but there's no way for the network to know that the public keys given are not real public keys.
    – morsecoder
    Nov 17, 2014 at 17:10
  • 2
    also OP_IF, OP_ELSE, OP_ENDIF - one of these clauses can contain arbitrary data for example Jun 15, 2015 at 11:44

There's several ways this happens in many abstract ways.

  1. The coinbase field of a mined block allows for hex data which can hold approximately 1 tweet worth of data.
  2. Multiple outputs can be used for a transaction such that each holds hex data. This would imply dust value outputs (outputs of <5640 satoshis) and would be frowned upon for bloating the Blockchain.
  3. Likewise, as a commenter noted, hex data from a multi-signature transaction could be used to encode information, but has similar implications to #2
  4. Blockchain.info allows for messages which are linked to transactions but are not embedded in the Blockchain.
  5. http://proofofexistence.com allows for a hash of a document to be imbedded in the Blockchain to prove an instance of an object (document/file) existed at a certain time.
  6. Similarly to #5, sidechains allow for assets to be linked (though more abstractly) to a time/black in the Blockchain. So if one assumes a block height as a pointer to a sidechain's information, then the Bitcoin blockchain is encoding information/proof of assets
  7. Assuming brute forced Base58Check, it is possible to send Bitcoin to public addresses which could double as hex encoded data, though the assumption of useful messages rests on owning the keys to addresses which have a checksum which appends meaningful data (which is random, hence brute force)
  • Could you clarify 6? +1 for the forced Base58Check. I hadn't though of that one yet!
    – Jori
    Nov 19, 2014 at 15:52
  • @Jori Sidechains are quite abstract currently, but check bitcoin.stackexchange.com/q/32185/9382 and the whitepaper linked therein Nov 20, 2014 at 4:40


Academic paper explaining data insertion methods for Bitcoin's blockchain.

  • 2
    Please don't give a link-only answer, but summarize the information. Jul 23, 2017 at 18:32

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.