Gardens
The Gardens module connects a Green Goods garden to Gardens, the conviction-voting platform for community governance. Through it, a garden's community can participate in signal pools: expressing sustained preference over where support should flow, rather than one-off votes.
How it flows
When a garden is minted, the module tries to create its Gardens community and the signal pools where members signal support over time. That setup is best-effort, so a garden can exist with neither, or with a community and no pools:
- Community creation can fail and leave the garden without one, and pool creation can fail on its
own. The module emits
GardenPartiallyInitializedin both cases. - A module call that reverts outright is caught by the mint, so the garden still mints.
Read the result before relying on it: getGardenCommunity returns the zero address and
getGardenSignalPools an empty list for a garden that has none. A steward of the garden or the
protocol owner can create missing pools with createGardenPools; retrying the community
(retryCreateCommunity) is the protocol owner's.
Where it lives in the code
| Layer | Source |
|---|---|
| Module | packages/contracts/src/modules/Gardens.sol |
| Mint-time call | packages/contracts/src/tokens/Garden.sol, through notifyGardens in packages/contracts/src/lib/GardenHooks.sol, which skips a missing module and catches a failed call |
| Data access | packages/shared/src/modules/data/gardens.ts |
| Conviction hooks | packages/shared/src/hooks/conviction |
Checked-in deployment projection
| Network | Status | Recorded components |
|---|---|---|
Sepolia Testnet (11155111) | Deployed | gardensModule |
Arbitrum One (42161) | Deployed | gardensModule |
Networks without recorded components are omitted; per-network state lives in the deployment status projection.
A deployment artifact does not by itself prove product activation, live indexing, or partner-service health. This projection regenerates from checked-in artifacts via node scripts/docs/generate.mjs.
Working with it locally
The fork mode (bun run dev -- fork) runs a local fork of
Arbitrum One, so recorded module state is available locally; live signal-pool behavior on the
Gardens platform itself needs the real chain.
Canonical upstream docs
- gardens.fund for the platform and its conviction-voting model.
- Gardens documentation for the concepts and mechanics.
- gardens-v2 on GitHub for the governance contracts themselves.
- app.gardens.fund to see live communities and their pools.
Next steps
- Hats Protocol covers the roles a garden's community members wear.
- Octant covers the other side of a garden's funding: its vault.
- Architecture shows where the per-chain modules fit in the system.