2019-05-08 Meeting notes: block merging: conflict resolution without replay


May 8, 2019


  • @Kelly Foster

  • @Kayvan Kazeminejad

  • @Timm Schäuble

  • @Ovidiu Deac

  • @Dominik Zajkowski

  • @Former user (Deleted)

  • @Chris Boscolo

  • @Łukasz Gołębiewski

  • @Lucius Meredith


  • We have a documented description of the issue and a plan for how to resolve.

Discussion topics






The issue

  • Today, in mulitparent Casper, when we introduce a new block it will have multiple parents and include multiple deploys. The heaviest parent wins. This results in many blocks being orphaned.

  • Merge and peek make the DAG easier to review

  • Can we launch mainnet without addressing?

    • It is a performance issue

    • It is not a blocker


  • Good enough implementation to cover 80% of the clashes

  • Peek won’t help

  • Do we start introspecting Rholang in Casper?

    • Seems like simplest way to resolve conflict


  • TICKET We need a per validator vault in the PoS contract to resolve merge conflicts on deploys

  • Acceptance criteria for merge conflict resolution have two not conflict

  • Good enough path

    • Get the state of the chain to a place where we can transfer REV without conflicts to build a DAG

      • To do - Introduce peek in Rholang and the tuplespace

      • To do - updating Casper to look at peeked information

  • Rholang changes

    • Peek

    • Artur’s suggestion

  • DECISION merge without conflicts is not a mainnet blocker

  • To get to mainnet

    • Cost accounting

      • Including updating PoS to include per validator vault

    • Multisig

    • FIx RSpace

    • Validation

    • Drain vault fix

Orphaned blocks discussion

  • Orphaned block - a block that will never be finalized

  • Goal to prune and reduce in the tuplespace


Action items