0 txs
7.7k calls
constructor
constructor(address _fxUSDBasePool, address _aaveLendingPool, address _aaveBaseAsset)
functions
AAVE_BASE_ASSET
viewfunction AAVE_BASE_ASSET() view returns (address)
AAVE_LENDING_POOL
viewfunction AAVE_LENDING_POOL() view returns (address)
borrowRateSnapshot
viewfunction borrowRateSnapshot() view returns (uint128 borrowIndex, uint80 lastInterestRate, uint48 timestamp)
DEFAULT_ADMIN_ROLE
viewfunction DEFAULT_ADMIN_ROLE() view returns (bytes32)
FXUSD_BASE_POOL
viewfunction FXUSD_BASE_POOL() view returns (address)
getAverageInterestRate
viewfunction getAverageInterestRate() view returns (uint256)
getLongPoolFundingRatio
viewfunction getLongPoolFundingRatio(address pool) view returns (uint256 fundingRatio)
getPoolFeeRatio
viewfunction getPoolFeeRatio(address pool, address recipient) view returns (uint256 supplyFeeRatio, uint256 withdrawFeeRatio, uint256 borrowFeeRatio, uint256 repayFeeRatio)
getRoleAdmin
viewfunction getRoleAdmin(bytes32 role) view returns (bytes32)
getShortPoolFundingRatio
viewfunction getShortPoolFundingRatio(address pool) view returns (uint256 fundingRatio)
hasRole
viewfunction hasRole(bytes32 role, address account) view returns (bool)
isBorrowAllowed
viewfunction isBorrowAllowed() view returns (bool)
isFundingEnabled
viewfunction isFundingEnabled() view returns (bool)
isRedeemAllowed
viewfunction isRedeemAllowed() view returns (bool)
isStableRepayAllowed
viewfunction isStableRepayAllowed() view returns (bool)
oracle
viewfunction oracle() view returns (address)
registry
viewfunction registry(bytes32) view returns (address)
stableDepegPrice
viewfunction stableDepegPrice() view returns (uint256)
supportsInterface
viewfunction supportsInterface(bytes4 interfaceId) view returns (bool)
checkpoint
nonpayablefunction checkpoint(address pool)
grantRole
nonpayablefunction grantRole(bytes32 role, address account)
initialize
nonpayablefunction initialize(address admin, address _oracle)
lock
nonpayablefunction lock(address manager, bytes4 selector)
register
nonpayablefunction register(bytes32 key, address addr)
renounceRole
nonpayablefunction renounceRole(bytes32 role, address callerConfirmation)
revokeRole
nonpayablefunction revokeRole(bytes32 role, address account)
updateLongFundingRatioParameter
nonpayablefunction updateLongFundingRatioParameter(address pool, uint64 scalarA, uint64 scalarB, uint64 maxFxUSDratio)
updateOracle
nonpayablefunction updateOracle(address newOracle)
updatePoolFeeRatio
nonpayablefunction updatePoolFeeRatio(address pool, address recipient, uint256 supplyRatio, uint256 supplyRatioStep, uint256 withdrawFeeRatio, uint256 borrowFeeRatio, uint256 repayFeeRatio)
updateShortFundingRatioParameter
nonpayablefunction updateShortFundingRatioParameter(address pool, uint64 scalarC, uint64 maxBorrowRatio)
updateStableDepegPrice
nonpayablefunction updateStableDepegPrice(uint256 newStableDepegPrice)
events
Initialized
event Initialized(uint64 version)
Register
event Register(bytes32 key, address addr)
RoleAdminChanged
event RoleAdminChanged(bytes32 indexed role, bytes32 indexed previousAdminRole, bytes32 indexed newAdminRole)
RoleGranted
event RoleGranted(bytes32 indexed role, address indexed account, address indexed sender)
RoleRevoked
event RoleRevoked(bytes32 indexed role, address indexed account, address indexed sender)
Snapshot
event Snapshot(uint256 borrowIndex, uint256 lastInterestRate, uint256 timestamp)
UpdateLongFundingRatioParameter
event UpdateLongFundingRatioParameter(uint64 scalarA, uint64 scalarB, uint64 maxFxUSDRatio)
UpdateOracle
event UpdateOracle(address indexed oldOracle, address indexed newOracle)
UpdatePoolFeeRatio
event UpdatePoolFeeRatio(address indexed pool, address indexed recipient, uint256 supplyRatio, uint256 supplyRatioStep, uint256 withdrawFeeRatio, uint256 borrowFeeRatio, uint256 repayFeeRatio)
UpdateShortFundingRatioParameter
event UpdateShortFundingRatioParameter(uint64 scalarC, uint64 maxBorrowRatio)
UpdateStableDepegPrice
event UpdateStableDepegPrice(uint256 oldStableDepegPrice, uint256 newStableDepegPrice)
errors
AccessControlBadConfirmation
error AccessControlBadConfirmation()
AccessControlUnauthorizedAccount
error AccessControlUnauthorizedAccount(address account, bytes32 neededRole)
ErrorInvalidPool
error ErrorInvalidPool()
ErrorPoolManagerLocked
error ErrorPoolManagerLocked()
ErrorValueTooLarge
error ErrorValueTooLarge()
InvalidInitialization
error InvalidInitialization()
NotInitializing
error NotInitializing()
creation bytecode
0x60e060405234801561000f575f80fd5b5060405161215838038061215883398101604081905261002e91610066565b6001600160a01b0392831660c0529082166080521660a0526100a6565b80516001600160a01b0381168114610061575f80fd5b919050565b5f805f60608486031215610078575f80fd5b6100818461004b565b925061008f6020850161004b565b915061009d6040850161004b565b90509250925092565b60805160a05160c05161203b61011d5f395f818161029c01528181610cad0152818161143101526114b401525f8181610494015281816108620152818161090e01528181610e8201526116e101525f818161036f0152818161088c0152818161093b01528181610eac0152611717015261203b5ff3fe608060405234801561000f575f80fd5b50600436106101dc575f3560e01c8063880acd8511610109578063c00c2ceb1161009e578063d547741f1161006e578063d547741f1461047c578063de605cb01461048f578063eacb05f0146104b6578063fc4dfea3146104c9575f80fd5b8063c00c2ceb14610315578063cc411cb114610443578063cfb5d96214610456578063d22057a914610469575f80fd5b8063a217fddf116100d9578063a217fddf146103ac578063a972985e146103b3578063a9cc2e3b146103c6578063b8db1a8714610430575f80fd5b8063880acd85146103575780638b56046b1461036a57806391d14854146103915780639db4a553146103a4575f80fd5b806336568abe1161017f578063611e996d1161014f578063611e996d1461030c57806370d00a58146103155780637dc0d1d01461031d5780637ef502981461032f575f80fd5b806336568abe146102d65780633be9c77e146102e9578063485cc955146102f157806349aa2e8114610304575f80fd5b8063248a9ca3116101ba578063248a9ca3146102505780632f2ff15d146102715780632ffd2fcc1461028457806334f5cd4014610297575f80fd5b806301ffc9a7146101e05780631a4a400f146102085780631cb44dfc1461023b575b5f80fd5b6101f36101ee366004611b01565b6104dc565b60405190151581526020015b60405180910390f35b61021b610216366004611b35565b610512565b6040805194855260208501939093529183015260608201526080016101ff565b61024e610249366004611b6c565b610637565b005b61026361025e366004611b87565b61064e565b6040519081526020016101ff565b61024e61027f366004611b9e565b61066e565b61024e610292366004611bc1565b610690565b6102be7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020016101ff565b61024e6102e4366004611b9e565b6106dc565b610263610714565b61024e6102ff366004611b35565b610768565b6101f3610a1e565b61026360055481565b6101f3610a98565b5f546102be906001600160a01b031681565b6102be61033d366004611b87565b60066020525f90815260409020546001600160a01b031681565b61024e610365366004611bf4565b610b0c565b6102be7f000000000000000000000000000000000000000000000000000000000000000081565b6101f361039f366004611b9e565b610c73565b6101f3610ca9565b6102635f81565b61024e6103c1366004611b6c565b610db2565b6001546103fb906001600160801b03811690600160801b81046001600160501b031690600160d01b900465ffffffffffff1683565b604080516001600160801b0390941684526001600160501b03909216602084015265ffffffffffff16908201526060016101ff565b61024e61043e366004611b87565b610f5b565b610263610451366004611b6c565b610fac565b61024e610464366004611c68565b6111cc565b61024e610477366004611b9e565b611273565b61024e61048a366004611b9e565b6112db565b6102be7f000000000000000000000000000000000000000000000000000000000000000081565b6102636104c4366004611b6c565b6112f7565b61024e6104d7366004611caa565b6115aa565b5f6001600160e01b03198216637965db0b60e01b148061050c57506301ffc9a760e01b6001600160e01b03198316145b92915050565b6001600160a01b038083165f908152600260209081526040808320938516835260019093019052908120548190819081908061056257506001600160a01b0386165f908152600260205260409020545b5f61056f8282601e61167f565b90505f61057f83601e603c61167f565b604080516060810182526001546001600160801b0381168252600160801b81046001600160501b03166020830152600160d01b900465ffffffffffff16918101919091529091505f906105d19061168d565b90505f828211156105f4578260018303816105ee576105ee611cfd565b046105f7565b60015b8402985061060a905084605a601e61167f565b9650610619846078601e61167f565b9550610628846096601e61167f565b94505050505092959194509250565b5f610641816117b2565b61064a826117bf565b5050565b5f9081525f80516020611fe6833981519152602052604090206001015490565b6106778261064e565b610680816117b2565b61068a838361180e565b50505050565b7fad737a4678f5f4b2027036ab91c756d4c18765c7472310edcc1ee65d52d8e9ac805c80156106d2576040516386e4722b60e01b815260040160405180910390fd5b6001825d50505050565b6001600160a01b03811633146107055760405163334bd91960e11b815260040160405180910390fd5b61070f82826118af565b505050565b604080516060810182526001546001600160801b0381168252600160801b81046001600160501b03166020830152600160d01b900465ffffffffffff16918101919091525f906107639061168d565b905090565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a008054600160401b810460ff16159067ffffffffffffffff165f811580156107ad5750825b90505f8267ffffffffffffffff1660011480156107c95750303b155b9050811580156107d7575080155b156107f55760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff19166001178555831561081f57845460ff60401b1916600160401b1785555b610827611928565b61082f611928565b610837611928565b6108415f8861180e565b5061084b866117bf565b60405163386497fd60e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000811660048301525f917f00000000000000000000000000000000000000000000000000000000000000009091169063386497fd90602401602060405180830381865afa1580156108d3573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108f79190611d11565b6040516335ea6a7560e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000811660048301529192505f917f000000000000000000000000000000000000000000000000000000000000000016906335ea6a75906024016101e060405180830381865afa158015610981573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906109a59190611df0565b90506109cd82633b9aca0083608001516109bf9190611f2e565b6001600160801b0316611932565b50508315610a1557845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50505050505050565b5f805f9054906101000a90046001600160a01b03166001600160a01b031663118dd2ee6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610a6e573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a929190611f5b565b15905090565b5f805f9054906101000a90046001600160a01b03166001600160a01b031663118dd2ee6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610ae8573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906107639190611f5b565b5f610b16816117b2565b610b2486633b9aca006119e2565b610b3685670de0b6b3a76400006119e2565b610b4484633b9aca006119e2565b610b5283633b9aca006119e2565b610b6082633b9aca006119e2565b5f610b6e818881601e611a03565b9050610b7e8187601e603c611a03565b9050610b8e8186605a601e611a03565b9050610b9e81856078601e611a03565b9050610bae81846096601e611a03565b90506001600160a01b038816610bdd576001600160a01b0389165f908152600260205260409020819055610c09565b6001600160a01b03808a165f908152600260209081526040808320938c16835260019093019052208190555b604080518881526020810188905290810186905260608101859052608081018490526001600160a01b03808a1691908b16907f0292aba168507c37684be6c4a54903fdb6b6ab982381c820685829a5edee37519060a00160405180910390a3505050505050505050565b5f9182525f80516020611fe6833981519152602090815260408084206001600160a01b0393909316845291905290205460ff1690565b5f807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663ec1b7aaf6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610d07573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610d2b9190611d11565b90505f8054906101000a90046001600160a01b03166001600160a01b031663217394936040518163ffffffff1660e01b8152600401602060405180830381865afa158015610d7b573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610d9f9190611f5b565b8015610dac575060055481115b91505090565b6001600160a01b0381163314610ddb576040516325da39f560e21b815260040160405180910390fd5b6001600160a01b0381165f90815260026020526040902054610e10576040516325da39f560e21b815260040160405180910390fd5b604080516060810182526001546001600160801b0381168252600160801b81046001600160501b03166020830152600160d01b900465ffffffffffff16918101829052905f90610e609042611f7a565b9050610708811061070f5760405163386497fd60e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000811660048301525f917f00000000000000000000000000000000000000000000000000000000000000009091169063386497fd90602401602060405180830381865afa158015610ef3573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610f179190611d11565b90505f610f31845f01516001600160801b03168385611a17565b9050805f03610f4a575060208301516001600160501b03165b610f548282611932565b5050505050565b5f610f65816117b2565b600580549083905560408051828152602081018590527feac7023ae609c794cfd0ae7f6b40da66992748189b39c8a75db6a4f620cd910791015b60405180910390a1505050565b6001600160a01b0381165f9081526004602052604080822054908290610fd5908390839061167f565b90505f610fe48360408061167f565b604080516060810182526001546001600160801b0381168252600160801b81046001600160501b03166020830152600160d01b900465ffffffffffff16918101919091529091505f906110369061168d565b90505f866001600160a01b031663c3df65466040518163ffffffff1660e01b8152600401602060405180830381865afa158015611075573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906110999190611f8d565b90505f816001600160a01b031663ee65a03c6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156110d8573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906110fc9190611d11565b90505f886001600160a01b031663f9d45fd26040518163ffffffff1660e01b8152600401602060405180830381865afa15801561113b573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061115f9190611d11565b90505f825f0361117057505f611190565b82611183670de0b6b3a764000084611fa8565b61118d9190611fbf565b90505b8581106111bb57670de0b6b3a76400006111aa8689611fa8565b6111b49190611fbf565b98506111bf565b5f98505b5050505050505050919050565b5f6111d6816117b2565b5f6111ee8167ffffffffffffffff8616816040611a03565b90506112078167ffffffffffffffff8516604080611a03565b6001600160a01b0386165f90815260046020908152604091829020839055815167ffffffffffffffff80891682528716918101919091529192507fd910f71f2bb777ab2e5d948413e61399e6b296bc137019d736a31bae2faca2c6910160405180910390a15050505050565b5f61127d816117b2565b5f8381526006602090815260409182902080546001600160a01b0319166001600160a01b0386169081179091558251868152918201527f1082cda15f9606da555bb7e9bf4eeee2f8e34abe85d3924bf9bacb716f8feca69101610f9f565b6112e48261064e565b6112ed816117b2565b61068a83836118af565b6001600160a01b0381165f9081526003602052604080822054908290611320908390839061167f565b90505f61132f8360408061167f565b90505f61133f846080604061167f565b604080516060810182526001546001600160801b0381168252600160801b81046001600160501b03166020830152600160d01b900465ffffffffffff16918101919091529091505f906113919061168d565b90505f8054906101000a90046001600160a01b03166001600160a01b031663118dd2ee6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156113e1573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906114059190611f5b565b1561142e57670de0b6b3a764000061141d8285611fa8565b6114279190611fbf565b95506115a0565b5f7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166365d2cb086040518163ffffffff1660e01b8152600401602060405180830381865afa15801561148b573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906114af9190611d11565b90505f7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316639ff390386040518163ffffffff1660e01b8152600401602060405180830381865afa15801561150e573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906115329190611d11565b90505f81158015611541575082155b1561154d575083611586565b8261155d8364e8d4a51000611fa8565b6115679190611fd2565b611579670de0b6b3a764000085611fa8565b6115839190611fbf565b90505b8481106111bb57670de0b6b3a76400006111aa8589611fa8565b5050505050919050565b5f6115b4816117b2565b5f6115cc8167ffffffffffffffff8716816040611a03565b90506115e58167ffffffffffffffff8616604080611a03565b90506115ff8167ffffffffffffffff851660806040611a03565b6001600160a01b0387165f9081526003602052604090819020829055519091507f08ffe4951267c95832927e1921bd2f1579b9448cfd2c9c84aafaf9b6b36670a49061166f9087908790879067ffffffffffffffff93841681529183166020830152909116604082015260600190565b60405180910390a1505050505050565b6001901b5f190191901c1690565b5f80826040015165ffffffffffff16426116a79190611f7a565b90506107088110156116c85782602001516001600160501b031691506117ac565b825160405163386497fd60e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000811660048301526001600160801b03909216915f917f00000000000000000000000000000000000000000000000000000000000000009091169063386497fd90602401602060405180830381865afa15801561175e573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906117829190611d11565b905061178f828285611a17565b9350835f036117a95784602001516001600160501b031693505b50505b50919050565b6117bc8133611a5f565b50565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917fb1d1442dba579887e297ac433e5716c847abf2dc052ee9de4869b7b1b8f6206d9190a35050565b5f5f80516020611fe68339815191526118278484610c73565b6118a6575f848152602082815260408083206001600160a01b03871684529091529020805460ff1916600117905561185c3390565b6001600160a01b0316836001600160a01b0316857f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a4600191505061050c565b5f91505061050c565b5f5f80516020611fe68339815191526118c88484610c73565b156118a6575f848152602082815260408083206001600160a01b0387168085529252808320805460ff1916905551339287917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a4600191505061050c565b611930611a9c565b565b60408051606080820183526001600160801b0385168083526001600160501b03851660208085018290524265ffffffffffff8116958701869052600180546001600160d01b031916909417600160801b909302929092176001600160d01b0316600160d01b909502949094179091558351868152928301859052928201929092527f4721c31db00d4c86f3effcb9b553c869ce768e138eaf7a09cea387ffb5d9da33910160405180910390a15050565b8082111561064a57604051634df52d2560e11b815260040160405180910390fd5b6001901b5f1901811b1992909216911b1790565b5f611a228285611fa8565b670de0b6b3a7640000611a358686611f7a565b611a43906301e13380611fa8565b611a4d9190611fa8565b611a579190611fbf565b949350505050565b611a698282610c73565b61064a5760405163e2517d3f60e01b81526001600160a01b03821660048201526024810183905260440160405180910390fd5b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0054600160401b900460ff1661193057604051631afcd79f60e31b815260040160405180910390fd5b80356001600160e01b031981168114611afc575f80fd5b919050565b5f60208284031215611b11575f80fd5b611b1a82611ae5565b9392505050565b6001600160a01b03811681146117bc575f80fd5b5f8060408385031215611b46575f80fd5b8235611b5181611b21565b91506020830135611b6181611b21565b809150509250929050565b5f60208284031215611b7c575f80fd5b8135611b1a81611b21565b5f60208284031215611b97575f80fd5b5035919050565b5f8060408385031215611baf575f80fd5b823591506020830135611b6181611b21565b5f8060408385031215611bd2575f80fd5b8235611bdd81611b21565b9150611beb60208401611ae5565b90509250929050565b5f805f805f805f60e0888a031215611c0a575f80fd5b8735611c1581611b21565b96506020880135611c2581611b21565b96999698505050506040850135946060810135946080820135945060a0820135935060c0909101359150565b803567ffffffffffffffff81168114611afc575f80fd5b5f805f60608486031215611c7a575f80fd5b8335611c8581611b21565b9250611c9360208501611c51565b9150611ca160408501611c51565b90509250925092565b5f805f8060808587031215611cbd575f80fd5b8435611cc881611b21565b9350611cd660208601611c51565b9250611ce460408601611c51565b9150611cf260608601611c51565b905092959194509250565b634e487b7160e01b5f52601260045260245ffd5b5f60208284031215611d21575f80fd5b5051919050565b6040516101e0810167ffffffffffffffff81118282101715611d5857634e487b7160e01b5f52604160045260245ffd5b60405290565b5f60208284031215611d6e575f80fd5b6040516020810167ffffffffffffffff81118282101715611d9d57634e487b7160e01b5f52604160045260245ffd5b6040529151825250919050565b80516001600160801b0381168114611afc575f80fd5b805164ffffffffff81168114611afc575f80fd5b805161ffff81168114611afc575f80fd5b8051611afc81611b21565b5f6101e0828403128015611e02575f80fd5b50611e0b611d28565b611e158484611d5e565b8152611e2360208401611daa565b6020820152611e3460408401611daa565b6040820152611e4560608401611daa565b6060820152611e5660808401611daa565b6080820152611e6760a08401611daa565b60a0820152611e7860c08401611dc0565b60c0820152611e8960e08401611dd4565b60e0820152611e9b6101008401611de5565b610100820152611eae6101208401611de5565b610120820152611ec16101408401611de5565b610140820152611ed46101608401611de5565b610160820152611ee76101808401611daa565b610180820152611efa6101a08401611daa565b6101a0820152611f0d6101c08401611daa565b6101c08201529392505050565b634e487b7160e01b5f52601160045260245ffd5b5f6001600160801b03831680611f4657611f46611cfd565b806001600160801b0384160491505092915050565b5f60208284031215611f6b575f80fd5b81518015158114611b1a575f80fd5b8181038181111561050c5761050c611f1a565b5f60208284031215611f9d575f80fd5b8151611b1a81611b21565b808202811582820484141761050c5761050c611f1a565b5f82611fcd57611fcd611cfd565b500490565b8082018082111561050c5761050c611f1a56fe02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800a26469706673582212205857e494433fe4a20967e3798d36c160719dac515f1a596cbf205cec6b3a7c2f64736f6c634300081a003300000000000000000000000065c9a641afceb9c0e6034e558a319488fa0fa3be00000000000000000000000087870bca3f3fd6335c3f4ce8392d69350b4fa4e2000000000000000000000000a0b86991c6218b36c1d19d4a2e9eb0ce3606eb48