Skip to content

Instantly share code, notes, and snippets.

@christroutner
Last active March 20, 2022 07:06
Show Gist options
  • Save christroutner/b70511e73625078234ed4c9a8ad9e8bd to your computer and use it in GitHub Desktop.
Save christroutner/b70511e73625078234ed4c9a8ad9e8bd to your computer and use it in GitHub Desktop.
Research: Restricted Blockchain Size

Overview

I'm doing research on blockchain architecture to find a way that a fully-validated blockchain could be built, but uses epochs so the IBD (initial block download) and overall blockchain size is limited. The best way to describe this idea is comparing and contrasting to other existing ideas:

  • Bitcoin: retains all blockchain data forever. This causes the blockchain to grow infinitely without bounds, over time. The IBD is continually getting longer, and the amount of data needed to download in order to get an archival node working is constantly growing.

  • Mina: uses ZKP (zero knowledge proofs) to keep the entire blockchain below 500kB at all times. Each new block is compressed using ZKP, and all the actual data is thrown away. This means things like inflation bugs can never be verified.

What I'm looking for is something inbetween these two extremes. I like the auditibility of verified chains like Bitcoin, and I like the small size of Mina.

Evaluated Blockchain Projects

The closest thing I've seen is Saito. They keep the blockchain at a fixed size. As new blocks are created, the oldest blocks are dropped and the transactions in it are 'rebroadcasted' to be included in the new block. There are consensus rules to determine when TXs are dropped. It's an interesting economic incentive model.

  • At the moment, this seems to be largely vaporware. Their official JS implementation does not install dependencies. I've filed a GitHub Issue and am waiting for someone to interact with it. Other devs in the Telegram channel have also confirmed that they are not able to get it to run. Based on the state of the code, I doubt their mainnet has undergone significant adverserial testing.
  • Conceptually though, I like the idea and it appears they have a prototype written in TypeScript. It would be a good starting point for a sidechain.
  • They are open source, but they have no license.

Other blockchains I've evaluated:

  • Assume UTXO - is a presentation by a BTC researcher. This is primarily focused on reducing the IBD time. But it doesn't actually reduce the size of the blockchain.

  • Cardano - uses a term called 'epoch', but it's very different than than what I'm looking for. Cardano's 'epoch' is the time in which a block producer can produce a block. It doesnt' have anything to do with reducing the size of the blockchain.

  • Avalance (AVAX) - is working on UTXO snapshots, but according to Tyler, nothing has been implemented yet.

  • UTXO FastSync is modification to a Bitcoin Cash full node to allow it to skip the IBD and start from a snapshot of the UTXO set. As long as there is some way to query the UTXOs associated with an address, so that the balance can be calculated, I suppose this could be fine. It doesn't work for SLP tokens, but if tokens were a first class citizen on BCH (as they may be in the future), then it would be adaquate.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment