0 txs
1 call
constructor
constructor(address _morpho, address _poolManager, address _shortPoolManager, address _converter)
functions
closeOrRemoveLongPositionFlashLoan
nonpayablefunction closeOrRemoveLongPositionFlashLoan(tuple params, address pool, uint256 positionId, uint256 amountOut, uint256 borrowAmount, bytes data)
closeOrRemoveLongPositionFlashLoanWithUSDC
nonpayablefunction closeOrRemoveLongPositionFlashLoanWithUSDC(tuple params, address pool, uint256 positionId, uint256 amountOut, uint256 borrowAmount, bytes data)
onCloseOrRemoveLongPositionFlashLoan
nonpayablefunction onCloseOrRemoveLongPositionFlashLoan(address pool, uint256 position, uint256 amount, uint256 borrowAmount, address recipient, bytes data)
onCloseOrRemoveLongPositionFlashLoanWithUSDC
nonpayablefunction onCloseOrRemoveLongPositionFlashLoanWithUSDC(address pool, uint256 position, uint256 amount, uint256 borrowAmount, address recipient, bytes data)
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()
ErrorNotFromSelf
error ErrorNotFromSelf()
ErrorTargetNotApproved
error ErrorTargetNotApproved()
FailedInnerCall
error FailedInnerCall()
ReentrancyGuardReentrantCall
error ReentrancyGuardReentrantCall()
SafeERC20FailedOperation
error SafeERC20FailedOperation(address token)
creation bytecode
0x610100604052348015610010575f80fd5b5060405161222d38038061222d83398101604081905261002f9161006c565b6001600160a01b0393841660805291831660a052821660c0521660e0526100bd565b80516001600160a01b0381168114610067575f80fd5b919050565b5f805f806080858703121561007f575f80fd5b61008885610051565b935061009660208601610051565b92506100a460408601610051565b91506100b260608601610051565b905092959194509250565b60805160a05160c05160e05161211361011a5f395f81816117ea015261182601525f818161149b01526114ef01525f818161059e0152818161070a0152818161078701528181610bdd0152610c1601525f610cdb01526121135ff3fe608060405234801561000f575f80fd5b506004361061004a575f3560e01c806322d5d2ec1461004e578063af79b3fc14610063578063ccd164cb14610076578063cdac57b214610089575b5f80fd5b61006161005c366004611ba3565b61009c565b005b610061610071366004611ba3565b610290565b610061610084366004611ccd565b61045e565b610061610097366004611ccd565b610a07565b7fac318a26e36b2aca24ebcc70260de3def8e072144b293eb8d60e905c83c17160545f805160206120be8339815191529060ff600160a81b909104165f19016100f857604051633ee5aeb560e01b815260040160405180910390fd5b60058101805460ff60a81b1916600160a81b17905560408051632c805af560e21b815290515f916001600160a01b038a169163b2016bd4916004808201926020929091908290030181865afa158015610153573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906101779190611d46565b90506101ca81868a8a8a8a338b8b60405160240161019b9796959493929190611d61565b60408051601f198184030181529190526020810180516001600160e01b03166366d62bd960e11b179052610c8d565b6040516370a0823160e01b81523060048201526001600160a01b038216906370a0823190602401602060405180830381865afa15801561020c573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906102309190611dc1565b955061023e89828833610d83565b5061027873085780639cc2cacd35e474e71f4d000e2405d8f65f805160206120be8339815191525b600501546001600160a01b0316610f51565b50600501805460ff60a81b1916905550505050505050565b7fac318a26e36b2aca24ebcc70260de3def8e072144b293eb8d60e905c83c17160545f805160206120be8339815191529060ff600160a81b909104165f19016102ec57604051633ee5aeb560e01b815260040160405180910390fd5b60058101805460ff60a81b1916600160a81b17905560408051632c805af560e21b815290515f916001600160a01b038a169163b2016bd4916004808201926020929091908290030181865afa158015610347573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061036b9190611d46565b90506103be81868a8a8a8a338b8b60405160240161038f9796959493929190611d61565b60408051601f198184030181529190526020810180516001600160e01b031663ccd164cb60e01b179052610c8d565b6040516370a0823160e01b81523060048201526001600160a01b038216906370a0823190602401602060405180830381865afa158015610400573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906104249190611dc1565b955061043289828833610d83565b5061027873a0b86991c6218b36c1d19d4a2e9eb0ce3606eb485f805160206120be833981519152610266565b33301461047e5760405163e50434af60e01b815260040160405180910390fd5b5f805f80848060200190518101906104969190611e33565b50505093509350935093506105228a6001600160a01b031663b2016bd46040518163ffffffff1660e01b8152600401602060405180830381865afa1580156104e0573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906105049190611d46565b73a0b86991c6218b36c1d19d4a2e9eb0ce3606eb4889868686610fda565b506040516323b872dd60e01b81526001600160a01b038781166004830152306024830152604482018b90528b16906323b872dd906064015f604051808303815f87803b158015610570575f80fd5b505af1158015610582573d5f803e3d5ffd5b50506040516370a0823160e01b815230600482015261063992507f0000000000000000000000000000000000000000000000000000000000000000915073a0b86991c6218b36c1d19d4a2e9eb0ce3606eb48906370a0823190602401602060405180830381865afa1580156105f9573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061061d9190611dc1565b73a0b86991c6218b36c1d19d4a2e9eb0ce3606eb4891906111e1565b60405163eb02c30160e01b8152600481018a90525f906001600160a01b038c169063eb02c301906024016040805180830381865afa15801561067d573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106a19190611f14565b91508190506106b58564e8d4a51000611f4a565b1061077d576106c964e8d4a5100082611f61565b60405163f415afd760e01b81526001600160a01b038d81166004830152602482018d9052600160ff1b604483018190526064830152600160848301529195507f00000000000000000000000000000000000000000000000000000000000000009091169063f415afd79060a4015b6020604051808303815f875af1158015610753573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906107779190611dc1565b5061084d565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001663f415afd78c8c6107b78d611f80565b6107c089611f80565b6040516001600160e01b031960e087901b1681526001600160a01b0390941660048501526024840192909252604483015260648201526001608482015260a4015b6020604051808303815f875af115801561081d573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108419190611dc1565b5061084d8b8b876112a4565b506040516323b872dd60e01b81523060048201526001600160a01b038781166024830152604482018b90528b16906323b872dd906064015f604051808303815f87803b15801561089b575f80fd5b505af11580156108ad573d5f803e3d5ffd5b505050506108bb8a86611355565b5f8a6001600160a01b031663b2016bd46040518163ffffffff1660e01b8152600401602060405180830381865afa1580156108f8573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061091c9190611d46565b6040516370a0823160e01b81523060048201526001600160a01b0391909116906370a0823190602401602060405180830381865afa158015610960573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906109849190611dc1565b90506001600160a01b038b167f2a691206f32a9624672cbf15de7ebfcfabdd5ec6dab054b1e8a12f97df8b41528b6109bc8b85611f9a565b5f6109c68e611f80565b6109cf8a611f80565b604080519586526020860194909452928401919091526060830152608082015260a00160405180910390a25050505050505050505050565b333014610a275760405163e50434af60e01b815260040160405180910390fd5b5f805f8084806020019051810190610a3f9190611e33565b5050509350935093509350610acb8a6001600160a01b031663b2016bd46040518163ffffffff1660e01b8152600401602060405180830381865afa158015610a89573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610aad9190611d46565b73085780639cc2cacd35e474e71f4d000e2405d8f689868686610fda565b506040516323b872dd60e01b81526001600160a01b038781166004830152306024830152604482018b90528b16906323b872dd906064015f604051808303815f87803b158015610b19575f80fd5b505af1158015610b2b573d5f803e3d5ffd5b505060405163eb02c30160e01b8152600481018c90525f92506001600160a01b038d16915063eb02c301906024016040805180830381865afa158015610b73573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610b979190611f14565b915050808410610c0c5760405163c1c8f15b60e01b81526001600160a01b038c81166004830152602482018c9052600160ff1b60448301819052606483015291945084917f0000000000000000000000000000000000000000000000000000000000000000169063c1c8f15b90608401610737565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001663c1c8f15b8c8c610c468d611f80565b610c4f89611f80565b6040516001600160e01b031960e087901b1681526001600160a01b039094166004850152602484019290925260448301526064820152608401610801565b7fac318a26e36b2aca24ebcc70260de3def8e072144b293eb8d60e905c83c17160805460ff60a01b1916600160a01b1790556040515f805160206120be833981519152906001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063e0232b429086908690610d169083908890602001611fdb565b6040516020818303038152906040526040518463ffffffff1660e01b8152600401610d4393929190611ffe565b5f604051808303815f87803b158015610d5a575f80fd5b505af1158015610d6c573d5f803e3d5ffd5b50505050600501805460ff60a01b19169055505050565b60208401515f905f805160206120be83398151915290610dc4907fac318a26e36b2aca24ebcc70260de3def8e072144b293eb8d60e905c83c1715c906115d0565b610de0576040516202e3a560eb1b815260040160405180910390fd5b835f03610df0575f915050610f49565b60608601515184925015610e8e57610e0d858760200151866115f6565b85602001516001600160a01b031663ed52d54c868689604001518a606001516040518563ffffffff1660e01b8152600401610e4b9493929190612024565b6020604051808303815f875af1158015610e67573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610e8b9190611dc1565b91505b8560800151821015610eb35760405163ca1d512b60e01b815260040160405180910390fd5b85516001600160a01b0316610f3157604051632e1a7d4d60e01b81526004810183905273c02aaa39b223fe8d0a0e5c4f27ead9083c756cc290632e1a7d4d906024015f604051808303815f87803b158015610f0c575f80fd5b505af1158015610f1e573d5f803e3d5ffd5b50505050610f2c838361160a565b610f47565b8551610f47906001600160a01b031684846116a2565b505b949350505050565b6040516370a0823160e01b81523060048201525f906001600160a01b038416906370a0823190602401602060405180830381865afa158015610f95573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610fb99190611dc1565b90508015610fd557610fd56001600160a01b03841683836116a2565b505050565b5f845f03610fe957505f6111d7565b5f805160206120be8339815191526110217fac318a26e36b2aca24ebcc70260de3def8e072144b293eb8d60e905c83c1715c856115d0565b61103d576040516202e3a560eb1b815260040160405180910390fd5b6001600160a01b038085165f90815260208390526040902054168061105f5750835b61106a8982896115f6565b6040516370a0823160e01b81523060048201526001600160a01b038916906370a0823190602401602060405180830381865afa1580156110ac573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906110d09190611dc1565b92505f856001600160a01b0316856040516110eb9190612088565b5f604051808303815f865af19150503d805f8114611124576040519150601f19603f3d011682016040523d82523d5f602084013e611129565b606091505b505090508061113e576040513d805f833e8082fd5b6040516370a0823160e01b815230600482015284906001600160a01b038b16906370a0823190602401602060405180830381865afa158015611182573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906111a69190611dc1565b6111b09190611f9a565b9350868410156111d357604051633e961df760e21b815260040160405180910390fd5b5050505b9695505050505050565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663095ea7b360e01b17905261123284826116d3565b61129e576040516001600160a01b0384811660248301525f604483015261129491869182169063095ea7b3906064015b604051602081830303815290604052915060e01b6020820180516001600160e01b038381831617835250505050611774565b61129e8482611774565b50505050565b60405163430da67f60e11b8152600481018390525f906001600160a01b0385169063861b4cfe90602401602060405180830381865afa1580156112e9573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061130d9190611dc1565b9050670fffffffffffffff82811690603c84901c168183108061132f57508083115b1561134d5760405163e3f43bf160e01b815260040160405180910390fd5b505050505050565b5f826001600160a01b031663c3df65466040518163ffffffff1660e01b8152600401602060405180830381865afa158015611392573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906113b69190611d46565b90505f816001600160a01b031663ecf1a3a66040518163ffffffff1660e01b8152600401602060405180830381865afa1580156113f5573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906114199190611d46565b6040516370a0823160e01b81523060048201529091505f906001600160a01b038316906370a0823190602401602060405180830381865afa158015611460573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906114849190611dc1565b905080156115c9576114c06001600160a01b0383167f0000000000000000000000000000000000000000000000000000000000000000836111e1565b604051633016a58160e01b81526001600160a01b038481166004830152602482018390525f60448301819052917f000000000000000000000000000000000000000000000000000000000000000090911690633016a581906064016020604051808303815f875af1158015611537573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061155b9190611dc1565b90505f805f878060200190518101906115749190611e33565b965096509650505050506115c373085780639cc2cacd35e474e71f4d000e2405d8f685612710846127106115a89190611f9a565b6115b2908a611f4a565b6115bc9190611f61565b86866117d5565b50505050505b5050505050565b6001600160a01b0381165f90815260018301602052604081205415155b90505b92915050565b610fd56001600160a01b03841683836111e1565b804710156116325760405163cd78605960e01b81523060048201526024015b60405180910390fd5b5f826001600160a01b0316826040515f6040518083038185875af1925050503d805f811461167b576040519150601f19603f3d011682016040523d82523d5f602084013e611680565b606091505b5050905080610fd557604051630a12f52160e11b815260040160405180910390fd5b6040516001600160a01b03838116602483015260448201839052610fd591859182169063a9059cbb90606401611262565b5f805f846001600160a01b0316846040516116ee9190612088565b5f604051808303815f865af19150503d805f8114611727576040519150601f19603f3d011682016040523d82523d5f602084013e61172c565b606091505b5091509150818015611756575080511580611756575080806020019051810190611756919061209e565b801561176b57505f856001600160a01b03163b115b95945050505050565b5f6117886001600160a01b038416836118c4565b905080515f141580156117ac5750808060200190518101906117aa919061209e565b155b15610fd557604051635274afe760e01b81526001600160a01b0384166004820152602401611629565b5f845f036117e457505f61176b565b61180f867f0000000000000000000000000000000000000000000000000000000000000000876115f6565b604051633b54b55360e21b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063ed52d54c90611861908990899088908890600401612024565b6020604051808303815f875af115801561187d573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906118a19190611dc1565b90508381101561176b57604051633e961df760e21b815260040160405180910390fd5b60606115ed83835f845f80856001600160a01b031684866040516118e89190612088565b5f6040518083038185875af1925050503d805f8114611922576040519150601f19603f3d011682016040523d82523d5f602084013e611927565b606091505b5091509150611937868383611943565b925050505b9392505050565b606082611958576119538261199f565b61193c565b815115801561196f57506001600160a01b0384163b155b1561199857604051639996b31560e01b81526001600160a01b0385166004820152602401611629565b508061193c565b8051156119af5780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b50565b634e487b7160e01b5f52604160045260245ffd5b60405160c0810167ffffffffffffffff81118282101715611a0257611a026119cb565b60405290565b604051601f8201601f1916810167ffffffffffffffff81118282101715611a3157611a316119cb565b604052919050565b6001600160a01b03811681146119c8575f80fd5b8035611a5881611a39565b919050565b5f67ffffffffffffffff821115611a7657611a766119cb565b5060051b60200190565b5f82601f830112611a8f575f80fd5b8135611aa2611a9d82611a5d565b611a08565b8082825260208201915060208360051b860101925085831115611ac3575f80fd5b602085015b83811015611ae0578035835260209283019201611ac8565b5095945050505050565b5f67ffffffffffffffff821115611b0357611b036119cb565b50601f01601f191660200190565b5f82601f830112611b20575f80fd5b8135611b2e611a9d82611aea565b818152846020838601011115611b42575f80fd5b816020850160208301375f918101602001919091529392505050565b5f8083601f840112611b6e575f80fd5b50813567ffffffffffffffff811115611b85575f80fd5b602083019150836020828501011115611b9c575f80fd5b9250929050565b5f805f805f805f60c0888a031215611bb9575f80fd5b873567ffffffffffffffff811115611bcf575f80fd5b880160c0818b031215611be0575f80fd5b611be86119df565b611bf182611a4d565b8152611bff60208301611a4d565b602082015260408281013590820152606082013567ffffffffffffffff811115611c27575f80fd5b611c338c828501611a80565b6060830152506080828101359082015260a082013567ffffffffffffffff811115611c5c575f80fd5b611c688c828501611b11565b60a0830152509750611c7e905060208901611a4d565b955060408801359450606088013593506080880135925060a088013567ffffffffffffffff811115611cae575f80fd5b611cba8a828b01611b5e565b989b979a50959850939692959293505050565b5f805f805f8060c08789031215611ce2575f80fd5b8635611ced81611a39565b95506020870135945060408701359350606087013592506080870135611d1281611a39565b915060a087013567ffffffffffffffff811115611d2d575f80fd5b611d3989828a01611b11565b9150509295509295509295565b5f60208284031215611d56575f80fd5b815161193c81611a39565b6001600160a01b0388811682526020820188905260408201879052606082018690528416608082015260c060a082018190528101829052818360e08301375f81830160e090810191909152601f909201601f191601019695505050505050565b5f60208284031215611dd1575f80fd5b5051919050565b5f82601f830112611de7575f80fd5b8151611df5611a9d82611a5d565b8082825260208201915060208360051b860101925085831115611e16575f80fd5b602085015b83811015611ae0578051835260209283019201611e1b565b5f805f805f805f60e0888a031215611e49575f80fd5b8751602089015160408a01519198509650611e6381611a39565b606089015190955067ffffffffffffffff811115611e7f575f80fd5b88015f601f82018b13611e90575f80fd5b8151611e9e611a9d82611aea565b8181528c6020838601011115611eb2575f80fd5b8160208501602083015e5f9181016020019190915260808b015160a08c0151919750955091505067ffffffffffffffff811115611eed575f80fd5b611ef98a828b01611dd8565b9250505f60c089015190508091505092959891949750929550565b5f8060408385031215611f25575f80fd5b505080516020909101519092909150565b634e487b7160e01b5f52601160045260245ffd5b80820281158282048414176115f0576115f0611f36565b5f82611f7b57634e487b7160e01b5f52601260045260245ffd5b500490565b5f600160ff1b8201611f9457611f94611f36565b505f0390565b818103818111156115f0576115f0611f36565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b6001600160a01b03831681526040602082018190525f90610f4990830184611fad565b60018060a01b0384168152826020820152606060408201525f61176b6060830184611fad565b6001600160a01b038516815260208082018590526040820184905260806060830181905283519083018190525f9184019060a0840190835b8181101561207a57835183526020938401939092019160010161205c565b509098975050505050505050565b5f82518060208501845e5f920191825250919050565b5f602082840312156120ae575f80fd5b8151801515811461193c575f80fdfeac318a26e36b2aca24ebcc70260de3def8e072144b293eb8d60e905c83c1715ba26469706673582212207e22ccf754a3eab9bcf5acd77f677b94ad007006165f01e7253dcef36030444264736f6c634300081a0033000000000000000000000000bbbbbbbbbb9cc5e90e3b3af64bdaf62c37eeffcb000000000000000000000000250893ca4ba5d05626c785e8da758026928fcd24000000000000000000000000acdc0ab51178d0ae8f70c1ead7d3cf5421fdd66d00000000000000000000000012af4529129303d7fbd2563e242c4a2890525912