The tangle of IOTA meets BitTorrent: An algorithm to persist any file onto the tangle of IOTA
- Persist any data onto the tangle of IOTA
- Retrieve data that was persisted with this module beforehand
- Optionally encrypt your data with a password (via AES)
- Store a string or even a whole file without any prior conversion
Check out my other project tanglesta.sh here on GitHub which implements this module into a full-blown desktop app available for Windows, macOS and Linux.
I really like the idea of the tangle of IOTA and I think that this cryptocurrency has a bright future. I run a full node myself and want the idea to succeed. The more I messed with IOTA, the further this idea formed in my mind to use the 2187 trytes of each transactions signature to store any data on the decentralised tangle.
This module can persist any string or even files directly onto the tangle via creating a torrent-esque chain of transactions that reference other transactions holding the data while also referencing their direct predecessor in the chain. That way, this module can also retrieve any data that was persisted beforehand by just passing the 'entry-hash' into it, which is the first transaction hash of the created chain. The data can be optionally encrypted with a secret via AES so that even if someone gets hold of an 'entry-hash', the data will still be illegible. Data is stored as a Base64 string and files will be automatically encoded if passed into the algorithm as well as decoded if retrieved โ no prior conversion of the file needed.
NPM
npm install --save tanglestash
Yarn
yarn add tanglestash
First off, create a new instance of the modules class
let tanglestash = new Tanglestash(provider, datatype, seed);
with the following arguments:
provider
:String
A URI of an IOTA full nodedatatype
:String
Either 'file' or 'string' based on the data that will later be usedseed
:String
[Optional]
An IOTA wallet seed; will be automatically generated if not passed here
Retrieves data that was persisted onto the tangle in the past.
tanglestash.readFromTangle(entryHash, secret)
entryHash
:String
Any transaction hash that was output after successfully persisting data beforehand; called 'entry-hash'secret
:String
[Optional]
The password the data was encrypted with; if any
Promise.<*>
- A file buffer of the retrieved data or a string based onthis.datatype
Persists data onto the tangle.
tanglestash.saveToTangle(data, secret)
data
:String
The data as a string or file path based onthis.datatype
secret
:String
[Optional]
The password the data should be encrypted with; if any
Promise.<string>
- The last transaction hash of the created chain; called 'entry-hash'
Generates a random valid IOTA wallet seed.
tanglestash.generateRandomIotaSeed()
String
- The generated seed
Retrieves a new valid IOTA wallet address based on this.seed
.
tanglestash.getNewIotaAddress()
Promise.<string>
- The retrieved wallet address
Returns all the marky
entries used to time the main processes.
If you've never used marky
before, learn more about it here.
tanglestash.getAllMarkyEntries()
Array.<object>
- All the timing entries created bymarky
If you like this module and want to support it, you can of course donate some IOTA ๐
QIFKUOEQBCEV9NKFWDBTQYBHLFFORLVKDQSYDSZQQMKTCBLBFDQMJWIOUDH9DLZXVKGNQGKLSAJCQQMEDESLCTHGZD