V1 Smart Contract Documentation
  • Bondtroller
    • Bondtroller
    • Bondtroller V 1 Storage
    • Bondtroller V 2 Storage
    • Bondtroller V 3 Storage
    • Bondtroller V 4 Storage
    • Bondtroller V 5 Storage
  • B Token
    • B Erc 20
    • B Erc 20 Interface
    • B Erc 20 Storage
    • B Ether
    • B Lending Token
    • B Token
    • B Token Interface
    • B Token Storage
  • Interest Rate Model
    • Base Jump Rate Model V 2
    • Fringe Interest Rate Model
    • Interest Rate Model
    • Jump Rate Model V 2
  • Interfaces
    • EIP 20 Interface
    • EIP 20 Non Standard Interface
    • IB Erc 20 Token
    • IB Lending Token
    • IB Primary Index Token
    • I Comptroller
    • I Price Provider Aggregator
    • I Primary Index Token
    • IPRJ
    • I Simple Price Oracle
    • IUSDC Test
  • Mock
    • PRJ
  • Openzeppelin
    • Contracts
      • Access
        • Access Control
        • Access Control Enumerable
        • I Access Control
        • I Access Control Enumerable
        • Ownable
      • Finance
        • Payment Splitter
      • Governance
        • Compatibility
          • Governor Compatibility Bravo
          • I Governor Compatibility Bravo
        • Extensions
          • Governor Counting Simple
          • Governor Proposal Threshold
          • Governor Timelock Compound
          • Governor Timelock Control
          • Governor Votes
          • Governor Votes Comp
          • Governor Votes Quorum Fraction
          • I Compound Timelock
          • I Governor Timelock
        • Governor
        • I Governor
        • Timelock Controller
      • Interfaces
        • IERC 1271
        • IERC 1363
        • IERC 1363 Receiver
        • IERC 1363 Spender
        • IERC 2612
        • IERC 2981
        • IERC 3156 Flash Borrower
        • IERC 3156 Flash Lender
      • Metatx
        • ERC 2771 Context
        • Minimal Forwarder
      • Proxy
        • Beacon
          • Beacon Proxy
          • I Beacon
          • Upgradeable Beacon
        • ERC 1967
          • ERC 1967 Proxy
          • ERC 1967 Upgrade
        • Transparent
          • Proxy Admin
          • Transparent Upgradeable Proxy
        • Utils
          • Initializable
          • UUPS Upgradeable
        • Clones
        • Proxy
      • Security
        • Pausable
        • Pull Payment
        • Reentrancy Guard
      • Token
        • ERC 1155
          • Extensions
            • ERC 1155 Burnable
            • ERC 1155 Pausable
            • ERC 1155 Supply
            • IERC 1155 Metadata URI
          • Presets
            • ERC 1155 Preset Minter Pauser
          • Utils
            • ERC 1155 Holder
            • ERC 1155 Receiver
          • IERC 1155
          • IERC 1155 Receiver
        • ERC 20
          • Extensions
            • ERC 20 Burnable
            • ERC 20 Capped
            • ERC 20 Flash Mint
            • ERC 20 Pausable
            • ERC 20 Permit
            • ERC 20 Snapshot
            • ERC 20 Votes
            • ERC 20 Votes Comp
            • ERC 20 Wrapper
            • IERC 20 Metadata
            • IERC 20 Permit
          • Presets
            • ERC 20 Preset Fixed Supply
            • ERC 20 Preset Minter Pauser
          • Utils
            • Safe ERC 20
            • Token Timelock
          • IERC 20
        • ERC 721
          • Extensions
            • ERC 721 Burnable
            • ERC 721 Enumerable
            • ERC 721 Pausable
            • ERC 721 URI Storage
            • IERC 721 Enumerable
            • IERC 721 Metadata
          • Presets
            • ERC 721 Preset Minter Pauser Auto Id
          • Utils
            • ERC 721 Holder
          • IERC 721
          • IERC 721 Receiver
        • ERC 777
          • Presets
            • ERC 777 Preset Fixed Supply
          • IERC 777
          • IERC 777 Recipient
          • IERC 777 Sender
      • Utils
        • Cryptography
          • ECDSA
          • EIP 712
          • Merkle Proof
          • Signature Checker
        • Escrow
          • Conditional Escrow
          • Escrow
          • Refund Escrow
        • Introspection
          • ERC 165
          • ERC 165 Checker
          • ERC 165 Storage
          • ERC 1820 Implementer
          • IERC 165
          • IERC 1820 Implementer
          • IERC 1820 Registry
        • Math
          • Math
          • Safe Cast
          • Safe Math
          • Signed Safe Math
        • Structs
          • Bit Maps
          • Enumerable Map
          • Enumerable Set
        • Address
        • Arrays
        • Context
        • Counters
        • Create 2
        • Multicall
        • Storage Slot
        • Strings
        • Timers
    • Contracts Upgradeable
      • Access
        • Access Control Enumerable Upgradeable
        • Access Control Upgradeable
        • I Access Control Enumerable Upgradeable
        • I Access Control Upgradeable
        • Ownable Upgradeable
      • Finance
        • Payment Splitter Upgradeable
      • Governance
        • Compatibility
          • Governor Compatibility Bravo Upgradeable
          • I Governor Compatibility Bravo Upgradeable
        • Extensions
          • Governor Counting Simple Upgradeable
          • Governor Proposal Threshold Upgradeable
          • Governor Timelock Compound Upgradeable
          • Governor Timelock Control Upgradeable
          • Governor Votes Comp Upgradeable
          • Governor Votes Quorum Fraction Upgradeable
          • Governor Votes Upgradeable
          • I Compound Timelock Upgradeable
          • I Governor Timelock Upgradeable
        • Governor Upgradeable
        • I Governor Upgradeable
        • Timelock Controller Upgradeable
      • Interfaces
        • IERC 1271 Upgradeable
        • IERC 1363 Receiver Upgradeable
        • IERC 1363 Spender Upgradeable
        • IERC 1363 Upgradeable
        • IERC 2612 Upgradeable
        • IERC 2981 Upgradeable
        • IERC 3156 Flash Borrower Upgradeable
        • IERC 3156 Flash Lender Upgradeable
      • Metatx
        • ERC 2771 Context Upgradeable
        • Minimal Forwarder Upgradeable
      • Proxy
        • Beacon
          • I Beacon Upgradeable
        • ERC 1967
          • ERC 1967 Upgrade Upgradeable
        • Utils
          • Initializable
          • UUPS Upgradeable
        • Clones Upgradeable
      • Security
        • Pausable Upgradeable
        • Pull Payment Upgradeable
        • Reentrancy Guard Upgradeable
      • Token
        • ERC 1155
          • Extensions
            • ERC 1155 Burnable Upgradeable
            • ERC 1155 Pausable Upgradeable
            • ERC 1155 Supply Upgradeable
            • IERC 1155 Metadata URI Upgradeable
          • Presets
            • ERC 1155 Preset Minter Pauser Upgradeable
          • Utils
            • ERC 1155 Holder Upgradeable
            • ERC 1155 Receiver Upgradeable
          • ERC 1155 Upgradeable
          • IERC 1155 Receiver Upgradeable
          • IERC 1155 Upgradeable
        • ERC 20
          • Extensions
            • ERC 20 Burnable Upgradeable
            • ERC 20 Capped Upgradeable
            • ERC 20 Flash Mint Upgradeable
            • ERC 20 Pausable Upgradeable
            • ERC 20 Permit Upgradeable
            • ERC 20 Snapshot Upgradeable
            • ERC 20 Votes Comp Upgradeable
            • ERC 20 Votes Upgradeable
            • ERC 20 Wrapper Upgradeable
            • IERC 20 Metadata Upgradeable
            • IERC 20 Permit Upgradeable
          • Presets
            • ERC 20 Preset Fixed Supply Upgradeable
            • ERC 20 Preset Minter Pauser Upgradeable
          • Utils
            • Safe ERC 20 Upgradeable
            • Token Timelock Upgradeable
          • ERC 20 Upgradeable
          • IERC 20 Upgradeable
        • ERC 721
          • Extensions
            • ERC 721 Burnable Upgradeable
            • ERC 721 Enumerable Upgradeable
            • ERC 721 Pausable Upgradeable
            • ERC 721 URI Storage Upgradeable
            • IERC 721 Enumerable Upgradeable
            • IERC 721 Metadata Upgradeable
          • Presets
            • ERC 721 Preset Minter Pauser Auto Id Upgradeable
          • Utils
            • ERC 721 Holder Upgradeable
          • ERC 721 Upgradeable
          • IERC 721 Receiver Upgradeable
          • IERC 721 Upgradeable
        • ERC 777
          • Presets
            • ERC 777 Preset Fixed Supply Upgradeable
          • ERC 777 Upgradeable
          • IERC 777 Recipient Upgradeable
          • IERC 777 Sender Upgradeable
          • IERC 777 Upgradeable
      • Utils
        • Cryptography
          • ECDSA Upgradeable
          • EIP 712 Upgradeable
          • Merkle Proof Upgradeable
          • Signature Checker Upgradeable
        • Escrow
          • Conditional Escrow Upgradeable
          • Escrow Upgradeable
          • Refund Escrow Upgradeable
        • Introspection
          • ERC 165 Checker Upgradeable
          • ERC 165 Storage Upgradeable
          • ERC 165 Upgradeable
          • ERC 1820 Implementer Upgradeable
          • IERC 165 Upgradeable
          • IERC 1820 Implementer Upgradeable
          • IERC 1820 Registry Upgradeable
        • Math
          • Math Upgradeable
          • Safe Cast Upgradeable
          • Safe Math Upgradeable
          • Signed Safe Math Upgradeable
        • Structs
          • Bit Maps Upgradeable
          • Enumerable Map Upgradeable
          • Enumerable Set Upgradeable
        • Address Upgradeable
        • Arrays Upgradeable
        • Context Upgradeable
        • Counters Upgradeable
        • Create 2 Upgradeable
        • Multicall Upgradeable
        • Storage Slot Upgradeable
        • Strings Upgradeable
        • Timers Upgradeable
  • Price Oracle
    • Priceproviders
      • Chainlink
        • Aggregator V 3 Interface
      • Uniswap V 2
        • I Uniswap V 2 Factory
        • I Uniswap V 2 Pair
        • I Uniswap V 2 Router 02
        • Safe Math
        • Uniswap V 2 Library
      • Backend Price Provider
      • Chainlink Price Provider
      • Price Provider
      • Uniswap V 2 Price Provider
    • Price Provider Aggregator
  • Util
    • Bondtroller Error Reporter
    • Careful Math
    • Exponential
    • Exponential No Error
    • Token Error Reporter
  • Console
  • Index
  • Primary Index Token
  • Primary Lending Platform Proxy Admin
