GP 7: Increase Multi-chain Inventory and Update Bob Swap

The proposal has been confirmed and executed on:

Proposal Objectives

Goals of the proposal include further expansion (new BobSwap instances on Optimism, BNB Chain, and Arbitrum), increased brand awareness, and additional integration options. Several new inventory pools along with BobSwap (note: BobVault is the contract name and referred to as such below) allowance increases were proposed and accepted by the governance board.

Following the successful proposal, overall total supply increased +32m BOB (20.5m β†’ 52.5m).

Polygon (9.5m β†’ 11.5m)

  1. Increase BobVault issuance allowance from 3,000,000 BOB β†’ 5,000,000 BOB

Ethereum Mainnet (9m β†’ 16m)

  1. Increase BobSwap issuance allowance from 2,000,000 BOB β†’ 5,000,000 BOB

  2. Allocate 2,000,000 BOB to BOB/USDC 0.008% inventory position on Kyberswap

  3. Allocate 2,000,000 BOB to BOB/USDT 0.008% inventory position on Kyberswap

Optimism (1m β†’ 8m)

  1. Allocate 5,000,000 BOB to a new deployment of BobVault

  2. Allocate 2,000,000 BOB to BOB/USDC 0.01% inventory position on Uniswap V3

BNB Chain (1m β†’ 10m)

  1. Allocate 5,000,000 BOB to a new deployment of BobVault

  2. Allocate 2,000,000 BOB to BOB/USDC 0.008% inventory position on Kyberswap

  3. Allocate 2,000,000 BOB to BOB/USDT 0.008% inventory position on Kyberswap

Arbitrum (0m β†’ 7m)

  1. Allocate 5,000,000 BOB to a new deployment of BobVault

  2. Allocate 2,000,000 BOB to BOB/USDC 0.01% inventory position on Uniswap V3

Newly deployed BobVault instances mirror latest Mainnet deployment, with the exception of changes in used collateral token addresses, see GP 5 for reference.

Transaction Details

Polygon

Transaction #27 in the Safe on Polygon contains 1 action:

Action 1

Allocate additional 2,000,000 BOB (18 decimals) to the BobVault contract 0x25E6505297b44f4817538fB2d91b88e1cF841B54by minting 2,000,000 BOB to the BobVault contract. The action is executed by calling mint on the BOB token contract 0xB0B195aEFA3650A6908f15CdaC7D92F8a5791B0B

Ethereum Mainnet

Transaction #11 in the Safe on Mainnet contains 9 actions:

Action 1

Allocate additional 3,000,000 BOB (18 decimals) to the BobVault contract 0x15729Ac1795Fa02448a55D206005dC1914144a9F by minting 3,000,000 BOB to the BobVault contract. The action is executed by calling mint on the BOB token contract 0xB0B195aEFA3650A6908f15CdaC7D92F8a5791B0B.

Action 2

Mint ~4,000,000 BOB (18 decimals) to governance safe 0xd4a3D9Ca00fa1fD8833D560F9217458E61c446d8for further allocation into 2 inventory positions on Kyberswap. The action is executed by calling mint on the BOB token contract 0xB0B195aEFA3650A6908f15CdaC7D92F8a5791B0B.

Note: Minting amount is slightly less than 4,000,000 BOB to avoid leftover wei amount due to truncation errors.

Action 3

Approve BOB for usage in Kyberswap Position Manager Contract 0x2B1c7b41f6A8F2b2bc45C3233a5d5FB3cD6dC9A8. The action is executed by calling approve on the BOB token contract 0xB0B195aEFA3650A6908f15CdaC7D92F8a5791B0B.

Action 4

Approve 1 wei of USDT for usage in Kyberswap Position Manager Contract 0x2B1c7b41f6A8F2b2bc45C3233a5d5FB3cD6dC9A8. The action is executed by calling approve on the USDT token contract 0xdAC17F958D2ee523a2206206994597C13D831ec7.

Action 5

Approve 1 wei of USDC for usage in Kyberswap Position Manager Contract 0x2B1c7b41f6A8F2b2bc45C3233a5d5FB3cD6dC9A8. The action is executed by calling approve on the USDC token contract 0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48.

