Skip to content

Workload Rewrite: Monolithic Fuzzer → Weighted Stress Engine #167

@parthshah1

Description

@parthshah1

Replaced the shell-script-driven CLI workload with a single-binary weighted stress engine. Branch: [parth/workload-upgrade](https://github.com/FilecoinFoundationWeb/Filecoin-Antithesis/pull/163).

What Changed (done)

Architecture

  • Split monolithic main.go + resources/*.go (14 files, 3573 lines) into genesis-prep + stress-engine binaries
  • Deleted 8 shell driver scripts (parallel_driver_spammer.sh, anytime_state_checks.sh, etc.)
  • Weighted action deck with STRESS_WEIGHT_* env vars — weights of 0 disable a vector
  • Antithesis deterministic randomness (random.GetRandom(), random.RandomChoice())

Stress Vectors — 14 implemented (was ~5)

  • DoTransferMarket — random FIL transfers
  • DoGasWar — concurrent txns competing for gas
  • DoHeavyCompute — heavy actor method calls
  • DoAdversarial — malformed messages (bad nonce, zero gas, oversized params, invalid signature)
  • DoChainMonitor — cross-node consensus, state roots, tipsets, height spread, peer count, deep audit
  • DoDeployContracts — EVM contract deployment with deferred verification
  • DoContractCall — delegatecall, SimpleCoin transfer, external recursion
  • DoSelfDestructCycle — deploy → interact → destroy → verify across nodes
  • DoConflictingContractCalls — concurrent conflicting calls from different nodes
  • DoGasGuzzler / DoLogBlaster / DoMemoryBomb / DoStorageSpam
  • DoReorgChaos — reorg-inducing patterns (weight=0 default)

Assertions — 42 properties (was ~10)

16 Always + 26 Sometimes across consensus, EVM, mempool, and reorg domains.

Build

  • Dockerfile: 106 → 30 lines. Removed Node.js, Rust, Foundry, Hardhat, synapse-sdk
  • Entrypoint: 502 → 44 lines. Only: genesis wallets → wait env → setup_complete → stress engine

Remaining

  • Merge [parth/workload-upgrade](https://github.com/FilecoinFoundationWeb/Filecoin-Antithesis/pull/163) to main — PR review needed
  • Regression gate — push updated images, 1-hour Antithesis run, verify all 42 assertions pass
  • Add WindowPoSt timing stress (messages at proof deadline boundaries)
  • Add message pool consistency (compare pending messages across nodes)
  • Add chain finality property (Always: finalized tipsets never revert)
  • Add versioned config for network upgrade testing.

Closes #152, #153, #162

Metadata

Metadata

Assignees

No one assigned

    Labels

    team:implementationProtocol/L1 — Lotus, Forest, consensus, workloadtype:architectureStructural changes — compose, containers, boot sequencetype:workloadStress vectors, assertions, test engine, foc metrics

    Type

    No type

    Projects

    No projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions