Snapshot voting power wrappers for QuickSwap governance.
| Module | Chains | Description |
|---|---|---|
WalletAndDQuickModule |
Polygon | Wallet QUICK + Dragon's Lair |
WalletQuickModule |
Base, Eth, Manta | Wallet QUICK only |
SyrupStakingModule |
Polygon | Syrup pools (factory + legacy) |
AlgebraV3Module |
Polygon | Algebra V3 LP positions |
AlgebraIntegralV4Module |
Base | Algebra v4 LP positions |
LiquidityManagersModule |
All | ALM vaults (Gamma, Steer, ICHI) |
V2LPStakingModule |
All | V2 LP staking pools |
pnpm install
pnpm exec hardhat compile
pnpm testAll configuration is in config/chains.json (single source of truth).
pnpm exec tsx scripts/create-keystore.ts
# Add to .env:
KEYSTORE_PATH=keystores/deployer-0x<address>.json- Source of truth:
config/chains.json - Local backups:
deployments/*.json(gitignored)
Deploys all modules + aggregator:
pnpm exec hardhat run scripts/deploy/chain.ts --network polygon
pnpm exec hardhat run scripts/deploy/chain.ts --network baseReuses existing modules, only deploys new aggregator:
pnpm exec hardhat run scripts/deploy/redeploy-aggregator.ts --network polygon
pnpm exec hardhat run scripts/deploy/redeploy-aggregator.ts --network basepnpm exec hardhat run scripts/deploy/wallet-quick-only.ts --network ethereumDefault owner: 0xDA1077c4b0dd6da1BDF166F30aa4BDbF517d637b
Override with your Safe multisig:
OWNER_ADDRESS=0xYourSafe pnpm exec hardhat run scripts/deploy/chain.ts --network polygonpnpm exec hardhat verify --network <chain> <ADDRESS> <ARGS>{
"name": "erc20-balance-of",
"network": "<CHAIN_ID>",
"params": {
"address": "<AGGREGATOR_ADDRESS>",
"symbol": "QUICK",
"decimals": 18
}
}Get the aggregator address from config/chains.json → chains.<chain>.deployed.aggregator.
To confirm what Snapshot Hub currently has stored for a space:
pnpm exec tsx scripts/check-snapshot-space.ts
SPACE=quickvote.eth pnpm exec tsx scripts/check-snapshot-space.tsWhen using Safe multi-sig, Snapshot space updates are signed as a Safe “message”, but the signed payload still needs to be broadcast to Snapshot Hub.
-
Save the typed-data JSON you signed (the object with
domain,types,primaryType,message) to a file, e.g.space-message.json. -
Publish it using the Safe prepared signature:
pnpm exec tsx scripts/publish-snapshot-settings.ts --file ./space-message.json --sig 0x<preparedSignature>- Verify it’s live:
pnpm exec tsx scripts/check-snapshot-space.tspnpm testUpdate allowlists via Safe multisig:
liquidityManagersModule.setVaults(address[] vaults);
v2LPStakingModule.setPools(address[] pools);
syrupStakingModule.setLegacyPools(address[] pools);Generate Safe transaction JSON:
pnpm exec tsx scripts/generate-safe-txs.ts <chain>MIT
