2019-05-07 Meeting notes: bloat in the tuplespace


May 7, 2019


  • @Kelly Foster

  • @Łukasz Gołębiewski

  • @Lucius Meredith

  • @Timm Schäuble

  • @Ovidiu Deac

  • @Dominik Zajkowski

  • @Artur Gajowy


We continue the conversation about this performance and platform usability issue. We discuss options and document our action plan.

Discussion topics






Discussion about Dom’s findings

  • Stop storing sequences. Start storing pieces of sequences (ex hashes)

  • If we don’t address the problem of list growth now, we will have to at some point.

What could we do?

  • Issue in the storage format. Recommendation to fix the AST

    • Serialization

    • How RSpace is built to…

  • First address how we represent the things we store

    • Should be provided on the Rholang side

      • Incoder and decoder

  • Optimize waiting continuations

Discussion about garbage collection

  • Renovated RSpace can manage the hash change

  • What’s the use case for garbage collection?

    • To support new nodes catching up

  • What is garbage?

    • Data that is old (ex on the other side of finalization) and/or inaccessible

    • DECISION run garbage collection + defined grace period

  • Three types of garbage to consider

    • Orphaned blocks

    • Unmatched names transferred from hot store to history trie

    • Names that are no longer referenceable after finalization

      • Requires tooling to retrospect Rholang and ask Casper about finalization

Next steps

  • Fix the example contracts so they don’t use single channels (ex ListMap)

  • To support further investigation, measure the size of data being moved between layers

  • Implement a binary encoder and decoder off of the binary scodec

  • Discuss if Casper can share information about orphaned

  • Define heuristic for when to collect garbage


  • Define a heuristic for finding out what’s unreferencable: reverse mark and sweep

Action items

@Kelly Foster ticket encoder/decoder https://rchain.atlassian.net/browse/RCHAIN-3348
@Artur Gajowy ticket switching to recursion