Compound goldCOMP Treasury Self-Delegation Governance-Capture Attempt (2024-07-29)

  • Name: Compound goldCOMP treasury self-delegation governance-capture attempt
  • Date: 2024-07-29
  • Protocol: Compound DAO
  • Chain: Ethereum
  • Category: governance capture / delegated-voting concentration / treasury self-delegation / attempted DAO capture
  • Loss: no onchain treasury drain completed, but proposal 289 sought to move 499,000 COMP of Compound treasury inventory into the Golden Boys’ TrustSetup / goldCOMP structure, which would also have handed the same bloc a large new tranche of live voting power
  • Summary: This was a governance-capture attempt through recursive vote concentration rather than flash-loaned votes, thin-float spot buying, or proposal-code smuggling. A bloc around Humpy / the Golden Boys had already accumulated suspiciously large delegated COMP balances by May 2024, prompting OpenZeppelin to warn that five Bybit-funded addresses plus the initial proposer already represented about 325,333 COMP, only 74,667 COMP short of Compound’s 400,000 COMP quorum. The crucial mistake was that the proposed treasury investment path did not separate economics from constitutional power: deposited treasury COMP inside goldCOMP would still delegate governance rights to the GoldenBoyz multisig. The campaign escalated in three clear steps: proposal 247 asked for a direct 92,000 COMP transfer to a Golden Boys multisig; proposal 279 wrapped the same 92,000 COMP transfer in a TrustSetup shell; proposal 289 then raised the request to 499,000 COMP and paired it with a grantPhase(1) call so the trust could invest immediately after funding. By late July, defenders treated that sequence as an attempted DAO capture and began organizing proposal 290 as an emergency constitutional response. Contemporaneous forum posts and Blockful’s writeup describe proposal 289 as having passed the vote stage, but the plan never converted into live treasury control because Humpy canceled it on 2024-07-30 under community pressure, after which the defensive counter-proposal was also withdrawn.
  • Trigger / entry point:
    • Compound governance still treated delegated COMP balances as direct constitutional power over treasury and timelock outcomes, with a 400,000 COMP quorum that could be approached by a relatively small number of coordinated delegates.
    • OpenZeppelin’s May 2024 governance-security notice identified five addresses withdrawing COMP from Bybit and delegating to fresh accounts, totaling 230,333 COMP; together with the proposal-247 wallet’s 95,000 COMP, that suspicious bloc was already about 325,333 COMP strong.
    • The Golden Boys’ goldCOMP design delegated deposited COMP voting rights to the GoldenBoyz multisig, meaning treasury-deployed COMP would not become inert capital; it would become additional governance weight for the proposal beneficiary.
    • Compound’s proposal surface allowed treasury COMP to be transferred into an externally operated trust/vault structure without first neutralizing or quarantining the governance rights attached to that COMP.
  • Root cause:
    • Compound let a proposal beneficiary ask the DAO to transfer treasury-held governance tokens into a structure that would also delegate those same governance rights back to the beneficiary’s operator set.
    • The DAO’s treasury-investment path failed to separate economic exposure from governance power. In this design, deploy treasury assets and amplify the proposer's voting bloc were the same action.
    • Governance assumed that if a proposal formally passed, the resulting vote concentration was constitutionally legitimate even when the transfer itself would make future governance reversals much harder.
    • Defensive capacity depended on rapid delegate coordination and emergency counter-governance, not on a built-in rule that treasury-owned COMP must remain neutral, non-voting, or DAO-controlled.
  • Exploit path:
    1. On 2024-05-06, Compound governance proposal 247 unexpectedly asked the DAO to transfer 5% of the COMP treasury to a Golden Boys-controlled strategy. OpenZeppelin’s warning thread recorded five Bybit-funded delegated addresses totaling 230,333 COMP and estimated that, together with the proposer’s 95,000 COMP, the apparent bloc already held about 325,333 COMP, only 74,667 COMP below quorum.
    2. The initial onchain version, proposal 247, sought to transfer 92,000 COMP directly to the Golden Boys multisig at 0x941dcEA21101A385b979286CC6D6A9Bf435EB1C2, which would then deposit the COMP into goldCOMP, stake the resulting wrapper in a 99/1 Balancer pool, and later return principal plus periodically swapped rewards to Compound.
    3. On 2024-07-09, Humpy returned with a TrustSetup wrapper at 0xb9259D9f2249eB7FB44140926BFd376B63c4925e, arguing that phase-gated invest/divest permissions made the structure safer. The forum post still described the core mechanics plainly: treasury COMP would be transferred into the trust setup, the trust could later grantPhase(1) to invest, and the resulting goldCOMP design remained controlled by the Golden Boys’ operating multisig.
    4. On 2024-07-15, the same trust-setup design reached Compound governance as proposal 279, again asking for 92,000 COMP plus an invest-enable action. OpenZeppelin’s follow-up warning treated that vote as a live coordination test and reiterated that the underlying governance-risk issue had not been fixed.
    5. Wintermute’s response to that trust-setup version identified the real constitutional issue rather than only the custody details: the DAO could not directly force divestment, and the goldCOMP vault delegated deposited COMP voting rights to the GoldenBoyz multisig. Wintermute warned that the requested 92,000 COMP, combined with Humpy’s own holdings and the suspiciously accumulated delegates from OpenZeppelin’s notice, would already be enough to cross quorum and threaten future governance.
    6. By late July, the same campaign escalated into proposal 289, which Tally and Blockful both describe as a much larger request for 499,000 COMP and a call to grantPhase, allowing the trust setup to invest immediately once treasury funds arrived.
    7. Because deposited treasury COMP inside goldCOMP would delegate to the same Golden Boys-controlled delegatee, execution of proposal 289 would not merely have invested treasury assets; it would have enlarged the proposer’s own voting bloc with treasury-owned COMP and made later recovery votes harder to win.
    8. Community members treated that outcome as an attempted constitutional takeover. Alex Netto / Blockful’s proposal-290 response thread explicitly framed the situation as DAO capture risk and proposed moving timelock admin to a community multisig so Compound could deploy a new governor that would ignore the goldCOMP delegatee’s votes or otherwise route around the concentrated voting block.
    9. On 2024-07-28, proposal 290 was published as the defensive Precautionary Transfer of Timelock Admin path, but before its vote opened Humpy agreed in the AlphaGrowth thread to cancel proposal 289. Forum posts early on 2024-07-30 confirmed proposal 289 had been canceled, and proposal 290 was then canceled the same day.
  • What the attacker needed to be true:
    • A sufficiently large delegated COMP bloc had to exist before the treasury transfer so that adding treasury-owned COMP would push the same faction into decisive or near-decisive governance control.
    • Deposited treasury COMP had to keep its live voting rights and delegate them to the same operator set benefiting from the proposal.
    • Compound’s governance had to allow treasury-allocation proposals that also changed the future electorate by moving governance tokens into a beneficiary-controlled wrapper.
    • There had to be no built-in veto, guardian, or treasury-vote-neutralization rule strong enough to stop or sandbox the transfer once governance approved it.
    • Other large COMP holders had to remain disengaged enough that emergency defense required unusually high coordination pressure.
  • Technical anatomy worth remembering:
    • This is a useful governance-capture cousin because the attacker did not need flash loans, vote-rental primitives, metamorphic proposal code, or a thin-spot-market buyout. The governance surface was threatened by a self-reinforcing treasury transfer.
    • The key mistake was not simply delegate concentration. It was allowing the treasury’s own governance token inventory to be mobilized as new voting power for the bloc asking to control it.
    • TrustSetup reduced some raw multisig discretion around invest/divest phases, but it did not solve the more important problem that goldCOMP delegated the treasury’s COMP voting rights to the GoldenBoyz multisig.
    • Proposal 279 matters because it showed the intermediate hardening pattern attackers can use in governance capture attempts: replace the obviously beneficiary-controlled multisig wrapper with a narrower shell, keep the same delegatee outcome, and use the revised proposal to test defender coordination before making a larger ask.
    • Proposal 290 is part of the technical anatomy, not just social color: defenders were already discussing a replacement governor that would explicitly ignore the goldCOMP delegatee’s votes. That is strong evidence that participants understood the proposal as a constitutional capture path, not an ordinary treasury-allocation disagreement.
    • The preserved lesson is that governance-token treasuries need explicit rules for vote neutrality. Otherwise a hostile faction can use governance to hand itself the treasury’s own electorate.
  • Representative addresses and control points:
    • Compound Governor / governance surface: 0xc0Da02939E1441F497fd74F78cE7Decb17B66529 (governance identifier used by Tally)
    • Golden Boys multisig requested in proposal 247: 0x941dcEA21101A385b979286CC6D6A9Bf435EB1C2
    • TrustSetup contract used in proposals 279 and 289: 0xb9259D9f2249eB7FB44140926BFd376B63c4925e
    • Defensive proposal 290 target / timelock admin recipient: Compound community multisig at 0x6d903f6003cca6255d85cca4d3b5e5146dc33925
    • Suspicious delegated addresses highlighted by OpenZeppelin: 0x4f3a2bfd91761ac0d82261b82bb5c8ace4644a51, 0x9d0361f5da754994c1df011e86469416d6f1ec31, 0x93cb8af7d9589f0ae34501391e8ea57850581a08, 0x4ac0dbce527bcb60787cef10053348b146c6b5e3, 0xc64c27791b2355b3080721197b89602ac6c92b7b
  • Response / mitigation:
    • OpenZeppelin publicly warned delegates in May that the goldCOMP push looked like a possible coordinated governance attack and urged active vote monitoring, then reiterated during proposal 279 that the trust-setup revision had not fixed the core governance-risk issue.
    • Wintermute and other delegates opposed the trust-setup version because divestment still depended on the GoldenBoyz multisig and because deposited COMP would delegate governance power to that same operator set.
    • AlphaGrowth proposed an alternate staked-COMP design conditioned on immediate cancellation of proposal 289, with arr00 agreeing to rescind proposal 290 if the threat was removed.
    • Blockful and allied delegates organized proposal 290 as an emergency path to move timelock admin to a community multisig and potentially deploy a governor that would not count the goldCOMP delegatee’s votes.
    • Proposal 289 was canceled on 2024-07-30 before execution; proposal 290 was then canceled before its voting period opened.

