Worked example · 2018-07
Bancor — Ethereum DEX — 2018-07-09
Summary
Bancor was, in 2018, one of the earliest large on-chain liquidity-pool DEXes — predating Uniswap's launch by approximately four months and operating an automated-market-maker design (the "Bancor Formula") that helped seed the AMM design language the rest of the industry would later inherit. Its on-chain footprint at the time of the incident comprised the BNT token contract, a network of "smart token" / "relay" contracts implementing per-pair liquidity pools, and an operator-controlled wallet system that retained authority to upgrade those contracts and exercise certain admin functions.
On 2018-07-09, in a window beginning shortly after 00:00 UTC, an attacker gained control of one of Bancor's operator-controlled wallets — specifically the wallet Bancor's own statement described as "used to upgrade some of our smart contracts." With that wallet's authority, the attacker initiated transfers from Bancor-controlled contracts and reserves to attacker-controlled addresses, draining ~24,984 ETH, ~3,200,000 BNT and ~229,356,645 NPXS in roughly that order. Bancor identified the compromise within hours, halted the network, and exercised a built-in admin function on the BNT token contract to freeze the stolen BNT — recovering approximately $10M of the $23.5M extracted. The ETH and NPXS were not freezable from Bancor's side and were not recovered. Bancor publicly disclosed the incident the same day and rotated contract ownership to a multi-signature wallet shortly after, requiring two-of-four signatures for any owner-restricted action going forward.
For OAK's purposes, the Bancor case is the canonical historical anchor for the "decentralized DEX with retained admin authority" pattern. It is the moment the industry was forced to articulate, publicly and in real-money terms, what "decentralized" actually means in the presence of upgrade keys and freeze functions — and it is the structural ancestor of every post-2018 conversation about renounced ownership, governance migration, and admin-key surface as a defender / risk concern.
Timeline (UTC)
| When | Event | OAK ref |
|---|---|---|
| Pre-event (2017–2018) | Bancor deploys BNT token, smart-token / relay liquidity-pool contracts, and operator-controlled wallet(s) retaining transferOwnership / upgrade / disableTransfers (freeze) authority |
(T9.004 surface — retained admin authority) |
| 2018-07-09 ~00:00 onward | Attacker gains control of the Bancor operator wallet "used to upgrade some smart contracts" (off-chain entry vector — not publicly disclosed in technical detail) | (operator-internal admin-key compromise — no exact OAK v0.1 match) |
| 2018-07-09 ~02:18 | First BNT extraction transactions to attacker-controlled address ("Bancor Thief 2") | (extraction begins) |
| 2018-07-09 ~02:21 | Attacker begins routing extracted tokens onward (laundering activity starts) | (early on-chain laundering surface) |
| 2018-07-09 ~02:23 | Second BNT extraction transaction | (extraction continues) |
| 2018-07-09 ~02:25 | ~24,984 ETH moved to attacker's main address | (extraction continues) |
| 2018-07-09 (within hours) | ~229,356,645 NPXS extracted; Bancor identifies the compromise; network halted | (defender detection / response) |
| 2018-07-09 (same day) | Bancor invokes built-in admin function to freeze ~3,200,000 BNT at attacker addresses on the BNT token contract | (operator-side recovery via retained admin authority) |
| 2018-07-09 (same day) | Bancor publishes initial public statement on Twitter and blog — frames event as compromise of "a wallet used to upgrade some of our smart contracts" | (disclosure) |
| 2018-07-10 | Charlie Lee, Jackson Palmer, and other prominent figures publicly criticise Bancor's freeze capability as inconsistent with "decentralized" framing | (industry-discourse aftermath) |
| 2018-07-10 onward | Pundi X (NPXS issuer) coordinates token-recovery / re-issuance plan with token holders to mitigate NPXS losses | (issuer-side response — outside OAK v0.1 on-chain Tactic scope) |
| 2018-07 (within ~weeks) | Bancor transfers ownership of its main contract to a multi-signature wallet (2-of-4) | (operator hardening) |
| 2018-07 onward | Stolen ETH and unfrozen tokens routed onward through exchanges and conversion services; no public attribution to a known threat actor | (laundering — pseudonymous attacker, never identified) |
What defenders observed and learned
- Retained admin authority over deployed contracts is a defender-side double-edged sword, and Bancor is the first large case where the trade-off was forced into the open. The freeze function on the BNT token contract recovered ~$10M that was otherwise gone; the same function, viewed adversarially, is exactly the kind of admin authority that an attacker who compromises the admin key can themselves exercise. The Bancor case is the canonical illustration that "the protocol can rescue you from a hack" and "the protocol can be turned against its users" are two views of the same authority surface. Defenders writing risk models for any on-chain protocol with retained admin / freeze / pause / upgrade authority should treat the authority itself — not just its current holder — as the modelled surface.
- Single-signer EOAs holding protocol-wide upgrade authority are an unacceptable pre-deployment-control posture, retroactively obvious post-Bancor. The Bancor wallet that was compromised was, as far as the public record describes, a single externally-owned account with broad upgrade authority over the deployed contract set. Bancor's own response — migrating ownership to a 2-of-4 multisig within weeks — is the implicit acknowledgement that the pre-incident posture was the structural failure underneath the proximate compromise. The defender lesson the industry took from Bancor is that any contract whose ownership confers extraction-capable or freeze-capable authority must, at minimum, sit behind a multisig; the modern baseline (timelock-gated multisig, dedicated keyholders, hardware-wallet-backed signers) is a direct lineage from Bancor 2018.
- Token-issuer freeze capability is a recovery lever that does not exist symmetrically across the asset mix. Bancor recovered $10M because the stolen asset included its own native token, on whose contract Bancor held freeze authority. The $12.5M in ETH and $1M in NPXS — assets Bancor did not control at the issuer level — were not recoverable through the same mechanism. The defender lesson is that recovery feasibility is a function of the asset mix, not of the operator's response speed. This generalises forward: KuCoin 2020 recovered ~84% partly because the asset mix was heavy in freeze-capable ERC-20s; Bybit 2025 recovered very little because the asset mix was native ETH that no issuer could freeze. Bancor is the first case in OAK's corpus where the asset-mix dependency of recovery was demonstrated at scale.
- Disclosure speed and content quality matter in the defender-side response. Bancor's same-day public statement — naming the compromised wallet's role, confirming user wallets were not affected, and describing the freeze action — is, by 2018 standards, a fast and substantive disclosure. It compares favourably to the multi-week opacity of several other 2018-era exchange events. Contributors writing future incident-response runbooks should treat Bancor's disclosure cadence as a usable lower bound: same-day disclosure of (1) what was compromised, (2) what was extracted, (3) what user impact is, and (4) what response actions have been taken.
- At-event runtime detection was not the defender lever. The extraction window was approximately 2–3 hours from first attacker transaction to discovery. 2018-era runtime monitoring against operator wallets was sparse to nonexistent; modern equivalents (admin-key transaction-rate alerting, treasury-flow anomaly detection, multisig-required-approval gating) would have raised signal in the early minutes. The Bancor case sits at the historical hinge between "no monitoring exists" and "monitoring exists but is not yet standard"; defenders writing 2026-era admin-wallet monitoring guidance can use Bancor as the canonical "what we wish we had had" reference.
What this example tells contributors writing future Technique pages
- Bancor is the foundational reference for the operator-internal admin-key compromise gap in the OAK v0.1 T11 family. The same gap surfaces at KuCoin 2020, Coincheck 2018, CoinEx 2023, and Stake.com 2023; Bancor is chronologically the earliest large case in OAK's corpus and should be cross-referenced as the historical anchor when a future v0.x update considers adding a T11.x sub-technique covering operator-internal admin-key / upgrade-key / signing-key compromise. Contributors should not stretch T11.001 to cover internal compromise — Bancor's wallet was operator-controlled, not third-party-vendor-controlled, and the conflation would erase the meaningful distinction between supply-chain compromise and operator-IT compromise.
- T9.004 framing is the right on-chain Technique cross-reference for any "admin authority abused by attacker" sub-pattern. The Bancor extraction was mechanically possible because the deployed contracts had retained admin authority; that authority is an access-control configuration in the T9.004 sense. Contributors writing future Technique pages on admin-key compromise, upgrade-key compromise, or "rescue function turned against users" sub-patterns should cross-reference T9.004 as the on-chain mechanistic surface, even when the entry vector is off-chain operator compromise.
- T1.003 (Renounced-but-not-really) traces its industry lineage to Bancor. The post-Bancor industry shift toward "renounced ownership" claims as a marketing differentiator — and the corresponding T1.003 pattern of claiming renounced ownership while retaining authority through some other surface (proxy admin slot, undisclosed multisig, hidden upgrade path) — is a direct response to the Bancor controversy. Contributors writing T1.003-related examples should reference Bancor as the historical reason "renounced" became a claimable property in the first place. The Bancor case is itself not a T1.003 case: Bancor never claimed renounced ownership, and the freeze function was publicly documented before the incident. The T1.003 pattern is a generation later — protocols that learned the Bancor lesson rhetorically without learning it structurally.
- "Decentralized" as a protocol property requires structural evidence, not naming. Bancor's branding emphasised decentralization; its on-chain implementation retained admin authority adequate to freeze, upgrade, and (had the attacker chosen) drain. The defender / contributor lesson is that "decentralization" claims should be evaluated by enumerable on-chain authority — who holds upgrade / pause / freeze / mint / blacklist authority and through what signing surface — not by narrative. This evaluation discipline is now standard in audit reports, DeFi-Llama-style trust scores, and OAK's own framing of admin-key surface as Tactic / Technique scope.
Public references
- Bancor. "Bancor Network Security Breach." Official Twitter / Medium statement, 2018-07-09 —
[bancorpostmortem2018]. Bancor's contemporaneous public disclosure naming the compromised wallet's role, the freeze action on BNT, and the no-user-wallet-impact framing. - Russell, J. "The crypto world's latest hack sees Bancor lose $23.5M." TechCrunch, 2018-07-10 —
[techcrunchbancor2018]. Same-day press coverage with extraction breakdown and freeze-response framing. - Reutzel, B. "$13.5 Million Hack Ignites Fresh Debate Over Crypto Project Bancor." CoinDesk, 2018-07-15 —
[coindeskbancor2018]. Industry-discourse summary of the decentralization-controversy aftermath. - Apriorit. "Blockchain Vulnerabilities: Bancor Exchange Hack." Apriorit dev-blog, 2018 —
[aprioritbancor2018]. Defender-perspective technical breakdown of the contract-authority surface that made the extraction possible. - Neutrino Research Team. "Bancor stolen tokens (BNT/NPXS) used to buy BTC." Neutrino, 2018 —
[neutrinobancor2018]. On-chain laundering trace of the unfrozen portion of the proceeds. - Leiba, O. "Bancor smart contracts vulnerability: it's not over." Zengo Wallet, Medium, 2018 —
[zengobancor2018]. Post-incident analysis of the residual admin-authority surface after Bancor's multisig migration. - Lee, C. (@SatoshiLite). Twitter / X, 2018-07-10 —
[charlielee2018bancor]. Cited public-figure critique of the freeze capability ("an exchange is not decentralized if it can lose customer funds OR if it can freeze customer funds"). - Atzei, N.; Bartoletti, M.; Cimoli, T. A Survey of Attacks on Ethereum Smart Contracts. POST 2017 —
[atzei2017survey]. Academic taxonomy framing for the access-control-misconfiguration class Bancor's contracts sat in. - Zhou, L. et al. SoK: Decentralized Finance (DeFi) Attacks. IEEE S&P 2023 —
[zhou2023sok]. Modern academic taxonomy; references early-DEX admin-authority cases including Bancor as part of the historical antecedents to T9.004-class incidents.
Discussion
Bancor 2018 sits in OAK's corpus as the historical hinge between the early-Ethereum era of single-signer admin authority and the modern era of multisig-and-timelock discipline. Its singular role is not the size of the loss — $23.5M is unremarkable by 2026 standards — but the fact that it forced a public, real-money articulation of the trade-off between retained admin authority (which enables rescue, as it did for the BNT portion of the loss) and admin-authority surface as a compromise target (which enabled the entire extraction in the first place). Every modern conversation about renounced ownership, timelock gating, multisig signer composition, and "rescue function" design lineage runs through this incident.
The decentralization-controversy aftermath is itself part of the canonical record. Charlie Lee's framing — "an exchange is not decentralized if it can lose customer funds OR if it can freeze customer funds" — and Jackson Palmer's parallel framing — "how many other 'decentralized' DApps have a built-in kill switch that's centrally controlled?" — are arguably the moments at which the industry began the long process of distinguishing narrative decentralization from structural decentralization. The post-Bancor years saw two distinct industry responses: protocols that genuinely structured admin authority away (timelocks, multi-keyholder governance, eventual ownership renouncement) and protocols that adopted the rhetoric while retaining the structural surface — the latter being the population that T1.003 (Renounced-but-not-really) now documents. Contributors writing T1.003 examples can treat Bancor as the upstream cause of the rhetoric the T1.003 pattern abuses, even though Bancor itself never made the renounced-ownership claim.
From a defender's perspective in 2026, Bancor's freeze response remains structurally interesting — and structurally controversial. The same authority that recovered $10M of stolen BNT could, in a different attacker scenario or under a different operator's hands, have been used to freeze legitimate user balances. The post-Bancor defender consensus, in broad strokes, is that transparent, ex-ante-disclosed, governance-gated admin authority is a net-positive risk-management surface (the present-day stablecoin model — USDC's and USDT's documented blacklist functions are this category), while opaque, undisclosed, single-signer admin authority is a net-negative risk surface (the pre-Bancor Bancor model). The Bancor case is the canonical illustration of why this distinction matters. Contributors writing future Technique pages or worked examples that touch admin-authority surface should adopt the same framing: the question is not "does the contract have admin authority?" but "is the authority transparent, gated, and consistent with the protocol's stated trust model?" — and Bancor 2018 is the historical reason that question is the right one to ask.