backport generic improvements from glamsterdam-devnets (round 2) - #184
Conversation
run.zsh: assertoor-authenticated slash command, EIP-7251 consolidate, parallel cast-based topup, batched deposits/topups with per-tx receipt verification, sync_mapping pending mode + inventory-web/dora refresh, index-range helper, python3. ansible: reshuffle_validators.yaml safe key-reshuffle playbook (needs ansible-collection-general#562, merged), validator_keys_container_name for in-process VC clients (teku/nimbus/grandine), validator display names via eth_inventory_web_segments_json, engine snooper -> xatu wiring, besu RPC/log args, xatu sentry data_column_sidecar + beaconCommittees/proposerDuty. ci: syncoor matrix gains nimbusel + ethrex, runner label docs.
SummaryBackports generic devnet tooling from glamsterdam-devnets: added Issues
Reviewed @ |
Follow-up to #180 — backports the generic improvements glamsterdam-devnets accumulated since, leaving out everything devnet-specific (gloas fork config, 300M gas limits, image pins, tysm — the latter is already in flight on
parithosh/tysm-config-deploy).scripts/run.zsh
slashcommand: triggers the assertoorvalidator-slashing-singleplaybook, with JWT minting via the devnet auth provider behind Cloudflare Access (CF_ACCESS_CLIENT_ID/SECRETorASSERTOOR_TOKEN), token caching, and auto-registration of the playbook.consolidatecommand (EIP-7251): targeted and self-consolidation (0x01→0x02), with full eligibility checks (creds type, status,SHARD_COMMITTEE_PERIOD, shared withdrawal address), dynamic fee handling, andCONSOLIDATION_PRIVATE_KEYsupport for non-mnemonic withdrawal addresses.topuprewritten from serialethereal(which ignores--nonceonline) to parallelcast sendwith locally computeddeposit_data_roots.deposit/topup/consolidatesubmit in batches of 500 (zsh job-table cap) and verify every tx receipt with a ✓/✗ summary instead of assuming success.sync_mapping: newpendingmode pre-maps the still-queuedpending_depositsin one shot after verifying the FIFO queue is strictly sequential for the mnemonic; also refreshes the bootnode inventory-web, rolls dora, and commits the updated mapping.expand_validator_indiceshelper (1..10ranges),python→python3, alphabetized help.send_fundsis kept (glamsterdam dropped it; removing template features felt like a separate decision).ansible
reshuffle_validators.yaml: safe reassignment of validator key ranges after editingvalidator_start/end— stop VC → wipe keys → 2-epoch play-wide barrier → sync → start, with an unreachable-host abort so a donor can never keep keys a recipient loads. Usesvalidator_keys_reshufflefrom feat(validator_keys): reshuffle deployed keys when inventory ranges change ansible-collection-general#562 (merged).validator_keys_container_name: beaconfor teku/nimbus/grandine — they run validators in-process, so reshuffles must restart the beacon container.eth_inventory_web_segments_json: hosts can setvalidator_display_nameto control the name shown invalidator-ranges.json(dora/assertoor/beacon-metrics-gazer) without affecting key generation.SNOOPER_XATU_*+ jwt volume) so engine-API events land in xatu.--color-enabled=false,--cache-last-blocks=2048,--rpc-http-max-active-connections=1000(log noise + RPC capacity under erpc/dora load).data_column_sidecar, enablebeaconCommittees+proposerDuty.ci
nimbusel+ethrexto the client matrix/defaults, document the DigitalOcean runner labels alongside Hetzner.Linted with ansible-lint 24.6.0
--profile production: no new findings vs master on the touched files.