Powered by GitBook
On this page
  • Methods
  • admin
  • changeAdmin
  • implementation
  • upgradeTo
  • upgradeToAndCall
  • Events
  • AdminChanged
  • BeaconUpgraded
  • Upgraded
  1. Openzeppelin
  2. Contracts
  3. Proxy
  4. Transparent

Transparent Upgradeable Proxy

This contract implements a proxy that is upgradeable by an admin. To avoid https://medium.com/nomic-labs-blog/malicious-backdoors-in-ethereum-proxies-62629adf3357[proxy selector clashing], which can potentially be used in an attack, this contract uses the https://blog.openzeppelin.com/the-transparent-proxy-pattern/[transparent proxy pattern]. This pattern implies two things that go hand in hand: 1. If any account other than the admin calls the proxy, the call will be forwarded to the implementation, even if that call matches one of the admin functions exposed by the proxy itself. 2. If the admin calls the proxy, it can access the admin functions, but its calls will never be forwarded to the implementation. If the admin tries to call a function on the implementation it will fail with an error that says "admin cannot fallback to proxy target". These properties mean that the admin account can only be used for admin actions like upgrading the proxy or changing the admin, so it's best if it's a dedicated account that is not used for anything else. This will avoid headaches due to sudden errors when trying to call a function from the proxy implementation. Our recommendation is for the dedicated account to be an instance of the {ProxyAdmin} contract. If set up this way, you should think of the ProxyAdmin instance as the real administrative interface of your proxy.

