BOB
  • πŸ‘‹BOB Stablecoin
  • BOB Info
    • πŸ—ΊοΈBOB Ecosystem
      • Mellow Protocol Vaults
    • 🦊MetaMask
      • Swap BOB with Metamask Swap
    • πŸ”BOB Swap
    • πŸ¦„Uniswap v3
    • πŸ™‹β€β™€οΈBOB FAQ
  • BOB CDP
    • ℹ️About
    • πŸ’‘Use Cases
    • πŸ‘¨β€πŸŽ€System actors
    • πŸ“šSystem configurations
    • 🏦Vault health
    • 🏘️User flow examples
    • πŸ‘¨β€πŸ’»Technical docs
      • Position valuation (technical)
      • Liquidations
      • Deployment addresses
      • Smart Contracts
        • NFTVaultRegistry
        • NFTVault
        • UniV3Oracle
        • ChainlinkOracle
        • DebtMinter
        • SurplusMinter
    • πŸ™‹β€β™‚οΈCDP FAQ
  • BOB DAO
    • πŸ§‘β€πŸ€β€πŸ§‘Governance
      • BOB DAO
      • Protocol Governance
        • GP 0: Increase SAFE membership
        • GP 1: Bob Swap beta testing infrastructure
        • GP 2: Upgrade Contracts to v1.0.0
        • GP 3: Enable Bob Swap for Public Use
        • GP 4: Increase Multisig & Upgrade BOB contract on all networks
        • GP 5: Enable Bob Swap on Ethereum Mainnet
        • GP 6: Upgrade zkBob to support direct deposits
        • GP 7: Increase Multi-chain Inventory and Update Bob Swap
        • GP 8: Extend pool limits for KYC'd users
        • GP 9: Deactivate Kyberswap inventory pairs [Emergency Measure]
        • GP 10: Reallocate previous Kyberswap inventory
        • GP 11: Add 24 hour timelock to BOB contract on Optimism
        • GP 12: Raise Polygon limits
        • GP 13: Launch BOB CDP
        • GP 14: Migrate BOB pool to USDC on Polygon
        • GP 15: KYB tiers on Optimism
        • GP 16: Remove excess inventory on Arbitrum and BNB Smart Chain
        • GP 17: Remove excess inventory on Optimism and Ethereum
        • GP 18: Remove excess inventory on Polygon
        • GP 19: Accrued Revenue Allocation
        • GP 20: Migrate BOB pool to USDC on Optimism
        • GP 21: BOB inventory reduction
    • πŸ“‹Inventory
      • Inventory Actions
  • BOB Resources
    • 🧩Visual Assets
    • ⛓️Links
Powered by GitBook
On this page
  • Proposal Objectives
  • Transaction Details
  • Additional Verification
  • Verify new BobVault deployments
  • Optimism
  • BNB Chain
  • Arbitrum
  1. BOB DAO
  2. Governance
  3. Protocol Governance

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

PreviousGP 6: Upgrade zkBob to support direct depositsNextGP 8: Extend pool limits for KYC'd users

Last updated 1 year ago

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

Action 1

Ethereum Mainnet

Action 1

Action 2

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

Action 3

Action 4

Action 5

Action 6

Action 7

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

Action 8

Action 9

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

Optimism

Action 1

Action 2

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

Action 3

Action 4

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

BNB Chain

Action 1

Action 2

Action 3

Action 4

Action 5

Action 6

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

Action 7

Action 8

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

Arbitrum One

Action 1

Action 2

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

Action 3

Action 4

Action 5

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

Transaction in the Safe on Polygon contains 1 action:

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

Transaction in the Safe on Mainnet contains 9 actions:

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

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

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

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

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

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

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 .

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

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 .

Transaction in the Safe on Optimism contains 4 actions:

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

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

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 .

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 .

Transaction in the Safe on BNB Chain contains 8 actions:

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

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

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

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

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

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 .

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

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 .

