Skip to content

feat(votemarket-proofs): bulk eth_getProof and batch-verifier artifacts - #61

Draft
pierremarsotlyon1 wants to merge 1 commit into
mainfrom
feat/votemarket-proofs-bulk
Draft

feat(votemarket-proofs): bulk eth_getProof and batch-verifier artifacts#61
pierremarsotlyon1 wants to merge 1 commit into
mainfrom
feat/votemarket-proofs-bulk

Conversation

@pierremarsotlyon1

@pierremarsotlyon1 pierremarsotlyon1 commented Sep 4, 2026

Copy link
Copy Markdown
Contributor

Part of ENG-2165 (https://linear.app/stake-dao/issue/ENG-2165).

What

Wires the weekly Votemarket proof generation to the toolkit's bulk mode, so the published JSON gains the batch-verifier node bags (batch per gauge, batch_points per platform) next to the legacy fields, which are untouched. Also renames the checked-out repository to its current name and hardens the checkout step.

  • automation/get_active_users_proofs.mk: VM_BULK_PROOFS=1 by default, passing --bulk-proofs (plus the optional --keys-per-call / --batch-max-bytes knobs) to vm_active_proofs.py. The flags are only passed when the checked-out toolkit revision advertises them in its --help, so this job keeps working against a toolkit that predates bulk mode.
  • automation/setup/votemarket-proofs-script.mk: repository renamed to stake-dao/votemarket-proof-toolkit, checkout resets to the fetched ref instead of git pull, the access token is no longer echoed into the logs, and dependencies are resolved in their own step so a resolution failure fails there with a clear message instead of inside the proof generation.
  • .github/workflows/votemarket-proofs.yml: bulk_proofs and batch_max_bytes inputs for manual dispatches (the weekly repository_dispatch always uses bulk mode), and the commit step no longer fails when the run produced no change.

Why bulk mode: the toolkit groups the storage keys of a gauge into a few eth_getProof calls instead of one per proof, which is where the node bags come from at zero extra RPC cost. Measured on a full replay of an epoch: 600 calls and 21 s down to 96 calls and 4.3 s, byte-identical output.

Dependencies and rollout

The artifacts themselves only appear once stake-dao/votemarket-proof-toolkit#29 lands on the toolkit's main, which this job always checks out. Until then the --help guard keeps the legacy per-request path, so this PR is safe to merge first and changes nothing on its own.

Consumers of the new fields: the guard-routed proof-insertion jobs in stake-dao/automation-guard#37, which fall back to the legacy proofs whenever a gauge has no batch.

Testing

To be exercised from this repository before merging, per the usual rule: a manual dispatch of the workflow with bulk_proofs checked, on a toolkit branch carrying the flag. Locally validated so far: the makefile setup, uv sync, and the toolkit's 175 unit tests under Python 3.10 in the clone this job creates.

🤖 Generated with Claude Code

https://claude.ai/code/session_01LMZP3iKTaV4C4uNCFxBLAw

…ts, toolkit repo renamed

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01LMZP3iKTaV4C4uNCFxBLAw
@linear-code

linear-code Bot commented Sep 4, 2026

Copy link
Copy Markdown

ENG-2165

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

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant