Worked example · 2022-04
Elephant Money flash-loan governance attack — BNB Chain — 2022-04-12
Summary
Elephant Money was a DeFi protocol on BNB Chain (formerly Binance Smart Chain) that issued ELEPHANT, a token with a treasury-backed value-accrual mechanism. Governance of the protocol was controlled by ELEPHANT token holders through an on-chain governance contract that allowed token holders to create and vote on proposals for protocol parameter changes, treasury allocations, and contract upgrades. The governance contract measured voting power using the current ELEPHANT token balance of each voter — the canonical T16.001 balanceOf-based voting-power computation with no snapshot mechanism and no minimum holding period.
On April 12, 2022, an attacker identified the governance contract's flash-loan-votable design and executed a single-transaction governance attack:
Flash-loan BNB. The attacker took out a flash loan of BNB from PancakeSwap's BNB liquidity pools — the largest source of BNB liquidity on BNB Chain. The borrowed BNB quantity was calibrated to acquire sufficient ELEPHANT governance tokens to exceed the protocol's quorum threshold.
Acquire governance tokens (two-hop). Within the same transaction, the attacker used the flash-loaned BNB to purchase ELEPHANT tokens from PancakeSwap's ELEPHANT/BNB liquidity pool. Unlike Fortress Protocol (where the attacker flash-loaned the governance token itself), Elephant Money required a two-hop acquisition: flash-loan BNB, swap BNB to ELEPHANT on PancakeSwap.
Proposal creation and voting. With the acquired ELEPHANT tokens, the attacker created a governance proposal granting a new address (controlled by the attacker) mint authority over the ELEPHANT token contract or treasury-drain authority. Because the governance contract measured voting power at the current block using
balanceOf, the just-acquired ELEPHANT tokens conferred legitimate voting power. The attacker voted in favour of their own proposal, meeting quorum and passing the proposal.Proposal execution and drain. The governance contract's proposal-execution function was callable immediately after proposal passage — no mandatory timelock delay existed (structurally parallel to T16.006 timelock-free execution). The attacker executed the proposal in the same transaction and drained the protocol's treasury of approximately $11M in ELEPHANT tokens and BNB.
Flash-loan repayment. The attacker sold the acquired ELEPHANT tokens back to PancakeSwap to recover BNB, repaid the flash loan, and retained the extracted treasury assets as profit (~$11M).
The entire attack — flash-loan BNB, swap-to-ELEPHANT, proposal creation, proposal voting, proposal execution, treasury drain, ELEPHANT-to-BNB swap-back, and flash-loan repayment — executed within a single transaction. This is the canonical two-hop T16.001 on-chain signature: same-block flash-loan (BNB) + governance-token acquisition (ELEPHANT swap) + governance-execution event correlation.
The Elephant Money case, occurring on April 12, 2022, preceded the Beanstalk Farms attack (April 17, 2022, Ethereum, ~$182M) by five days and the Fortress Protocol attack (May 8, 2022, BNB Chain, ~$3M) by 26 days. The Elephant Money and Beanstalk incidents occurred within the same week on different chains, suggesting the flash-loan governance attack primitive was being independently identified and exploited across chains rather than propagating as a single-chain copycat dynamic. The Fortress incident followed as the third T16.001 case, using the direct-governance-token flash-loan variant and completing the April–May 2022 flash-loan governance attack season.
Timeline (UTC)
| When | Event | OAK ref |
|---|---|---|
| Pre-2022-04-12 | Elephant Money governance contract deployed on BNB Chain; voting power measured via balanceOf at current block; no snapshot mechanism; no minimum holding period; no timelock on proposal execution |
T16.001 surface created |
| 2022-04-12 (single transaction) | Attacker originates flash loan of BNB from PancakeSwap BNB liquidity pools | T9.002 precondition |
| same transaction | Attacker swaps flash-loaned BNB for ELEPHANT governance tokens on PancakeSwap ELEPHANT/BNB pool; acquires controlling voting weight | T16.001 execution (two-hop acquisition) |
| same transaction | Attacker creates governance proposal granting treasury-drain authority to attacker-controlled address; votes with acquired ELEPHANT tokens; quorum met via flash-loan-funded voting weight | T16.001 + T9.003 execution |
| same transaction | Proposal passes; attacker executes proposal immediately (no timelock); treasury drained of ~$11M in ELEPHANT and BNB | T9.003 extraction |
| same transaction | Attacker swaps remaining ELEPHANT back to BNB; repays flash loan; retains ~$11M profit | T9.002 closure |
| 2022-04-12 onward | Elephant Money team publicly discloses the attack; protocol paused; governance contract migration announced | (incident response) |
| 2022-04-17 | Beanstalk Farms flash-loan governance attack on Ethereum (~$182M) — five days after Elephant Money, confirming the cross-chain T16.001 class maturity in April 2022 | T16.001 class recurrence (Ethereum) |
| 2022-05-08 | Fortress Protocol flash-loan governance attack on BNB Chain (~$3M) — 26 days after Elephant Money, confirming the BNB Chain T16.001 class maturity | T16.001 class recurrence (BNB Chain) |
Realised extraction
~$11M in ELEPHANT tokens and BNB drained from the Elephant Money treasury. Recovery status: no material recovery disclosed as of v0.1.
Public references
- Elephant Money official post-mortem and governance contract migration announcement (April 2022).
- Peckshield / BlockSec on-chain transaction analysis and tracing reports for the Elephant Money exploit.
- Cross-reference: T16.001 at
techniques/T16.001-flash-loan-governance-vote-manipulation.md. - Cross-reference:
examples/2022-04-beanstalk.md— Beanstalk Farms flash-loan governance attack (Ethereum, ~$182M, 2022-04-17). - Cross-reference:
examples/2022-05-fortress-protocol-flash-loan-governance-attack.md— Fortress Protocol flash-loan governance attack (BNB Chain, ~$3M, 2022-05-08).
Discussion
Elephant Money is the first BNB Chain T16.001 incident in the April–May 2022 flash-loan governance attack season, preceding Fortress Protocol by 26 days and occurring within the same week as the Beanstalk Farms attack on Ethereum. The temporal clustering — Elephant Money (April 12, BNB Chain), Beanstalk (April 17, Ethereum), Fortress Protocol (May 8, BNB Chain) — across two chains and three independent protocols within six weeks establishes T16.001 as a cross-chain class with independent discovery and exploitation.
Three structural observations:
The two-hop acquisition primitive is structurally intermediate between direct flash-loan governance-token acquisition (Fortress) and multi-hop LP-token acquisition (Beanstalk). Elephant Money's attacker flash-loaned BNB and swapped to ELEPHANT on a DEX — a two-hop primitive that requires the governance token to have sufficient DEX liquidity relative to quorum. Fortress's attacker flash-loaned the governance token directly — the simplest and most direct T16.001 instantiation. Beanstalk's attacker flash-loaned stablecoins, deposited into a Curve pool to mint LP tokens, and used those LP tokens for governance — a three-hop primitive that required deep stablecoin liquidity and a governance token with LP-token-based voting weight. The three cases together span the acquisition-primitive complexity spectrum for T16.001.
The April–May 2022 flash-loan governance attack season demonstrates independent cross-chain discovery of the T16.001 primitive. Elephant Money (BNB Chain, April 12) and Beanstalk (Ethereum, April 17) occurred five days apart on different chains. The temporal proximity suggests the T16.001 primitive was being independently identified and exploited by different operators across chains, rather than propagating as a single-chain copycat dynamic from a single canonical incident. The Fortress incident (BNB Chain, May 8) may have been copycat behaviour following the publicity of Beanstalk, but the Elephant Money case predates Beanstalk — the primitive was live on BNB Chain before the Ethereum flagship incident.
The three cases converge on the same governance-design vulnerabilities. Elephant Money, Beanstalk, and Fortress all had: (a) voting power measured at the current block via
balanceOf(no snapshot mechanism), (b) no minimum governance-token holding period, and (c) insufficient DEX liquidity depth relative to quorum. The convergence on this vulnerability triad across three independent protocols on two chains confirms that these are the load-bearing governance-design preconditions for T16.001 — and that any governance contract exhibiting all three preconditions is structurally vulnerable regardless of chain.