GP 17: Remove excess inventory on Optimism and Ethereum

Proposal objective

Continued reduction of BOB inventory (see GP 16) with decreases for BOB inventory on Ethereum Mainnet and Optimism.

Proposal Details

Overall decrease of total supply after this proposal is -20m BOB (35.5m15.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 to efficiently facilitate the complex inventory management process.

The first transaction #13 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 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 to efficiently facilitate the complex inventory management process.

The first transaction #14 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 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 token transfers in Tenderly simulation:

  2. 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

Last updated