3 txs
4 calls
constructor
constructor(address ctoken_, address underlying_, address chair_, address gov_)
functions
chair
viewfunction chair() view returns (address)
ctoken
viewfunction ctoken() view returns (address)
gov
viewfunction gov() view returns (address)
hasAllRoles
viewfunction hasAllRoles(address user, uint256 roles) view returns (bool)
hasAnyRole
viewfunction hasAnyRole(address user, uint256 roles) view returns (bool)
owner
viewfunction owner() view returns (address owner_)
ROLE_CHAIR
viewfunction ROLE_CHAIR() view returns (uint256)
ROLE_GOVERNOR
viewfunction ROLE_GOVERNOR() view returns (uint256)
rolesOf
viewfunction rolesOf(address user) view returns (uint256 roles)
supply
viewfunction supply() view returns (uint256)
supportsInterface
viewfunction supportsInterface(bytes4 interfaceId) view returns (bool)
underlying
viewfunction underlying() view returns (address)
contraction
nonpayablefunction contraction(uint256 amount)
expansion
nonpayablefunction expansion(uint256 amount)
grantRoles
nonpayablefunction grantRoles(address user, uint256 roles)
renounceRoles
nonpayablefunction renounceRoles(uint256 roles)
revokeAndAssignChair
nonpayablefunction revokeAndAssignChair(address newChair_)
revokeAndAssignGov
nonpayablefunction revokeAndAssignGov(address newGov_)
revokeChair
nonpayablefunction revokeChair()
revokeRoles
nonpayablefunction revokeRoles(address user, uint256 roles)
sweep
nonpayablefunction sweep(address token, uint256 amount)
takeProfit
nonpayablefunction takeProfit()
totalAssets
nonpayablefunction totalAssets() returns (uint256)
transferOwnership
nonpayablefunction transferOwnership(address confirmOwner)
events
Contraction
event Contraction(uint256 amount)
Expansion
event Expansion(uint256 amount)
OwnershipTransferred
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner)
RolesUpdated
event RolesUpdated(address indexed user, uint256 indexed roles)
errors
AlreadyInitialized
error AlreadyInitialized()
AmountTooLarge
error AmountTooLarge()
CannotCompleteTransfer
error CannotCompleteTransfer()
CannotSweepProtectedToken
error CannotSweepProtectedToken()
ChairAlreadySet
error ChairAlreadySet()
CTokenMintFailed
error CTokenMintFailed()
CTokenRedeemFailed
error CTokenRedeemFailed()
ReentrancyGuardReentrantCall
error ReentrancyGuardReentrantCall()
SafeERC20FailedOperation
error SafeERC20FailedOperation(address token)
Unauthorized
error Unauthorized()
ZeroAddressNotAllowed
error ZeroAddressNotAllowed()
creation bytecode
0x60c060405234801561000f575f80fd5b5060405161152638038061152683398101604081905261002e916103b9565b60015f556001600160a01b038116610059576040516342bcdf7f60e11b815260040160405180910390fd5b6001600160a01b038216610080576040516342bcdf7f60e11b815260040160405180910390fd5b6001600160a01b03808516608081905290841660a08190526100a3915f196100f9565b6100ac336101bd565b6100b78160016101fe565b6100c28260026101fe565b600280546001600160a01b039283166001600160a01b03199182161790915560018054939092169216919091179055506104159050565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b0390811663095ea7b360e01b17909152610151908590839061020e16565b6101b757604080516001600160a01b03851660248201525f6044808301919091528251808303909101815260649091019091526020810180516001600160e01b0390811663095ea7b360e01b179091526101ad91869161025716565b6101b78482610257565b50505050565b6101c56102c7565b42610e100160c01b81177f9839bd1b7d13bef2e7a66ce106fd5e418f9f8fee5da4e55d26c2c33ef0bf4800556101fb5f336102fd565b50565b61020a8282600161034e565b5050565b5f805f8060205f8651602088015f8a5af192503d91505f51905082801561024d5750811561023f578060011461024d565b5f866001600160a01b03163b115b9695505050505050565b5f8060205f8451602086015f885af180610276576040513d5f823e3d81fd5b50505f513d9150811561028d57806001141561029a565b6001600160a01b0384163b155b156101b757604051635274afe760e01b81526001600160a01b038516600482015260240160405180910390fd5b7f61e0b85c03e2cf9c545bde2fb12d0bf5dd6eaae0af8b6909bd36e40f78a6050054156102fb57630dc149f05f526004601cfd5b565b80827f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3801560ff1b177f61e0b85c03e2cf9c545bde2fb12d0bf5dd6eaae0af8b6909bd36e40f78a605005550565b638b78c6d8600c52825f526020600c2080548381178361036f575080841681185b80835580600c5160601c7f715ad5ce61fc9595c7b415289d59cf203f23a94fa06f04af7e489a0a76e1fe265f80a3505050505050565b6001600160a01b03811681146101fb575f80fd5b5f805f80608085870312156103cc575f80fd5b84516103d7816103a5565b60208601519094506103e8816103a5565b60408601519093506103f9816103a5565b606086015190925061040a816103a5565b939692955090935050565b60805160a05161109c61048a5f395f81816102e4015281816103a00152818161056c015281816107cb0152818161088c01528181610a990152610bdb01525f818161032701528181610426015281816105e5015281816108060152818161091f015281816109f80152610b35015261109c5ff3fe608060405234801561000f575f80fd5b5060043610610153575f3560e01c80633b588d49116100bf57806370c105781161007957806370c10578146103065780638da5cb5b1461030e578063ccf3eb9f14610322578063e1a611b714610349578063f2fde38b1461035c578063fdf893f51461036f575f80fd5b80633b588d49146102755780634a4ee7b11461027d578063514e62fc146102905780635c39a9ca146102b95780636ea056a9146102cc5780636f307dc3146102df575f80fd5b80631c10893f116101105780631c10893f146101e65780631cd64df4146101f95780632358f355146102225780632720b22e1461022a5780632de948071461023d5780632e3b59d214610262575f80fd5b806301e1d1141461015757806301ffc9a714610172578063047fc9aa1461019557806312d43a511461019e578063183a4f6e146101c95780631b038527146101de575b5f80fd5b61015f610382565b6040519081526020015b60405180910390f35b610185610180366004610f54565b6104b0565b6040519015158152602001610169565b61015f60035481565b6002546101b1906001600160a01b031681565b6040516001600160a01b039091168152602001610169565b6101dc6101d7366004610f82565b6104cf565b005b6101dc6104dc565b6101dc6101f4366004610fb4565b610511565b610185610207366004610fb4565b638b78c6d8600c9081525f9290925260209091205481161490565b61015f600181565b6101dc610238366004610f82565b610527565b61015f61024b366004610fdc565b638b78c6d8600c9081525f91909152602090205490565b6101dc610270366004610fdc565b6106b4565b61015f600281565b6101dc61028b366004610fb4565b61072b565b61018561029e366004610fb4565b638b78c6d8600c9081525f9290925260209091205416151590565b6101dc6102c7366004610fdc565b61073d565b6101dc6102da366004610fb4565b6107b4565b6101b17f000000000000000000000000000000000000000000000000000000000000000081565b6101dc61086d565b5f80516020611047833981519152546101b1565b6101b17f000000000000000000000000000000000000000000000000000000000000000081565b6101dc610357366004610f82565b610ad3565b6101dc61036a366004610fdc565b610c6b565b6001546101b1906001600160a01b031681565b5f61038b610d05565b6040516370a0823160e01b81523060048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906370a0823190602401602060405180830381865afa1580156103ed573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906104119190610ff5565b604051633af9e66960e01b81523060048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690633af9e669906024016020604051808303815f875af1158015610474573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906104989190610ff5565b6104a29190611020565b90506104ad60015f55565b90565b5f6104ba82610d2d565b806104c957506104c982610d61565b92915050565b6104d93382610d85565b50565b60026104e781610d90565b6001546104fe906001600160a01b03166002610d85565b50600180546001600160a01b0319169055565b610519610dc9565b6105238282610deb565b5050565b600261053281610d90565b61053a610d05565b8160035f82825461054b9190611020565b90915550506040516340c10f1960e01b8152306004820152602481018390527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906340c10f19906044015f604051808303815f87803b1580156105b5575f80fd5b505af11580156105c7573d5f803e3d5ffd5b50506040516319fda3eb60e21b8152600481018590525f60248201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031692506367f68fac91506044016020604051808303815f875af1158015610635573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106599190610ff5565b15610677576040516312dbd66360e21b815260040160405180910390fd5b6040518281527fdcc16fd18a808d877bcd9a09b544844b36ae8f0a4b222e317d7b777b2c18b032906020015b60405180910390a161052360015f55565b60016106bf81610d90565b6001600160a01b0382166106e6576040516342bcdf7f60e11b815260040160405180910390fd5b6001546106fd906001600160a01b03166002610d85565b610708826002610deb565b50600180546001600160a01b0319166001600160a01b0392909216919091179055565b610733610dc9565b6105238282610d85565b600161074881610d90565b6001600160a01b03821661076f576040516342bcdf7f60e11b815260040160405180910390fd5b600254610786906001600160a01b03166001610d85565b610791826001610deb565b50600280546001600160a01b0319166001600160a01b0392909216919091179055565b60016107bf81610d90565b826001600160a01b03167f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031614806108305750826001600160a01b03167f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316145b1561084e5760405163086034a360e01b815260040160405180910390fd5b600254610868906001600160a01b03858116911684610df7565b505050565b610875610d05565b6040516370a0823160e01b81523060048201525f907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906370a0823190602401602060405180830381865afa1580156108d9573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108fd9190610ff5565b604051633af9e66960e01b81523060048201529091505f906001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690633af9e669906024016020604051808303815f875af1158015610965573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906109899190610ff5565b90505f6109968383611020565b90505f60035482116109a8575f6109b5565b6003546109b59083611033565b90508015610ac4575f60035484116109cd575f6109da565b6003546109da9085611033565b90508015610a885760405163852a12e360e01b8152600481018290527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063852a12e3906024016020604051808303815f875af1158015610a46573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a6a9190610ff5565b15610a88576040516377b9c3f560e11b815260040160405180910390fd5b600254610ac2906001600160a01b037f00000000000000000000000000000000000000000000000000000000000000008116911684610df7565b505b50505050610ad160015f55565b565b6002610ade81610d90565b610ae6610d05565b600354821115610b0957604051630625040160e01b815260040160405180910390fd5b8160035f828254610b1a9190611033565b909155505060405163852a12e360e01b8152600481018390527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063852a12e3906024016020604051808303815f875af1158015610b83573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610ba79190610ff5565b15610bc5576040516377b9c3f560e11b815260040160405180910390fd5b604051630852cd8d60e31b8152600481018390527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906342966c68906024015f604051808303815f87803b158015610c24575f80fd5b505af1158015610c36573d5f803e3d5ffd5b505050507f32d275175c36fa468b3e61c6763f9488ff3c9be127e35e011cf4e04d602224ba826040516106a391815260200190565b5f8051602061104783398151915254338114610c8e576382b429005f526004601cfd5b7f9839bd1b7d13bef2e7a66ce106fd5e418f9f8fee5da4e55d26c2c33ef0bf4800546001600160a11b03811683141560c082901c42111715610cd757638cd65fff5f526004601cfd5b505f7f9839bd1b7d13bef2e7a66ce106fd5e418f9f8fee5da4e55d26c2c33ef0bf4800556105238183610e49565b60025f5403610d2757604051633ee5aeb560e01b815260040160405180910390fd5b60025f55565b5f6001600160e01b031982166307f5828d60e41b14806104c957506301ffc9a760e01b6001600160e01b03198316146104c9565b5f6001600160e01b03198216632e1546ef60e01b14806104c957506104c982610d2d565b61052382825f610e87565b5f805160206110478339815191525433146104d957638b78c6d8600c52335f52806020600c2054166104d9576382b429005f526004601cfd5b5f80516020611047833981519152543314610ad1576382b429005f526004601cfd5b61052382826001610e87565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b179052610868908490610ede565b80827f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3801560ff1b175f805160206110478339815191525550565b638b78c6d8600c52825f526020600c20805483811783610ea8575080841681185b80835580600c5160601c7f715ad5ce61fc9595c7b415289d59cf203f23a94fa06f04af7e489a0a76e1fe265f80a3505050505050565b5f8060205f8451602086015f885af180610efd576040513d5f823e3d81fd5b50505f513d91508115610f14578060011415610f21565b6001600160a01b0384163b155b15610f4e57604051635274afe760e01b81526001600160a01b038516600482015260240160405180910390fd5b50505050565b5f60208284031215610f64575f80fd5b81356001600160e01b031981168114610f7b575f80fd5b9392505050565b5f60208284031215610f92575f80fd5b5035919050565b80356001600160a01b0381168114610faf575f80fd5b919050565b5f8060408385031215610fc5575f80fd5b610fce83610f99565b946020939093013593505050565b5f60208284031215610fec575f80fd5b610f7b82610f99565b5f60208284031215611005575f80fd5b5051919050565b634e487b7160e01b5f52601160045260245ffd5b808201808211156104c9576104c961100c565b818103818111156104c9576104c961100c56fe61e0b85c03e2cf9c545bde2fb12d0bf5dd6eaae0af8b6909bd36e40f78a60500a2646970667358221220fc135a577dc6b54472f36b9886cb624dff4c21cfe64ca0a2aa7ce8bf07da90c764736f6c634300081a0033000000000000000000000000c2a343177bfd49d1cff9c84b848917f5d771bd7300000000000000000000000022d76e6e1d9ab4072522c1bc60c85a0d5626ca2d0000000000000000000000002f1567c4a651ed93db0fc6d9df1ea9196054f63e0000000000000000000000003dfc49e5112005179da613bde5973229082dac35