# 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](/bob-dao/governance/protocol-governance/gp-16-remove-excess-inventory-on-arbitrum-and-bnb-smart-chain.md)) 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


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://bob-docs.zkbob.com/bob-dao/governance/protocol-governance/gp-17-remove-excess-inventory-on-optimism-and-ethereum.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
