0 txs
59 calls
constructor
constructor(address _morpho, address _poolManager)
functions
closeOrRemoveShortPositionFlashLoan
nonpayablefunction closeOrRemoveShortPositionFlashLoan(tuple params, address pool, uint256 positionId, uint256 fxUSDWithdrawAmount, uint256 debtTokenBorrowAmount, bytes data)
onCloseOrRemoveShortPositionFlashLoan
nonpayablefunction onCloseOrRemoveShortPositionFlashLoan(address pool, uint256 position, uint256 fxUSDWithdrawAmount, uint256 debtTokenBorrowAmount, address recipient, bytes data)
onOpenOrAddShortPositionFlashLoan
nonpayablefunction onOpenOrAddShortPositionFlashLoan(address pool, uint256 position, uint256 fxUSDSupplyAmount, uint256 debtTokenBorrowAmount, address recipient, bytes data)
openOrAddShortPositionFlashLoan
payablefunction openOrAddShortPositionFlashLoan(tuple params, address pool, uint256 positionId, uint256 debtTokenBorrowAmount, bytes data) payable
events
PositionOperate
event PositionOperate(address indexed pool, uint256 positionId, int256 userCollateralsDelta, int256 userDebtsDelta, int256 newColl, int256 newDebt)
errors
AddressEmptyCode
error AddressEmptyCode(address target)
AddressInsufficientBalance
error AddressInsufficientBalance(address account)
ErrorDebtRatioOutOfRange
error ErrorDebtRatioOutOfRange()
ErrorInsufficientAmountSwapped
error ErrorInsufficientAmountSwapped()
ErrorInsufficientOutput
error ErrorInsufficientOutput()
ErrorMsgValueMismatch
error ErrorMsgValueMismatch()
ErrorNotFromSelf
error ErrorNotFromSelf()
ErrorTargetNotApproved
error ErrorTargetNotApproved()
FailedInnerCall
error FailedInnerCall()
ReentrancyGuardReentrantCall
error ReentrancyGuardReentrantCall()
SafeERC20FailedOperation
error SafeERC20FailedOperation(address token)
creation bytecode
0x60c0604052348015600e575f80fd5b506040516120b03803806120b0833981016040819052602b91605b565b6001600160a01b039182166080521660a0526087565b80516001600160a01b03811681146056575f80fd5b919050565b5f8060408385031215606b575f80fd5b6072836041565b9150607e602084016041565b90509250929050565b60805160a051611fec6100c45f395f81816102030152818161025d015281816107bb015281816108b4015261095801525f6110c80152611fec5ff3fe60806040526004361061003e575f3560e01c80634ca5e33d1461004257806399414c1014610063578063ad0acfdc14610076578063c9a89af114610095575b5f80fd5b34801561004d575f80fd5b5061006161005c3660046118e6565b6100b4565b005b6100616100713660046119a2565b6103b2565b348015610081575f80fd5b50610061610090366004611b34565b610535565b3480156100a0575f80fd5b506100616100af3660046118e6565b610712565b3330146100d45760405163e50434af60e01b815260040160405180910390fd5b5f805f80848060200190518101906100ec9190611c5a565b93509350935093505f8890506101798b6001600160a01b031663f8d898986040518163ffffffff1660e01b8152600401602060405180830381865afa158015610137573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061015b9190611cf5565b73085780639cc2cacd35e474e71f4d000e2405d8f68a878787610afe565b610183908a611d24565b985089156101e9576040516323b872dd60e01b81526001600160a01b038c16906323b872dd906101bb908a9030908f90600401611d37565b5f604051808303815f87803b1580156101d2575f80fd5b505af11580156101e4573d5f803e3d5ffd5b505050505b61022873085780639cc2cacd35e474e71f4d000e2405d8f67f00000000000000000000000000000000000000000000000000000000000000008b610d05565b620f424061023989620f4241611d5b565b6102439190611d72565b60405163c1c8f15b60e01b81529098506001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063c1c8f15b90610298908e908e908e908e90600401611d91565b6020604051808303815f875af11580156102b4573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906102d89190611db7565b99506102e58b8b87610d1e565b6040516323b872dd60e01b81526001600160a01b038c16906323b872dd906103159030908b908f90600401611d37565b5f604051808303815f87803b15801561032c575f80fd5b505af115801561033e573d5f803e3d5ffd5b505050508a6001600160a01b03167f2a691206f32a9624672cbf15de7ebfcfabdd5ec6dab054b1e8a12f97df8b41528b8361037890611dce565b6040805192835260208301919091525f90820152606081018c9052608081018b905260a00160405180910390a25050505050505050505050565b7fac318a26e36b2aca24ebcc70260de3def8e072144b293eb8d60e905c83c17160545f80516020611f978339815191529060ff600160a81b909104165f190161040e57604051633ee5aeb560e01b815260040160405180910390fd5b60058101805460ff60a81b1916600160a81b1790555f6104428873085780639cc2cacd35e474e71f4d000e2405d8f6610dcf565b90505f876001600160a01b031663f8d898986040518163ffffffff1660e01b8152600401602060405180830381865afa158015610481573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906104a59190611cf5565b90506104f881878a8a868b338c8c6040516024016104c99796959493929190611de8565b60408051601f198184030181529190526020810180516001600160e01b0316634ca5e33d60e01b17905261107a565b61051d815f80516020611f978339815191525b600501546001600160a01b0316611170565b5050600501805460ff60a81b19169055505050505050565b7fac318a26e36b2aca24ebcc70260de3def8e072144b293eb8d60e905c83c17160545f80516020611f978339815191529060ff600160a81b909104165f190161059157604051633ee5aeb560e01b815260040160405180910390fd5b60058101805460ff60a81b1916600160a81b17905560408051631f1b131360e31b815290515f916001600160a01b038a169163f8d89898916004808201926020929091908290030181865afa1580156105ec573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106109190611cf5565b905061066381868a8a8a8a338b8b6040516024016106349796959493929190611de8565b60408051601f198184030181529190526020810180516001600160e01b031663c9a89af160e01b17905261107a565b6040516370a0823160e01b81523060048201526106e2908a9073085780639cc2cacd35e474e71f4d000e2405d8f69081906370a0823190602401602060405180830381865afa1580156106b8573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106dc9190611db7565b336111f4565b506106fa815f80516020611f9783398151915261050b565b50600501805460ff60a81b1916905550505050505050565b3330146107325760405163e50434af60e01b815260040160405180910390fd5b5f805f808480602001905181019061074a9190611c5a565b93509350935093505f8a6001600160a01b031663f8d898986040518163ffffffff1660e01b8152600401602060405180830381865afa15801561078f573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906107b39190611cf5565b90506107e0817f00000000000000000000000000000000000000000000000000000000000000008a610d05565b6040516323b872dd60e01b81526001600160a01b038c16906323b872dd90610810908a9030908f90600401611d37565b5f604051808303815f87803b158015610827575f80fd5b505af1158015610839573d5f803e3d5ffd5b505060405163eb02c30160e01b8152600481018d90525f92506001600160a01b038e16915063eb02c301906024016040805180830381865afa158015610881573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108a59190611e48565b509050808a1061094e578099507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663c1c8f15b8d8d600160ff1b806040518563ffffffff1660e01b81526004016109089493929190611d91565b6020604051808303815f875af1158015610924573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906109489190611db7565b506109fc565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001663c1c8f15b8d8d6109888e611dce565b6109918e611dce565b6040518563ffffffff1660e01b81526004016109b09493929190611d91565b6020604051808303815f875af11580156109cc573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906109f09190611db7565b506109fc8c8c88610d1e565b8b6001600160a01b03166323b872dd308a8e6040518463ffffffff1660e01b8152600401610a2c93929190611d37565b5f604051808303815f87803b158015610a43575f80fd5b505af1158015610a55573d5f803e3d5ffd5b50505050610a7b73085780639cc2cacd35e474e71f4d000e2405d8f683878c8888610afe565b506001600160a01b038c167f2a691206f32a9624672cbf15de7ebfcfabdd5ec6dab054b1e8a12f97df8b41528c610ab2888e611e6a565b5f610abc8f611dce565b610ac58f611dce565b604080519586526020860194909452928401919091526060830152608082015260a00160405180910390a2505050505050505050505050565b5f845f03610b0d57505f610cfb565b5f80516020611f97833981519152610b457fac318a26e36b2aca24ebcc70260de3def8e072144b293eb8d60e905c83c1715c856113c2565b610b61576040516202e3a560eb1b815260040160405180910390fd5b6001600160a01b038085165f908152602083905260409020541680610b835750835b610b8e898289610d05565b6040516370a0823160e01b81523060048201526001600160a01b038916906370a0823190602401602060405180830381865afa158015610bd0573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610bf49190611db7565b92505f856001600160a01b031685604051610c0f9190611e7d565b5f604051808303815f865af19150503d805f8114610c48576040519150601f19603f3d011682016040523d82523d5f602084013e610c4d565b606091505b5050905080610c62576040513d805f833e8082fd5b6040516370a0823160e01b815230600482015284906001600160a01b038b16906370a0823190602401602060405180830381865afa158015610ca6573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610cca9190611db7565b610cd49190611e6a565b935086841015610cf757604051633e961df760e21b815260040160405180910390fd5b5050505b9695505050505050565b610d196001600160a01b03841683836113e6565b505050565b60405163430da67f60e11b8152600481018390525f906001600160a01b0385169063861b4cfe90602401602060405180830381865afa158015610d63573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610d879190611db7565b9050670fffffffffffffff82811690603c84901c1681831080610da957508083115b15610dc75760405163e3f43bf160e01b815260040160405180910390fd5b505050505050565b60408201515f905f80516020611f9783398151915290610e10907fac318a26e36b2aca24ebcc70260de3def8e072144b293eb8d60e905c83c1715c906113c2565b610e2c576040516202e3a560eb1b815260040160405180910390fd5b610e3e845f01513086602001516114a9565b506040516370a0823160e01b81523060048201526001600160a01b038416906370a0823190602401602060405180830381865afa158015610e81573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610ea59190611db7565b9150826001600160a01b0316845f01516001600160a01b031603610ec95750611074565b83515f906001600160a01b0316610f495784604001516001600160a01b031685602001518660600151604051610eff9190611e7d565b5f6040518083038185875af1925050503d805f8114610f39576040519150601f19603f3d011682016040523d82523d5f602084013e610f3e565b606091505b505080915050610fec565b6040808601516001600160a01b039081165f908152602085905291909120541680610f75575060408501515b610f87865f0151828860200151610d05565b85604001516001600160a01b03168660600151604051610fa79190611e7d565b5f604051808303815f865af19150503d805f8114610fe0576040519150601f19603f3d011682016040523d82523d5f602084013e610fe5565b606091505b5090925050505b80610ffd576040513d805f833e8082fd5b6040516370a0823160e01b815230600482015283906001600160a01b038616906370a0823190602401602060405180830381865afa158015611041573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906110659190611db7565b61106f9190611e6a565b925050505b92915050565b7fac318a26e36b2aca24ebcc70260de3def8e072144b293eb8d60e905c83c17160805460ff60a01b1916600160a01b1790556040515f80516020611f97833981519152906001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063e0232b4290869086906111039083908890602001611ec1565b6040516020818303038152906040526040518463ffffffff1660e01b815260040161113093929190611ee4565b5f604051808303815f87803b158015611147575f80fd5b505af1158015611159573d5f803e3d5ffd5b50505050600501805460ff60a01b19169055505050565b6040516370a0823160e01b81523060048201525f906001600160a01b038416906370a0823190602401602060405180830381865afa1580156111b4573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906111d89190611db7565b90508015610d1957610d196001600160a01b03841683836114f9565b60208401515f905f80516020611f9783398151915290611235907fac318a26e36b2aca24ebcc70260de3def8e072144b293eb8d60e905c83c1715c906113c2565b611251576040516202e3a560eb1b815260040160405180910390fd5b835f03611261575f9150506113ba565b606086015151849250156112ff5761127e85876020015186610d05565b85602001516001600160a01b031663ed52d54c868689604001518a606001516040518563ffffffff1660e01b81526004016112bc9493929190611f13565b6020604051808303815f875af11580156112d8573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906112fc9190611db7565b91505b85608001518210156113245760405163ca1d512b60e01b815260040160405180910390fd5b85516001600160a01b03166113a257604051632e1a7d4d60e01b81526004810183905273c02aaa39b223fe8d0a0e5c4f27ead9083c756cc290632e1a7d4d906024015f604051808303815f87803b15801561137d575f80fd5b505af115801561138f573d5f803e3d5ffd5b5050505061139d838361152a565b6113b8565b85516113b8906001600160a01b031684846114f9565b505b949350505050565b6001600160a01b0381165f90815260018301602052604081205415155b9392505050565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663095ea7b360e01b17905261143784826115c2565b6114a3576040516001600160a01b0384811660248301525f604483015261149991869182169063095ea7b3906064015b604051602081830303815290604052915060e01b6020820180516001600160e01b03838183161783525050505061165f565b6114a3848261165f565b50505050565b5f6001600160a01b0384166114dd578134146114d85760405163ed39c7cb60e01b815260040160405180910390fd5b6114f2565b6114f26001600160a01b0385163385856116c0565b5092915050565b6040516001600160a01b03838116602483015260448201839052610d1991859182169063a9059cbb90606401611467565b804710156115525760405163cd78605960e01b81523060048201526024015b60405180910390fd5b5f826001600160a01b0316826040515f6040518083038185875af1925050503d805f811461159b576040519150601f19603f3d011682016040523d82523d5f602084013e6115a0565b606091505b5050905080610d1957604051630a12f52160e11b815260040160405180910390fd5b5f805f846001600160a01b0316846040516115dd9190611e7d565b5f604051808303815f865af19150503d805f8114611616576040519150601f19603f3d011682016040523d82523d5f602084013e61161b565b606091505b50915091508180156116455750805115806116455750808060200190518101906116459190611f77565b801561106f5750505050506001600160a01b03163b151590565b5f6116736001600160a01b038416836116e8565b905080515f141580156116975750808060200190518101906116959190611f77565b155b15610d1957604051635274afe760e01b81526001600160a01b0384166004820152602401611549565b6114a384856001600160a01b03166323b872dd86868660405160240161146793929190611d37565b60606113df83835f845f80856001600160a01b0316848660405161170c9190611e7d565b5f6040518083038185875af1925050503d805f8114611746576040519150601f19603f3d011682016040523d82523d5f602084013e61174b565b606091505b5091509150610cfb86838360608261176b57611766826117b2565b6113df565b815115801561178257506001600160a01b0384163b155b156117ab57604051639996b31560e01b81526001600160a01b0385166004820152602401611549565b50806113df565b8051156117c25780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b50565b6001600160a01b03811681146117db575f80fd5b80356117fd816117de565b919050565b634e487b7160e01b5f52604160045260245ffd5b60405160c081016001600160401b038111828210171561183857611838611802565b60405290565b604051601f8201601f191681016001600160401b038111828210171561186657611866611802565b604052919050565b5f6001600160401b0382111561188657611886611802565b50601f01601f191660200190565b5f82601f8301126118a3575f80fd5b81356118b66118b18261186e565b61183e565b8181528460208386010111156118ca575f80fd5b816020850160208301375f918101602001919091529392505050565b5f805f805f8060c087890312156118fb575f80fd5b8635611906816117de565b9550602087013594506040870135935060608701359250608087013561192b816117de565b915060a08701356001600160401b03811115611945575f80fd5b61195189828a01611894565b9150509295509295509295565b5f8083601f84011261196e575f80fd5b5081356001600160401b03811115611984575f80fd5b60208301915083602082850101111561199b575f80fd5b9250929050565b5f805f805f8060a087890312156119b7575f80fd5b86356001600160401b038111156119cc575f80fd5b870160c0818a0312156119dd575f80fd5b6119e5611816565b6119ee826117f2565b815260208281013590820152611a06604083016117f2565b604082015260608201356001600160401b03811115611a23575f80fd5b611a2f8b828501611894565b6060830152506080828101359082015260a08201356001600160401b03811115611a57575f80fd5b611a638b828501611894565b60a0830152509650611a799050602088016117f2565b9450604087013593506060870135925060808701356001600160401b03811115611aa1575f80fd5b611aad89828a0161195e565b979a9699509497509295939492505050565b5f82601f830112611ace575f80fd5b81356001600160401b03811115611ae757611ae7611802565b8060051b611af76020820161183e565b91825260208185018101929081019086841115611b12575f80fd5b6020860192505b83831015610cfb578235825260209283019290910190611b19565b5f805f805f805f60c0888a031215611b4a575f80fd5b87356001600160401b03811115611b5f575f80fd5b880160c0818b031215611b70575f80fd5b611b78611816565b611b81826117f2565b8152611b8f602083016117f2565b60208201526040828101359082015260608201356001600160401b03811115611bb6575f80fd5b611bc28c828501611abf565b6060830152506080828101359082015260a08201356001600160401b03811115611bea575f80fd5b611bf68c828501611894565b60a0830152509750611c0c9050602089016117f2565b955060408801359450606088013593506080880135925060a08801356001600160401b03811115611c3b575f80fd5b611c478a828b0161195e565b989b979a50959850939692959293505050565b5f805f8060808587031215611c6d575f80fd5b8451602086015160408701519195509350611c87816117de565b60608601519092506001600160401b03811115611ca2575f80fd5b8501601f81018713611cb2575f80fd5b8051611cc06118b18261186e565b818152886020838501011115611cd4575f80fd5b8160208401602083015e5f6020838301015280935050505092959194509250565b5f60208284031215611d05575f80fd5b81516113df816117de565b634e487b7160e01b5f52601160045260245ffd5b8082018082111561107457611074611d10565b6001600160a01b039384168152919092166020820152604081019190915260600190565b808202811582820484141761107457611074611d10565b5f82611d8c57634e487b7160e01b5f52601260045260245ffd5b500490565b6001600160a01b0394909416845260208401929092526040830152606082015260800190565b5f60208284031215611dc7575f80fd5b5051919050565b5f600160ff1b8201611de257611de2611d10565b505f0390565b6001600160a01b0388811682526020820188905260408201879052606082018690528416608082015260c060a082018190528101829052818360e08301375f81830160e090810191909152601f909201601f191601019695505050505050565b5f8060408385031215611e59575f80fd5b505080516020909101519092909150565b8181038181111561107457611074611d10565b5f82518060208501845e5f920191825250919050565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b6001600160a01b03831681526040602082018190525f906113ba90830184611e93565b60018060a01b0384168152826020820152606060408201525f611f0a6060830184611e93565b95945050505050565b6001600160a01b038516815260208082018590526040820184905260806060830181905283519083018190525f9184019060a0840190835b81811015611f69578351835260209384019390920191600101611f4b565b509098975050505050505050565b5f60208284031215611f87575f80fd5b815180151581146113df575f80fdfeac318a26e36b2aca24ebcc70260de3def8e072144b293eb8d60e905c83c1715ba264697066735822122098a2bcfc0e0f33802612d59743cd9ed9f105bfaed289960094e2430f12ba09f464736f6c634300081a0033000000000000000000000000bbbbbbbbbb9cc5e90e3b3af64bdaf62c37eeffcb000000000000000000000000acdc0ab51178d0ae8f70c1ead7d3cf5421fdd66d