Action 6

Create and initialize pool 0.008% BOB/USDT pool on Kyberswap. The action is executed by calling createAndUnlockPoolIfNecessary on the Kyberswap Position Manager contract 0x2B1c7b41f6A8F2b2bc45C3233a5d5FB3cD6dC9A8.

Action 7

Mint Kyberswap 0.008% BOB/USDT inventory position using ~2,000,000 BOB. The action is executed by calling mint on the Kyberswap Position Manager contract 0x2B1c7b41f6A8F2b2bc45C3233a5d5FB3cD6dC9A8.

Used tick range: [-276325, -276323], as BOB has 18 decimals and USDT has 6 decimals

Action 8

Create and initialize pool 0.008% USDC/BOB pool on Kyberswap. The action is executed by calling createAndUnlockPoolIfNecessary on the Kyberswap Position Manager contract 0x2B1c7b41f6A8F2b2bc45C3233a5d5FB3cD6dC9A8.

Action 9

Mint Kyberswap 0.008% USDC/BOB inventory position using ~2,000,000 BOB. The action is executed by calling mint on the Kyberswap Position Manager contract 0x2B1c7b41f6A8F2b2bc45C3233a5d5FB3cD6dC9A8.

Used tick range: [276323, 276325], as USDC has 6 decimals and BOB has 18 decimals

Optimism

Transaction #5 in the Safe on Optimism contains 4 actions:

Action 1

Allocate 5,000,000 BOB (18 decimals) to the BobVault contract 0x8aEb89D5C689C2cf373Fe8b56c7A0cD5BDc74CE6 by minting 5,000,000 BOB to the BobVault contract. The action is executed by calling mint on the BOB token contract 0xB0B195aEFA3650A6908f15CdaC7D92F8a5791B0B.

Action 2

Mint ~2,000,000 BOB (18 decimals) to governance safe 0x14fc6a1a996A2EB889cF86e5c8cD17323bC85290 for further allocation into 2 inventory positions on Uniswap V3. The action is executed by calling mint on the BOB token contract 0xB0B195aEFA3650A6908f15CdaC7D92F8a5791B0B.

Minting amount is slightly less than 2,000,000 BOB to avoid leftover wei amount due to truncation errors.

Action 3

Create and initialize pool 0.01% USDC/BOB pool on Uniswap V3. The action is executed by calling createAndInitializePoolIfNecessary on the Uniswap V3 Position Manager contract 0xC36442b4a4522E871399CD717aBDD847Ab11FE88.

Action 4

Mint Uniswap V3 0.01% USDC/BOB inventory position using ~2,000,000 BOB. The action is executed by calling mint on the Uniswap V3 Position Manager contract 0xC36442b4a4522E871399CD717aBDD847Ab11FE88.

Used tick range: [276323, 276325], as USDC has 6 decimals and BOB has 18 decimals

BNB Chain

Transaction #7 in the Safe on BNB Chain contains 8 actions:

Action 1

Allocate 5,000,000 BOB (18 decimals) to the BobVault contract (0x61a57F1C82DA40e632C075D7812Af375Db23367c) by minting 5,000,000 BOB to the BobVault contract. The action is executed by calling mint on the BOB token contract 0xB0B195aEFA3650A6908f15CdaC7D92F8a5791B0B.

Action 2

Mint 4,000,000 BOB (18 decimals) to governance safe 0xd4a3D9Ca00fa1fD8833D560F9217458E61c446d8 for further allocation into 2 inventory positions on Kyberswap. The action is executed by calling mint on the BOB token contract 0xB0B195aEFA3650A6908f15CdaC7D92F8a5791B0B.

Action 3

Approve 99996 wei of USDT for usage in Kyberswap Position Manager Contract 0x2B1c7b41f6A8F2b2bc45C3233a5d5FB3cD6dC9A8. The action is executed by calling approve on the USDT token contract 0x55d398326f99059fF775485246999027B3197955.

Action 4

Approve 99996 wei of USDC for usage in Kyberswap Position Manager Contract 0x2B1c7b41f6A8F2b2bc45C3233a5d5FB3cD6dC9A8. The action is executed by calling approve on the USDC token contract 0x8AC76a51cc950d9822D68b83fE1Ad97B32Cd580d.

