# BIP 76. Upgrade Smart Contracts

**URL:** <https://forum.badger.finance/t/bip-76-upgrade-smart-contracts/5173>\
**Category:** BIP | Badger Improvement Proposals\
**Created:** [December 11, 2021, 2:17am UTC](https://forum.badger.finance/t/bip-76-upgrade-smart-contracts/5173 "2021-12-11T02:17:42Z")\
**Posts on this page:** 2\
**Page:** 1

<div class="post-metadata">

**Author:** ![Mr\_Po](https://yyz2.discourse-cdn.com/flex034/user_avatar/forum.badger.finance/mr_po/32/52_2.png) [@Mr\_Po](https://forum.badger.finance/u/Mr_Po)\
**Post date:** [December 11, 2021, 2:17am UTC](https://forum.badger.finance/t/bip-76-upgrade-smart-contracts/5173/1 "2021-12-11T02:17:42Z")

</div>

## Overview:

This proposal aims to cover important smart contract upgrades that will allow for the rescue of user funds, improved pausing functionality and additional safeguards via blacklisting.

This proposal will not cover the **execution** of the proposed rescue function and unpausing. Those items will be addressed later via a future BIP.

## Specifics:

**Upgrade all affected Setts with the following new functionality:**

- add **rescue function** to transfer sett tokens from attacker wallets to recovered.badgerdao.eth (one time use - patchBalance() function)
- add a ‘ **global pause** ’ feature that allows all Sett contracts to be paused and unpaused simultaneously with the same permissions as current pausing functionality
- add global **blacklist** to block actions, set to the attackers wallets listed below

**Blacklisted Attacker wallets:**

- 0x1FCdb04d0C5364FBd92C73cA8AF9BAA72c269107
- 0xa33B95ea28542Ada32117B60E4F5B4cB7D1Fc19B
- 0x4fbf7701b3078B5bed6F3e64dF3AE09650eE7DE5
- 0x1B1b391D1026A4e3fB7F082ede068B25358a61F2
- 0xEcD91D07b1b6B81d24F2a469de8e47E3fe3050fd
- 0x691dA2826AC32BBF2a4b5d6f2A07CE07552A9A8E
- 0x91d65D67FC573605bCb0b5E39F9ef6E18aFA1586
- 0x0B88A083dc7b8aC2A84eBA02E4acb2e5f2d3063C
- 0x2eF1b70F195fd0432f9C36fB2eF7C99629B0398c
- 0xbbfD8041EbDE22A7f3e19600B4bab4925Cc97f7D
- 0xe06eD65924dB2e7b4c83E07079A424C8a36701E5

**NOTE** : Approval to execute the following actions will be submitted via a future BIP that will undergo the Badger Governance Process:

- Execute the new patchBalances() function to rescue funds from the attacker to the recovery multisig
- Unpausing the Sett contract to resume normal operation

## Why is this BIP being expedited?

Badger is committed to reopening smart contracts as soon as it is safe to do so. Given the timelock considerations, waiting for the standard timeframe before making these upgrades would add a minimum 3 day lag once the final BIP to execute the proposed actions to rescue funds and unpause is decided.

As such, this proposal uncouples the smart contract upgrades from the execution of the rescue action and unpausing so that the execution decision can follow Badger’s governance process, while also ensuring the resulting governance decision can be enacted promptly.

## Amended requirements to pass expedited governance proposal:

Given this BIP will go directly to [snapshot](https://snapshot.org/#/badgerdao.eth/proposal/0xd3360ea2f5e101b01ad3c80d04f2abeb38f8faee2ebba1ca791e8c1b360b7d7b), it will require a supermajority of over 70% at a quorum of more than 200,000 votes in order to pass.

## Supporting Parameter Changes:

Additionally, among the older contracts, 1 Sett and 8 Strategy contracts have the Timelock set as their governance address. In order to align them with the rest of the infrastructure, Badger will change their governance to the [devMultisig](https://etherscan.io/address/0xB65cef03b9B89f99517643226d76e286ee999e77).

This will give Badger the ability to handle unpausing and transferring tokens away from attacker wallets atomically and with agility, which is the preferred technical approach to the situation. Badger intends to propose using the timelock for all key parameter changes as part of the future governance 2.0 initiatives.

Note that the timelock is still needed for upgrades or adding new strategies which are the critical operations that involve handling of user funds.

This transaction will require going through the Timelock process. Once executed, the unpausing of the whole infrastructure will be handled by the devMultisig directly and no timelock will be required for it.

---

<div class="post-metadata">

**Author:** ![cryptomooniac](https://yyz2.discourse-cdn.com/flex034/user_avatar/forum.badger.finance/cryptomooniac/32/1335_2.png) [@cryptomooniac](https://forum.badger.finance/u/cryptomooniac)\
**Post date:** [December 11, 2021, 4:40am UTC](https://forum.badger.finance/t/bip-76-upgrade-smart-contracts/5173/2 "2021-12-11T04:40:05Z")

</div>

Would have voted for on the snapshot if I could vote.