Methods

admin

function admin() external nonpayable returns (address admin_)

Returns the current admin. NOTE: Only the admin can call this function. See {ProxyAdmin-getProxyAdmin}. TIP: To get this value clients can read directly from the storage slot shown below (specified by EIP1967) using the https://eth.wiki/json-rpc/API#eth_getstorageat[eth_getStorageAt] RPC call. 0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103

Returns

Name
Type
Description

admin_

address

undefined

changeAdmin

function changeAdmin(address newAdmin) external nonpayable

Changes the admin of the proxy. Emits an {AdminChanged} event. NOTE: Only the admin can call this function. See {ProxyAdmin-changeProxyAdmin}.

Parameters

Name
Type
Description

newAdmin

address

undefined

implementation

function implementation() external nonpayable returns (address implementation_)

Returns the current implementation. NOTE: Only the admin can call this function. See {ProxyAdmin-getProxyImplementation}. TIP: To get this value clients can read directly from the storage slot shown below (specified by EIP1967) using the https://eth.wiki/json-rpc/API#eth_getstorageat[eth_getStorageAt] RPC call. 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc

Returns

Name
Type
Description

implementation_

address

undefined

upgradeTo

function upgradeTo(address newImplementation) external nonpayable

Upgrade the implementation of the proxy. NOTE: Only the admin can call this function. See {ProxyAdmin-upgrade}.

Parameters

Name
Type
Description

newImplementation

address

undefined

upgradeToAndCall

function upgradeToAndCall(address newImplementation, bytes data) external payable

Upgrade the implementation of the proxy, and then call a function from the new implementation as specified by data, which should be an encoded function call. This is useful to initialize new storage variables in the proxied contract. NOTE: Only the admin can call this function. See {ProxyAdmin-upgradeAndCall}.

Parameters

Name
Type
Description

newImplementation

address

undefined

data

bytes

undefined

Events

AdminChanged

event AdminChanged(address previousAdmin, address newAdmin)

Parameters

Name
Type
Description

previousAdmin

address

undefined

newAdmin

address

undefined

BeaconUpgraded

event BeaconUpgraded(address indexed beacon)

Parameters

Name
Type
Description

beacon indexed

address

undefined

Upgraded

event Upgraded(address indexed implementation)

Parameters

Name
Type
Description

implementation indexed

address

undefined

PreviousProxy AdminNextUtils

Last updated 3 years ago