Transaction in the Safe on Arbitrum contains 5 actions:

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

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

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

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 .

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 .

Inventory LPs validity can be verified using the following simulation test -

πŸ§‘β€πŸ€β€πŸ§‘
Polygon
Ethereum Mainnet
Optimism
BNB Smart Chain
Arbitrum One
#27
0x25E6505297b44f4817538fB2d91b88e1cF841B54
0xB0B195aEFA3650A6908f15CdaC7D92F8a5791B0B
#11
0x15729Ac1795Fa02448a55D206005dC1914144a9F
0xB0B195aEFA3650A6908f15CdaC7D92F8a5791B0B
0xd4a3D9Ca00fa1fD8833D560F9217458E61c446d8
0xB0B195aEFA3650A6908f15CdaC7D92F8a5791B0B
0x2B1c7b41f6A8F2b2bc45C3233a5d5FB3cD6dC9A8
0xB0B195aEFA3650A6908f15CdaC7D92F8a5791B0B
0x2B1c7b41f6A8F2b2bc45C3233a5d5FB3cD6dC9A8
0xdAC17F958D2ee523a2206206994597C13D831ec7
0x2B1c7b41f6A8F2b2bc45C3233a5d5FB3cD6dC9A8
0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48
0x2B1c7b41f6A8F2b2bc45C3233a5d5FB3cD6dC9A8
0x2B1c7b41f6A8F2b2bc45C3233a5d5FB3cD6dC9A8
0x2B1c7b41f6A8F2b2bc45C3233a5d5FB3cD6dC9A8
0x2B1c7b41f6A8F2b2bc45C3233a5d5FB3cD6dC9A8
#5
0x8aEb89D5C689C2cf373Fe8b56c7A0cD5BDc74CE6
0xB0B195aEFA3650A6908f15CdaC7D92F8a5791B0B
0x14fc6a1a996A2EB889cF86e5c8cD17323bC85290
0xB0B195aEFA3650A6908f15CdaC7D92F8a5791B0B
0xC36442b4a4522E871399CD717aBDD847Ab11FE88
0xC36442b4a4522E871399CD717aBDD847Ab11FE88
#7
0x61a57F1C82DA40e632C075D7812Af375Db23367c
0xB0B195aEFA3650A6908f15CdaC7D92F8a5791B0B
0xd4a3D9Ca00fa1fD8833D560F9217458E61c446d8
0xB0B195aEFA3650A6908f15CdaC7D92F8a5791B0B
0x2B1c7b41f6A8F2b2bc45C3233a5d5FB3cD6dC9A8
0x55d398326f99059fF775485246999027B3197955
0x2B1c7b41f6A8F2b2bc45C3233a5d5FB3cD6dC9A8
0x8AC76a51cc950d9822D68b83fE1Ad97B32Cd580d
0x2B1c7b41f6A8F2b2bc45C3233a5d5FB3cD6dC9A8
0x2B1c7b41f6A8F2b2bc45C3233a5d5FB3cD6dC9A8
0x2B1c7b41f6A8F2b2bc45C3233a5d5FB3cD6dC9A8
0x2B1c7b41f6A8F2b2bc45C3233a5d5FB3cD6dC9A8
#1
0x72e6B59D4a90ab232e55D4BB7ed2dD17494D62fB
0xB0B195aEFA3650A6908f15CdaC7D92F8a5791B0B
0xd4a3D9Ca00fa1fD8833D560F9217458E61c446d8
0xB0B195aEFA3650A6908f15CdaC7D92F8a5791B0B
0xC36442b4a4522E871399CD717aBDD847Ab11FE88
0xB0B195aEFA3650A6908f15CdaC7D92F8a5791B0B
0xC36442b4a4522E871399CD717aBDD847Ab11FE88
0xC36442b4a4522E871399CD717aBDD847Ab11FE88
https://gist.github.com/k1rill-fedoseev/c7ca38a4a0a1d1980c905e430fa86685