Pattern tags

  • governance-capture
  • treasury-vote-amplification-governance-token-neutrality-failure
  • beneficial-owner-vote-operator-separation-failure
  • backstop-failure-governance-capture
  • The dangerous step was not only move treasury COMP into a yield wrapper; it was move treasury COMP into a yield wrapper whose delegate policy hands that same COMP voting power to the proposal beneficiary.
  • Proposal 289 would have changed the future electorate, not just treasury exposure. The same vote that approved the transfer would also have made later reversal votes materially harder by amplifying the beneficiary bloc with treasury-owned COMP.
  • TrustSetup narrowed some raw custody discretion compared with the original direct transfer ask, but it did not neutralize the decisive constitutional fact that deposited COMP inside goldCOMP still delegated to the GoldenBoyz multisig.
  • The emergency discussion around proposal 290 matters because defenders were already reasoning at the governor and timelock layer, which is strong evidence that participants understood the proposal as electorate capture rather than an ordinary treasury-allocation disagreement.

Why the exploit worked

  • Compound collapsed treasury deployment of COMP and future constitutional power over COMP into one proposal surface. Once treasury-owned COMP could move into goldCOMP without first becoming vote-neutral, the beneficiary was not merely asking for yield-bearing inventory; it was asking for more votes in future governance fights.
  • The proposal sequence shows a useful hostile-governance hardening pattern. Proposal 247 made the self-serving transfer obvious, proposal 279 wrapped the same outcome in a narrower TrustSetup shell, and proposal 289 then scaled the ask dramatically once the intermediary form had tested defender attention. The mechanics changed, but the delegatee outcome did not.
  • Active-turnout math already made the capture plausible before the treasury transfer. OpenZeppelin’s May notice preserved the core precondition: a suspicious bloc was already only about 74,667 COMP short of quorum. That meant the treasury’s own COMP inventory was not a passive asset; it was a potential constitutional swing tranche.
  • Recovery would have been structurally harder after execution than before it. That is the sharper danger here: the same proposal that passed under the old electorate would have enlarged the beneficiary’s future electorate, making reversal depend on beating the very bloc the proposal had just amplified.
  • The live defense was mostly social coordination plus emergency counter-governance, not a built-in vote-neutrality rule. Compound survived because delegates noticed, argued, and pressured cancellation before execution, not because the treasury-management path mechanically refused to turn treasury COMP into beneficiary-controlled votes.

