# GP 17: Remove excess inventory on Optimism and Ethereum

{% hint style="success" %}
The proposal has been confirmed and executed by:

* [a transaction on Optimism #1](https://optimistic.etherscan.io/tx/0xa3363e17e279f87e9e0d62e0d63634e16ac9c8a79f051fc872f85933c069bf10)
* [a transaction on Optimism #2](https://optimistic.etherscan.io/tx/0x707314e661a9e82e62176652cc689a9b462d26f0c9474f45ca705c33f1c2c515)
* [a transaction on Mainnet #1](https://etherscan.io/tx/0xd2c44000387b006d5a170042332216ad27f26b4271d7440344495e3d23c393d4)
* [a transaction on Mainnet #2](https://etherscan.io/tx/0xb705c50bd6e521f750dd2a01d35e87d69f2f85ad3eb9873b38d73801df8bdaee)
  {% endhint %}

## Proposal objective

Continued reduction of BOB inventory (see [GP 16](https://bob-docs.zkbob.com/bob-dao/governance/protocol-governance/gp-16-remove-excess-inventory-on-arbitrum-and-bnb-smart-chain)) with decreases for BOB inventory on Ethereum Mainnet and Optimism.

## Proposal Details

Overall decrease of total supply after this proposal is **-20m BOB** (**35.5m** → **15.5m**)**.**

### Optimism (8m → 1m)

1. Deallocate **5,000,000 BOB (5,000,000 BOB → 0 BOB)** from BobSwap
2. Deallocate **1,000,000 BOB (2,000,000 BOB → 1,000,000 BOB)** from **BOB/USDC 0.01%** inventory position on Uniswap V3
3. Deallocate **1,000,000 BOB (1,000,000 BOB → 0 BOB)** from **BOB/USDC 0.05%** inventory position on Uniswap V3

### Ethereum Mainnet (14m → 1m)

1. Deallocate **5,000,000 BOB (5,000,000 BOB → 0 BOB)** from BobSwap
2. Deallocate **5,000,000 BOB (6,000,000 BOB → 1,000,000 BOB)** from **BOB/USDC 0.01%** inventory position on Uniswap V3
3. Deallocate **1,000,000 BOB (1,000,000 BOB → 0 BOB)** from **BOB/USDC 0.05%** inventory position on Uniswap V3
4. Deallocate **2,000,000 BOB (2,000,000 BOB → 0 BOB)** from **BOB/USDT 0.01%** inventory position on Uniswap V3

## Proposal breakdown

### Optimism

The following transactions use `delegatecall` to the [`0x889aED5204D9FB23c758588dcc7bFdf67302e9d7`](https://optimism.blockscout.com/address/0x889aED5204D9FB23c758588dcc7bFdf67302e9d7?tab=contract) to efficiently facilitate the complex inventory management process.

The first transaction [#13](https://app.safe.global/transactions/tx?safe=oeth:0x14fc6a1a996A2EB889cF86e5c8cD17323bC85290\&id=multisig_0x14fc6a1a996A2EB889cF86e5c8cD17323bC85290_0x46de9e2a6f458aced523ca5f2228da3c3bb904cb156df1d53d2de7a25c53137a) in the Safe on Optimism contains the following sequence of actions:

1. Remove and burn all excess **BOB** from BobSwap.
2. Withdraw 100% (**\~1,000,000 BOB/USDC**) of **BOB/USDC 0.05%** Uniswap V3 inventory LP with its fees.
3. Withdraw 50% (**\~1,000,000 BOB/USDC**) of **BOB/USDT 0.01%** Uniswap V3 inventory LP with its fees.
4. Burn **BOB** obtained from inventory position principal.
5. Transfer **USDC** obtained from inventory position principal to BobSwap.
6. Disable BobSwap **USDT→BOB** and **USDC→BOB** BobSwap directions by setting swap fees to 100%.
7. Set zero fees for **BOB→USDC** and **BOB→USDT** BobSwap directions.
8. Claim BobSwap fees accumulated in **USDC** and **USDT.**

The second transaction [#14](https://app.safe.global/transactions/tx?safe=oeth:0x14fc6a1a996A2EB889cF86e5c8cD17323bC85290\&id=multisig_0x14fc6a1a996A2EB889cF86e5c8cD17323bC85290_0xdd2eb7c027d081e537a73366bd0da2b4c6ca09794ce4a087ebd334fc4b517b66) in the Safe on Optimism contains the following sequence of actions:

1. Remove and burn all excess **BOB** from BobSwap

The second transaction is executed only once all **USDC** and **USDT** collateral from BobSwap has been redeemed following the first transaction execution.

### Ethereum Mainnet

The following transactions use `delegatecall` to the [`0xF853E272893035a8C6A82616B7b442aB329D92D9`](https://eth.blockscout.com/address/0xF853E272893035a8C6A82616B7b442aB329D92D9?tab=contract) to efficiently facilitate the complex inventory management process.

The first transaction [#14](https://app.safe.global/transactions/tx?safe=eth:0xd4a3D9Ca00fa1fD8833D560F9217458E61c446d8\&id=multisig_0xd4a3D9Ca00fa1fD8833D560F9217458E61c446d8_0xe63c6ba5bf639c7c4d08089e34ba042a5d4ff62836036bf2e39d001cbf0aeec1) in the Safe on Mainnet contains the following sequence of actions:

1. Remove and burn all excess **BOB** from BobSwap.
2. Withdraw 100% (**\~1,000,000 BOB/USDC**) of **BOB/USDC 0.05%** Uniswap V3 inventory LP with its fees.
3. Withdraw 83.33% (5/6) (**\~5,000,000 BOB/USDC**) of **BOB/USDC 0.01%** Uniswap V3 inventory LP with its fees.
4. Withdraw 100% (**\~2,000,000 BOB/USDC**) of **BOB/USDT 0.01%** Uniswap V3 inventory LP with its fees.
5. Burn **BOB** obtained from inventory position principal.
6. Transfer **USDC** and **USDT** obtained from inventory position principal to BobSwap.
7. Disable BobSwap **USDT→BOB,** **USDC→BOB** and **DAI→BOB** BobSwap directions by setting swap fees to 100%.
8. Set zero fees for **BOB→USDC,** **BOB→USDT** and **BOB→DAI** BobSwap directions.
9. Claim BobSwap fees accumulated in **USDC,** **USDT** and **DAI.**

The second transaction [#15](https://app.safe.global/transactions/tx?safe=eth:0xd4a3D9Ca00fa1fD8833D560F9217458E61c446d8\&id=multisig_0xd4a3D9Ca00fa1fD8833D560F9217458E61c446d8_0x02210007521a89e948b0988cab39b0c8c72ecbb7f49180b58fc9fb0dbe6f66ce) in the Safe on Mainnet contains the following sequence of actions:

1. Remove and burn all excess **BOB** from BobSwap

The second transaction is executed only once all **USDC, USDT** and **DAI** collateral from BobSwap has been redeemed following the first transaction execution.

## Additional verification

1. Check the code of <https://optimism.blockscout.com/address/0x889aED5204D9FB23c758588dcc7bFdf67302e9d7?tab=contract>
2. Check the code of <https://eth.blockscout.com/address/0xF853E272893035a8C6A82616B7b442aB329D92D9?tab=contract>
3. Check token transfers in Tenderly simulation:
   1. [Optimism #13](https://dashboard.tenderly.co/public/safe/safe-apps/simulator/24b001d4-2502-44ea-8e56-faa8eb9fd029)
   2. [Optimism #14](https://dashboard.tenderly.co/public/safe/safe-apps/simulator/c2c20a72-6365-4c51-9366-b6c66ec882bd)
   3. [Mainnet #14](https://dashboard.tenderly.co/public/safe/safe-apps/simulator/555f494f-5161-4e61-8de3-664315a3ed01)
   4. [Mainnet #15](https://dashboard.tenderly.co/public/safe/safe-apps/simulator/e846c71e-4d4a-460d-a839-4aa8b3474021)
4. Check the following script with safe contract execution - <https://gist.github.com/k1rill-fedoseev/fd38a2ec10dfaf0e2608acfaea27505b>
   1. `forge test --match-path ./script/scripts/VerifySafeTx_Gov41.t.sol --ffi -vvvv`
   2. Make sure `jq` CLI is installed