Action 5

Create and initialize pool 0.008% USDT/BOB pool on Kyberswap. The action is executed by calling createAndUnlockPoolIfNecessary on the Kyberswap Position Manager contract 0x2B1c7b41f6A8F2b2bc45C3233a5d5FB3cD6dC9A8.

Action 6

Mint Kyberswap 0.008% USDT/BOB inventory position using ~2,000,000 BOB. The action is executed by calling mint on the Kyberswap Position Manager contract 0x2B1c7b41f6A8F2b2bc45C3233a5d5FB3cD6dC9A8.

Used tick range: [-1, 1], as both tokens have 18 decimals

Action 7

Create and initialize pool 0.008% USDC/BOB pool on Kyberswap. The action is executed by calling createAndUnlockPoolIfNecessary on the Kyberswap Position Manager contract 0x2B1c7b41f6A8F2b2bc45C3233a5d5FB3cD6dC9A8.

Action 8

Mint Kyberswap 0.008% USDC/BOB inventory position using ~2,000,000 BOB. The action is executed by calling mint on the Kyberswap Position Manager contract 0x2B1c7b41f6A8F2b2bc45C3233a5d5FB3cD6dC9A8.

Used tick range: [-1, 1], as both tokens have 18 decimals

Arbitrum One

Transaction #1 in the Safe on Arbitrum contains 5 actions:

Action 1

Allocate 5,000,000 BOB (18 decimals) to the BobVault contract 0x72e6B59D4a90ab232e55D4BB7ed2dD17494D62fB by minting 5,000,000 BOB to the BobVault contract. The action is executed by calling mint on the BOB token contract 0xB0B195aEFA3650A6908f15CdaC7D92F8a5791B0B.

Action 2

Mint ~2,000,000 BOB (18 decimals) to governance safe 0xd4a3D9Ca00fa1fD8833D560F9217458E61c446d8 for further allocation into 2 inventory positions on Uniswap V3. The action is executed by calling mint on the BOB token contract 0xB0B195aEFA3650A6908f15CdaC7D92F8a5791B0B.

Minting amount is slightly less than 2,000,000 BOB to avoid leftover wei amount due to truncation errors.

Action 3

Approve BOB for usage in Uniswap V3 Position Manager Contract 0xC36442b4a4522E871399CD717aBDD847Ab11FE88. The action is executed by calling approve on the BOB token contract 0xB0B195aEFA3650A6908f15CdaC7D92F8a5791B0B.

Action 4

Create and initialize pool 0.01% BOB/USDC pool on Uniswap V3. The action is executed by calling createAndInitializePoolIfNecessary on the Uniswap V3 Position Manager contract 0xC36442b4a4522E871399CD717aBDD847Ab11FE88.

Action 5

Mint Uniswap V3 0.01% BOB/USDC inventory position using ~2,000,000 BOB. The action is executed by calling mint on the Uniswap V3 Position Manager contract 0xC36442b4a4522E871399CD717aBDD847Ab11FE88.

Used tick range: [-276325, -276323], as BOB has 18 decimals and USDC has 6 decimals

Additional Verification

Verify new BobVault deployments

Optimism

$ cast call --rpc-url https://rpc.ankr.com/optimism 0x8aEb89D5C689C2cf373Fe8b56c7A0cD5BDc74CE6 'owner() (address)'
0x14fc6a1a996A2EB889cF86e5c8cD17323bC85290

$ cast call --rpc-url https://rpc.ankr.com/optimism 0x8aEb89D5C689C2cf373Fe8b56c7A0cD5BDc74CE6 'admin() (address)'
0x14fc6a1a996A2EB889cF86e5c8cD17323bC85290

$ cast call --rpc-url https://rpc.ankr.com/optimism 0x8aEb89D5C689C2cf373Fe8b56c7A0cD5BDc74CE6 'collateral(address) (uint128 balance,uint128 buffer,uint96 dust,address yield,uint128 price,uint64 inFee,uint64 outFee,uint256 maxBalance,uint256 maxInvested)' 0x7F5c764cBc14f9669B88837ca1490cCa17c31607
0
0
0
0x0000000000000000000000000000000000000000
1000000
10000000000000
100000000000000
340282366920938463463374607431768211455
0