Detection and audit pivots

  • Review any treasury-governance-token deployment as electorate reconfiguration, not only yield generation. The critical question is who controls the votes after execution, not whether the wrapper’s economics sound plausible on paper.
  • Model post-execution coalition math explicitly. If transferred treasury COMP would move one bloc from near quorum to can likely block reversal or win the next vote, the proposal is already constitutional-grade even if the prose emphasizes treasury returns.
  • Ask whether wrapper hardening is constitutional hardening or only custody hardening. A trust shell, phase gate, or narrower multisig can reduce operational discretion while still leaving the decisive vote-routing outcome unchanged.
  • Trace divestment authority and delegate authority separately. If the DAO cannot rapidly neutralize the votes without first defeating the newly amplified bloc, recall is weaker than it looks.
  • Treat treasury-held governance inventory as part of the root trust boundary whenever active float is thin. Compound’s 499,000 COMP ask mattered because treasury balances were large enough to reshape quorum politics, not just portfolio composition.
  • Audit defender backstops against the proposal that changes the next electorate, not only the first transfer. Proposal 290 is the reminder that a real governance defense needs a path to interrupt electorate mutation before the mutated electorate starts governing.

Failure-prevention checklist

  • Keep treasury-held governance tokens constitutionally neutral by default. If the DAO wants economic exposure to its own token, the deployment path should either strip voting rights, force delegation back to a DAO-controlled neutral address, or use a wrapper whose votes cannot be redirected by the strategy operator.
  • Treat any proposal that changes the future electorate as a constitutional proposal, not a routine treasury-allocation proposal. Send COMP to a yield structure and change who can win the next vote should never be reviewed as separate surfaces when the asset being moved is the governance token itself.
  • Require explicit vote-neutrality proofs for treasury deployments of the governance asset: who holds the wrapper, who controls delegation, who can change delegatee, who can divest, and whether the DAO can recover assets without first defeating the newly amplified bloc.
  • Do not let beneficiary-controlled wrappers, trusts, or multisigs become the sole divestment path for treasury governance tokens. If recovery requires cooperation from the same operator that gains the votes, the neutrality boundary is already gone.
  • Add a cooling period or narrower approval lane for proposals that would meaningfully concentrate voting power, especially when treasury inventory would move to one delegatee, wrapper, or operator-controlled structure.
  • Monitor delegated-vote concentration and exchange-funded accumulation continuously enough to flag when one bloc is approaching quorum before a treasury-transfer proposal gives it the rest.
  • Keep emergency constitutional backstops legible and rehearsed: what guardian, timelock-admin, replacement-governor, or veto path exists if a proposal would route treasury-owned voting weight into an attacking bloc?
  • Maintain explicit design rules for treasury strategies involving the governance token itself. A DAO should be able to state in advance whether staking, wrapping, liquidity provision, or third-party management of treasury governance tokens is ever allowed and under what vote-neutrality constraints.

