Skip to content
Snippets Groups Projects
  • Maciej's avatar
    Zombienet tests - disputes on finalized blocks (#2184) · dc69dbba
    Maciej authored
    
    **Overview:**
    Adding an extra malus variant focusing on disputing finalized blocks. It
    will:
    - wrap around approval-voting
    - listen to `OverseerSignal::BlockFinalized` and when encountered start
    a dispute for the `dispute_offset`th ancestor
    - simply pass through all other messages and signals
    
    Add zombienet tests testing various edgecases:
    - disputing freshly finalized blocks
    - disputing stale finalized blocks
    - disputing eagerly pruned finalized blocks (might be separate PR)
    
    **TODO:**
    - [x] Register new malus variant
    - [x] Simple pass through wrapper (approval-voting)
    - [x] Simple network definition
    - [x] Listen to block finalizations
    - [x] Fetch ancestor hash
    - [x] Fetch session index
    - [x] Fetch candidate
    - [x] Construct and send dispute message
    - [x] zndsl test 1 checking that disputes on fresh finalizations resolve
    valid Closes #1365
    - [x] zndsl test 2 checking that disputes for too old finalized blocks
    are not possible Closes #1364
    - [ ] zndsl test 3 checking that disputes for candidates with eagerly
    pruned relay parent state are handled correctly #1359 (deferred to a
    separate PR)
    - [x] Unit tests for new malus variant (testing cli etc)
    - [x] Clean/streamline error handling
    - [ ] ~~Ensure it tests properly on session boundaries~~
    
    ---------
    
    Co-authored-by: default avatarJavier Viola <javier@parity.io>
    Co-authored-by: default avatarMarcin S. <marcin@realemail.net>
    Co-authored-by: default avatarTsvetomir Dimitrov <tsvetomir@parity.io>
    Unverified
    dc69dbba
Code owners
Assign users and groups as approvers for specific file changes. Learn more.
0008-dispute-old-finalized.toml 893 B
[settings]
timeout = 1000

[relaychain.genesis.runtimeGenesis.patch.configuration.config]
  max_validators_per_core = 1
  needed_approvals = 1

[relaychain]
default_image = "{{ZOMBIENET_INTEGRATION_TEST_IMAGE}}"
chain = "rococo-local"
default_command = "polkadot"

[relaychain.default_resources]
limits = { memory = "4G", cpu = "2" }
requests = { memory = "2G", cpu = "1" }

  [[relaychain.node_groups]]
  name = "honest"
  count = 6
  args = ["-lparachain=debug"]

  [[relaychain.nodes]]
  image = "{{MALUS_IMAGE}}"
  name = "malus"
  command = "malus dispute-finalized-candidates"
  args = [ "--alice", "-lparachain=debug,MALUS=trace", "--dispute-offset=14" ]

[[parachains]]
id = 2000

  [parachains.collator]
  image = "{{COL_IMAGE}}"
  name = "collator"
  command = "undying-collator"
  args = ["-lparachain=debug"]

[types.Header]
number = "u64"
parent_hash = "Hash"
post_state = "Hash"