When looking at DAO governance data, one tends to compute alignment scores, essentially counting how often certain folks voted the same way. Apply that across every voter pair and you get a map where the more two addresses vote the same way, the tighter the link between them.
The problem is that pairwise alignment tells you almost nothing because 97.5% of proposals with vote data passed or failed by lopsided margins (more than 60% in favor, or less than 40% in favor). Thus, the alignment score is mostly measuring who showed up, not who agrees or coordinates.
As an example, our Balancer dataset shows the two most active addresses have an 81% raw alignment score which would suggest coordination. However, in our contested band of proposals (proposals where the FOR share lands between 40% and 60%) that alignment drops to 55% and so it's pretty clear there is no coordination and, in other words, they are both just attending. It gets interesting looking at the pairs that survive the contested filter.
The rest of this issue simply discusses what appears when applying this filter. As mentioned, this inaugural newsletter is really just a glimpse into our methodology.
We started with how often the technique even has signal to work with. Out of the 10 DAOs in our coverage, contested proposals concentrate in a handful. In fact, most don't even have meaningful internal opposition... boring.
Balancer leads at 7.6%. Safe at 5.5%, Curve at 3.6%, ENS at 2.9%, Aave at 2.0%, Compound at 1.2%, and Lido at 0.7%. Uniswap, Optimism, and Arbitrum are effectively zero. We'll look at one heavily-documented case (Balancer 2022) and two briefer ones (Safe DAO 2024, Lido 2021).
Balancer's 2022 governance is the most thoroughly documented coordination conflict in DeFi to date. It has been covered in detail by Decrypt, Messari, and The Defiant, and was resolved publicly via BIP-128. Briefly: a whale known as Humpy (humpy.eth, anchor address 0x36cc...ffc6) accumulated roughly 35% of veBAL supply, deployed it across multiple addresses, and used the gauge weight system to direct BAL emissions toward pools they were yield-farming. Aura Finance later built a metagovernance system to counter Humpy as a unified bloc. The eight-month standoff ended in December 2022 when both sides ratified BIP-128, the Peace Treaty.
Two more public-record details get more specific. First, Messari's veBAL Wars report described BIP-112 as “effectively shot down by nine Humpy wallets (and one delegate)” without enumerating the wallets. Second, BIP-128 itself, in section 7, publicly disclosed three of Humpy's addresses (those subject to the 750k-veBAL unwind agreement) and five Balancer-shareholder addresses. Two of our six AGAINST-bloc addresses (0xc0a8...7d2c, 0xae0b...12ec) appear in BIP-128's Humpy list; our top FOR-side voter (0xff05...bbb9) appears in BIP-128's Balancer-shareholder list. Combined with humpy.eth (0x36cc...ffc6) directly, three of six bloc addresses are publicly confirmed Humpy; the remaining three are unlabeled but vote in 100% lockstep with the confirmed three.
| Address | Public tag | Contested votes | Sum VP (BAL) |
|---|---|---|---|
0x36cc...ffc6 | Humpy (humpy.eth, Etherscan) | 5 of 13 | ~4.7M |
0xae0b...12ec | Humpy (BIP-128 §7A) | 8 of 13 | ~0.82M |
0xc0a8...7d2c | Humpy (BIP-128 §7A) | 5 of 13 | ~0.85M |
0xc407...1840 | (unlabeled) | 8 of 13 | ~1.23M |
0x014e...eca8 | (unlabeled) | 5 of 13 | ~0.75M |
0x8a87...9a55 | (unlabeled) | 5 of 13 | ~0.77M |
Across the 13 contested Balancer proposals between June 17 and September 1, 2022, these six addresses appear consistently on the AGAINST side. Their pairwise alignment on these proposals, measured strictly within the contested window, is 100% across all 15 pairs. Where they overlap, they voted identically.
The contested proposals touched two main themes: gauge framework changes (BIP-7, 8, 10, 23a, 23b, 27, 28, 30, 57a) and treasury or ecosystem allocations (BIP-18, 20, 24, 38). The bloc opposed both consistently. They did not vote on every contested proposal: five of the 13 (BIP-20, 28, 30, 38, 57a) drew all six addresses; the rest drew a subset.
On the FOR side, three addresses appear repeatedly in opposition. The most consistent FOR voter, 0xff05...bbb9 (publicly identified as a Balancer shareholder address in BIP-128 §7B), shows 0% pairwise alignment with each member of the AGAINST bloc across the five contested proposals where they overlap: the structural mirror image of the Humpy faction.
What's important here is not the existence of the Humpy faction which was publicly known. What's new here is that we picked out specific wallets just by watching how they voted. Without looking at BIP-128, our contested-only filter found six addresses. Comparing against BIP-128's primary-source disclosure then confirmed three as Humpy and one structural opponent as a Balancer shareholder. The remaining three AGAINST addresses are unlabeled in any primary source we found, but their 100% lockstep with the confirmed Humpy addresses across this four-month window matches Messari's report of “nine Humpy wallets and one delegate” in aggregate. In other words, if we ran this same procedure against a DAO without Messari or BIP-128 coverage we would find this same coordination.
This same filter applied to two other contested moments produced shorter findings, but both are worth flagging as starting points for future work.
Safe DAO, 2024. Three contested proposals across seven months, all related to budget or treasury (SEP 28 at 49.8% FOR, SEP 31 at 40.3% defeated, SEP 50 at 57.8%). Address 0xd714dd60...bdd3f3c8 deployed roughly 2 million SAFE AGAINST on SEP 28 and SEP 31 but did not vote on SEP 50. No primary source we found identifies the address; the pattern is the kind a pairwise alignment metric would miss because those two votes are the only times the address appeared as a major actor.
Lido, 2021. The largest single contested vote in our dataset is Lido's "LDO Treasury Diversification - Part 3 (updated)" from September 2021: 85.47M LDO of voting power, 58.7% FOR. Seven addresses controlled the entire outcome. On the FOR side: two addresses with 20M LDO each, one with 10M. On the AGAINST side: 17.7M, 7.5M, 5M, 5M. Our contested methodology tells us there is no coordination here, just seven large positions taking sides on a single decision. BUT, that itself is informative: it tells delegates where the structural votes live for treasury-scale decisions.
Both of these are previews of work we will return to. The Safe address pattern in particular invites the same address-level attribution exercise we did for Balancer.
Three takeaways for anyone who votes in DAOs or builds tools that analyze them.
Default alignment metrics overstate coordination. When most votes are lopsided, simple alignment scores are dominated by consensus. Tools that surface "X and Y vote together 80% of the time" without separating contested from lopsided are reporting noise. The contested-only version of the same metric is far more informative.
Coordination is detectable but filter-dependent. The Balancer bloc only emerged when we filtered to one DAO, one period, one threshold definition of "contested." Different filters surface different patterns. A continuous monitoring system needs to define its filters carefully and be transparent when a finding is filter-dependent. Our default of 40-60% FOR share with a minimum 1,000 voting-power floor is just one defensible option.
Composition of opposition matters more than its size. The Balancer bloc commanded between 1.6M and 2.1M BAL on the proposals where all six addresses voted. That's modest in absolute terms relative to the protocol's total veBAL supply. Its 100% pairwise alignment among the six addresses gave it leverage that a larger uncoordinated group would not have had. In this and many cases, the question isn't "who has the most tokens?" but, "who actually shows up together?"
While preparing this issue we ran one more check that turned up an unexpected pattern. It would be reasonable to suggest that contested proposals draw more voters than non-contested proposals. The data partly supports this and partly does not. Median voter count rises and falls across FOR-share buckets in a way that is not what you would expect: consensus (FOR above 90%) sits at ~50 voters, decisive rejection (FOR below 10%) at ~60. The contested 40-60% band lifts to ~75. But the highest turnout actually sits in the 60-90% band, where proposals pass with real but losing opposition: medians of 141 to 244 voters per proposal. It seems the contested votes are not necessarily the votes that draw the biggest crowds. Visibly contested-but-decided votes are.
We do not have a clean answer for why turnout dips at 40-60%. Three candidates: information cost (tight votes are tight because they are technical, not popular), whale neutralization (in a 50-50 vote whales on each side cancel and retail disengages), or a selection effect (tight votes are tight precisely because turnout is low). In issue 002, we'll take a closer look.
Source data drawn from Snapshot's public GraphQL API (hub.snapshot.org/graphql) for proposals and votes, supplemented by Tally for on-chain governance and Alchemy for treasury movements. This issue uses Snapshot data exclusively.
We classify a proposal as contested when its FOR-share landed between 40% and 60% inclusive, after excluding non-canonical vote types and proposals with total voting power below 1,000 governance tokens. The choice of band is empirical, not arbitrary. Across our 1,548 proposals with vote data, the FOR-share distribution is strongly bimodal: 79% land at greater than 95% FOR (consensus) and another 4% at less than 5% FOR (decisive rejection). The middle band has no clean natural break, so any threshold is a judgment call. We use 40-60% because it is symmetric and excludes votes that one side essentially won (greater than 2:1 ratio). Voter turnout is not a clean independent test for the band: contested proposals do attract somewhat more voters than non-contested (~75 vs ~50 median), but the highest turnout sits in the 60-90% band, not the 40-60% band, so we do not use turnout as part of the threshold definition. The Balancer 2022 bloc identification is robust to the threshold: widening to 35-65% adds zero proposals to our window; narrowing to 45-55% shrinks the set to seven, but the same six AGAINST addresses retain 100% pairwise alignment on the proposals where they overlap.
Pairwise alignment is the percentage of contested proposals where two voters cast the same canonical choice (FOR / AGAINST / ABSTAIN), restricted to proposals where both voters participated. Bloc identification: addresses voting AGAINST on at least five of the 13 contested Balancer proposals in our window. The full address list appears in our data with no transformation; partial-address rendering in this article is a presentation convention.
Existing public reporting on the Balancer episode was consulted before publication; this issue's analytical contribution is the quantification of pairwise alignment and the recovery of specific bloc-member addresses by behavior alone, not the discovery of the conflict itself. Messari's veBAL Wars report named “nine Humpy wallets and one delegate” as a count without enumerating them; BIP-128 §7 then publicly disclosed three Humpy addresses and five Balancer-shareholder addresses. We use both as cross-checks against the addresses our filter surfaced. Future issues apply the same technique to live governance as proposals open and resolve.