Skip to content

devnet: parametrable genesis (N validators + M via GovDAO) driven from the Makefile #8

Description

@louis14448

Goal

Make the devnet genesis size configurable from the Makefile instead of the current hardcoded layout (validator1-3 in genesis, validator4 out for the GovDAO Phase 2 scenario).

Target: something like

make full-reinit GENESIS_VALIDATORS=5 GOVDAO_VALIDATORS=2

=> 5 validators in the genesis valset, plus 2 extra validators prepared (keys + node dirs) but kept out of genesis so they can be onboarded later via GovDAO. Then be able to bring any of them up on demand.

Motivation

  • Test larger valsets and BFT thresholds on devnet.
  • Exercise the "add a validator via GovDAO" flow with more than one candidate.
  • Provide a clean, spare full-node target to test restore-fullnode (bootstrap a brand-new node from a snapshot). See the snapshot/restore work on branch feat/devnet-snapshot-restore.

Scope / things to work out

  • bootstrap.sh: currently hardcodes NODES=(validator validator2 validator3 validator4 snapshotter) and extracts validator1-4 addresses/pubkeys/node IDs explicitly. Generalise to N nodes + a loop for address/pubkey/nodeID extraction and the .env SEEDS_* generation.
  • generate-genesis.sh: currently takes a fixed VALIDATOR1..3 list. Make it accept a variable list of (addr, pubkey, name).
  • docker-compose.yml: Docker Compose does not do "N dynamic services" cleanly (--scale won't work here: each validator needs its own keys/config/genesis mounts and P2P identity). Two options:
    • pre-declare a pool validator1..validatorM gated by profiles, or
    • generate the compose file from a template/script during bootstrap.
  • Makefile: GENESIS_VALIDATORS / GOVDAO_VALIDATORS variables, wire through to bootstrap.
  • Keep the existing scenarios (scenario1..scenario5) working, or adapt them.

Related

  • Spare-full-node service (newnode, profile extra) to test restore-fullnode cleanly — could be folded into the parametrable pool (a node prepared but not in genesis == a restore target).
  • Snapshot/restore workflow: branch feat/devnet-snapshot-restore, runbook devnet/SNAPSHOT-RESTORE.md.

Activity

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

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions