From afccf93d57246101da5f3c1ce1743e2e3c7c4ec3 Mon Sep 17 00:00:00 2001 From: gs8nrv <55771972+GuillaumeNervoXS@users.noreply.github.com> Date: Thu, 11 Apr 2024 11:04:04 +0200 Subject: [PATCH] fork deploy Swapper for Morpho --- .../1/run-1712585373.json | 85 +++++++++++++++++++ .../SwapperLevMorpho.s.sol/1/run-latest.json | 85 +++++++++++++++++++ .../LevSwapper/BaseLevSwapperMorpho.sol | 1 - foundry.toml | 16 +++- package.json | 5 +- remappings.txt | 4 + scripts/foundry/Helpers.s.sol | 62 ++++++++++++++ .../foundry/mainnet/MainnetConstants.s.sol | 7 +- .../foundry/mainnet/SwapperLevMorpho.s.sol | 38 +++++++++ 9 files changed, 294 insertions(+), 9 deletions(-) create mode 100644 broadcast/SwapperLevMorpho.s.sol/1/run-1712585373.json create mode 100644 broadcast/SwapperLevMorpho.s.sol/1/run-latest.json create mode 100644 scripts/foundry/Helpers.s.sol create mode 100644 scripts/foundry/mainnet/SwapperLevMorpho.s.sol diff --git a/broadcast/SwapperLevMorpho.s.sol/1/run-1712585373.json b/broadcast/SwapperLevMorpho.s.sol/1/run-1712585373.json new file mode 100644 index 0000000..58b9619 --- /dev/null +++ b/broadcast/SwapperLevMorpho.s.sol/1/run-1712585373.json @@ -0,0 +1,85 @@ +{ + "transactions": [ + { + "hash": "0xa68283a65f801cefc4d40d9eb17a962be0185906466aa28e0f6ffa8f71f9458b", + "transactionType": "CREATE", + "contractName": "PendleLevSwapperMorphoWeETH", + "contractAddress": "0x3F0fA7847b1B2E4515a93e05B29f115D9BB51D85", + "function": null, + "arguments": [ + "0x5bc6BEf80DA563EBf6Df6D6913513fa9A7ec89BE", + "0xE592427A0AEce92De3Edee1F18E0157C05861564", + "0x111111125421cA6dc452d289314280a0f8842A65", + "0x4579709627CA36BCe92f51ac975746f431890930", + "0xBBBBBbbBBb9cC5e90e3b3Af64bdAF62C37EEFFCb" + ], + "transaction": { + "type": "0x02", + "from": "0xa9ddd91249dfdd450e81e1c56ab60e1a62651701", + "gas": "0x32b7be", + "value": "0x0", + "data": "0x60e060405234801562000010575f80fd5b506040516200322c3803806200322c833981016040819052620000339162000590565b8484848484848484848484848484838383836001600160a01b03841615806200006357506001600160a01b038216155b806200007657506001600160a01b038116155b15620000955760405163d92e233d60e01b815260040160405180910390fd5b6001600160a01b0393841660805291831660a0525f80546001600160a01b031916918416919091178155911660c052620000cc5f90565b6001600160a01b0316146200015757620001575f5f195f6001600160a01b03166338d52e0f6040518163ffffffff1660e01b81526004016020604051808303815f875af115801562000120573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906200014691906200060c565b6001600160a01b0316919062000214565b5050600180546001600160a01b0319166001600160a01b039490941693909317909255505f94506200018e9350620002f792505050565b6001600160a01b0316146200020457620001d373ac0047886a985071476a1186be89222659970d655f1973cd5fe23c85820f7b72d0926fc9b05b43e359b7ee62000146565b620002046e5bbb0ef59571e58418f9a4357b68a05f1973ac0047886a985071476a1186be89222659970d6562000146565b50505050505050505050620006fe565b604051636eb1769f60e11b81523060048201526001600160a01b0383811660248301525f91839186169063dd62ed3e90604401602060405180830381865afa15801562000263573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906200028991906200062a565b62000295919062000642565b604080516001600160a01b038616602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b0390811663095ea7b360e01b17909152919250620002f1918691906200030f16565b50505050565b73cd5fe23c85820f7b72d0926fc9b05b43e359b7ee90565b6040805180820190915260208082527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564908201525f906200035d906001600160a01b038516908490620003e8565b805190915015620003e357808060200190518101906200037e919062000668565b620003e35760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b60648201526084015b60405180910390fd5b505050565b6060620003f884845f8562000402565b90505b9392505050565b606082471015620004655760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b6064820152608401620003da565b6001600160a01b0385163b620004be5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401620003da565b5f80866001600160a01b03168587604051620004db9190620006ad565b5f6040518083038185875af1925050503d805f811462000517576040519150601f19603f3d011682016040523d82523d5f602084013e6200051c565b606091505b5090925090506200052f8282866200053a565b979650505050505050565b606083156200054b575081620003fb565b8251156200055c5782518084602001fd5b8160405162461bcd60e51b8152600401620003da9190620006ca565b6001600160a01b03811681146200058d575f80fd5b50565b5f805f805f60a08688031215620005a5575f80fd5b8551620005b28162000578565b6020870151909550620005c58162000578565b6040870151909450620005d88162000578565b6060870151909350620005eb8162000578565b6080870151909250620005fe8162000578565b809150509295509295909350565b5f602082840312156200061d575f80fd5b8151620003fb8162000578565b5f602082840312156200063b575f80fd5b5051919050565b808201808211156200066257634e487b7160e01b5f52601160045260245ffd5b92915050565b5f6020828403121562000679575f80fd5b81518015158114620003fb575f80fd5b5f5b83811015620006a55781810151838201526020016200068b565b50505f910152565b5f8251620006c081846020870162000689565b9190910192915050565b602081525f8251806020840152620006ea81604085016020870162000689565b601f01601f19169190910160400192915050565b60805160a05160c051612ad26200075a5f395f81816101380152818161112d015261118601525f81816101a201528181610f740152610fed01525f81816102d8015281816103aa0152818161070e01526108830152612ad25ff3fe608060405234801561000f575f80fd5b506004361061012f575f3560e01c8063a5d4096b116100ad578063cf7ea1961161007d578063d8fbc83311610063578063d8fbc833146102a6578063d94073d4146102b9578063f2f4eb26146102d3575f80fd5b8063cf7ea19614610279578063d8dfeb451461028c575f80fd5b8063a5d4096b14610226578063afd27bf514610239578063b82c4dc114610253578063c56a6c0114610266575f80fd5b8063781c18db1161010257806387cb0f51116100e857806387cb0f51146101f85780638a971d911461020d5780639fe4ee4714610213575f80fd5b8063781c18db146101c457806380f55605146101de575f80fd5b80630b6942c214610133578063206aeab314610176578063245a7bfc1461018b5780635fafa5891461019d575b5f80fd5b61015a7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b03909116815260200160405180910390f35b6e5bbb0ef59571e58418f9a4357b68a061015a565b5f5461015a906001600160a01b031681565b61015a7f000000000000000000000000000000000000000000000000000000000000000081565b73fb35fd0095dd1096b1ca49ad44d8c5812a20167761015a565b73f32e58f92e60f4b0a37a69b95d642a471365eae861015a565b61020b610206366004611d55565b6102fa565b005b5f61015a565b61020b610221366004611e1e565b610395565b61020b610234366004611eb2565b6104a6565b73ac0047886a985071476a1186be89222659970d6561015a565b61020b610261366004611f75565b6106f9565b61020b610274366004611e1e565b61086e565b61020b610287366004612008565b610981565b73cd5fe23c85820f7b72d0926fc9b05b43e359b7ee61015a565b60015461015a906001600160a01b031681565b73c69ad9bab1dee23f4605a82b3354f8e40d1e596661015a565b61015a7f000000000000000000000000000000000000000000000000000000000000000081565b6001546040517fd8eabcb80000000000000000000000000000000000000000000000000000000081526001600160a01b039091169063d8eabcb89061034d908890889088905f9089908990600401612050565b60408051808303815f875af1158015610368573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061038c91906120db565b50505050505050565b60405163521d4de960e01b81523360048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063521d4de990602401602060405180830381865afa1580156103f7573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061041b919061210c565b61043857604051632678482f60e21b815260040160405180910390fd5b6001600160a01b038116158061045a57505f546001600160a01b038281169116145b156104785760405163d92e233d60e01b815260040160405180910390fd5b5f805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055565b5f805f838060200190518101906104bd9190612189565b9650919450925090506001600160a01b038316156104db57826104dd565b865b92506104fc89868360048111156104f6576104f66121ea565b87610b7c565b6040516370a0823160e01b81523060048201525f906001600160a01b038a16906370a0823190602401602060405180830381865afa158015610540573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061056491906121fe565b9050828110156105875760405163a1aabbe160e01b815260040160405180910390fd5b6040516370a0823160e01b81526001600160a01b0389811660048301525f91908b16906370a0823190602401602060405180830381865afa1580156105ce573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906105f291906121fe565b905087811015806106145750886001600160a01b0316856001600160a01b0316145b156106325761062d6001600160a01b038b168684610c1a565b61066a565b61065189610640838b612229565b6001600160a01b038d169190610c1a565b61066a85896106608585612242565b6106409190612229565b6040516370a0823160e01b81523060048201526001600160a01b038c16906370a0823190602401602060405180830381865afa1580156106ac573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106d091906121fe565b965086156106ec576106ec6001600160a01b038c168689610c1a565b5050505050505050505050565b60405163521d4de960e01b81523360048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063521d4de990602401602060405180830381865afa15801561075b573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061077f919061210c565b61079c57604051632678482f60e21b815260040160405180910390fd5b8483811415806107ac5750808214155b156107e3576040517f46282e8d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b818110156108645761085c88888381811061080257610802612255565b90506020020160208101906108179190611e1e565b87878481811061082957610829612255565b905060200201602081019061083e9190611e1e565b86868581811061085057610850612255565b90506020020135610cc8565b6001016107e5565b5050505050505050565b60405163521d4de960e01b81523360048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063521d4de990602401602060405180830381865afa1580156108d0573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108f4919061210c565b61091157604051632678482f60e21b815260040160405180910390fd5b6001600160a01b038116158061093457506001546001600160a01b038281169116145b156109525760405163d92e233d60e01b815260040160405180910390fd5b6001805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055565b6001546001600160a01b031633146109c5576040517fc22a648e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f8080806109d585870187612269565b93509350935093505f805f838060200190518101906109f49190612189565b965091945092509050610a1487868360048111156104f6576104f66121ea565b6040516370a0823160e01b81523060048201525f906001600160a01b038816906370a0823190602401602060405180830381865afa158015610a58573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a7c91906121fe565b905082811015610a9f5760405163a1aabbe160e01b815260040160405180910390fd5b600154610ab9906001600160a01b0389811691168d610d9f565b8a811115610ae057610ae084610acf8d84612229565b6001600160a01b038a169190610c1a565b6040516370a0823160e01b81523060048201526001600160a01b038916906370a0823190602401602060405180830381865afa158015610b22573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610b4691906121fe565b95508515610b6257610b626001600160a01b0389168588610c1a565b6001546106ec906001600160a01b0389811691168d610ebe565b5f826004811115610b8f57610b8f6121ea565b03610ba557610b9f848483610f6d565b50610c14565b6001826004811115610bb957610bb96121ea565b03610bc857610b9f8482611069565b6002826004811115610bdc57610bdc6121ea565b03610bf057610beb848261110d565b610c14565b6003826004811115610c0457610c046121ea565b03610c1457610c12816111f3565b505b50505050565b6040516001600160a01b038316602482015260448101829052610cc39084907fa9059cbb00000000000000000000000000000000000000000000000000000000906064015b60408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff0000000000000000000000000000000000000000000000000000000090931692909217909152611296565b505050565b604051636eb1769f60e11b81523060048201526001600160a01b0383811660248301525f919085169063dd62ed3e90604401602060405180830381865afa158015610d15573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610d3991906121fe565b90508181108015610d545750610d5160025f196122c5565b81105b15610d7857610beb83610d678385612229565b6001600160a01b0387169190610ebe565b81811115610c1457610c1483610d8e8484612229565b6001600160a01b038716919061137a565b801580610e175750604051636eb1769f60e11b81523060048201526001600160a01b03838116602483015284169063dd62ed3e90604401602060405180830381865afa158015610df1573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610e1591906121fe565b155b610e8e5760405162461bcd60e51b815260206004820152603660248201527f5361666545524332303a20617070726f76652066726f6d206e6f6e2d7a65726f60448201527f20746f206e6f6e2d7a65726f20616c6c6f77616e63650000000000000000000060648201526084015b60405180910390fd5b6040516001600160a01b038316602482015260448101829052610cc390849063095ea7b360e01b90606401610c5f565b604051636eb1769f60e11b81523060048201526001600160a01b0383811660248301525f91839186169063dd62ed3e90604401602060405180830381865afa158015610f0c573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610f3091906121fe565b610f3a9190612242565b6040516001600160a01b038516602482015260448101829052909150610c1490859063095ea7b360e01b90606401610c5f565b5f610f99847f000000000000000000000000000000000000000000000000000000000000000085611497565b6040805160a0810182528381523060208201524281830152606081018590525f608082015290517fc04b8d590000000000000000000000000000000000000000000000000000000081526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169163c04b8d5991611021919060040161230f565b6020604051808303815f875af115801561103d573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061106191906121fe565b949350505050565b5f80546110829084906001600160a01b03165f19610cc8565b5f805460405182916001600160a01b03169061109f908690612367565b5f604051808303815f865af19150503d805f81146110d8576040519150601f19603f3d011682016040523d82523d5f602084013e6110dd565b606091505b5091509150816110f0576110f081611521565b8080602001905181019061110491906121fe565b95945050505050565b5f8082806020019051810190611123919061242b565b91509150611153847f00000000000000000000000000000000000000000000000000000000000000005f19610cc8565b6040517f848c48da0000000000000000000000000000000000000000000000000000000081526060906001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063848c48da906111bf9084908790879060040161258f565b5f604051808303815f87803b1580156111d6575f80fd5b505af11580156111e8573d5f803e3d5ffd5b505050505050505050565b5f805f60608480602001905181019061120c9190612648565b96509093509150821561124a578480602001905181019061122d91906126a5565b9550905061123a81611562565b611243856115e1565b935061128e565b5f8060608780602001905181019061126291906126fb565b9b509650919450925090506112778289611846565b61128084611562565b61128a8186611a10565b5050505b505050919050565b5f6112ea826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b0316611ae99092919063ffffffff16565b805190915015610cc35780806020019051810190611308919061210c565b610cc35760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f742073756363656564000000000000000000000000000000000000000000006064820152608401610e85565b604051636eb1769f60e11b81523060048201526001600160a01b0383811660248301525f919085169063dd62ed3e90604401602060405180830381865afa1580156113c7573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906113eb91906121fe565b9050818110156114635760405162461bcd60e51b815260206004820152602960248201527f5361666545524332303a2064656372656173656420616c6c6f77616e6365206260448201527f656c6f77207a65726f00000000000000000000000000000000000000000000006064820152608401610e85565b6040516001600160a01b03841660248201528282036044820181905290610c1290869063095ea7b360e01b90606401610c5f565b604051636eb1769f60e11b81523060048201526001600160a01b0383811660248301525f919085169063dd62ed3e90604401602060405180830381865afa1580156114e4573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061150891906121fe565b905081811015610c1457610c1483610d67835f19612229565b80511561153057805181602001fd5b6040517f6a8df6a800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80515f5b81811015610cc3575f805f85848151811061158357611583612255565b602002602001015180602001905181019061159e91906127ef565b9250925092505f6115af8483611069565b9050828110156115d25760405163a1aabbe160e01b815260040160405180910390fd5b50505050806001019050611566565b5f8073cd5fe23c85820f7b72d0926fc9b05b43e359b7ee6040516370a0823160e01b81523060048201526001600160a01b0391909116906370a0823190602401602060405180830381865afa15801561163c573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061166091906121fe565b90505f73ac0047886a985071476a1186be89222659970d656001600160a01b03166320e8c5653073cd5fe23c85820f7b72d0926fc9b05b43e359b7ee6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b1681526001600160a01b03928316600482015291166024820152604481018590525f60648201526084016020604051808303815f875af115801561170b573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061172f91906121fe565b905061176a6040518060a001604052805f6001600160a01b031681526020015f81526020016060815260200160608152602001606081525090565b6e5bbb0ef59571e58418f9a4357b68a06001600160a01b0316632a50917c3073f32e58f92e60f4b0a37a69b95d642a471365eae8855f6040518060a001604052805f81526020018960026117be919061282f565b81526020015f8152602001600a815260200166038d7ea4c68000815250876040518763ffffffff1660e01b81526004016117fd969594939291906129b1565b60408051808303815f875af1158015611818573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061183c91906120db565b5095945050505050565b5f8180602001905181019061185b91906121fe565b905061189073c69ad9bab1dee23f4605a82b3354f8e40d1e596673f32e58f92e60f4b0a37a69b95d642a471365eae885610c1a565b604080517f29910b1100000000000000000000000000000000000000000000000000000000815273ac0047886a985071476a1186be89222659970d65600482015260248101859052606060448201525f606482018190528251909273f32e58f92e60f4b0a37a69b95d642a471365eae8926329910b119260848083019392829003018187875af1158015611926573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061194a91906120db565b50604080517f769f8e5d0000000000000000000000000000000000000000000000000000000081523060048201526024810183905273cd5fe23c85820f7b72d0926fc9b05b43e359b7ee60448201526064810185905260016084820152905191925073ac0047886a985071476a1186be89222659970d659163769f8e5d9160a48082019260209290919082900301815f875af11580156119ec573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c1291906121fe565b81515f5b81811015610c14575f848281518110611a2f57611a2f612255565b60209081029190910101516040516370a0823160e01b81523060048201526001600160a01b03909116906370a0823190602401602060405180830381865afa158015611a7d573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611aa191906121fe565b90508015611ae057611ae08482878581518110611ac057611ac0612255565b60200260200101516001600160a01b0316610c1a9092919063ffffffff16565b50600101611a14565b606061106184845f85611afe565b9392505050565b606082471015611b765760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f60448201527f722063616c6c00000000000000000000000000000000000000000000000000006064820152608401610e85565b6001600160a01b0385163b611bcd5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610e85565b5f80866001600160a01b03168587604051611be89190612367565b5f6040518083038185875af1925050503d805f8114611c22576040519150601f19603f3d011682016040523d82523d5f602084013e611c27565b606091505b5091509150611c37828286611c42565b979650505050505050565b60608315611c51575081611af7565b825115611c615782518084602001fd5b8160405162461bcd60e51b8152600401610e859190612a8a565b634e487b7160e01b5f52604160045260245ffd5b60405160a0810167ffffffffffffffff81118282101715611cb257611cb2611c7b565b60405290565b604051601f8201601f1916810167ffffffffffffffff81118282101715611ce157611ce1611c7b565b604052919050565b6001600160a01b0381168114611cfd575f80fd5b50565b8035611d0b81611ce9565b919050565b5f8083601f840112611d20575f80fd5b50813567ffffffffffffffff811115611d37575f80fd5b602083019150836020828501011115611d4e575f80fd5b9250929050565b5f805f805f858703610100811215611d6b575f80fd5b60a0811215611d78575f80fd5b50611d81611c8f565b8635611d8c81611ce9565b81526020870135611d9c81611ce9565b60208201526040870135611daf81611ce9565b60408201526060870135611dc281611ce9565b6060820152608087810135908201529450611ddf60a08701611d00565b935060c0860135925060e086013567ffffffffffffffff811115611e01575f80fd5b611e0d88828901611d10565b969995985093965092949392505050565b5f60208284031215611e2e575f80fd5b8135611af781611ce9565b5f67ffffffffffffffff821115611e5257611e52611c7b565b50601f01601f191660200190565b5f82601f830112611e6f575f80fd5b8135611e82611e7d82611e39565b611cb8565b818152846020838601011115611e96575f80fd5b816020850160208301375f918101602001919091529392505050565b5f805f805f8060c08789031215611ec7575f80fd5b8635611ed281611ce9565b95506020870135611ee281611ce9565b94506040870135611ef281611ce9565b9350606087013592506080870135915060a087013567ffffffffffffffff811115611f1b575f80fd5b611f2789828a01611e60565b9150509295509295509295565b5f8083601f840112611f44575f80fd5b50813567ffffffffffffffff811115611f5b575f80fd5b6020830191508360208260051b8501011115611d4e575f80fd5b5f805f805f8060608789031215611f8a575f80fd5b863567ffffffffffffffff80821115611fa1575f80fd5b611fad8a838b01611f34565b90985096506020890135915080821115611fc5575f80fd5b611fd18a838b01611f34565b90965094506040890135915080821115611fe9575f80fd5b50611ff689828a01611f34565b979a9699509497509295939492505050565b5f805f6040848603121561201a575f80fd5b83359250602084013567ffffffffffffffff811115612037575f80fd5b61204386828701611d10565b9497909650939450505050565b5f6101206001600160a01b03808a511684528060208b01511660208501528060408b01511660408501528060608b015116606085015260808a0151608085015280891660a0850152508660c08401528560e0840152806101008401528381840152506101408385828501375f838501820152601f909301601f19169091019091019695505050505050565b5f80604083850312156120ec575f80fd5b505080516020909101519092909150565b80518015158114611d0b575f80fd5b5f6020828403121561211c575f80fd5b611af7826120fd565b5f5b8381101561213f578181015183820152602001612127565b50505f910152565b5f82601f830112612156575f80fd5b8151612164611e7d82611e39565b818152846020838601011115612178575f80fd5b611061826020830160208701612125565b5f805f806080858703121561219c575f80fd5b84516121a781611ce9565b809450506020850151925060408501519150606085015167ffffffffffffffff8111156121d2575f80fd5b6121de87828801612147565b91505092959194509250565b634e487b7160e01b5f52602160045260245ffd5b5f6020828403121561220e575f80fd5b5051919050565b634e487b7160e01b5f52601160045260245ffd5b8181038181111561223c5761223c612215565b92915050565b8082018082111561223c5761223c612215565b634e487b7160e01b5f52603260045260245ffd5b5f805f806080858703121561227c575f80fd5b843561228781611ce9565b9350602085013561229781611ce9565b925060408501359150606085013567ffffffffffffffff8111156122b9575f80fd5b6121de87828801611e60565b5f826122df57634e487b7160e01b5f52601260045260245ffd5b500490565b5f81518084526122fb816020860160208601612125565b601f01601f19169290920160200192915050565b602081525f825160a0602084015261232a60c08401826122e4565b90506001600160a01b0360208501511660408401526040840151606084015260608401516080840152608084015160a08401528091505092915050565b5f8251612378818460208701612125565b9190910192915050565b5f67ffffffffffffffff82111561239b5761239b611c7b565b5060051b60200190565b5f82601f8301126123b4575f80fd5b815160206123c4611e7d83612382565b82815260059290921b840181019181810190868411156123e2575f80fd5b8286015b8481101561242057805167ffffffffffffffff811115612404575f80fd5b6124128986838b0101612147565b8452509183019183016123e6565b509695505050505050565b5f806040838503121561243c575f80fd5b825167ffffffffffffffff80821115612453575f80fd5b818501915085601f830112612466575f80fd5b81516020612476611e7d83612382565b82815260059290921b84018101918181019089841115612494575f80fd5b948201945b838610156124be578551600e81106124af575f80fd5b82529482019490820190612499565b918801519196509093505050808211156124d6575f80fd5b506124e3858286016123a5565b9150509250929050565b5f815180845260208085019450602084015f5b8381101561252c578151600e811061251a5761251a6121ea565b87529582019590820190600101612500565b509495945050505050565b5f8282518085526020808601955060208260051b840101602086015f5b8481101561258257601f198684030189526125708383516122e4565b98840198925090830190600101612554565b5090979650505050505050565b606080825284518282018190525f9190608090818501906020808a01865b8381101561261257815180516001600160a01b0390811687528482015116848701526040808201519087015287810151888701528681015160ff168787015260a0808201519087015260c0908101519086015260e090940193908201906001016125ad565b50505050848103602086015261262881886124ed565b92505050828103604084015261263e8185612537565b9695505050505050565b5f805f6060848603121561265a575f80fd5b612663846120fd565b9250602084015161267381611ce9565b604085015190925067ffffffffffffffff81111561268f575f80fd5b61269b86828701612147565b9150509250925092565b5f80604083850312156126b6575f80fd5b825167ffffffffffffffff808211156126cd575f80fd5b6126d9868387016123a5565b935060208501519150808211156126ee575f80fd5b506124e385828601612147565b5f805f805f60a0868803121561270f575f80fd5b855194506020808701519450604087015167ffffffffffffffff80821115612735575f80fd5b818901915089601f830112612748575f80fd5b8151612756611e7d82612382565b81815260059190911b8301840190848101908c831115612774575f80fd5b938501935b8285101561279b57845161278c81611ce9565b82529385019390850190612779565b60608c015190985094505050808311156127b3575f80fd5b6127bf8a848b016123a5565b945060808901519250808311156127d4575f80fd5b50506127e288828901612147565b9150509295509295909350565b5f805f60608486031215612801575f80fd5b835161280c81611ce9565b60208501516040860151919450925067ffffffffffffffff81111561268f575f80fd5b808202811582820484141761223c5761223c612215565b60048110612856576128566121ea565b9052565b5f82825180855260208086019550808260051b8401018186015f5b8481101561258257601f198684030189528151606081518186528051828701528681015160808181890152604091508183015160a081818b015285850151955060c091506128c5828b0187612846565b91840151945060e0916128e28a8401876001600160a01b03169052565b84015194506101006128fe8a8201876001600160a01b03169052565b9084015194506101209061291c8a8301876001600160a01b03169052565b9184015194506101409161293a8a8401876001600160a01b03169052565b8401516101608a81019190915290840151610180808b0191909152918401516101a08a01528301516101c0890191909152925061297b6101e08801846122e4565b92508784015191508683038888015261299483836122e4565b938101519601959095525098840198925090830190600101612875565b5f6101406001600160a01b03808a168452808916602085015287604085015286606085015285516080850152602086015160a0850152604086015160c0850152606086015160e0850152608086015161010085015281610120850152808551168285015250506020830151610160830152604083015160a0610180840152612a3d6101e084018261285a565b9050606084015161013f1980858403016101a0860152612a5d838361285a565b92506080860151915080858403016101c086015250612a7c82826122e4565b9a9950505050505050505050565b602081525f611af760208301846122e456fea26469706673582212201300d6cdf082b593c24d9215949e9b41cd65071465346307299fdd787203d09b64736f6c634300081600330000000000000000000000005bc6bef80da563ebf6df6d6913513fa9a7ec89be000000000000000000000000e592427a0aece92de3edee1f18e0157c05861564000000000000000000000000111111125421ca6dc452d289314280a0f8842a650000000000000000000000004579709627ca36bce92f51ac975746f431890930000000000000000000000000bbbbbbbbbb9cc5e90e3b3af64bdaf62c37eeffcb", + "nonce": "0x89", + "accessList": [] + }, + "additionalContracts": [], + "isFixedGasLimit": false + } + ], + "receipts": [ + { + "transactionHash": "0xa68283a65f801cefc4d40d9eb17a962be0185906466aa28e0f6ffa8f71f9458b", + "transactionIndex": "0x0", + "blockHash": "0xa7128cb6a523688523a5cdd7ae96ea6f55713010a75c33a38b95d75342f63e82", + "blockNumber": "0x12b3f2a", + "from": "0xA9DdD91249DFdd450E81E1c56Ab60E1A62651701", + "to": null, + "cumulativeGasUsed": "0x27037f", + "gasUsed": "0x27037f", + "contractAddress": "0x3F0fA7847b1B2E4515a93e05B29f115D9BB51D85", + "logs": [ + { + "address": "0xCd5fE23C85820F7B72D0926FC9b05b43E359b7ee", + "topics": [ + "0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925", + "0x0000000000000000000000003f0fa7847b1b2e4515a93e05b29f115d9bb51d85", + "0x000000000000000000000000ac0047886a985071476a1186be89222659970d65" + ], + "data": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff", + "blockHash": "0xa7128cb6a523688523a5cdd7ae96ea6f55713010a75c33a38b95d75342f63e82", + "blockNumber": "0x12b3f2a", + "transactionHash": "0xa68283a65f801cefc4d40d9eb17a962be0185906466aa28e0f6ffa8f71f9458b", + "transactionIndex": "0x0", + "logIndex": "0x0", + "removed": false + }, + { + "address": "0xAC0047886a985071476a1186bE89222659970d65", + "topics": [ + "0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925", + "0x0000000000000000000000003f0fa7847b1b2e4515a93e05b29f115d9bb51d85", + "0x00000000000000000000000000000000005bbb0ef59571e58418f9a4357b68a0" + ], + "data": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff", + "blockHash": "0xa7128cb6a523688523a5cdd7ae96ea6f55713010a75c33a38b95d75342f63e82", + "blockNumber": "0x12b3f2a", + "transactionHash": "0xa68283a65f801cefc4d40d9eb17a962be0185906466aa28e0f6ffa8f71f9458b", + "transactionIndex": "0x0", + "logIndex": "0x1", + "removed": false + } + ], + "status": "0x1", + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000400000008000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040000000000000000000100000000408000000000000000000000004000000000000000000002000000000000000022000000080000004000000000000000000000000000000000000000000000000000000000000000040000000000000000000000000008000000000000000000010000000000000000000000000010000000000080000000000000000000000", + "type": "0x2", + "effectiveGasPrice": "0xb784ed73a" + } + ], + "libraries": [], + "pending": [], + "returns": {}, + "timestamp": 1712585373, + "chain": 1, + "multi": false, + "commit": "1db5568" +} \ No newline at end of file diff --git a/broadcast/SwapperLevMorpho.s.sol/1/run-latest.json b/broadcast/SwapperLevMorpho.s.sol/1/run-latest.json new file mode 100644 index 0000000..58b9619 --- /dev/null +++ b/broadcast/SwapperLevMorpho.s.sol/1/run-latest.json @@ -0,0 +1,85 @@ +{ + "transactions": [ + { + "hash": "0xa68283a65f801cefc4d40d9eb17a962be0185906466aa28e0f6ffa8f71f9458b", + "transactionType": "CREATE", + "contractName": "PendleLevSwapperMorphoWeETH", + "contractAddress": "0x3F0fA7847b1B2E4515a93e05B29f115D9BB51D85", + "function": null, + "arguments": [ + "0x5bc6BEf80DA563EBf6Df6D6913513fa9A7ec89BE", + "0xE592427A0AEce92De3Edee1F18E0157C05861564", + "0x111111125421cA6dc452d289314280a0f8842A65", + "0x4579709627CA36BCe92f51ac975746f431890930", + "0xBBBBBbbBBb9cC5e90e3b3Af64bdAF62C37EEFFCb" + ], + "transaction": { + "type": "0x02", + "from": "0xa9ddd91249dfdd450e81e1c56ab60e1a62651701", + "gas": "0x32b7be", + "value": "0x0", + "data": "0x60e060405234801562000010575f80fd5b506040516200322c3803806200322c833981016040819052620000339162000590565b8484848484848484848484848484838383836001600160a01b03841615806200006357506001600160a01b038216155b806200007657506001600160a01b038116155b15620000955760405163d92e233d60e01b815260040160405180910390fd5b6001600160a01b0393841660805291831660a0525f80546001600160a01b031916918416919091178155911660c052620000cc5f90565b6001600160a01b0316146200015757620001575f5f195f6001600160a01b03166338d52e0f6040518163ffffffff1660e01b81526004016020604051808303815f875af115801562000120573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906200014691906200060c565b6001600160a01b0316919062000214565b5050600180546001600160a01b0319166001600160a01b039490941693909317909255505f94506200018e9350620002f792505050565b6001600160a01b0316146200020457620001d373ac0047886a985071476a1186be89222659970d655f1973cd5fe23c85820f7b72d0926fc9b05b43e359b7ee62000146565b620002046e5bbb0ef59571e58418f9a4357b68a05f1973ac0047886a985071476a1186be89222659970d6562000146565b50505050505050505050620006fe565b604051636eb1769f60e11b81523060048201526001600160a01b0383811660248301525f91839186169063dd62ed3e90604401602060405180830381865afa15801562000263573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906200028991906200062a565b62000295919062000642565b604080516001600160a01b038616602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b0390811663095ea7b360e01b17909152919250620002f1918691906200030f16565b50505050565b73cd5fe23c85820f7b72d0926fc9b05b43e359b7ee90565b6040805180820190915260208082527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564908201525f906200035d906001600160a01b038516908490620003e8565b805190915015620003e357808060200190518101906200037e919062000668565b620003e35760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b60648201526084015b60405180910390fd5b505050565b6060620003f884845f8562000402565b90505b9392505050565b606082471015620004655760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b6064820152608401620003da565b6001600160a01b0385163b620004be5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401620003da565b5f80866001600160a01b03168587604051620004db9190620006ad565b5f6040518083038185875af1925050503d805f811462000517576040519150601f19603f3d011682016040523d82523d5f602084013e6200051c565b606091505b5090925090506200052f8282866200053a565b979650505050505050565b606083156200054b575081620003fb565b8251156200055c5782518084602001fd5b8160405162461bcd60e51b8152600401620003da9190620006ca565b6001600160a01b03811681146200058d575f80fd5b50565b5f805f805f60a08688031215620005a5575f80fd5b8551620005b28162000578565b6020870151909550620005c58162000578565b6040870151909450620005d88162000578565b6060870151909350620005eb8162000578565b6080870151909250620005fe8162000578565b809150509295509295909350565b5f602082840312156200061d575f80fd5b8151620003fb8162000578565b5f602082840312156200063b575f80fd5b5051919050565b808201808211156200066257634e487b7160e01b5f52601160045260245ffd5b92915050565b5f6020828403121562000679575f80fd5b81518015158114620003fb575f80fd5b5f5b83811015620006a55781810151838201526020016200068b565b50505f910152565b5f8251620006c081846020870162000689565b9190910192915050565b602081525f8251806020840152620006ea81604085016020870162000689565b601f01601f19169190910160400192915050565b60805160a05160c051612ad26200075a5f395f81816101380152818161112d015261118601525f81816101a201528181610f740152610fed01525f81816102d8015281816103aa0152818161070e01526108830152612ad25ff3fe608060405234801561000f575f80fd5b506004361061012f575f3560e01c8063a5d4096b116100ad578063cf7ea1961161007d578063d8fbc83311610063578063d8fbc833146102a6578063d94073d4146102b9578063f2f4eb26146102d3575f80fd5b8063cf7ea19614610279578063d8dfeb451461028c575f80fd5b8063a5d4096b14610226578063afd27bf514610239578063b82c4dc114610253578063c56a6c0114610266575f80fd5b8063781c18db1161010257806387cb0f51116100e857806387cb0f51146101f85780638a971d911461020d5780639fe4ee4714610213575f80fd5b8063781c18db146101c457806380f55605146101de575f80fd5b80630b6942c214610133578063206aeab314610176578063245a7bfc1461018b5780635fafa5891461019d575b5f80fd5b61015a7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b03909116815260200160405180910390f35b6e5bbb0ef59571e58418f9a4357b68a061015a565b5f5461015a906001600160a01b031681565b61015a7f000000000000000000000000000000000000000000000000000000000000000081565b73fb35fd0095dd1096b1ca49ad44d8c5812a20167761015a565b73f32e58f92e60f4b0a37a69b95d642a471365eae861015a565b61020b610206366004611d55565b6102fa565b005b5f61015a565b61020b610221366004611e1e565b610395565b61020b610234366004611eb2565b6104a6565b73ac0047886a985071476a1186be89222659970d6561015a565b61020b610261366004611f75565b6106f9565b61020b610274366004611e1e565b61086e565b61020b610287366004612008565b610981565b73cd5fe23c85820f7b72d0926fc9b05b43e359b7ee61015a565b60015461015a906001600160a01b031681565b73c69ad9bab1dee23f4605a82b3354f8e40d1e596661015a565b61015a7f000000000000000000000000000000000000000000000000000000000000000081565b6001546040517fd8eabcb80000000000000000000000000000000000000000000000000000000081526001600160a01b039091169063d8eabcb89061034d908890889088905f9089908990600401612050565b60408051808303815f875af1158015610368573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061038c91906120db565b50505050505050565b60405163521d4de960e01b81523360048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063521d4de990602401602060405180830381865afa1580156103f7573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061041b919061210c565b61043857604051632678482f60e21b815260040160405180910390fd5b6001600160a01b038116158061045a57505f546001600160a01b038281169116145b156104785760405163d92e233d60e01b815260040160405180910390fd5b5f805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055565b5f805f838060200190518101906104bd9190612189565b9650919450925090506001600160a01b038316156104db57826104dd565b865b92506104fc89868360048111156104f6576104f66121ea565b87610b7c565b6040516370a0823160e01b81523060048201525f906001600160a01b038a16906370a0823190602401602060405180830381865afa158015610540573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061056491906121fe565b9050828110156105875760405163a1aabbe160e01b815260040160405180910390fd5b6040516370a0823160e01b81526001600160a01b0389811660048301525f91908b16906370a0823190602401602060405180830381865afa1580156105ce573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906105f291906121fe565b905087811015806106145750886001600160a01b0316856001600160a01b0316145b156106325761062d6001600160a01b038b168684610c1a565b61066a565b61065189610640838b612229565b6001600160a01b038d169190610c1a565b61066a85896106608585612242565b6106409190612229565b6040516370a0823160e01b81523060048201526001600160a01b038c16906370a0823190602401602060405180830381865afa1580156106ac573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106d091906121fe565b965086156106ec576106ec6001600160a01b038c168689610c1a565b5050505050505050505050565b60405163521d4de960e01b81523360048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063521d4de990602401602060405180830381865afa15801561075b573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061077f919061210c565b61079c57604051632678482f60e21b815260040160405180910390fd5b8483811415806107ac5750808214155b156107e3576040517f46282e8d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b818110156108645761085c88888381811061080257610802612255565b90506020020160208101906108179190611e1e565b87878481811061082957610829612255565b905060200201602081019061083e9190611e1e565b86868581811061085057610850612255565b90506020020135610cc8565b6001016107e5565b5050505050505050565b60405163521d4de960e01b81523360048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063521d4de990602401602060405180830381865afa1580156108d0573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108f4919061210c565b61091157604051632678482f60e21b815260040160405180910390fd5b6001600160a01b038116158061093457506001546001600160a01b038281169116145b156109525760405163d92e233d60e01b815260040160405180910390fd5b6001805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055565b6001546001600160a01b031633146109c5576040517fc22a648e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f8080806109d585870187612269565b93509350935093505f805f838060200190518101906109f49190612189565b965091945092509050610a1487868360048111156104f6576104f66121ea565b6040516370a0823160e01b81523060048201525f906001600160a01b038816906370a0823190602401602060405180830381865afa158015610a58573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a7c91906121fe565b905082811015610a9f5760405163a1aabbe160e01b815260040160405180910390fd5b600154610ab9906001600160a01b0389811691168d610d9f565b8a811115610ae057610ae084610acf8d84612229565b6001600160a01b038a169190610c1a565b6040516370a0823160e01b81523060048201526001600160a01b038916906370a0823190602401602060405180830381865afa158015610b22573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610b4691906121fe565b95508515610b6257610b626001600160a01b0389168588610c1a565b6001546106ec906001600160a01b0389811691168d610ebe565b5f826004811115610b8f57610b8f6121ea565b03610ba557610b9f848483610f6d565b50610c14565b6001826004811115610bb957610bb96121ea565b03610bc857610b9f8482611069565b6002826004811115610bdc57610bdc6121ea565b03610bf057610beb848261110d565b610c14565b6003826004811115610c0457610c046121ea565b03610c1457610c12816111f3565b505b50505050565b6040516001600160a01b038316602482015260448101829052610cc39084907fa9059cbb00000000000000000000000000000000000000000000000000000000906064015b60408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff0000000000000000000000000000000000000000000000000000000090931692909217909152611296565b505050565b604051636eb1769f60e11b81523060048201526001600160a01b0383811660248301525f919085169063dd62ed3e90604401602060405180830381865afa158015610d15573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610d3991906121fe565b90508181108015610d545750610d5160025f196122c5565b81105b15610d7857610beb83610d678385612229565b6001600160a01b0387169190610ebe565b81811115610c1457610c1483610d8e8484612229565b6001600160a01b038716919061137a565b801580610e175750604051636eb1769f60e11b81523060048201526001600160a01b03838116602483015284169063dd62ed3e90604401602060405180830381865afa158015610df1573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610e1591906121fe565b155b610e8e5760405162461bcd60e51b815260206004820152603660248201527f5361666545524332303a20617070726f76652066726f6d206e6f6e2d7a65726f60448201527f20746f206e6f6e2d7a65726f20616c6c6f77616e63650000000000000000000060648201526084015b60405180910390fd5b6040516001600160a01b038316602482015260448101829052610cc390849063095ea7b360e01b90606401610c5f565b604051636eb1769f60e11b81523060048201526001600160a01b0383811660248301525f91839186169063dd62ed3e90604401602060405180830381865afa158015610f0c573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610f3091906121fe565b610f3a9190612242565b6040516001600160a01b038516602482015260448101829052909150610c1490859063095ea7b360e01b90606401610c5f565b5f610f99847f000000000000000000000000000000000000000000000000000000000000000085611497565b6040805160a0810182528381523060208201524281830152606081018590525f608082015290517fc04b8d590000000000000000000000000000000000000000000000000000000081526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169163c04b8d5991611021919060040161230f565b6020604051808303815f875af115801561103d573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061106191906121fe565b949350505050565b5f80546110829084906001600160a01b03165f19610cc8565b5f805460405182916001600160a01b03169061109f908690612367565b5f604051808303815f865af19150503d805f81146110d8576040519150601f19603f3d011682016040523d82523d5f602084013e6110dd565b606091505b5091509150816110f0576110f081611521565b8080602001905181019061110491906121fe565b95945050505050565b5f8082806020019051810190611123919061242b565b91509150611153847f00000000000000000000000000000000000000000000000000000000000000005f19610cc8565b6040517f848c48da0000000000000000000000000000000000000000000000000000000081526060906001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063848c48da906111bf9084908790879060040161258f565b5f604051808303815f87803b1580156111d6575f80fd5b505af11580156111e8573d5f803e3d5ffd5b505050505050505050565b5f805f60608480602001905181019061120c9190612648565b96509093509150821561124a578480602001905181019061122d91906126a5565b9550905061123a81611562565b611243856115e1565b935061128e565b5f8060608780602001905181019061126291906126fb565b9b509650919450925090506112778289611846565b61128084611562565b61128a8186611a10565b5050505b505050919050565b5f6112ea826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b0316611ae99092919063ffffffff16565b805190915015610cc35780806020019051810190611308919061210c565b610cc35760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f742073756363656564000000000000000000000000000000000000000000006064820152608401610e85565b604051636eb1769f60e11b81523060048201526001600160a01b0383811660248301525f919085169063dd62ed3e90604401602060405180830381865afa1580156113c7573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906113eb91906121fe565b9050818110156114635760405162461bcd60e51b815260206004820152602960248201527f5361666545524332303a2064656372656173656420616c6c6f77616e6365206260448201527f656c6f77207a65726f00000000000000000000000000000000000000000000006064820152608401610e85565b6040516001600160a01b03841660248201528282036044820181905290610c1290869063095ea7b360e01b90606401610c5f565b604051636eb1769f60e11b81523060048201526001600160a01b0383811660248301525f919085169063dd62ed3e90604401602060405180830381865afa1580156114e4573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061150891906121fe565b905081811015610c1457610c1483610d67835f19612229565b80511561153057805181602001fd5b6040517f6a8df6a800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80515f5b81811015610cc3575f805f85848151811061158357611583612255565b602002602001015180602001905181019061159e91906127ef565b9250925092505f6115af8483611069565b9050828110156115d25760405163a1aabbe160e01b815260040160405180910390fd5b50505050806001019050611566565b5f8073cd5fe23c85820f7b72d0926fc9b05b43e359b7ee6040516370a0823160e01b81523060048201526001600160a01b0391909116906370a0823190602401602060405180830381865afa15801561163c573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061166091906121fe565b90505f73ac0047886a985071476a1186be89222659970d656001600160a01b03166320e8c5653073cd5fe23c85820f7b72d0926fc9b05b43e359b7ee6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b1681526001600160a01b03928316600482015291166024820152604481018590525f60648201526084016020604051808303815f875af115801561170b573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061172f91906121fe565b905061176a6040518060a001604052805f6001600160a01b031681526020015f81526020016060815260200160608152602001606081525090565b6e5bbb0ef59571e58418f9a4357b68a06001600160a01b0316632a50917c3073f32e58f92e60f4b0a37a69b95d642a471365eae8855f6040518060a001604052805f81526020018960026117be919061282f565b81526020015f8152602001600a815260200166038d7ea4c68000815250876040518763ffffffff1660e01b81526004016117fd969594939291906129b1565b60408051808303815f875af1158015611818573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061183c91906120db565b5095945050505050565b5f8180602001905181019061185b91906121fe565b905061189073c69ad9bab1dee23f4605a82b3354f8e40d1e596673f32e58f92e60f4b0a37a69b95d642a471365eae885610c1a565b604080517f29910b1100000000000000000000000000000000000000000000000000000000815273ac0047886a985071476a1186be89222659970d65600482015260248101859052606060448201525f606482018190528251909273f32e58f92e60f4b0a37a69b95d642a471365eae8926329910b119260848083019392829003018187875af1158015611926573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061194a91906120db565b50604080517f769f8e5d0000000000000000000000000000000000000000000000000000000081523060048201526024810183905273cd5fe23c85820f7b72d0926fc9b05b43e359b7ee60448201526064810185905260016084820152905191925073ac0047886a985071476a1186be89222659970d659163769f8e5d9160a48082019260209290919082900301815f875af11580156119ec573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c1291906121fe565b81515f5b81811015610c14575f848281518110611a2f57611a2f612255565b60209081029190910101516040516370a0823160e01b81523060048201526001600160a01b03909116906370a0823190602401602060405180830381865afa158015611a7d573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611aa191906121fe565b90508015611ae057611ae08482878581518110611ac057611ac0612255565b60200260200101516001600160a01b0316610c1a9092919063ffffffff16565b50600101611a14565b606061106184845f85611afe565b9392505050565b606082471015611b765760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f60448201527f722063616c6c00000000000000000000000000000000000000000000000000006064820152608401610e85565b6001600160a01b0385163b611bcd5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610e85565b5f80866001600160a01b03168587604051611be89190612367565b5f6040518083038185875af1925050503d805f8114611c22576040519150601f19603f3d011682016040523d82523d5f602084013e611c27565b606091505b5091509150611c37828286611c42565b979650505050505050565b60608315611c51575081611af7565b825115611c615782518084602001fd5b8160405162461bcd60e51b8152600401610e859190612a8a565b634e487b7160e01b5f52604160045260245ffd5b60405160a0810167ffffffffffffffff81118282101715611cb257611cb2611c7b565b60405290565b604051601f8201601f1916810167ffffffffffffffff81118282101715611ce157611ce1611c7b565b604052919050565b6001600160a01b0381168114611cfd575f80fd5b50565b8035611d0b81611ce9565b919050565b5f8083601f840112611d20575f80fd5b50813567ffffffffffffffff811115611d37575f80fd5b602083019150836020828501011115611d4e575f80fd5b9250929050565b5f805f805f858703610100811215611d6b575f80fd5b60a0811215611d78575f80fd5b50611d81611c8f565b8635611d8c81611ce9565b81526020870135611d9c81611ce9565b60208201526040870135611daf81611ce9565b60408201526060870135611dc281611ce9565b6060820152608087810135908201529450611ddf60a08701611d00565b935060c0860135925060e086013567ffffffffffffffff811115611e01575f80fd5b611e0d88828901611d10565b969995985093965092949392505050565b5f60208284031215611e2e575f80fd5b8135611af781611ce9565b5f67ffffffffffffffff821115611e5257611e52611c7b565b50601f01601f191660200190565b5f82601f830112611e6f575f80fd5b8135611e82611e7d82611e39565b611cb8565b818152846020838601011115611e96575f80fd5b816020850160208301375f918101602001919091529392505050565b5f805f805f8060c08789031215611ec7575f80fd5b8635611ed281611ce9565b95506020870135611ee281611ce9565b94506040870135611ef281611ce9565b9350606087013592506080870135915060a087013567ffffffffffffffff811115611f1b575f80fd5b611f2789828a01611e60565b9150509295509295509295565b5f8083601f840112611f44575f80fd5b50813567ffffffffffffffff811115611f5b575f80fd5b6020830191508360208260051b8501011115611d4e575f80fd5b5f805f805f8060608789031215611f8a575f80fd5b863567ffffffffffffffff80821115611fa1575f80fd5b611fad8a838b01611f34565b90985096506020890135915080821115611fc5575f80fd5b611fd18a838b01611f34565b90965094506040890135915080821115611fe9575f80fd5b50611ff689828a01611f34565b979a9699509497509295939492505050565b5f805f6040848603121561201a575f80fd5b83359250602084013567ffffffffffffffff811115612037575f80fd5b61204386828701611d10565b9497909650939450505050565b5f6101206001600160a01b03808a511684528060208b01511660208501528060408b01511660408501528060608b015116606085015260808a0151608085015280891660a0850152508660c08401528560e0840152806101008401528381840152506101408385828501375f838501820152601f909301601f19169091019091019695505050505050565b5f80604083850312156120ec575f80fd5b505080516020909101519092909150565b80518015158114611d0b575f80fd5b5f6020828403121561211c575f80fd5b611af7826120fd565b5f5b8381101561213f578181015183820152602001612127565b50505f910152565b5f82601f830112612156575f80fd5b8151612164611e7d82611e39565b818152846020838601011115612178575f80fd5b611061826020830160208701612125565b5f805f806080858703121561219c575f80fd5b84516121a781611ce9565b809450506020850151925060408501519150606085015167ffffffffffffffff8111156121d2575f80fd5b6121de87828801612147565b91505092959194509250565b634e487b7160e01b5f52602160045260245ffd5b5f6020828403121561220e575f80fd5b5051919050565b634e487b7160e01b5f52601160045260245ffd5b8181038181111561223c5761223c612215565b92915050565b8082018082111561223c5761223c612215565b634e487b7160e01b5f52603260045260245ffd5b5f805f806080858703121561227c575f80fd5b843561228781611ce9565b9350602085013561229781611ce9565b925060408501359150606085013567ffffffffffffffff8111156122b9575f80fd5b6121de87828801611e60565b5f826122df57634e487b7160e01b5f52601260045260245ffd5b500490565b5f81518084526122fb816020860160208601612125565b601f01601f19169290920160200192915050565b602081525f825160a0602084015261232a60c08401826122e4565b90506001600160a01b0360208501511660408401526040840151606084015260608401516080840152608084015160a08401528091505092915050565b5f8251612378818460208701612125565b9190910192915050565b5f67ffffffffffffffff82111561239b5761239b611c7b565b5060051b60200190565b5f82601f8301126123b4575f80fd5b815160206123c4611e7d83612382565b82815260059290921b840181019181810190868411156123e2575f80fd5b8286015b8481101561242057805167ffffffffffffffff811115612404575f80fd5b6124128986838b0101612147565b8452509183019183016123e6565b509695505050505050565b5f806040838503121561243c575f80fd5b825167ffffffffffffffff80821115612453575f80fd5b818501915085601f830112612466575f80fd5b81516020612476611e7d83612382565b82815260059290921b84018101918181019089841115612494575f80fd5b948201945b838610156124be578551600e81106124af575f80fd5b82529482019490820190612499565b918801519196509093505050808211156124d6575f80fd5b506124e3858286016123a5565b9150509250929050565b5f815180845260208085019450602084015f5b8381101561252c578151600e811061251a5761251a6121ea565b87529582019590820190600101612500565b509495945050505050565b5f8282518085526020808601955060208260051b840101602086015f5b8481101561258257601f198684030189526125708383516122e4565b98840198925090830190600101612554565b5090979650505050505050565b606080825284518282018190525f9190608090818501906020808a01865b8381101561261257815180516001600160a01b0390811687528482015116848701526040808201519087015287810151888701528681015160ff168787015260a0808201519087015260c0908101519086015260e090940193908201906001016125ad565b50505050848103602086015261262881886124ed565b92505050828103604084015261263e8185612537565b9695505050505050565b5f805f6060848603121561265a575f80fd5b612663846120fd565b9250602084015161267381611ce9565b604085015190925067ffffffffffffffff81111561268f575f80fd5b61269b86828701612147565b9150509250925092565b5f80604083850312156126b6575f80fd5b825167ffffffffffffffff808211156126cd575f80fd5b6126d9868387016123a5565b935060208501519150808211156126ee575f80fd5b506124e385828601612147565b5f805f805f60a0868803121561270f575f80fd5b855194506020808701519450604087015167ffffffffffffffff80821115612735575f80fd5b818901915089601f830112612748575f80fd5b8151612756611e7d82612382565b81815260059190911b8301840190848101908c831115612774575f80fd5b938501935b8285101561279b57845161278c81611ce9565b82529385019390850190612779565b60608c015190985094505050808311156127b3575f80fd5b6127bf8a848b016123a5565b945060808901519250808311156127d4575f80fd5b50506127e288828901612147565b9150509295509295909350565b5f805f60608486031215612801575f80fd5b835161280c81611ce9565b60208501516040860151919450925067ffffffffffffffff81111561268f575f80fd5b808202811582820484141761223c5761223c612215565b60048110612856576128566121ea565b9052565b5f82825180855260208086019550808260051b8401018186015f5b8481101561258257601f198684030189528151606081518186528051828701528681015160808181890152604091508183015160a081818b015285850151955060c091506128c5828b0187612846565b91840151945060e0916128e28a8401876001600160a01b03169052565b84015194506101006128fe8a8201876001600160a01b03169052565b9084015194506101209061291c8a8301876001600160a01b03169052565b9184015194506101409161293a8a8401876001600160a01b03169052565b8401516101608a81019190915290840151610180808b0191909152918401516101a08a01528301516101c0890191909152925061297b6101e08801846122e4565b92508784015191508683038888015261299483836122e4565b938101519601959095525098840198925090830190600101612875565b5f6101406001600160a01b03808a168452808916602085015287604085015286606085015285516080850152602086015160a0850152604086015160c0850152606086015160e0850152608086015161010085015281610120850152808551168285015250506020830151610160830152604083015160a0610180840152612a3d6101e084018261285a565b9050606084015161013f1980858403016101a0860152612a5d838361285a565b92506080860151915080858403016101c086015250612a7c82826122e4565b9a9950505050505050505050565b602081525f611af760208301846122e456fea26469706673582212201300d6cdf082b593c24d9215949e9b41cd65071465346307299fdd787203d09b64736f6c634300081600330000000000000000000000005bc6bef80da563ebf6df6d6913513fa9a7ec89be000000000000000000000000e592427a0aece92de3edee1f18e0157c05861564000000000000000000000000111111125421ca6dc452d289314280a0f8842a650000000000000000000000004579709627ca36bce92f51ac975746f431890930000000000000000000000000bbbbbbbbbb9cc5e90e3b3af64bdaf62c37eeffcb", + "nonce": "0x89", + "accessList": [] + }, + "additionalContracts": [], + "isFixedGasLimit": false + } + ], + "receipts": [ + { + "transactionHash": "0xa68283a65f801cefc4d40d9eb17a962be0185906466aa28e0f6ffa8f71f9458b", + "transactionIndex": "0x0", + "blockHash": "0xa7128cb6a523688523a5cdd7ae96ea6f55713010a75c33a38b95d75342f63e82", + "blockNumber": "0x12b3f2a", + "from": "0xA9DdD91249DFdd450E81E1c56Ab60E1A62651701", + "to": null, + "cumulativeGasUsed": "0x27037f", + "gasUsed": "0x27037f", + "contractAddress": "0x3F0fA7847b1B2E4515a93e05B29f115D9BB51D85", + "logs": [ + { + "address": "0xCd5fE23C85820F7B72D0926FC9b05b43E359b7ee", + "topics": [ + "0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925", + "0x0000000000000000000000003f0fa7847b1b2e4515a93e05b29f115d9bb51d85", + "0x000000000000000000000000ac0047886a985071476a1186be89222659970d65" + ], + "data": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff", + "blockHash": "0xa7128cb6a523688523a5cdd7ae96ea6f55713010a75c33a38b95d75342f63e82", + "blockNumber": "0x12b3f2a", + "transactionHash": "0xa68283a65f801cefc4d40d9eb17a962be0185906466aa28e0f6ffa8f71f9458b", + "transactionIndex": "0x0", + "logIndex": "0x0", + "removed": false + }, + { + "address": "0xAC0047886a985071476a1186bE89222659970d65", + "topics": [ + "0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925", + "0x0000000000000000000000003f0fa7847b1b2e4515a93e05b29f115d9bb51d85", + "0x00000000000000000000000000000000005bbb0ef59571e58418f9a4357b68a0" + ], + "data": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff", + "blockHash": "0xa7128cb6a523688523a5cdd7ae96ea6f55713010a75c33a38b95d75342f63e82", + "blockNumber": "0x12b3f2a", + "transactionHash": "0xa68283a65f801cefc4d40d9eb17a962be0185906466aa28e0f6ffa8f71f9458b", + "transactionIndex": "0x0", + "logIndex": "0x1", + "removed": false + } + ], + "status": "0x1", + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000400000008000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040000000000000000000100000000408000000000000000000000004000000000000000000002000000000000000022000000080000004000000000000000000000000000000000000000000000000000000000000000040000000000000000000000000008000000000000000000010000000000000000000000000010000000000080000000000000000000000", + "type": "0x2", + "effectiveGasPrice": "0xb784ed73a" + } + ], + "libraries": [], + "pending": [], + "returns": {}, + "timestamp": 1712585373, + "chain": 1, + "multi": false, + "commit": "1db5568" +} \ No newline at end of file diff --git a/contracts/swapper/LevSwapper/BaseLevSwapperMorpho.sol b/contracts/swapper/LevSwapper/BaseLevSwapperMorpho.sol index 91ef6fb..9560335 100644 --- a/contracts/swapper/LevSwapper/BaseLevSwapperMorpho.sol +++ b/contracts/swapper/LevSwapper/BaseLevSwapperMorpho.sol @@ -68,7 +68,6 @@ abstract contract BaseLevSwapperMorpho is BaseLevSwapper, IMorphoLiquidateCallba uint256 outTokenBalance = outToken.balanceOf(address(this)); if (outTokenBalance < minAmountOut) revert TooSmallAmountOut(); - outToken.safeApprove(address(morpho), repaidOutToken); if (outTokenBalance > repaidOutToken) { // The `to` should keep the additional collateral outToken.safeTransfer(to, outTokenBalance - repaidOutToken); diff --git a/foundry.toml b/foundry.toml index 4658aa2..8f5a2b9 100644 --- a/foundry.toml +++ b/foundry.toml @@ -28,15 +28,27 @@ runs = 500 [rpc_endpoints] arbitrum = "${ETH_NODE_URI_ARBITRUM}" +gnosis = "${ETH_NODE_URI_GNOSIS}" mainnet = "${ETH_NODE_URI_MAINNET}" optimism = "${ETH_NODE_URI_OPTIMISM}" polygon = "${ETH_NODE_URI_POLYGON}" -goerli = "${ETH_NODE_URI_GOERLI}" fork = "${ETH_NODE_URI_FORK}" +avalanche = "${ETH_NODE_URI_AVALANCHE}" +celo = "${ETH_NODE_URI_CELO}" +polygonzkevm = "${ETH_NODE_URI_POLYGONZKEVM}" +bsc = "${ETH_NODE_URI_BSC}" +base = "${ETH_NODE_URI_BASE}" +linea = "${ETH_NODE_URI_LINEA}" [etherscan] arbitrum = { key = "${ARBITRUM_ETHERSCAN_API_KEY}" } +gnosis = { key = "${GNOSIS_ETHERSCAN_API_KEY}" , url = "https://api.gnosisscan.io/api"} mainnet = { key = "${MAINNET_ETHERSCAN_API_KEY}" } optimism = { key = "${OPTIMISM_ETHERSCAN_API_KEY}" } polygon = { key = "${POLYGON_ETHERSCAN_API_KEY}" } -goerli = { key = "${GOERLI_ETHERSCAN_API_KEY}" } +avalanche = { key = "${AVALANCHE_ETHERSCAN_API_KEY}" } +celo = { key = "${CELO_ETHERSCAN_API_KEY}", url = "https://api.celoscan.io/api" } +base = { key = "${BASE_ETHERSCAN_API_KEY}", url = "https://api.basescan.org/api" } +polygon-zkevm = { key = "${POLYGONZKEVM_ETHERSCAN_API_KEY}", url = "https://api-zkevm.polygonscan.com/api" } +bsc = { key = "${BSC_ETHERSCAN_API_KEY}"} +linea = { key = "${LINEA_ETHERSCAN_API_KEY}"} diff --git a/package.json b/package.json index c6ab3ce..258382f 100644 --- a/package.json +++ b/package.json @@ -6,8 +6,7 @@ "coverage": "FOUNDRY_PROFILE=dev forge coverage --report lcov && yarn lcov:clean && yarn lcov:generate-html", "compile": "forge build", "compile:dev": "FOUNDRY_PROFILE=dev forge build", - "deploy": "forge script --skip test --broadcast --verify --slow -vvvv --rpc-url polygon ", - "deploy:test": "FOUNDRY_PROFILE=dev forge script --skip test --broadcast --verify --slow -vvvv --rpc-url polygon", + "deploy": "forge script --skip test --broadcast --verify --slow -vvvv --rpc-url", "deploy:fork": "FOUNDRY_PROFILE=dev forge script --skip test --slow --fork-url fork --broadcast -vvvv", "gas": "yarn test --gas-report", "fork": "bash helpers/fork.sh", @@ -82,4 +81,4 @@ "solc": "0.8.12", "yargs": "^17.5.1" } -} \ No newline at end of file +} diff --git a/remappings.txt b/remappings.txt index 6cf2741..ef900a8 100644 --- a/remappings.txt +++ b/remappings.txt @@ -4,3 +4,7 @@ borrow/=lib/borrow-contracts/contracts utils/=lib/utils morpho-blue/=lib/morpho-blue/src contracts/=contracts/ +@chainlink/=node_modules/@chainlink/ +@ensdomains/=node_modules/@ensdomains/ +@openzeppelin/=node_modules/@openzeppelin/ +@uniswap/=node_modules/@uniswap/ diff --git a/scripts/foundry/Helpers.s.sol b/scripts/foundry/Helpers.s.sol new file mode 100644 index 0000000..44ed347 --- /dev/null +++ b/scripts/foundry/Helpers.s.sol @@ -0,0 +1,62 @@ +// SPDX-License-Identifier: MIT +pragma solidity ^0.8.19; + +import "forge-std/Script.sol"; +import "stringutils/strings.sol"; +import { CommonUtils } from "utils/src/CommonUtils.sol"; +import "utils/src/Constants.sol"; + +/// @title Utils +/// @author Angle Labs, Inc. +contract Helpers is CommonUtils, Script { + mapping(uint256 => uint256) internal forkIdentifier; + uint256 public arbitrumFork; + uint256 public avalancheFork; + uint256 public ethereumFork; + uint256 public optimismFork; + uint256 public polygonFork; + uint256 public gnosisFork; + uint256 public bnbFork; + uint256 public celoFork; + uint256 public polygonZkEVMFork; + uint256 public baseFork; + uint256 public lineaFork; + + address public alice; + address public bob; + address public charlie; + address public dylan; + address public sweeper; + + function setUp() public virtual { + arbitrumFork = vm.createFork(vm.envString("ETH_NODE_URI_ARBITRUM")); + avalancheFork = vm.createFork(vm.envString("ETH_NODE_URI_AVALANCHE")); + ethereumFork = vm.createFork(vm.envString("ETH_NODE_URI_MAINNET")); + optimismFork = vm.createFork(vm.envString("ETH_NODE_URI_OPTIMISM")); + polygonFork = vm.createFork(vm.envString("ETH_NODE_URI_POLYGON")); + gnosisFork = vm.createFork(vm.envString("ETH_NODE_URI_GNOSIS")); + bnbFork = vm.createFork(vm.envString("ETH_NODE_URI_BSC")); + celoFork = vm.createFork(vm.envString("ETH_NODE_URI_CELO")); + polygonZkEVMFork = vm.createFork(vm.envString("ETH_NODE_URI_POLYGON_ZKEVM")); + baseFork = vm.createFork(vm.envString("ETH_NODE_URI_BASE")); + lineaFork = vm.createFork(vm.envString("ETH_NODE_URI_LINEA")); + + forkIdentifier[CHAIN_ARBITRUM] = arbitrumFork; + forkIdentifier[CHAIN_AVALANCHE] = avalancheFork; + forkIdentifier[CHAIN_ETHEREUM] = ethereumFork; + forkIdentifier[CHAIN_OPTIMISM] = optimismFork; + forkIdentifier[CHAIN_POLYGON] = polygonFork; + forkIdentifier[CHAIN_GNOSIS] = gnosisFork; + forkIdentifier[CHAIN_BNB] = bnbFork; + forkIdentifier[CHAIN_CELO] = celoFork; + forkIdentifier[CHAIN_POLYGONZKEVM] = polygonZkEVMFork; + forkIdentifier[CHAIN_BASE] = baseFork; + forkIdentifier[CHAIN_LINEA] = lineaFork; + + alice = vm.addr(1); + bob = vm.addr(2); + charlie = vm.addr(3); + dylan = vm.addr(4); + sweeper = address(uint160(uint256(keccak256(abi.encodePacked("sweeper"))))); + } +} diff --git a/scripts/foundry/mainnet/MainnetConstants.s.sol b/scripts/foundry/mainnet/MainnetConstants.s.sol index 325e618..ddb947b 100644 --- a/scripts/foundry/mainnet/MainnetConstants.s.sol +++ b/scripts/foundry/mainnet/MainnetConstants.s.sol @@ -12,14 +12,15 @@ contract MainnetConstants { address public constant CORE_BORROW = 0x5bc6BEf80DA563EBf6Df6D6913513fa9A7ec89BE; address public constant ANGLE_ROUTER = 0x4579709627CA36BCe92f51ac975746f431890930; - address public constant ONE_INCH = 0x1111111254EEB25477B68fb85Ed929f73A960582; + address public constant ONE_INCH = 0x111111125421cA6dc452d289314280a0f8842A65; address public constant UNI_V3_ROUTER = 0xE592427A0AEce92De3Edee1F18E0157C05861564; + address public constant MORPHO_BLUE = 0xBBBBBbbBBb9cC5e90e3b3Af64bdAF62C37EEFFCb; // AGEUR Mainnet treasury address public constant AGEUR_TREASURY = 0x8667DBEBf68B0BFa6Db54f550f41Be16c4067d60; - uint256 public constant BASE_TOKENS = 10**18; - uint64 public constant BASE_PARAMS = 10**9; + uint256 public constant BASE_TOKENS = 10 ** 18; + uint64 public constant BASE_PARAMS = 10 ** 9; function deployUpgradeable(address implementation, bytes memory data) public returns (address) { return address(new TransparentUpgradeableProxy(implementation, PROXY_ADMIN, data)); diff --git a/scripts/foundry/mainnet/SwapperLevMorpho.s.sol b/scripts/foundry/mainnet/SwapperLevMorpho.s.sol new file mode 100644 index 0000000..884d9f7 --- /dev/null +++ b/scripts/foundry/mainnet/SwapperLevMorpho.s.sol @@ -0,0 +1,38 @@ +// SPDX-License-Identifier: GPL-3.0 +pragma solidity ^0.8.17; + +import "forge-std/Script.sol"; +import { console } from "forge-std/console.sol"; +import "borrow/interfaces/ICoreBorrow.sol"; +import "borrow/interfaces/IAngleRouterSidechain.sol"; +import "borrow/interfaces/external/uniswap/IUniswapRouter.sol"; +import { SwapType, BaseLevSwapper, PendleLevSwapperMorphoWeETH, PendleLevSwapperMorpho, Swapper } from "contracts/swapper/LevSwapper/morpho/implementations/PendleLevSwapperMorphoWeETH.sol"; +import "./MainnetConstants.s.sol"; +import { IMorphoBase } from "morpho-blue/interfaces/IMorpho.sol"; +import "@chainlink/contracts/src/v0.8/interfaces/AggregatorV3Interface.sol"; + +contract SwapperLevMorpho is Script, MainnetConstants { + function run() external { + uint256 deployerPrivateKey = vm.envUint("DEPLOYER_PRIVATE_KEY"); + vm.startBroadcast(deployerPrivateKey); + + PendleLevSwapperMorphoWeETH swapperMorphoPTWeETH = new PendleLevSwapperMorphoWeETH( + ICoreBorrow(CORE_BORROW), + IUniswapV3Router(UNI_V3_ROUTER), + ONE_INCH, + IAngleRouterSidechain(ANGLE_ROUTER), + IMorphoBase(MORPHO_BLUE) + ); + + console.log("Successfully deployed swapper Morpho PT-weETH Pendle: ", address(swapperMorphoPTWeETH)); + + // Set oracles to have liquidable positions + // vm.mockCall( + // address(0x986b5E1e1755e3C2440e960477f25201B0a8bbD4), + // abi.encodeWithSelector(AggregatorV3Interface.latestRoundData.selector), + // abi.encode(0, 0.001 ether, 0, 0, 0) + // ); + + vm.stopBroadcast(); + } +}