Audit prompts

  • If this proposal executes, who controls the voting rights attached to the transferred governance tokens on day one, and who can change that delegatee later?
  • Can the DAO recover or neutralize the treasury tokens without first winning a vote against the very bloc that just gained those votes?
  • Does the proposed treasury wrapper, trust, vault, or pool keep governance rights live, and if so are those rights neutralized, burned, redirected to a DAO-owned neutral address, or delegated to the beneficiary?
  • How much additional voting power would the proposal create for the beneficiary relative to current quorum, current active turnout, and known aligned delegate blocs?
  • Is divestment permission symmetric with investment permission, or does the beneficiary control the exit path even after the DAO transfers the assets?
  • What suspicious delegation buildup, exchange-funded accumulation, or low-float concentration already exists outside the proposal, and does this treasury move turn that latent bloc into a winning constitutional coalition?
  • Would the proposal still look acceptable if reviewed as electorate reconfiguration rather than treasury yield generation?
  • What emergency path exists if the proposal passes but the community then realizes it has made future governance reversals structurally unwinnable?
  • Are delegates being asked to trust social assurances about future restraint, or is vote neutrality enforced mechanically by the strategy design itself?

Lessons that should already be standard

  • Treasury management of the governance token is governance security, not just treasury management. The balance-sheet and constitution are the same object once the treasury asset can still vote.
  • A wrapper that preserves vote delegation is not neutral capital. If the beneficiary controls the delegatee, the treasury transfer is also an electorate transfer.
  • The DAO approved it is not enough when the approval itself would rewrite the future electorate that must approve any reversal.
  • Trust-minimizing the investment path is not the same thing as neutralizing governance power. Compound’s TrustSetup still left the decisive question unanswered: who owned the votes after the COMP moved?
  • Hostile governance campaigns often harden cosmetically before they harden constitutionally. Replacing a direct multisig transfer with a narrower shell can still leave the same voting-power outcome intact.
  • Emergency counter-governance is a brittle last line of defense. Healthy systems should not depend on a perfectly coordinated rescue proposal to stop treasury-owned voting weight from being turned against the DAO.
  • Low active turnout makes treasury self-delegation especially dangerous. A proposal does not need to buy the whole supply if it can capture the treasury’s own dormant electorate.

Why this incident matters

  • It adds a distinct governance-capture exemplar to the corpus: treasury self-delegation. The proposal beneficiary was trying to acquire not just assets, but the treasury’s own future voting weight.
  • It shows why governance-token treasury management is not operationally separable from governance security. A yield proposal on the governance token can also be a control-plane proposal.
  • It preserves a clean case where the constitutional danger was obvious enough that defenders immediately discussed replacing the governor itself, not just voting Against a normal treasury motion.
  • It is a useful comparison case for other DAOs that hold large inventories of their own governance token in treasury, staking, liquidity, or wrapper programs without clearly neutralizing the attached voting rights.

Internal linkages

Control surface