Jakob Löhnertz

Senior Software Engineer & Leader

Screenshot of Tanglestash GUI showing the file persisting interface.

Tanglestash

Decentralized file storage on IOTA's distributed ledger with an Electron GUI.

2 min read

What is it?

Tanglestash is a proof-of-concept I built in 2018 for storing and retrieving files on IOTA’s distributed ledger (the “tangle”). It combines blockchain-inspired data persistence with a BitTorrent-style transaction chaining approach, enabling decentralized file storage without traditional servers.

It was purely a fun project as actually storing data there is quite slow and will eventually be “folded” away (but it works!).

The project has two parts: a Node.js module for programmatic access and an Electron desktop application (GUI) for user-friendly interaction.

Why I built it

Back in 2017-2018, I was a lot into cryptocurrencies and the idea of distributed ledgers. I wanted to explore whether you could actually use a tangle (IOTA’s DAG-based alternative to blockchain) for practical file storage, not just transactions.

The challenge was figuring out how to chain transactions together in a way that made retrieval possible without centralized indexing. I ended up with a BitTorrent-inspired approach where each transaction references other data-holding transactions while linking to its predecessor.

How it works

Tanglestash stores data by creating chains of IOTA transactions. Each transaction holds part of your file and references other transactions, forming a retrieval chain. You only need an “entry hash” (the first transaction’s hash) to recover your stored files – everything else can be traced from there.

Key capabilities:

  • Store files of any type (including binaries) directly on the tangle
  • Retrieve previously stored data using transaction hashes
  • Optional AES encryption for data protection
sequenceDiagram
    participant U as User
    participant T as Tanglestash
    participant I as IOTA Tangle
    U->>T: Upload file
    T->>T: Split into chunks
    T->>T: Encrypt (optional)
    loop Each chunk
        T->>I: Create transaction
        T->>I: Link to predecessor
    end
    T->>U: Return entry hash
    Note over U,I: Later: Retrieval
    U->>T: Provide entry hash
    T->>I: Follow transaction chain
    I->>T: Return chunks
    T->>T: Reassemble & decrypt
    T->>U: Return file
How files are stored and retrieved via the IOTA tangle

The desktop app

The Electron GUI provides three main interfaces:

Persisting Screen: Upload files to the tangle with optional encryption

Tanglestash persisting interface

Retrieving Screen: Download previously stored files using their entry hash

Tanglestash retrieving interface

Settings Screen: Configure IOTA node provider connections

Tanglestash settings interface

Tech stack

Core Module:

  • Node.js
  • JavaScript with IOTA integration
  • AES encryption for optional data protection

Desktop GUI:

  • Electron for cross-platform desktop apps (Windows, macOS, Linux)
  • Vue.js for reactive UI components
  • Vuex for state management
CA