$ cast call --rpc-url https://rpc.ankr.com/optimism 0x8aEb89D5C689C2cf373Fe8b56c7A0cD5BDc74CE6 'collateral(address) (uint128 balance,uint128 buffer,uint96 dust,address yield,uint128 price,uint64 inFee,uint64 outFee,uint256 maxBalance,uint256 maxInvested)' 0x94b008aA00579c1307B0EF2c499aD98a8ce58e58
0
0
0
0x0000000000000000000000000000000000000000
1000000
10000000000000
100000000000000
1000000000000
0

BNB Chain

$ cast call --rpc-url https://rpc.ankr.com/bsc 0x61a57F1C82DA40e632C075D7812Af375Db23367c 'owner() (address)'
0xd4a3D9Ca00fa1fD8833D560F9217458E61c446d8

$ cast call --rpc-url https://rpc.ankr.com/bsc 0x61a57F1C82DA40e632C075D7812Af375Db23367c 'admin() (address)'
0xd4a3D9Ca00fa1fD8833D560F9217458E61c446d8

$ cast call --rpc-url https://rpc.ankr.com/bsc 0x61a57F1C82DA40e632C075D7812Af375Db23367c 'collateral(address) (uint128 balance,uint128 buffer,uint96 dust,address yield,uint128 price,uint64 inFee,uint64 outFee,uint256 maxBalance,uint256 maxInvested)' 0x8AC76a51cc950d9822D68b83fE1Ad97B32Cd580d
0
0
0
0x0000000000000000000000000000000000000000
1000000000000000000
10000000000000
100000000000000
340282366920938463463374607431768211455
0

$ cast call --rpc-url https://rpc.ankr.com/bsc 0x61a57F1C82DA40e632C075D7812Af375Db23367c 'collateral(address) (uint128 balance,uint128 buffer,uint96 dust,address yield,uint128 price,uint64 inFee,uint64 outFee,uint256 maxBalance,uint256 maxInvested)' 0x55d398326f99059fF775485246999027B3197955
0
0
0
0x0000000000000000000000000000000000000000
1000000000000000000
10000000000000
100000000000000
1000000000000000000000000
0

Arbitrum

$ cast call --rpc-url https://rpc.ankr.com/arbitrum 0x72e6B59D4a90ab232e55D4BB7ed2dD17494D62fB 'owner() (address)'
0xd4a3D9Ca00fa1fD8833D560F9217458E61c446d8

$ cast call --rpc-url https://rpc.ankr.com/arbitrum 0x72e6B59D4a90ab232e55D4BB7ed2dD17494D62fB 'admin() (address)'
0xd4a3D9Ca00fa1fD8833D560F9217458E61c446d8

$ cast call --rpc-url https://rpc.ankr.com/arbitrum 0x72e6B59D4a90ab232e55D4BB7ed2dD17494D62fB 'collateral(address) (uint128 balance,uint128 buffer,uint96 dust,address yield,uint128 price,uint64 inFee,uint64 outFee,uint256 maxBalance,uint256 maxInvested)' 0xFF970A61A04b1cA14834A43f5dE4533eBDDB5CC8
0
0
0
0x0000000000000000000000000000000000000000
1000000
10000000000000
100000000000000
340282366920938463463374607431768211455
0

$ cast call --rpc-url https://rpc.ankr.com/arbitrum 0x72e6B59D4a90ab232e55D4BB7ed2dD17494D62fB 'collateral(address) (uint128 balance,uint128 buffer,uint96 dust,address yield,uint128 price,uint64 inFee,uint64 outFee,uint256 maxBalance,uint256 maxInvested)' 0xFd086bC7CD5C481DCC9C85ebE478A1C0b69FCbb9
0
0
0
0x0000000000000000000000000000000000000000
1000000
10000000000000
100000000000000
1000000000000
0

Inventory LPs validity can be verified using the following simulation test - https://gist.github.com/k1rill-fedoseev/c7ca38a4a0a1d1980c905e430fa86685

Last updated