# parity wallet hack demonstrated that selfdestruct in implementation contracts permanently bricks proxy systems
In November 2017, a user called the `initWallet` function on the Parity multisig library contract (the implementation behind all Parity multisig proxies), claimed ownership, then called `kill` which triggered `SELFDESTRUCT`. This destroyed the library contract's bytecode, making it impossible for any proxy to delegatecall to it.
Since [[delegatecall executes code from another contract using the callers storage context|delegatecall requires code at the target address]], approximately $280M in funds across all Parity multisig wallets became permanently frozen. The incident demonstrates why [[selfdestruct in implementation contracts can permanently brick proxy systems]] and motivated [[selfdestruct was deprecated in solidity 0.8.18 via eip-6049|the eventual deprecation of selfdestruct]].
---
Relevant Notes:
- [[selfdestruct in implementation contracts can permanently brick proxy systems]] — the vulnerability pattern demonstrated
- [[selfdestruct was deprecated in solidity 0.8.18 via eip-6049]] — the long-term response
- [[uninitialized proxy contracts are vulnerable to re-initialization attacks that hijack ownership]] — the initialization flaw that enabled the initial takeover
Topics:
- [[exploit-analyses]]