I'm curious to how would one store a 30kb file on the NXT blockchain since the NXT protocol can attach a 1000byte message. My test scenario is storing a 30kb midi file on the nxt blockchain and then call it back to form the file again either in the browser or as a downloaded file. I want to be able to do this via the local nxt client through its api and also via online services that have their api open to query the nxt blockchain. What I need to know and confirm is the following:

  • Due to the 1000byte limit, I'd imagine it would be about 30+ separate messages to form this file.
  • To reform the file, we would need to mark each message in proper order to concatenate it.
  • Can all of this be done using only javascript and query remote nxt blockchain api's?
  • Do we need to turn bytecode into base64 for decentralized storage?
  • What other issues might we encounter?

If we can get a test scenario working, technically we can store/retrieve/embed data onto our websites/apps without needing a centralized server.

  • a better test example is storing this 1kb chess game on the nxt blockchain: 1kchess.an3.es and then retrieving it again using js and embed it onto a webpage. Commented Oct 30, 2014 at 19:33
  • Does NXT support BIP16? Look at the webbtc.com/tx/… This transaction contains large amount of "extra data". Download it in binary and view as raw data in hex editor
    – amaclin
    Commented Apr 6, 2015 at 12:42
  • If you add it in 30 separate messages, you'll need to keep track of where the messages are in the block chain, which will take 30*(32+4) ~= 1kb data. Doesn't seem like very efficient storage.
    – morsecoder
    Commented Apr 7, 2015 at 16:24
  • seems like the new nxt client supports larger attachments! Commented Apr 8, 2015 at 0:59

1 Answer 1


Seems that the new 1.5 nxt version is giving users the ability to attach up to 40kb worth of data in the blockchain. See here:

NXT 1.5 decentralized storage on the blockchain

Also found the discussion of NXT Transient Data where data can be stored on the blockchain temporarily and then removed after a certain amount of time to reduce blockchain bloat. As discussed bye Jean-Luc: https://nxtforum.org/general-discussion/price-speculation/msg126548/#msg126548

We could add a "transient data" attachment that can have larger size, but is only kept in the blockchain for a limited time, say 24 hours. The hash of the complete attachment will be included in the transaction bytes that are signed and will be kept permanently, so that transaction signature can always be verified, but the actual data will be deleted after this expiration period. Then the bloat to the blockchain and extra traffic will be limited to those attachments for the last 24 hours. This wouldn't be that useful for images for goods that sellers keep in stock permanently, but for short lived items, or even message with picture type of attachment, may work. Just an idea.

Decentralized file storage released on production blockchain:

enter image description here

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.