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 objective
  • Proposal details
  • Proposal breakdown
  • Optimism
  • Additional verification
  • Timelock operations simulation
  1. BOB DAO
  2. Governance
  3. Protocol Governance

GP 11: Add 24 hour timelock to BOB contract on Optimism

PreviousGP 10: Reallocate previous Kyberswap inventoryNextGP 12: Raise Polygon limits

Last updated 1 year ago

The proposal has been confirmed and executed:

  • Optimism Safe

  • Optimism tx:

Proposal objective

With the addition of zkBob on Optimism and increased BOB usage, this proposal enacts a 24 hour timelock for all admin and owner controlled actions on the BOB token contract on Optimism.

A timelock provides additional security and transparency, and serves to increase confidence for third-party applications looking to integrate BOB.

Timelock-bound actions include:

  1. Token contract upgradeability

  2. Token ownership transfer

  3. Addition/removal of additional/existing token minters

  4. Updating recovery/blocklist admins

Proposal details

The OpenZeppelin Timelock contract implementation is proposed for this integration.

  • The only address allowed to submit delayed proposals is the BOB Governance Multisig on Optimism.

  • The only address allowed to execute delayed proposals following the timelock is the BOB Deployer EOA.

  • The minimum enforced delay in the timelock contract is set to 24 hours.

  • The BOB protocol governance body is capable of changing the above configuration at any time, however any change is also subject to the existing timelock restrictions since the only admin of the timelock contract is the contract itself.

Proposal breakdown

Optimism

Action 1

Action 2

Additional verification

Timelock contract settings

1) Check the role id hashes. Go to the hasRole function and check the following.

Timelock operations simulation

The transaction in the Safe on Optimism contains 2 actions:

Transfer proxy ownership and upgradeability rights on the BOB token contract to the timelock contracts

The action is executed by calling setAdmin on the BOB token contract

Transfer token ownership rights on the BOB token contract to the Timelock contracts

The action is executed by calling transferOwnership (the method selector is 0xf2fde38b) on the BOB token contract

execute the following requests:

2) Check that the Timelock contract [] has the admin role.

3) Check that BOB Governance Multisig on Optimism [] has the proposer and canceler roles

4) Check that BOB Deployer EOA [] has the executor role.

Governance operations with the contracts can be verified using the following script -

πŸ§‘β€πŸ€β€πŸ§‘
transaction #7
https://optimistic.etherscan.io/tx/0x0e70266852b15c465990068b96ab90daf37adb02eeaa6cffd7c99b5342a0d5b6
https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/governance/TimelockController.sol
0x14fc6a1a996A2EB889cF86e5c8cD17323bC85290
0x39f0bd56c1439a22ee90b4972c16b7868d161981
#7
0xbe7D4E55D80fC3e67D80ebf988eB0E551cCA4eB7
0xB0B195aEFA3650A6908f15CdaC7D92F8a5791B0B
0xbe7D4E55D80fC3e67D80ebf988eB0E551cCA4eB7
0xB0B195aEFA3650A6908f15CdaC7D92F8a5791B0B
In the β€œRead Contract” view on Etherscan
0xbe7D4E55D80fC3e67D80ebf988eB0E551cCA4eB7
0x14fc6a1a996A2EB889cF86e5c8cD17323bC85290
0x39f0bd56c1439a22ee90b4972c16b7868d161981
https://gist.github.com/k1rill-fedoseev/931f56f89c5bca1cbfada30c8d074220