0 txs
1 call
constructor
No constructor.
functions
swap
nonpayablefunction swap(tuple config)
events
RecurringSwapExecuted
event RecurringSwapExecuted(address indexed sender, address sellToken, address buyToken, uint256 sellAmount, uint256 buyAmount)
errors
BadPrice
error BadPrice(bytes32 feedId)
NoPriceData
error NoPriceData(bytes32 feedId)
PriceExpired
error PriceExpired(bytes32 feedId, uint32 expiresAt, uint256 currentTime)
PriceNotYetValid
error PriceNotYetValid(bytes32 feedId, uint32 validFrom, uint256 currentTime)
ReentrantCall
error ReentrantCall()
SwapWindowClosed
error SwapWindowClosed(uint256 currentWindowStartTime, uint256 windowLength, uint256 currentTime)
SwapWindowNotOpen
error SwapWindowNotOpen(uint256 nextWindowStartTime, uint256 windowLength, uint256 currentTime)
creation bytecode
0x608060405234601c57600e6020565b611dd061002b8239611dd090f35b6026565b60405190565b5f80fdfe60806040526004361015610013575b6100b3565b61001d5f3561002c565b63174549a00361000e57610080565b60e01c90565b60405190565b5f80fd5b5f80fd5b5f80fd5b5f80fd5b90816101609103126100575790565b610044565b906101608282031261007657610073915f01610048565b90565b61003c565b5f0190565b346100ae5761009861009336600461005c565b610460565b6100a0610032565b806100aa8161007b565b0390f35b610038565b5f80fd5b5f90565b90565b90565b5f1b90565b6100da6100d56100df926100be565b6100c1565b6100bb565b90565b5f1c90565b90565b90565b6101016100fc610106926100e7565b6100ea565b6100e7565b90565b61011561011a916100e2565b6100ed565b90565b610126816100e7565b0361012d57565b5f80fd5b3561013b8161011d565b90565b610147906100e7565b9052565b60409061017461017b949695939661016a60608401985f85019061013e565b602083019061013e565b019061013e565b565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b6101b96101bf919392936100e7565b926100e7565b82039182116101ca57565b61017d565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b61020861020e916100e7565b916100e7565b908115610219570490565b6101cf565b61022d610233919392936100e7565b926100e7565b9161023f8382026100e7565b92818404149015171561024e57565b61017d565b610262610268919392936100e7565b926100e7565b820180921161027357565b61017d565b61028c610287610291926100e7565b6100c1565b6100bb565b90565b73ffffffffffffffffffffffffffffffffffffffff1690565b6102b690610294565b90565b6102c2816102ad565b036102c957565b5f80fd5b356102d7816102b9565b90565b6102ee6102e96102f392610294565b6100ea565b610294565b90565b6102ff906102da565b90565b61030b906102f6565b90565b610317906102da565b90565b6103239061030e565b90565b61032f906102da565b90565b61033b90610326565b90565b601f801991011690565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b9061037f9061033e565b810190811067ffffffffffffffff82111761039957604052565b610348565b60e01b90565b905051906103b18261011d565b565b906020828203126103cc576103c9915f016103a4565b90565b61003c565b6103da906102ad565b9052565b61041361041a946104096060949897956103ff608086019a5f8701906103d1565b60208501906103d1565b604083019061013e565b019061013e565b565b610424610032565b3d5f823e3d90fd5b61044061043b610445926100be565b6100ea565b6100e7565b90565b61045190610326565b90565b61045d90610326565b90565b610469816109f1565b6104716100b7565b5061047b81610a3a565b61048d6104875f6100c6565b916100bb565b145f146107bc576104a15f80840101610131565b5b426104b56104af836100e7565b916100e7565b1061077557506105176104ec6104d8426104d25f80880101610131565b906101aa565b6104e660205f870101610131565b906101fc565b6105116104fc5f80870101610131565b9161050b60205f880101610131565b9061021e565b90610253565b906105308261052a60205f870101610131565b90610253565b914261055b6105556105508461054a60405f8b0101610131565b90610253565b6100e7565b916100e7565b1161072e57509061056f6105759291610278565b90610a59565b61058160608201610b7a565b6105bd61059a6105956060808601016102cd565b610302565b6105a85f60608601016102cd565b6105b760a06060870101610131565b91610e4f565b60206105dd6105d86105d35f60608701016102cd565b61031a565b610332565b63fe0291569061062c5f6105f56060808901016102cd565b93610637610608608060608b01016102cd565b9761061860a060608c0101610131565b610620610032565b998a988997889661039e565b8652600486016103de565b03925af1908115610729575f916106fb575b509061068161066461065f6060808501016102cd565b610302565b6106725f60608501016102cd565b61067b5f61042c565b91610e4f565b61068a30610448565b906106996060808301016102cd565b6106f66106b960a060606106b16080828801016102cd565b950101610131565b946106e47f3d1a432f701c5c32156c13fc00c347bf742542d128299b0aafd7b05bc7414ea095610454565b956106ed610032565b948594856103de565b0390a2565b61071c915060203d8111610722575b6107148183610375565b8101906103b3565b5f610649565b503d61070a565b61041c565b61073c60405f860101610131565b90610771425f9384937feb41249f0000000000000000000000000000000000000000000000000000000085526004850161014b565b0390fd5b61078360405f850101610131565b906107b8425f9384937f35d9a8810000000000000000000000000000000000000000000000000000000085526004850161014b565b0390fd5b6107cd6107c882610a3a565b610109565b6104a2565b5f90565b5090565b905035906107e78261011d565b565b506107f89060208101906107da565b90565b610804906100e7565b9052565b90604061084d6108559361082a6108215f8301836107e9565b5f8601906107fb565b61084461083a60208301836107e9565b60208601906107fb565b828101906107e9565b9101906107fb565b565b5090565b90503590610868826102b9565b565b5061087990602081019061085b565b90565b610885906102ad565b9052565b610892816100bb565b0361089957565b5f80fd5b905035906108aa82610889565b565b506108bb90602081019061089d565b90565b6108c7906100bb565b9052565b9060e061099261099a936108ed6108e45f83018361086a565b5f86019061087c565b6109076108fd602083018361086a565b602086019061087c565b610921610917604083018361086a565b604086019061087c565b61093b610931606083018361086a565b606086019061087c565b61095561094b608083018361086a565b608086019061087c565b61096f61096560a08301836107e9565b60a08601906107fb565b61098961097f60c08301836108ac565b60c08601906108be565b828101906108ac565b9101906108be565b565b9060606109c76109cf936109be6109b55f8301836107d6565b5f860190610808565b82810190610857565b9101906108cb565b565b91906109e5905f610160850194019061099c565b565b60200190565b5190565b610a24610a1591610a006107d2565b50610a09610032565b928391602083016109d1565b60208201810382520382610375565b610a36610a30826109ed565b916109e7565b2090565b610a5590610a466107d2565b50610a4f6107d2565b50610f3f565b5490565b610a6290610f3f565b55565b35610a6f81610889565b90565b610a7b906102da565b90565b610a8790610a72565b90565b610a9390610326565b90565b60ff1690565b610aa581610a96565b03610aac57565b5f80fd5b90505190610abd82610a9c565b565b90602082820312610ad857610ad5915f01610ab0565b90565b61003c565b610af1610aec610af692610a96565b6100ea565b6100e7565b90565b610b02906100e7565b604d8111610b1057600a0a90565b61017d565b90565b610b2c610b27610b3192610b15565b6100ea565b6100e7565b90565b610b45670de0b6b3a7640000610b18565b90565b90565b610b5f610b5a610b6492610b48565b6100ea565b6100e7565b90565b610b776611c37937e08000610b4b565b90565b610b826100b7565b50610bb0610b9260c08301610a65565b610b9e604084016102cd565b610baa602085016102cd565b916113f0565b610bdd610bbf60e08401610a65565b610bcb604085016102cd565b610bd7602086016102cd565b916113f0565b91610c156020610bff610bfa610bf5606086016102cd565b610a7e565b610a8a565b63313ce56790610c0d610032565b93849261039e565b82528180610c256004820161007b565b03915afa8015610d8057610c40915f91610d52575b50610add565b92610c786020610c62610c5d610c58608087016102cd565b610a7e565b610a8a565b63313ce56790610c70610032565b93849261039e565b82528180610c886004820161007b565b03915afa948515610d4d57610ce3610cdc610cef95610cd6610cd0610d0e99610ccb60a0610cc4610d1c9e610ce99b5f91610d1f575b50610add565b9501610131565b61021e565b91610af9565b9061021e565b9391610af9565b9061021e565b906101fc565b610d08610cfa610b34565b610d02610b67565b906101aa565b9061021e565b610d16610b34565b906101fc565b90565b610d40915060203d8111610d46575b610d388183610375565b810190610abf565b5f610cbe565b503d610d2e565b61041c565b610d73915060203d8111610d79575b610d6b8183610375565b810190610abf565b5f610c3a565b503d610d61565b61041c565b610d8e90610326565b90565b63ffffffff1690565b7fffffffff000000000000000000000000000000000000000000000000000000001690565b610dd3610dce610dd892610d91565b61039e565b610d9a565b90565b916020610dfc929493610df560408201965f8301906103d1565b019061013e565b565b151590565b610e17610e12610e1c926100be565b6100ea565b610a96565b90565b610e2890610e03565b9052565b916020610e4d929493610e4660408201965f8301906103d1565b0190610e1f565b565b9091610e90600491610e81610e6763095ea7b3610dbf565b9186610e71610032565b9586946020860190815201610ddb565b60208201810382520382610375565b90610ea5610e9f828490611768565b15610dfe565b610eaf575b505050565b610efc6004610f0194610ef78491610ee8610ecd63095ea7b3610dbf565b915f90610ed8610032565b9687946020860190815201610e2c565b60208201810382520383610375565b61195a565b61195a565b5f8080610eaa565b90565b610f18610f1d916100bb565b610f09565b9052565b602081610f33610f3b93839695610f0c565b018092610f0c565b0190565b610f476107d2565b50610f79610f53611a2c565b610f6a610f5e610032565b93849260208401610f21565b60208201810382520382610375565b610f8b610f85826109ed565b916109e7565b2090565b610f98906102da565b90565b610fa490610f8f565b90565b610fb090610326565b90565b610fbf81602093610f0c565b0190565b5f80fd5b5f80fd5b90610fde610fd7610032565b9283610375565b565b67ffffffffffffffff8111610ffe57610ffa60209161033e565b0190565b610348565b90825f9392825e0152565b9092919261102361101e82610fe0565b610fcb565b9381855260208501908284011161103f5761103d92611003565b565b610fc7565b9080601f830112156110625781602061105f9351910161100e565b90565b610fc3565b90602082820312611097575f82015167ffffffffffffffff81116110925761108f9201611044565b90565b610040565b61003c565b60209181520190565b6110c46110cd6020936110d2936110bb816109ed565b9384809361109c565b95869101611003565b61033e565b0190565b6110eb9160208201915f8184039101526110a5565b90565b6110f7906100bb565b9052565b919061110e905f602085019401906110ee565b565b611119906102da565b90565b61112590611110565b90565b61113190610326565b90565b61113f5f809261109c565b0190565b61115b6111699260408301908382035f8501526110a5565b906020818303910152611134565b90565b61ffff1690565b61117c8161116c565b0361118357565b5f80fd5b9050519061119482611173565b565b5f80fd5b905051906111a782610889565b565b6111b281610d91565b036111b957565b5f80fd5b905051906111ca826111a9565b565b77ffffffffffffffffffffffffffffffffffffffffffffffff1690565b6111f2816111cc565b036111f957565b5f80fd5b9050519061120a826111e9565b565b60170b90565b61121b8161120c565b0361122257565b5f80fd5b9050519061123382611212565b565b9190610120838203126112f1576112e990611251610120610fcb565b9361125e825f830161119a565b5f86015261126f82602083016111bd565b602086015261128182604083016111bd565b604086015261129382606083016111fd565b60608601526112a582608083016111fd565b60808601526112b78260a083016111bd565b60a08601526112c98260c08301611226565b60c08601526112db8260e08301611226565b60e086015261010001611226565b610100830152565b611196565b91906101408382031261131f578061131361131c925f8601611187565b93602001611235565b90565b61003c565b61132e905161120c565b90565b61134561134061134a926100be565b6100ea565b61120c565b90565b6113579051610d91565b90565b61136e61136961137392610d91565b6100ea565b6100e7565b90565b61137f90610d91565b9052565b6040906113ac6113b394969593966113a260608401985f8501906110ee565b6020830190611376565b019061013e565b565b90565b6113cc6113c76113d19261120c565b6100ea565b6113b5565b90565b6113e86113e36113ed926113b5565b6100ea565b6100e7565b90565b915f61143a61141261140d611468946114076100b7565b50610f9b565b610fa7565b61145d63d6d7d52561144961142689611a6e565b61142e610032565b95869160208301610fb3565b60208201810382520385610375565b611451610032565b9586948593849361039e565b8352600483016110d6565b03915afa9081156116d9575f916116b7575b5090611485826109ed565b6114976114915f61042c565b916100e7565b1461167f576114da916114b26114ad5f9361111c565b611128565b6114cf8363f7e83aee6114c3610032565b9687958694859361039e565b835260048301611143565b03925af1801561167a57611506915f91611658575b5060206114fb826109ed565b8183010191016112f6565b90509061151560c08301611324565b6115276115215f611331565b9161120c565b1315611620576115396020830161134d565b61154b611545426100e7565b9161135a565b116115da574261156e61156861156360a0860161134d565b61135a565b916100e7565b1015611594575061158c61158760c06115919301611324565b6113b8565b6113d4565b90565b60a06115a191920161134d565b906115d6425f9384937f157108b700000000000000000000000000000000000000000000000000000000855260048501611383565b0390fd5b60206115e791920161134d565b9061161c425f9384937fae2f0b7c00000000000000000000000000000000000000000000000000000000855260048501611383565b0390fd5b611654905f9182917f17a804cd000000000000000000000000000000000000000000000000000000008352600483016110fb565b0390fd5b61167491503d805f833e61166c8183610375565b810190611067565b5f6114ef565b61041c565b6116b3835f9182917f794969d4000000000000000000000000000000000000000000000000000000008352600483016110fb565b0390fd5b6116d391503d805f833e6116cb8183610375565b810190611067565b5f61147a565b61041c565b5f90565b906116f46116ef83610fe0565b610fcb565b918252565b606090565b3d5f146117195761170e3d6116e2565b903d5f602084013e5b565b6117216116f9565b90611717565b61173081610dfe565b0361173757565b5f80fd5b9050519061174882611727565b565b9060208282031261176357611760915f0161173b565b90565b61003c565b905f80916117746116de565b5061177e84610d85565b9082602082019151925af16117916116fe565b816117bc575b5090816117a3575b5090565b6117b691506117b190610d85565b611abe565b5f61179f565b90506117c7816109ed565b6117d96117d35f61042c565b916100e7565b149081156117e9575b505f611797565b611804915060206117f9826109ed565b81830101910161174a565b5f6117e2565b67ffffffffffffffff81116118285761182460209161033e565b0190565b610348565b9061183f61183a8361180a565b610fcb565b918252565b5f7f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564910152565b611875602061182d565b9061188260208301611844565b565b61188c61186b565b90565b60209181520190565b60207f6f74207375636365656400000000000000000000000000000000000000000000917f5361666545524332303a204552433230206f7065726174696f6e20646964206e5f8201520152565b6118f2602a60409261188f565b6118fb81611898565b0190565b6119149060208101905f8183039101526118e5565b90565b1561191e57565b611926610032565b7f08c379a000000000000000000000000000000000000000000000000000000000815280611956600482016118ff565b0390fd5b6119a39161196a61197992610d85565b90611973611884565b91611ade565b611982816109ed565b61199461198e5f61042c565b916100e7565b149081156119a5575b50611917565b565b6119c0915060206119b5826109ed565b81830101910161174a565b5f61199d565b90565b6119dd6119d86119e2926119c6565b6100ea565b6100e7565b90565b611a29611a24611a147fbc19af8a435a812779238b5beb2837d7c6d3cfc15997614e65288e2b0598eefb610109565b611a1e60016119c9565b906101aa565b610278565b90565b611a346107d2565b50611a3d6119e5565b611a456107d2565b505c90565b7f01bfed65a52ada18043b5af8eccb71f398adf525b75cb52e0905e2e3faab5ccf90565b611a766107d2565b50611aa8611a82611a4a565b611a99611a8d610032565b93849260208401610f21565b60208201810382520382610375565b611aba611ab4826109ed565b916109e7565b2090565b611ac66116de565b503b611ada611ad45f61042c565b916100e7565b1190565b90611afd9291611aec6116f9565b5090611af75f61042c565b91611bce565b90565b611b0990610326565b90565b60207f722063616c6c0000000000000000000000000000000000000000000000000000917f416464726573733a20696e73756666696369656e742062616c616e636520666f5f8201520152565b611b66602660409261188f565b611b6f81611b0c565b0190565b611b889060208101905f818303910152611b59565b90565b15611b9257565b611b9a610032565b7f08c379a000000000000000000000000000000000000000000000000000000000815280611bca60048201611b73565b0390fd5b915f8091611c249593611bdf6116f9565b50611c06611bec30611b00565b31611bff611bf9856100e7565b916100e7565b1015611b8b565b8591602082019151925af191611c1a6116fe565b9092909192611cc3565b90565b5f7f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000910152565b611c5b601d60209261188f565b611c6481611c27565b0190565b611c7d9060208101905f818303910152611c4e565b90565b15611c8757565b611c8f610032565b7f08c379a000000000000000000000000000000000000000000000000000000000815280611cbf60048201611c68565b0390fd5b919290611cce6116f9565b505f14611d125750611cdf826109ed565b611cf1611ceb5f61042c565b916100e7565b14611cfb575b5090565b611d07611d0c91611abe565b611c80565b5f611cf7565b82611d65565b5190565b611d3b611d44602093611d4993611d3281611d18565b9384809361188f565b95869101611003565b61033e565b0190565b611d629160208201915f818403910152611d1c565b90565b90611d6f826109ed565b611d81611d7b5f61042c565b916100e7565b115f14611d915750805190602001fd5b611dcc90611d9d610032565b9182917f08c379a000000000000000000000000000000000000000000000000000000000835260048301611d4d565b0390fd