mirror of
https://github.com/luxfi/sudoamm.git
synced 2026-07-25 16:17:09 +00:00
Merge branch 'all-audit-fixes' into main
This commit is contained in:
+480
-480
@@ -1,480 +1,480 @@
|
||||
test_getBuyInfoExample() (gas: 3969)
|
||||
test_getBuyInfoWithoutFee(uint128,uint64,uint8) (runs: 256, μ: 1407, ~: 1265)
|
||||
test_getSellInfoExample() (gas: 4002)
|
||||
test_getSellInfoWithoutFee(uint128,uint128,uint8) (runs: 256, μ: 4368, ~: 4357)
|
||||
test_getBuyInfoExample() (gas: 3343)
|
||||
test_getBuyInfoWithoutFee(uint128,uint128,uint8) (runs: 256, μ: 4156, ~: 4158)
|
||||
test_getSellInfoExample() (gas: 3333)
|
||||
test_getSellInfoWithoutFee(uint128,uint128,uint8) (runs: 256, μ: 4526, ~: 4532)
|
||||
test_bondingCurveBuySellNoProfit(uint56,uint64,uint8) (runs: 256, μ: 977526, ~: 1418547)
|
||||
test_bondingCurveSellBuyNoProfit(uint56,uint64,uint8) (runs: 256, μ: 951539, ~: 1409500)
|
||||
test_bondingCurveBuySellNoProfit(uint56,uint64,uint8) (runs: 256, μ: 378618, ~: 447530)
|
||||
test_bondingCurveSellBuyNoProfit(uint56,uint64,uint8) (runs: 256, μ: 347184, ~: 430293)
|
||||
test_bondingCurveBuySellNoProfit(uint56,uint64,uint8) (runs: 256, μ: 953951, ~: 1467623)
|
||||
test_bondingCurveSellBuyNoProfit(uint56,uint64,uint8) (runs: 256, μ: 909806, ~: 1419494)
|
||||
test_bondingCurveBuySellNoProfit(uint56,uint64,uint8) (runs: 256, μ: 355042, ~: 496604)
|
||||
test_bondingCurveSellBuyNoProfit(uint56,uint64,uint8) (runs: 256, μ: 305450, ~: 440285)
|
||||
test_bondingCurveBuySellNoProfit(uint56,uint64,uint8) (runs: 256, μ: 976876, ~: 1418090)
|
||||
test_bondingCurveSellBuyNoProfit(uint56,uint64,uint8) (runs: 256, μ: 963226, ~: 1429029)
|
||||
test_bondingCurveBuySellNoProfit(uint56,uint64,uint8) (runs: 256, μ: 377576, ~: 447073)
|
||||
test_bondingCurveSellBuyNoProfit(uint56,uint64,uint8) (runs: 256, μ: 358871, ~: 449822)
|
||||
test_bondingCurveBuySellNoProfit(uint56,uint64,uint8) (runs: 256, μ: 953302, ~: 1467166)
|
||||
test_bondingCurveSellBuyNoProfit(uint56,uint64,uint8) (runs: 256, μ: 921493, ~: 1439023)
|
||||
test_bondingCurveBuySellNoProfit(uint56,uint64,uint8) (runs: 256, μ: 354000, ~: 496147)
|
||||
test_bondingCurveSellBuyNoProfit(uint56,uint64,uint8) (runs: 256, μ: 317137, ~: 459814)
|
||||
testFail_callMint721() (gas: 5580)
|
||||
testFail_changeAssetRecipientForTrade() (gas: 1680)
|
||||
testFail_changeDeltaNotOwner() (gas: 4463)
|
||||
testFail_changeFeeAboveMax() (gas: 1637)
|
||||
testFail_changeFeeNotOwner() (gas: 4420)
|
||||
testFail_changeSpotNotOwner() (gas: 4398)
|
||||
testFail_reInitPool() (gas: 1818)
|
||||
testFail_rescueTokensNotOwner() (gas: 5527)
|
||||
testFail_tradePoolChangeAssetRecipient() (gas: 1657)
|
||||
testFail_tradePoolChangeFeePastMax() (gas: 1659)
|
||||
testFail_transferOwnership() (gas: 4459)
|
||||
testFail_withdraw() (gas: 5646)
|
||||
testGas_basicDeploy() (gas: 205625)
|
||||
test_callMint721() (gas: 142896)
|
||||
test_changeFeeMultiplier() (gas: 2140)
|
||||
test_changeFeeRecipient() (gas: 2466)
|
||||
test_getAllHeldNFTs() (gas: 7311)
|
||||
test_modifyPairParams() (gas: 32033)
|
||||
test_rescueTokens() (gas: 131534)
|
||||
test_transferOwnership() (gas: 3307)
|
||||
test_verifyPoolParams() (gas: 15401)
|
||||
test_withdraw() (gas: 8264)
|
||||
test_withdrawFees() (gas: 202371)
|
||||
testFail_callMint721() (gas: 5577)
|
||||
testFail_changeAssetRecipientForTrade() (gas: 1699)
|
||||
testFail_changeDeltaNotOwner() (gas: 4479)
|
||||
testFail_changeFeeAboveMax() (gas: 1634)
|
||||
testFail_changeFeeNotOwner() (gas: 4436)
|
||||
testFail_changeSpotNotOwner() (gas: 4414)
|
||||
testFail_reInitPool() (gas: 1815)
|
||||
testFail_rescueTokensNotOwner() (gas: 5543)
|
||||
testFail_tradePoolChangeAssetRecipient() (gas: 1676)
|
||||
testFail_tradePoolChangeFeePastMax() (gas: 1656)
|
||||
testFail_transferOwnership() (gas: 4497)
|
||||
testFail_withdraw() (gas: 4401)
|
||||
testGas_basicDeploy() (gas: 161714)
|
||||
test_callMint721() (gas: 142893)
|
||||
test_changeFeeMultiplier() (gas: 2140)
|
||||
test_changeFeeRecipient() (gas: 2466)
|
||||
test_getAllHeldNFTs() (gas: 7308)
|
||||
test_modifyPairParams() (gas: 32004)
|
||||
test_rescueTokens() (gas: 131482)
|
||||
test_transferOwnership() (gas: 3326)
|
||||
test_verifyPoolParams() (gas: 14429)
|
||||
test_withdraw() (gas: 9942)
|
||||
test_withdrawFees() (gas: 192959)
|
||||
testFail_callMint721() (gas: 5580)
|
||||
testFail_changeAssetRecipientForTrade() (gas: 1680)
|
||||
testFail_changeDeltaNotOwner() (gas: 4463)
|
||||
testFail_changeFeeAboveMax() (gas: 1637)
|
||||
testFail_changeFeeNotOwner() (gas: 4420)
|
||||
testFail_changeSpotNotOwner() (gas: 4398)
|
||||
testFail_reInitPool() (gas: 1818)
|
||||
testFail_rescueTokensNotOwner() (gas: 5527)
|
||||
testFail_tradePoolChangeAssetRecipient() (gas: 1657)
|
||||
testFail_tradePoolChangeFeePastMax() (gas: 1659)
|
||||
testFail_transferOwnership() (gas: 4459)
|
||||
testFail_withdraw() (gas: 5646)
|
||||
testGas_basicDeploy() (gas: 205518)
|
||||
test_callMint721() (gas: 75470)
|
||||
test_changeFeeMultiplier() (gas: 2140)
|
||||
test_changeFeeRecipient() (gas: 2466)
|
||||
test_getAllHeldNFTs() (gas: 4603)
|
||||
test_modifyPairParams() (gas: 32033)
|
||||
test_rescueTokens() (gas: 71097)
|
||||
test_transferOwnership() (gas: 3307)
|
||||
test_verifyPoolParams() (gas: 15357)
|
||||
test_withdraw() (gas: 8264)
|
||||
test_withdrawFees() (gas: 139341)
|
||||
testFail_callMint721() (gas: 5577)
|
||||
testFail_changeAssetRecipientForTrade() (gas: 1699)
|
||||
testFail_changeDeltaNotOwner() (gas: 4479)
|
||||
testFail_changeFeeAboveMax() (gas: 1634)
|
||||
testFail_changeFeeNotOwner() (gas: 4436)
|
||||
testFail_changeSpotNotOwner() (gas: 4414)
|
||||
testFail_reInitPool() (gas: 1815)
|
||||
testFail_rescueTokensNotOwner() (gas: 5543)
|
||||
testFail_tradePoolChangeAssetRecipient() (gas: 1676)
|
||||
testFail_tradePoolChangeFeePastMax() (gas: 1656)
|
||||
testFail_transferOwnership() (gas: 4497)
|
||||
testFail_withdraw() (gas: 4401)
|
||||
testGas_basicDeploy() (gas: 161607)
|
||||
test_callMint721() (gas: 75467)
|
||||
test_changeFeeMultiplier() (gas: 2140)
|
||||
test_changeFeeRecipient() (gas: 2466)
|
||||
test_getAllHeldNFTs() (gas: 4600)
|
||||
test_modifyPairParams() (gas: 32004)
|
||||
test_rescueTokens() (gas: 71045)
|
||||
test_transferOwnership() (gas: 3326)
|
||||
test_verifyPoolParams() (gas: 14385)
|
||||
test_withdraw() (gas: 9942)
|
||||
test_withdrawFees() (gas: 129927)
|
||||
testFail_callMint721() (gas: 5580)
|
||||
testFail_changeAssetRecipientForTrade() (gas: 1680)
|
||||
testFail_changeDeltaNotOwner() (gas: 4463)
|
||||
testFail_changeFeeAboveMax() (gas: 1637)
|
||||
testFail_changeFeeNotOwner() (gas: 4420)
|
||||
testFail_changeSpotNotOwner() (gas: 4398)
|
||||
testFail_reInitPool() (gas: 1818)
|
||||
testFail_rescueTokensNotOwner() (gas: 5527)
|
||||
testFail_tradePoolChangeAssetRecipient() (gas: 1657)
|
||||
testFail_tradePoolChangeFeePastMax() (gas: 1659)
|
||||
testFail_transferOwnership() (gas: 4459)
|
||||
testFail_withdraw() (gas: 5646)
|
||||
testGas_basicDeploy() (gas: 205619)
|
||||
test_callMint721() (gas: 142896)
|
||||
test_changeFeeMultiplier() (gas: 2140)
|
||||
test_changeFeeRecipient() (gas: 2466)
|
||||
test_getAllHeldNFTs() (gas: 7311)
|
||||
test_modifyPairParams() (gas: 32027)
|
||||
test_rescueTokens() (gas: 131534)
|
||||
test_transferOwnership() (gas: 3307)
|
||||
test_verifyPoolParams() (gas: 15401)
|
||||
test_withdraw() (gas: 8264)
|
||||
test_withdrawFees() (gas: 201685)
|
||||
testFail_callMint721() (gas: 5577)
|
||||
testFail_changeAssetRecipientForTrade() (gas: 1699)
|
||||
testFail_changeDeltaNotOwner() (gas: 4479)
|
||||
testFail_changeFeeAboveMax() (gas: 1634)
|
||||
testFail_changeFeeNotOwner() (gas: 4436)
|
||||
testFail_changeSpotNotOwner() (gas: 4414)
|
||||
testFail_reInitPool() (gas: 1815)
|
||||
testFail_rescueTokensNotOwner() (gas: 5543)
|
||||
testFail_tradePoolChangeAssetRecipient() (gas: 1676)
|
||||
testFail_tradePoolChangeFeePastMax() (gas: 1656)
|
||||
testFail_transferOwnership() (gas: 4497)
|
||||
testFail_withdraw() (gas: 4401)
|
||||
testGas_basicDeploy() (gas: 161708)
|
||||
test_callMint721() (gas: 142893)
|
||||
test_changeFeeMultiplier() (gas: 2140)
|
||||
test_changeFeeRecipient() (gas: 2466)
|
||||
test_getAllHeldNFTs() (gas: 7308)
|
||||
test_modifyPairParams() (gas: 31998)
|
||||
test_rescueTokens() (gas: 131482)
|
||||
test_transferOwnership() (gas: 3326)
|
||||
test_verifyPoolParams() (gas: 14429)
|
||||
test_withdraw() (gas: 9942)
|
||||
test_withdrawFees() (gas: 192273)
|
||||
testFail_callMint721() (gas: 5580)
|
||||
testFail_changeAssetRecipientForTrade() (gas: 1680)
|
||||
testFail_changeDeltaNotOwner() (gas: 4463)
|
||||
testFail_changeFeeAboveMax() (gas: 1637)
|
||||
testFail_changeFeeNotOwner() (gas: 4420)
|
||||
testFail_changeSpotNotOwner() (gas: 4398)
|
||||
testFail_reInitPool() (gas: 1818)
|
||||
testFail_rescueTokensNotOwner() (gas: 5527)
|
||||
testFail_tradePoolChangeAssetRecipient() (gas: 1657)
|
||||
testFail_tradePoolChangeFeePastMax() (gas: 1659)
|
||||
testFail_transferOwnership() (gas: 4459)
|
||||
testFail_withdraw() (gas: 5646)
|
||||
testGas_basicDeploy() (gas: 205512)
|
||||
test_callMint721() (gas: 75470)
|
||||
test_changeFeeMultiplier() (gas: 2140)
|
||||
test_changeFeeRecipient() (gas: 2466)
|
||||
test_getAllHeldNFTs() (gas: 4603)
|
||||
test_modifyPairParams() (gas: 32027)
|
||||
test_rescueTokens() (gas: 71097)
|
||||
test_transferOwnership() (gas: 3307)
|
||||
test_verifyPoolParams() (gas: 15357)
|
||||
test_withdraw() (gas: 8264)
|
||||
test_withdrawFees() (gas: 138655)
|
||||
testFail_callMint721() (gas: 5577)
|
||||
testFail_changeAssetRecipientForTrade() (gas: 1699)
|
||||
testFail_changeDeltaNotOwner() (gas: 4479)
|
||||
testFail_changeFeeAboveMax() (gas: 1634)
|
||||
testFail_changeFeeNotOwner() (gas: 4436)
|
||||
testFail_changeSpotNotOwner() (gas: 4414)
|
||||
testFail_reInitPool() (gas: 1815)
|
||||
testFail_rescueTokensNotOwner() (gas: 5543)
|
||||
testFail_tradePoolChangeAssetRecipient() (gas: 1676)
|
||||
testFail_tradePoolChangeFeePastMax() (gas: 1656)
|
||||
testFail_transferOwnership() (gas: 4497)
|
||||
testFail_withdraw() (gas: 4401)
|
||||
testGas_basicDeploy() (gas: 161601)
|
||||
test_callMint721() (gas: 75467)
|
||||
test_changeFeeMultiplier() (gas: 2140)
|
||||
test_changeFeeRecipient() (gas: 2466)
|
||||
test_getAllHeldNFTs() (gas: 4600)
|
||||
test_modifyPairParams() (gas: 31998)
|
||||
test_rescueTokens() (gas: 71045)
|
||||
test_transferOwnership() (gas: 3326)
|
||||
test_verifyPoolParams() (gas: 14385)
|
||||
test_withdraw() (gas: 9942)
|
||||
test_withdrawFees() (gas: 129241)
|
||||
test_swap5NFTsForToken() (gas: 451730)
|
||||
test_swapTokenForAny5NFTs() (gas: 452133)
|
||||
test_swapTokenForSpecific5NFTs() (gas: 458316)
|
||||
test_swap5NFTsForToken() (gas: 461918)
|
||||
test_swapTokenForAny5NFTs() (gas: 447251)
|
||||
test_swapTokenForSpecific5NFTs() (gas: 455132)
|
||||
test_swap5NFTsForToken() (gas: 457872)
|
||||
test_swapTokenForAny5NFTs() (gas: 247235)
|
||||
test_swapTokenForSpecific5NFTs() (gas: 256983)
|
||||
test_swap5NFTsForToken() (gas: 468060)
|
||||
test_swapTokenForAny5NFTs() (gas: 241888)
|
||||
test_swapTokenForSpecific5NFTs() (gas: 253349)
|
||||
test_swap5NFTsForToken() (gas: 450470)
|
||||
test_swapTokenForAny5NFTs() (gas: 451413)
|
||||
test_swapTokenForSpecific5NFTs() (gas: 457596)
|
||||
test_swap5NFTsForToken() (gas: 460658)
|
||||
test_swapTokenForAny5NFTs() (gas: 446171)
|
||||
test_swapTokenForSpecific5NFTs() (gas: 454052)
|
||||
test_swap5NFTsForToken() (gas: 456612)
|
||||
test_swapTokenForAny5NFTs() (gas: 246515)
|
||||
test_swapTokenForSpecific5NFTs() (gas: 256263)
|
||||
test_swap5NFTsForToken() (gas: 466800)
|
||||
test_swapTokenForAny5NFTs() (gas: 240808)
|
||||
test_swapTokenForSpecific5NFTs() (gas: 252269)
|
||||
test_robustSwapNFTsForToken() (gas: 329624)
|
||||
test_robustSwapNFTsForTokenWithBondingCurveError() (gas: 186746)
|
||||
test_robustSwapTokenForAnyNFTs() (gas: 321571)
|
||||
test_robustSwapTokenForSpecificNFTs() (gas: 324458)
|
||||
test_robustSwapNFTsForToken() (gas: 320756)
|
||||
test_robustSwapNFTsForTokenWithBondingCurveError() (gas: 171300)
|
||||
test_robustSwapTokenForAnyNFTs() (gas: 311930)
|
||||
test_robustSwapTokenForSpecificNFTs() (gas: 314794)
|
||||
test_robustSwapNFTsForToken() (gas: 332192)
|
||||
test_robustSwapNFTsForTokenWithBondingCurveError() (gas: 187986)
|
||||
test_robustSwapTokenForAnyNFTs() (gas: 146331)
|
||||
test_robustSwapTokenForSpecificNFTs() (gas: 175604)
|
||||
test_robustSwapNFTsForToken() (gas: 323324)
|
||||
test_robustSwapNFTsForTokenWithBondingCurveError() (gas: 172540)
|
||||
test_robustSwapTokenForAnyNFTs() (gas: 136504)
|
||||
test_robustSwapTokenForSpecificNFTs() (gas: 165760)
|
||||
test_robustSwapNFTsForToken() (gas: 327639)
|
||||
test_robustSwapNFTsForTokenWithBondingCurveError() (gas: 185577)
|
||||
test_robustSwapTokenForAnyNFTs() (gas: 319856)
|
||||
test_robustSwapTokenForSpecificNFTs() (gas: 322743)
|
||||
test_robustSwapNFTsForToken() (gas: 318771)
|
||||
test_robustSwapNFTsForTokenWithBondingCurveError() (gas: 170131)
|
||||
test_robustSwapTokenForAnyNFTs() (gas: 310215)
|
||||
test_robustSwapTokenForSpecificNFTs() (gas: 313079)
|
||||
test_robustSwapNFTsForToken() (gas: 330207)
|
||||
test_robustSwapNFTsForTokenWithBondingCurveError() (gas: 186817)
|
||||
test_robustSwapTokenForAnyNFTs() (gas: 144616)
|
||||
test_robustSwapTokenForSpecificNFTs() (gas: 173889)
|
||||
test_robustSwapNFTsForToken() (gas: 321339)
|
||||
test_robustSwapNFTsForTokenWithBondingCurveError() (gas: 171371)
|
||||
test_robustSwapTokenForAnyNFTs() (gas: 134789)
|
||||
test_robustSwapTokenForSpecificNFTs() (gas: 164045)
|
||||
test_robustSwapNFTsForToken() (gas: 100697)
|
||||
test_robustSwapTokenForAnyNFTs() (gas: 131431)
|
||||
test_robustSwapTokenForSpecificNFTs() (gas: 134310)
|
||||
test_robustSwapNFTsForToken() (gas: 104364)
|
||||
test_robustSwapTokenForAnyNFTs() (gas: 148905)
|
||||
test_robustSwapTokenForSpecificNFTs() (gas: 151752)
|
||||
test_robustSwapNFTsForToken() (gas: 76286)
|
||||
test_robustSwapTokenForAnyNFTs() (gas: 90469)
|
||||
test_robustSwapTokenForSpecificNFTs() (gas: 94061)
|
||||
test_robustSwapNFTsForToken() (gas: 79953)
|
||||
test_robustSwapTokenForAnyNFTs() (gas: 107850)
|
||||
test_robustSwapTokenForSpecificNFTs() (gas: 111413)
|
||||
test_robustSwapNFTsForToken() (gas: 100193)
|
||||
test_robustSwapTokenForAnyNFTs() (gas: 131143)
|
||||
test_robustSwapTokenForSpecificNFTs() (gas: 134022)
|
||||
test_robustSwapNFTsForToken() (gas: 103860)
|
||||
test_robustSwapTokenForAnyNFTs() (gas: 148617)
|
||||
test_robustSwapTokenForSpecificNFTs() (gas: 151464)
|
||||
test_robustSwapNFTsForToken() (gas: 75782)
|
||||
test_robustSwapTokenForAnyNFTs() (gas: 90181)
|
||||
test_robustSwapTokenForSpecificNFTs() (gas: 93773)
|
||||
test_robustSwapNFTsForToken() (gas: 79449)
|
||||
test_robustSwapTokenForAnyNFTs() (gas: 107562)
|
||||
test_robustSwapTokenForSpecificNFTs() (gas: 111125)
|
||||
testFail_swapSingleNFTForToken() (gas: 109030)
|
||||
testFail_swapSingleNFTForTokenWithEmptyList() (gas: 9507)
|
||||
testFail_swapTokenForSingleAnyNFTSlippage() (gas: 112006)
|
||||
testFail_swapTokenForSingleSpecificNFTSlippage() (gas: 113240)
|
||||
testGas_swapSingleNFTForToken5Times() (gas: 434046)
|
||||
test_swap5NFTsForToken() (gas: 351701)
|
||||
test_swapSingleNFTForAnyNFT() (gas: 188431)
|
||||
test_swapSingleNFTForSpecificNFT() (gas: 189642)
|
||||
test_swapSingleNFTForToken() (gas: 104364)
|
||||
test_swapTokenForSingleAnyNFT() (gas: 112515)
|
||||
test_swapTokenForSingleSpecificNFT() (gas: 113662)
|
||||
test_swapTokenforAny5NFTs() (gas: 334944)
|
||||
test_swapTokenforSpecific5NFTs() (gas: 332883)
|
||||
testFail_swapSingleNFTForToken() (gas: 93550)
|
||||
testFail_swapSingleNFTForTokenWithEmptyList() (gas: 9458)
|
||||
testFail_swapTokenForSingleAnyNFTSlippage() (gas: 33768)
|
||||
testFail_swapTokenForSingleSpecificNFTSlippage() (gas: 35610)
|
||||
testGas_swapSingleNFTForToken5Times() (gas: 444261)
|
||||
test_swap5NFTsForToken() (gas: 336675)
|
||||
test_swapSingleNFTForAnyNFT() (gas: 194165)
|
||||
test_swapSingleNFTForSpecificNFT() (gas: 195695)
|
||||
test_swapSingleNFTForToken() (gas: 88887)
|
||||
test_swapTokenForSingleAnyNFT() (gas: 104811)
|
||||
test_swapTokenForSingleSpecificNFT() (gas: 106270)
|
||||
test_swapTokenforAny5NFTs() (gas: 327688)
|
||||
test_swapTokenforSpecific5NFTs() (gas: 325987)
|
||||
testFail_swapSingleNFTForToken() (gas: 109694)
|
||||
testFail_swapSingleNFTForTokenWithEmptyList() (gas: 9507)
|
||||
testFail_swapTokenForSingleAnyNFTSlippage() (gas: 68362)
|
||||
testFail_swapTokenForSingleSpecificNFTSlippage() (gas: 71097)
|
||||
testGas_swapSingleNFTForToken5Times() (gas: 437366)
|
||||
test_swap5NFTsForToken() (gas: 355021)
|
||||
test_swapSingleNFTForAnyNFT() (gas: 147551)
|
||||
test_swapSingleNFTForSpecificNFT() (gas: 150263)
|
||||
test_swapSingleNFTForToken() (gas: 105028)
|
||||
test_swapTokenForSingleAnyNFT() (gas: 68871)
|
||||
test_swapTokenForSingleSpecificNFT() (gas: 71519)
|
||||
test_swapTokenforAny5NFTs() (gas: 115483)
|
||||
test_swapTokenforSpecific5NFTs() (gas: 121892)
|
||||
testFail_swapSingleNFTForToken() (gas: 94214)
|
||||
testFail_swapSingleNFTForTokenWithEmptyList() (gas: 9458)
|
||||
testFail_swapTokenForSingleAnyNFTSlippage() (gas: 33768)
|
||||
testFail_swapTokenForSingleSpecificNFTSlippage() (gas: 35610)
|
||||
testGas_swapSingleNFTForToken5Times() (gas: 447581)
|
||||
test_swap5NFTsForToken() (gas: 339995)
|
||||
test_swapSingleNFTForAnyNFT() (gas: 153192)
|
||||
test_swapSingleNFTForSpecificNFT() (gas: 156226)
|
||||
test_swapSingleNFTForToken() (gas: 89551)
|
||||
test_swapTokenForSingleAnyNFT() (gas: 61074)
|
||||
test_swapTokenForSingleSpecificNFT() (gas: 64037)
|
||||
test_swapTokenforAny5NFTs() (gas: 108135)
|
||||
test_swapTokenforSpecific5NFTs() (gas: 114906)
|
||||
testFail_swapSingleNFTForToken() (gas: 108778)
|
||||
testFail_swapSingleNFTForTokenWithEmptyList() (gas: 9381)
|
||||
testFail_swapTokenForSingleAnyNFTSlippage() (gas: 111862)
|
||||
testFail_swapTokenForSingleSpecificNFTSlippage() (gas: 113096)
|
||||
testGas_swapSingleNFTForToken5Times() (gas: 433416)
|
||||
test_swap5NFTsForToken() (gas: 351126)
|
||||
test_swapSingleNFTForAnyNFT() (gas: 188233)
|
||||
test_swapSingleNFTForSpecificNFT() (gas: 189444)
|
||||
test_swapSingleNFTForToken() (gas: 104238)
|
||||
test_swapTokenForSingleAnyNFT() (gas: 112371)
|
||||
test_swapTokenForSingleSpecificNFT() (gas: 113518)
|
||||
test_swapTokenforAny5NFTs() (gas: 333902)
|
||||
test_swapTokenforSpecific5NFTs() (gas: 331841)
|
||||
testFail_swapSingleNFTForToken() (gas: 93298)
|
||||
testFail_swapSingleNFTForTokenWithEmptyList() (gas: 9332)
|
||||
testFail_swapTokenForSingleAnyNFTSlippage() (gas: 33624)
|
||||
testFail_swapTokenForSingleSpecificNFTSlippage() (gas: 35466)
|
||||
testGas_swapSingleNFTForToken5Times() (gas: 443631)
|
||||
test_swap5NFTsForToken() (gas: 336100)
|
||||
test_swapSingleNFTForAnyNFT() (gas: 193895)
|
||||
test_swapSingleNFTForSpecificNFT() (gas: 195425)
|
||||
test_swapSingleNFTForToken() (gas: 88761)
|
||||
test_swapTokenForSingleAnyNFT() (gas: 104595)
|
||||
test_swapTokenForSingleSpecificNFT() (gas: 106054)
|
||||
test_swapTokenforAny5NFTs() (gas: 326125)
|
||||
test_swapTokenforSpecific5NFTs() (gas: 324424)
|
||||
testFail_swapSingleNFTForToken() (gas: 109442)
|
||||
testFail_swapSingleNFTForTokenWithEmptyList() (gas: 9381)
|
||||
testFail_swapTokenForSingleAnyNFTSlippage() (gas: 68218)
|
||||
testFail_swapTokenForSingleSpecificNFTSlippage() (gas: 70953)
|
||||
testGas_swapSingleNFTForToken5Times() (gas: 436736)
|
||||
test_swap5NFTsForToken() (gas: 354446)
|
||||
test_swapSingleNFTForAnyNFT() (gas: 147353)
|
||||
test_swapSingleNFTForSpecificNFT() (gas: 150065)
|
||||
test_swapSingleNFTForToken() (gas: 104902)
|
||||
test_swapTokenForSingleAnyNFT() (gas: 68727)
|
||||
test_swapTokenForSingleSpecificNFT() (gas: 71375)
|
||||
test_swapTokenforAny5NFTs() (gas: 114441)
|
||||
test_swapTokenforSpecific5NFTs() (gas: 120850)
|
||||
testFail_swapSingleNFTForToken() (gas: 93962)
|
||||
testFail_swapSingleNFTForTokenWithEmptyList() (gas: 9332)
|
||||
testFail_swapTokenForSingleAnyNFTSlippage() (gas: 33624)
|
||||
testFail_swapTokenForSingleSpecificNFTSlippage() (gas: 35466)
|
||||
testGas_swapSingleNFTForToken5Times() (gas: 446951)
|
||||
test_swap5NFTsForToken() (gas: 339420)
|
||||
test_swapSingleNFTForAnyNFT() (gas: 152922)
|
||||
test_swapSingleNFTForSpecificNFT() (gas: 155956)
|
||||
test_swapSingleNFTForToken() (gas: 89425)
|
||||
test_swapTokenForSingleAnyNFT() (gas: 60858)
|
||||
test_swapTokenForSingleSpecificNFT() (gas: 63821)
|
||||
test_swapTokenforAny5NFTs() (gas: 106572)
|
||||
test_swapTokenforSpecific5NFTs() (gas: 113343)
|
||||
test_swap5NFTsForToken() (gas: 342399)
|
||||
test_swapSingleNFTForAnyNFT() (gas: 199404)
|
||||
test_swapSingleNFTForSpecificNFT() (gas: 200017)
|
||||
test_swapSingleNFTForToken() (gas: 102290)
|
||||
test_swapSingleNFTForTokenWithProtocolFee() (gas: 128940)
|
||||
test_swapTokenForSingleAnyNFT() (gas: 117646)
|
||||
test_swapTokenForSingleAnyNFTWithProtocolFee() (gas: 160914)
|
||||
test_swapTokenForSingleSpecificNFT() (gas: 118821)
|
||||
test_swapTokenForSingleSpecificNFTWithProtocolFee() (gas: 162056)
|
||||
test_swapTokenforAny5NFTs() (gas: 331942)
|
||||
test_swapTokenforSpecific5NFTs() (gas: 329798)
|
||||
test_swap5NFTsForToken() (gas: 346560)
|
||||
test_swapSingleNFTForAnyNFT() (gas: 225458)
|
||||
test_swapSingleNFTForSpecificNFT() (gas: 226389)
|
||||
test_swapSingleNFTForToken() (gas: 105987)
|
||||
test_swapSingleNFTForTokenWithProtocolFee() (gas: 112512)
|
||||
test_swapTokenForSingleAnyNFT() (gas: 132999)
|
||||
test_swapTokenForSingleAnyNFTWithProtocolFee() (gas: 161439)
|
||||
test_swapTokenForSingleSpecificNFT() (gas: 134463)
|
||||
test_swapTokenForSingleSpecificNFTWithProtocolFee() (gas: 162914)
|
||||
test_swapTokenforAny5NFTs() (gas: 347743)
|
||||
test_swapTokenforSpecific5NFTs() (gas: 345936)
|
||||
test_swap5NFTsForToken() (gas: 130775)
|
||||
test_swapSingleNFTForAnyNFT() (gas: 133449)
|
||||
test_swapSingleNFTForSpecificNFT() (gas: 135357)
|
||||
test_swapSingleNFTForToken() (gas: 67734)
|
||||
test_swapSingleNFTForTokenWithProtocolFee() (gas: 104573)
|
||||
test_swapTokenForSingleAnyNFT() (gas: 76102)
|
||||
test_swapTokenForSingleAnyNFTWithProtocolFee() (gas: 119370)
|
||||
test_swapTokenForSingleSpecificNFT() (gas: 78778)
|
||||
test_swapTokenForSingleSpecificNFTWithProtocolFee() (gas: 122013)
|
||||
test_swapTokenforAny5NFTs() (gas: 122981)
|
||||
test_swapTokenforSpecific5NFTs() (gas: 129307)
|
||||
test_swap5NFTsForToken() (gas: 134936)
|
||||
test_swapSingleNFTForAnyNFT() (gas: 159410)
|
||||
test_swapSingleNFTForSpecificNFT() (gas: 161639)
|
||||
test_swapSingleNFTForToken() (gas: 71431)
|
||||
test_swapSingleNFTForTokenWithProtocolFee() (gas: 88145)
|
||||
test_swapTokenForSingleAnyNFT() (gas: 91362)
|
||||
test_swapTokenForSingleAnyNFTWithProtocolFee() (gas: 119802)
|
||||
test_swapTokenForSingleSpecificNFT() (gas: 94330)
|
||||
test_swapTokenForSingleSpecificNFTWithProtocolFee() (gas: 122781)
|
||||
test_swapTokenforAny5NFTs() (gas: 138690)
|
||||
test_swapTokenforSpecific5NFTs() (gas: 145355)
|
||||
test_swap5NFTsForToken() (gas: 341824)
|
||||
test_swapSingleNFTForAnyNFT() (gas: 199134)
|
||||
test_swapSingleNFTForSpecificNFT() (gas: 199747)
|
||||
test_swapSingleNFTForToken() (gas: 102164)
|
||||
test_swapSingleNFTForTokenWithProtocolFee() (gas: 128814)
|
||||
test_swapTokenForSingleAnyNFT() (gas: 117502)
|
||||
test_swapTokenForSingleAnyNFTWithProtocolFee() (gas: 160770)
|
||||
test_swapTokenForSingleSpecificNFT() (gas: 118677)
|
||||
test_swapTokenForSingleSpecificNFTWithProtocolFee() (gas: 161912)
|
||||
test_swapTokenforAny5NFTs() (gas: 330900)
|
||||
test_swapTokenforSpecific5NFTs() (gas: 328756)
|
||||
test_swap5NFTsForToken() (gas: 345985)
|
||||
test_swapSingleNFTForAnyNFT() (gas: 225116)
|
||||
test_swapSingleNFTForSpecificNFT() (gas: 226047)
|
||||
test_swapSingleNFTForToken() (gas: 105861)
|
||||
test_swapSingleNFTForTokenWithProtocolFee() (gas: 112386)
|
||||
test_swapTokenForSingleAnyNFT() (gas: 132783)
|
||||
test_swapTokenForSingleAnyNFTWithProtocolFee() (gas: 161223)
|
||||
test_swapTokenForSingleSpecificNFT() (gas: 134247)
|
||||
test_swapTokenForSingleSpecificNFTWithProtocolFee() (gas: 162698)
|
||||
test_swapTokenforAny5NFTs() (gas: 346180)
|
||||
test_swapTokenforSpecific5NFTs() (gas: 344373)
|
||||
test_swap5NFTsForToken() (gas: 130200)
|
||||
test_swapSingleNFTForAnyNFT() (gas: 133179)
|
||||
test_swapSingleNFTForSpecificNFT() (gas: 135087)
|
||||
test_swapSingleNFTForToken() (gas: 67608)
|
||||
test_swapSingleNFTForTokenWithProtocolFee() (gas: 104447)
|
||||
test_swapTokenForSingleAnyNFT() (gas: 75958)
|
||||
test_swapTokenForSingleAnyNFTWithProtocolFee() (gas: 119226)
|
||||
test_swapTokenForSingleSpecificNFT() (gas: 78634)
|
||||
test_swapTokenForSingleSpecificNFTWithProtocolFee() (gas: 121869)
|
||||
test_swapTokenforAny5NFTs() (gas: 121939)
|
||||
test_swapTokenforSpecific5NFTs() (gas: 128265)
|
||||
test_swap5NFTsForToken() (gas: 134361)
|
||||
test_swapSingleNFTForAnyNFT() (gas: 159068)
|
||||
test_swapSingleNFTForSpecificNFT() (gas: 161297)
|
||||
test_swapSingleNFTForToken() (gas: 71305)
|
||||
test_swapSingleNFTForTokenWithProtocolFee() (gas: 88019)
|
||||
test_swapTokenForSingleAnyNFT() (gas: 91146)
|
||||
test_swapTokenForSingleAnyNFTWithProtocolFee() (gas: 119586)
|
||||
test_swapTokenForSingleSpecificNFT() (gas: 94114)
|
||||
test_swapTokenForSingleSpecificNFTWithProtocolFee() (gas: 122565)
|
||||
test_swapTokenforAny5NFTs() (gas: 137127)
|
||||
test_swapTokenforSpecific5NFTs() (gas: 143792)
|
||||
test_getBuyInfoExample() (gas: 3933)
|
||||
test_getBuyInfoWithoutFee(uint128,uint64,uint8) (runs: 256, μ: 451, ~: 245)
|
||||
test_getSellInfoExample() (gas: 4011)
|
||||
test_getSellInfoWithoutFee(uint128,uint128,uint8) (runs: 256, μ: 3429, ~: 3430)
|
||||
test_getBuyInfoExample() (gas: 3339)
|
||||
test_getBuyInfoWithoutFee(uint128,uint128,uint8) (runs: 256, μ: 3184, ~: 3185)
|
||||
test_getSellInfoExample() (gas: 3329)
|
||||
test_getSellInfoWithoutFee(uint128,uint128,uint8) (runs: 256, μ: 3595, ~: 3598)
|
||||
test_bondingCurveBuySellNoProfit(uint56,uint64,uint8) (runs: 256, μ: 894565, ~: 1242221)
|
||||
test_bondingCurveSellBuyNoProfit(uint56,uint64,uint8) (runs: 256, μ: 883481, ~: 1232674)
|
||||
test_bondingCurveBuySellNoProfit(uint56,uint64,uint8) (runs: 256, μ: 326338, ~: 390526)
|
||||
test_bondingCurveSellBuyNoProfit(uint56,uint64,uint8) (runs: 256, μ: 322366, ~: 392643)
|
||||
test_bondingCurveBuySellNoProfit(uint56,uint64,uint8) (runs: 256, μ: 881931, ~: 1251053)
|
||||
test_bondingCurveSellBuyNoProfit(uint56,uint64,uint8) (runs: 256, μ: 831301, ~: 1202512)
|
||||
test_bondingCurveBuySellNoProfit(uint56,uint64,uint8) (runs: 256, μ: 313744, ~: 399418)
|
||||
test_bondingCurveSellBuyNoProfit(uint56,uint64,uint8) (runs: 256, μ: 270225, ~: 362541)
|
||||
test_bondingCurveBuySellNoProfit(uint56,uint64,uint8) (runs: 256, μ: 893838, ~: 1241803)
|
||||
test_bondingCurveSellBuyNoProfit(uint56,uint64,uint8) (runs: 256, μ: 882813, ~: 1232342)
|
||||
test_bondingCurveBuySellNoProfit(uint56,uint64,uint8) (runs: 256, μ: 324931, ~: 390108)
|
||||
test_bondingCurveSellBuyNoProfit(uint56,uint64,uint8) (runs: 256, μ: 321698, ~: 392311)
|
||||
test_bondingCurveBuySellNoProfit(uint56,uint64,uint8) (runs: 256, μ: 881203, ~: 1250635)
|
||||
test_bondingCurveSellBuyNoProfit(uint56,uint64,uint8) (runs: 256, μ: 830632, ~: 1202180)
|
||||
test_bondingCurveBuySellNoProfit(uint56,uint64,uint8) (runs: 256, μ: 312337, ~: 399000)
|
||||
test_bondingCurveSellBuyNoProfit(uint56,uint64,uint8) (runs: 256, μ: 269557, ~: 362209)
|
||||
testFail_callMint721() (gas: 5709)
|
||||
testFail_changeAssetRecipientForTrade() (gas: 1738)
|
||||
testFail_changeDeltaNotOwner() (gas: 4554)
|
||||
testFail_changeFeeAboveMax() (gas: 1677)
|
||||
testFail_changeFeeNotOwner() (gas: 4466)
|
||||
testFail_changeSpotNotOwner() (gas: 4444)
|
||||
testFail_reInitPool() (gas: 1793)
|
||||
testFail_rescueTokensNotOwner() (gas: 5673)
|
||||
testFail_tradePoolChangeAssetRecipient() (gas: 1670)
|
||||
testFail_tradePoolChangeFeePastMax() (gas: 1721)
|
||||
testFail_transferOwnership() (gas: 4517)
|
||||
testFail_withdraw() (gas: 5791)
|
||||
testGas_basicDeploy() (gas: 206752)
|
||||
test_callMint721() (gas: 143403)
|
||||
test_changeFeeMultiplier() (gas: 2218)
|
||||
test_changeFeeRecipient() (gas: 2632)
|
||||
test_getAllHeldNFTs() (gas: 7508)
|
||||
test_modifyPairParams() (gas: 32353)
|
||||
test_rescueTokens() (gas: 33440)
|
||||
test_transferOwnership() (gas: 3354)
|
||||
test_verifyPoolParams() (gas: 15968)
|
||||
test_withdraw() (gas: 0)
|
||||
test_withdrawFees() (gas: 105014)
|
||||
testFail_callMint721() (gas: 5706)
|
||||
testFail_changeAssetRecipientForTrade() (gas: 1757)
|
||||
testFail_changeDeltaNotOwner() (gas: 4570)
|
||||
testFail_changeFeeAboveMax() (gas: 1674)
|
||||
testFail_changeFeeNotOwner() (gas: 4482)
|
||||
testFail_changeSpotNotOwner() (gas: 4460)
|
||||
testFail_reInitPool() (gas: 1790)
|
||||
testFail_rescueTokensNotOwner() (gas: 5689)
|
||||
testFail_tradePoolChangeAssetRecipient() (gas: 1689)
|
||||
testFail_tradePoolChangeFeePastMax() (gas: 1718)
|
||||
testFail_transferOwnership() (gas: 4555)
|
||||
testFail_withdraw() (gas: 4498)
|
||||
testGas_basicDeploy() (gas: 162396)
|
||||
test_callMint721() (gas: 143400)
|
||||
test_changeFeeMultiplier() (gas: 2218)
|
||||
test_changeFeeRecipient() (gas: 2632)
|
||||
test_getAllHeldNFTs() (gas: 7478)
|
||||
test_modifyPairParams() (gas: 32324)
|
||||
test_rescueTokens() (gas: 33373)
|
||||
test_transferOwnership() (gas: 3373)
|
||||
test_verifyPoolParams() (gas: 14951)
|
||||
test_withdraw() (gas: 10004)
|
||||
test_withdrawFees() (gas: 115083)
|
||||
testFail_callMint721() (gas: 5709)
|
||||
testFail_changeAssetRecipientForTrade() (gas: 1738)
|
||||
testFail_changeDeltaNotOwner() (gas: 4554)
|
||||
testFail_changeFeeAboveMax() (gas: 1677)
|
||||
testFail_changeFeeNotOwner() (gas: 4466)
|
||||
testFail_changeSpotNotOwner() (gas: 4444)
|
||||
testFail_reInitPool() (gas: 1793)
|
||||
testFail_rescueTokensNotOwner() (gas: 5673)
|
||||
testFail_tradePoolChangeAssetRecipient() (gas: 1670)
|
||||
testFail_tradePoolChangeFeePastMax() (gas: 1721)
|
||||
testFail_transferOwnership() (gas: 4517)
|
||||
testFail_withdraw() (gas: 5791)
|
||||
testGas_basicDeploy() (gas: 206645)
|
||||
test_callMint721() (gas: 75893)
|
||||
test_changeFeeMultiplier() (gas: 2218)
|
||||
test_changeFeeRecipient() (gas: 2632)
|
||||
test_getAllHeldNFTs() (gas: 4584)
|
||||
test_modifyPairParams() (gas: 32353)
|
||||
test_rescueTokens() (gas: 0)
|
||||
test_transferOwnership() (gas: 3354)
|
||||
test_verifyPoolParams() (gas: 15924)
|
||||
test_withdraw() (gas: 0)
|
||||
test_withdrawFees() (gas: 1781)
|
||||
testFail_callMint721() (gas: 5706)
|
||||
testFail_changeAssetRecipientForTrade() (gas: 1757)
|
||||
testFail_changeDeltaNotOwner() (gas: 4570)
|
||||
testFail_changeFeeAboveMax() (gas: 1674)
|
||||
testFail_changeFeeNotOwner() (gas: 4482)
|
||||
testFail_changeSpotNotOwner() (gas: 4460)
|
||||
testFail_reInitPool() (gas: 1790)
|
||||
testFail_rescueTokensNotOwner() (gas: 5689)
|
||||
testFail_tradePoolChangeAssetRecipient() (gas: 1689)
|
||||
testFail_tradePoolChangeFeePastMax() (gas: 1718)
|
||||
testFail_transferOwnership() (gas: 4555)
|
||||
testFail_withdraw() (gas: 4498)
|
||||
testGas_basicDeploy() (gas: 162289)
|
||||
test_callMint721() (gas: 75890)
|
||||
test_changeFeeMultiplier() (gas: 2218)
|
||||
test_changeFeeRecipient() (gas: 2632)
|
||||
test_getAllHeldNFTs() (gas: 4581)
|
||||
test_modifyPairParams() (gas: 32324)
|
||||
test_rescueTokens() (gas: 0)
|
||||
test_transferOwnership() (gas: 3373)
|
||||
test_verifyPoolParams() (gas: 14922)
|
||||
test_withdraw() (gas: 10004)
|
||||
test_withdrawFees() (gas: 11883)
|
||||
testFail_callMint721() (gas: 5709)
|
||||
testFail_changeAssetRecipientForTrade() (gas: 1738)
|
||||
testFail_changeDeltaNotOwner() (gas: 4554)
|
||||
testFail_changeFeeAboveMax() (gas: 1677)
|
||||
testFail_changeFeeNotOwner() (gas: 4466)
|
||||
testFail_changeSpotNotOwner() (gas: 4444)
|
||||
testFail_reInitPool() (gas: 1793)
|
||||
testFail_rescueTokensNotOwner() (gas: 5673)
|
||||
testFail_tradePoolChangeAssetRecipient() (gas: 1670)
|
||||
testFail_tradePoolChangeFeePastMax() (gas: 1721)
|
||||
testFail_transferOwnership() (gas: 4517)
|
||||
testFail_withdraw() (gas: 5791)
|
||||
testGas_basicDeploy() (gas: 206747)
|
||||
test_callMint721() (gas: 143403)
|
||||
test_changeFeeMultiplier() (gas: 2218)
|
||||
test_changeFeeRecipient() (gas: 2632)
|
||||
test_getAllHeldNFTs() (gas: 7508)
|
||||
test_modifyPairParams() (gas: 32348)
|
||||
test_rescueTokens() (gas: 33440)
|
||||
test_transferOwnership() (gas: 3354)
|
||||
test_verifyPoolParams() (gas: 15968)
|
||||
test_withdraw() (gas: 0)
|
||||
test_withdrawFees() (gas: 104398)
|
||||
testFail_callMint721() (gas: 5706)
|
||||
testFail_changeAssetRecipientForTrade() (gas: 1757)
|
||||
testFail_changeDeltaNotOwner() (gas: 4570)
|
||||
testFail_changeFeeAboveMax() (gas: 1674)
|
||||
testFail_changeFeeNotOwner() (gas: 4482)
|
||||
testFail_changeSpotNotOwner() (gas: 4460)
|
||||
testFail_reInitPool() (gas: 1790)
|
||||
testFail_rescueTokensNotOwner() (gas: 5689)
|
||||
testFail_tradePoolChangeAssetRecipient() (gas: 1689)
|
||||
testFail_tradePoolChangeFeePastMax() (gas: 1718)
|
||||
testFail_transferOwnership() (gas: 4555)
|
||||
testFail_withdraw() (gas: 4498)
|
||||
testGas_basicDeploy() (gas: 162391)
|
||||
test_callMint721() (gas: 143400)
|
||||
test_changeFeeMultiplier() (gas: 2218)
|
||||
test_changeFeeRecipient() (gas: 2632)
|
||||
test_getAllHeldNFTs() (gas: 7478)
|
||||
test_modifyPairParams() (gas: 32319)
|
||||
test_rescueTokens() (gas: 33373)
|
||||
test_transferOwnership() (gas: 3373)
|
||||
test_verifyPoolParams() (gas: 14951)
|
||||
test_withdraw() (gas: 10004)
|
||||
test_withdrawFees() (gas: 114467)
|
||||
testFail_callMint721() (gas: 5709)
|
||||
testFail_changeAssetRecipientForTrade() (gas: 1738)
|
||||
testFail_changeDeltaNotOwner() (gas: 4554)
|
||||
testFail_changeFeeAboveMax() (gas: 1677)
|
||||
testFail_changeFeeNotOwner() (gas: 4466)
|
||||
testFail_changeSpotNotOwner() (gas: 4444)
|
||||
testFail_reInitPool() (gas: 1793)
|
||||
testFail_rescueTokensNotOwner() (gas: 5673)
|
||||
testFail_tradePoolChangeAssetRecipient() (gas: 1670)
|
||||
testFail_tradePoolChangeFeePastMax() (gas: 1721)
|
||||
testFail_transferOwnership() (gas: 4517)
|
||||
testFail_withdraw() (gas: 5791)
|
||||
testGas_basicDeploy() (gas: 206640)
|
||||
test_callMint721() (gas: 75893)
|
||||
test_changeFeeMultiplier() (gas: 2218)
|
||||
test_changeFeeRecipient() (gas: 2632)
|
||||
test_getAllHeldNFTs() (gas: 4584)
|
||||
test_modifyPairParams() (gas: 32348)
|
||||
test_rescueTokens() (gas: 0)
|
||||
test_transferOwnership() (gas: 3354)
|
||||
test_verifyPoolParams() (gas: 15924)
|
||||
test_withdraw() (gas: 0)
|
||||
test_withdrawFees() (gas: 1165)
|
||||
testFail_callMint721() (gas: 5706)
|
||||
testFail_changeAssetRecipientForTrade() (gas: 1757)
|
||||
testFail_changeDeltaNotOwner() (gas: 4570)
|
||||
testFail_changeFeeAboveMax() (gas: 1674)
|
||||
testFail_changeFeeNotOwner() (gas: 4482)
|
||||
testFail_changeSpotNotOwner() (gas: 4460)
|
||||
testFail_reInitPool() (gas: 1790)
|
||||
testFail_rescueTokensNotOwner() (gas: 5689)
|
||||
testFail_tradePoolChangeAssetRecipient() (gas: 1689)
|
||||
testFail_tradePoolChangeFeePastMax() (gas: 1718)
|
||||
testFail_transferOwnership() (gas: 4555)
|
||||
testFail_withdraw() (gas: 4498)
|
||||
testGas_basicDeploy() (gas: 162284)
|
||||
test_callMint721() (gas: 75890)
|
||||
test_changeFeeMultiplier() (gas: 2218)
|
||||
test_changeFeeRecipient() (gas: 2632)
|
||||
test_getAllHeldNFTs() (gas: 4581)
|
||||
test_modifyPairParams() (gas: 32319)
|
||||
test_rescueTokens() (gas: 0)
|
||||
test_transferOwnership() (gas: 3373)
|
||||
test_verifyPoolParams() (gas: 14922)
|
||||
test_withdraw() (gas: 10004)
|
||||
test_withdrawFees() (gas: 11267)
|
||||
test_swap5NFTsForToken() (gas: 161421)
|
||||
test_swapTokenForAny5NFTs() (gas: 263352)
|
||||
test_swapTokenForSpecific5NFTs() (gas: 269400)
|
||||
test_swap5NFTsForToken() (gas: 270434)
|
||||
test_swapTokenForAny5NFTs() (gas: 255123)
|
||||
test_swapTokenForSpecific5NFTs() (gas: 263057)
|
||||
test_swap5NFTsForToken() (gas: 346223)
|
||||
test_swapTokenForAny5NFTs() (gas: 0)
|
||||
test_swapTokenForSpecific5NFTs() (gas: 0)
|
||||
test_swap5NFTsForToken() (gas: 455371)
|
||||
test_swapTokenForAny5NFTs() (gas: 0)
|
||||
test_swapTokenForSpecific5NFTs() (gas: 0)
|
||||
test_swap5NFTsForToken() (gas: 160061)
|
||||
test_swapTokenForAny5NFTs() (gas: 262982)
|
||||
test_swapTokenForSpecific5NFTs() (gas: 269030)
|
||||
test_swap5NFTsForToken() (gas: 269074)
|
||||
test_swapTokenForAny5NFTs() (gas: 254568)
|
||||
test_swapTokenForSpecific5NFTs() (gas: 262502)
|
||||
test_swap5NFTsForToken() (gas: 344863)
|
||||
test_swapTokenForAny5NFTs() (gas: 0)
|
||||
test_swapTokenForSpecific5NFTs() (gas: 0)
|
||||
test_swap5NFTsForToken() (gas: 454011)
|
||||
test_swapTokenForAny5NFTs() (gas: 0)
|
||||
test_swapTokenForSpecific5NFTs() (gas: 0)
|
||||
test_robustSwapNFTsForToken() (gas: 175904)
|
||||
test_robustSwapNFTsForTokenWithBondingCurveError() (gas: 110220)
|
||||
test_robustSwapTokenForAnyNFTs() (gas: 168169)
|
||||
test_robustSwapTokenForSpecificNFTs() (gas: 170901)
|
||||
test_robustSwapNFTsForToken() (gas: 166766)
|
||||
test_robustSwapNFTsForTokenWithBondingCurveError() (gas: 94639)
|
||||
test_robustSwapTokenForAnyNFTs() (gas: 156986)
|
||||
test_robustSwapTokenForSpecificNFTs() (gas: 159695)
|
||||
test_robustSwapNFTsForToken() (gas: 337272)
|
||||
test_robustSwapNFTsForTokenWithBondingCurveError() (gas: 190860)
|
||||
test_robustSwapTokenForAnyNFTs() (gas: 0)
|
||||
test_robustSwapTokenForSpecificNFTs() (gas: 21423)
|
||||
test_robustSwapNFTsForToken() (gas: 328188)
|
||||
test_robustSwapNFTsForTokenWithBondingCurveError() (gas: 175306)
|
||||
test_robustSwapTokenForAnyNFTs() (gas: 0)
|
||||
test_robustSwapTokenForSpecificNFTs() (gas: 10107)
|
||||
test_robustSwapNFTsForToken() (gas: 173869)
|
||||
test_robustSwapNFTsForTokenWithBondingCurveError() (gas: 108999)
|
||||
test_robustSwapTokenForAnyNFTs() (gas: 166629)
|
||||
test_robustSwapTokenForSpecificNFTs() (gas: 169361)
|
||||
test_robustSwapNFTsForToken() (gas: 164731)
|
||||
test_robustSwapNFTsForTokenWithBondingCurveError() (gas: 93418)
|
||||
test_robustSwapTokenForAnyNFTs() (gas: 155446)
|
||||
test_robustSwapTokenForSpecificNFTs() (gas: 158155)
|
||||
test_robustSwapNFTsForToken() (gas: 335237)
|
||||
test_robustSwapNFTsForTokenWithBondingCurveError() (gas: 189639)
|
||||
test_robustSwapTokenForAnyNFTs() (gas: 0)
|
||||
test_robustSwapTokenForSpecificNFTs() (gas: 19883)
|
||||
test_robustSwapNFTsForToken() (gas: 326153)
|
||||
test_robustSwapNFTsForTokenWithBondingCurveError() (gas: 174085)
|
||||
test_robustSwapTokenForAnyNFTs() (gas: 0)
|
||||
test_robustSwapTokenForSpecificNFTs() (gas: 8567)
|
||||
test_robustSwapNFTsForToken() (gas: 42863)
|
||||
test_robustSwapTokenForAnyNFTs() (gas: 94145)
|
||||
test_robustSwapTokenForSpecificNFTs() (gas: 97035)
|
||||
test_robustSwapNFTsForToken() (gas: 66370)
|
||||
test_robustSwapTokenForAnyNFTs() (gas: 110816)
|
||||
test_robustSwapTokenForSpecificNFTs() (gas: 113674)
|
||||
test_robustSwapNFTsForToken() (gas: 58096)
|
||||
test_robustSwapTokenForAnyNFTs() (gas: 13176)
|
||||
test_robustSwapTokenForSpecificNFTs() (gas: 16842)
|
||||
test_robustSwapNFTsForToken() (gas: 81630)
|
||||
test_robustSwapTokenForAnyNFTs() (gas: 29789)
|
||||
test_robustSwapTokenForSpecificNFTs() (gas: 33426)
|
||||
test_robustSwapNFTsForToken() (gas: 42319)
|
||||
test_robustSwapTokenForAnyNFTs() (gas: 93997)
|
||||
test_robustSwapTokenForSpecificNFTs() (gas: 96887)
|
||||
test_robustSwapNFTsForToken() (gas: 65826)
|
||||
test_robustSwapTokenForAnyNFTs() (gas: 110668)
|
||||
test_robustSwapTokenForSpecificNFTs() (gas: 113526)
|
||||
test_robustSwapNFTsForToken() (gas: 57552)
|
||||
test_robustSwapTokenForAnyNFTs() (gas: 13028)
|
||||
test_robustSwapTokenForSpecificNFTs() (gas: 16694)
|
||||
test_robustSwapNFTsForToken() (gas: 81086)
|
||||
test_robustSwapTokenForAnyNFTs() (gas: 29641)
|
||||
test_robustSwapTokenForSpecificNFTs() (gas: 33278)
|
||||
testFail_swapSingleNFTForToken() (gas: 110642)
|
||||
testFail_swapSingleNFTForTokenWithEmptyList() (gas: 9791)
|
||||
testFail_swapTokenForSingleAnyNFTSlippage() (gas: 114115)
|
||||
testFail_swapTokenForSingleSpecificNFTSlippage() (gas: 115296)
|
||||
testGas_swapSingleNFTForToken5Times() (gas: 242607)
|
||||
test_swap5NFTsForToken() (gas: 157722)
|
||||
test_swapSingleNFTForAnyNFT() (gas: 112444)
|
||||
test_swapSingleNFTForSpecificNFT() (gas: 113585)
|
||||
test_swapSingleNFTForToken() (gas: 66022)
|
||||
test_swapTokenForSingleAnyNFT() (gas: 74821)
|
||||
test_swapTokenForSingleSpecificNFT() (gas: 75915)
|
||||
test_swapTokenforAny5NFTs() (gas: 140961)
|
||||
test_swapTokenforSpecific5NFTs() (gas: 138464)
|
||||
testFail_swapSingleNFTForToken() (gas: 95027)
|
||||
testFail_swapSingleNFTForTokenWithEmptyList() (gas: 9742)
|
||||
testFail_swapTokenForSingleAnyNFTSlippage() (gas: 34187)
|
||||
testFail_swapTokenForSingleSpecificNFTSlippage() (gas: 36107)
|
||||
testGas_swapSingleNFTForToken5Times() (gas: 252147)
|
||||
test_swap5NFTsForToken() (gas: 142561)
|
||||
test_swapSingleNFTForAnyNFT() (gas: 117385)
|
||||
test_swapSingleNFTForSpecificNFT() (gas: 118886)
|
||||
test_swapSingleNFTForToken() (gas: 50410)
|
||||
test_swapTokenForSingleAnyNFT() (gas: 66434)
|
||||
test_swapTokenForSingleSpecificNFT() (gas: 67899)
|
||||
test_swapTokenforAny5NFTs() (gas: 133022)
|
||||
test_swapTokenforSpecific5NFTs() (gas: 130944)
|
||||
testFail_swapSingleNFTForToken() (gas: 111206)
|
||||
testFail_swapSingleNFTForTokenWithEmptyList() (gas: 9791)
|
||||
testFail_swapTokenForSingleAnyNFTSlippage() (gas: 70252)
|
||||
testFail_swapTokenForSingleSpecificNFTSlippage() (gas: 72997)
|
||||
testGas_swapSingleNFTForToken5Times() (gas: 444427)
|
||||
test_swap5NFTsForToken() (gas: 359542)
|
||||
test_swapSingleNFTForAnyNFT() (gas: 111045)
|
||||
test_swapSingleNFTForSpecificNFT() (gas: 113750)
|
||||
test_swapSingleNFTForToken() (gas: 106386)
|
||||
test_swapTokenForSingleAnyNFT() (gas: 30958)
|
||||
test_swapTokenForSingleSpecificNFT() (gas: 33616)
|
||||
test_swapTokenforAny5NFTs() (gas: 0)
|
||||
test_swapTokenforSpecific5NFTs() (gas: 0)
|
||||
testFail_swapSingleNFTForToken() (gas: 95618)
|
||||
testFail_swapSingleNFTForTokenWithEmptyList() (gas: 9742)
|
||||
testFail_swapTokenForSingleAnyNFTSlippage() (gas: 34187)
|
||||
testFail_swapTokenForSingleSpecificNFTSlippage() (gas: 36107)
|
||||
testGas_swapSingleNFTForToken5Times() (gas: 454102)
|
||||
test_swap5NFTsForToken() (gas: 344408)
|
||||
test_swapSingleNFTForAnyNFT() (gas: 115955)
|
||||
test_swapSingleNFTForSpecificNFT() (gas: 119023)
|
||||
test_swapSingleNFTForToken() (gas: 90801)
|
||||
test_swapTokenForSingleAnyNFT() (gas: 22513)
|
||||
test_swapTokenForSingleSpecificNFT() (gas: 25545)
|
||||
test_swapTokenforAny5NFTs() (gas: 0)
|
||||
test_swapTokenforSpecific5NFTs() (gas: 0)
|
||||
testFail_swapSingleNFTForToken() (gas: 110370)
|
||||
testFail_swapSingleNFTForTokenWithEmptyList() (gas: 9655)
|
||||
testFail_swapTokenForSingleAnyNFTSlippage() (gas: 114041)
|
||||
testFail_swapTokenForSingleSpecificNFTSlippage() (gas: 115222)
|
||||
testGas_swapSingleNFTForToken5Times() (gas: 241927)
|
||||
test_swap5NFTsForToken() (gas: 157137)
|
||||
test_swapSingleNFTForAnyNFT() (gas: 112271)
|
||||
test_swapSingleNFTForSpecificNFT() (gas: 113412)
|
||||
test_swapSingleNFTForToken() (gas: 65886)
|
||||
test_swapTokenForSingleAnyNFT() (gas: 74747)
|
||||
test_swapTokenForSingleSpecificNFT() (gas: 75841)
|
||||
test_swapTokenforAny5NFTs() (gas: 139989)
|
||||
test_swapTokenforSpecific5NFTs() (gas: 137492)
|
||||
testFail_swapSingleNFTForToken() (gas: 94755)
|
||||
testFail_swapSingleNFTForTokenWithEmptyList() (gas: 9606)
|
||||
testFail_swapTokenForSingleAnyNFTSlippage() (gas: 34113)
|
||||
testFail_swapTokenForSingleSpecificNFTSlippage() (gas: 36033)
|
||||
testGas_swapSingleNFTForToken5Times() (gas: 251467)
|
||||
test_swap5NFTsForToken() (gas: 141976)
|
||||
test_swapSingleNFTForAnyNFT() (gas: 117175)
|
||||
test_swapSingleNFTForSpecificNFT() (gas: 118676)
|
||||
test_swapSingleNFTForToken() (gas: 50274)
|
||||
test_swapTokenForSingleAnyNFT() (gas: 66323)
|
||||
test_swapTokenForSingleSpecificNFT() (gas: 67788)
|
||||
test_swapTokenforAny5NFTs() (gas: 131564)
|
||||
test_swapTokenforSpecific5NFTs() (gas: 129486)
|
||||
testFail_swapSingleNFTForToken() (gas: 110934)
|
||||
testFail_swapSingleNFTForTokenWithEmptyList() (gas: 9655)
|
||||
testFail_swapTokenForSingleAnyNFTSlippage() (gas: 70178)
|
||||
testFail_swapTokenForSingleSpecificNFTSlippage() (gas: 72923)
|
||||
testGas_swapSingleNFTForToken5Times() (gas: 443747)
|
||||
test_swap5NFTsForToken() (gas: 358957)
|
||||
test_swapSingleNFTForAnyNFT() (gas: 110872)
|
||||
test_swapSingleNFTForSpecificNFT() (gas: 113577)
|
||||
test_swapSingleNFTForToken() (gas: 106250)
|
||||
test_swapTokenForSingleAnyNFT() (gas: 30884)
|
||||
test_swapTokenForSingleSpecificNFT() (gas: 33542)
|
||||
test_swapTokenforAny5NFTs() (gas: 0)
|
||||
test_swapTokenforSpecific5NFTs() (gas: 0)
|
||||
testFail_swapSingleNFTForToken() (gas: 95346)
|
||||
testFail_swapSingleNFTForTokenWithEmptyList() (gas: 9606)
|
||||
testFail_swapTokenForSingleAnyNFTSlippage() (gas: 34113)
|
||||
testFail_swapTokenForSingleSpecificNFTSlippage() (gas: 36033)
|
||||
testGas_swapSingleNFTForToken5Times() (gas: 453422)
|
||||
test_swap5NFTsForToken() (gas: 343823)
|
||||
test_swapSingleNFTForAnyNFT() (gas: 115745)
|
||||
test_swapSingleNFTForSpecificNFT() (gas: 118813)
|
||||
test_swapSingleNFTForToken() (gas: 90665)
|
||||
test_swapTokenForSingleAnyNFT() (gas: 22402)
|
||||
test_swapTokenForSingleSpecificNFT() (gas: 25434)
|
||||
test_swapTokenforAny5NFTs() (gas: 0)
|
||||
test_swapTokenforSpecific5NFTs() (gas: 0)
|
||||
test_swap5NFTsForToken() (gas: 148686)
|
||||
test_swapSingleNFTForAnyNFT() (gas: 123412)
|
||||
test_swapSingleNFTForSpecificNFT() (gas: 123949)
|
||||
test_swapSingleNFTForToken() (gas: 64694)
|
||||
test_swapSingleNFTForTokenWithProtocolFee() (gas: 90609)
|
||||
test_swapTokenForSingleAnyNFT() (gas: 79985)
|
||||
test_swapTokenForSingleAnyNFTWithProtocolFee() (gas: 123411)
|
||||
test_swapTokenForSingleSpecificNFT() (gas: 81113)
|
||||
test_swapTokenForSingleSpecificNFTWithProtocolFee() (gas: 124506)
|
||||
test_swapTokenforAny5NFTs() (gas: 138001)
|
||||
test_swapTokenforSpecific5NFTs() (gas: 135450)
|
||||
test_swap5NFTsForToken() (gas: 152757)
|
||||
test_swapSingleNFTForAnyNFT() (gas: 148715)
|
||||
test_swapSingleNFTForSpecificNFT() (gas: 149608)
|
||||
test_swapSingleNFTForToken() (gas: 68301)
|
||||
test_swapSingleNFTForTokenWithProtocolFee() (gas: 74013)
|
||||
test_swapTokenForSingleAnyNFT() (gas: 94625)
|
||||
test_swapTokenForSingleAnyNFTWithProtocolFee() (gas: 123175)
|
||||
test_swapTokenForSingleSpecificNFT() (gas: 96098)
|
||||
test_swapTokenForSingleSpecificNFTWithProtocolFee() (gas: 124659)
|
||||
test_swapTokenforAny5NFTs() (gas: 153089)
|
||||
test_swapTokenforSpecific5NFTs() (gas: 150931)
|
||||
test_swap5NFTsForToken() (gas: 134538)
|
||||
test_swapSingleNFTForAnyNFT() (gas: 96882)
|
||||
test_swapSingleNFTForSpecificNFT() (gas: 98789)
|
||||
test_swapSingleNFTForToken() (gas: 69038)
|
||||
test_swapSingleNFTForTokenWithProtocolFee() (gas: 105886)
|
||||
test_swapTokenForSingleAnyNFT() (gas: 38222)
|
||||
test_swapTokenForSingleAnyNFTWithProtocolFee() (gas: 81648)
|
||||
test_swapTokenForSingleSpecificNFT() (gas: 40914)
|
||||
test_swapTokenForSingleSpecificNFTWithProtocolFee() (gas: 84307)
|
||||
test_swapTokenforAny5NFTs() (gas: 0)
|
||||
test_swapTokenforSpecific5NFTs() (gas: 0)
|
||||
test_swap5NFTsForToken() (gas: 138663)
|
||||
test_swapSingleNFTForAnyNFT() (gas: 122154)
|
||||
test_swapSingleNFTForSpecificNFT() (gas: 124420)
|
||||
test_swapSingleNFTForToken() (gas: 72699)
|
||||
test_swapSingleNFTForTokenWithProtocolFee() (gas: 89317)
|
||||
test_swapTokenForSingleAnyNFT() (gas: 52804)
|
||||
test_swapTokenForSingleAnyNFTWithProtocolFee() (gas: 81354)
|
||||
test_swapTokenForSingleSpecificNFT() (gas: 55844)
|
||||
test_swapTokenForSingleSpecificNFTWithProtocolFee() (gas: 84405)
|
||||
test_swapTokenforAny5NFTs() (gas: 0)
|
||||
test_swapTokenforSpecific5NFTs() (gas: 0)
|
||||
test_swap5NFTsForToken() (gas: 148101)
|
||||
test_swapSingleNFTForAnyNFT() (gas: 123202)
|
||||
test_swapSingleNFTForSpecificNFT() (gas: 123739)
|
||||
test_swapSingleNFTForToken() (gas: 64558)
|
||||
test_swapSingleNFTForTokenWithProtocolFee() (gas: 90473)
|
||||
test_swapTokenForSingleAnyNFT() (gas: 79911)
|
||||
test_swapTokenForSingleAnyNFTWithProtocolFee() (gas: 123337)
|
||||
test_swapTokenForSingleSpecificNFT() (gas: 81039)
|
||||
test_swapTokenForSingleSpecificNFTWithProtocolFee() (gas: 124432)
|
||||
test_swapTokenforAny5NFTs() (gas: 137029)
|
||||
test_swapTokenforSpecific5NFTs() (gas: 134478)
|
||||
test_swap5NFTsForToken() (gas: 152172)
|
||||
test_swapSingleNFTForAnyNFT() (gas: 148468)
|
||||
test_swapSingleNFTForSpecificNFT() (gas: 149361)
|
||||
test_swapSingleNFTForToken() (gas: 68165)
|
||||
test_swapSingleNFTForTokenWithProtocolFee() (gas: 73877)
|
||||
test_swapTokenForSingleAnyNFT() (gas: 94514)
|
||||
test_swapTokenForSingleAnyNFTWithProtocolFee() (gas: 123064)
|
||||
test_swapTokenForSingleSpecificNFT() (gas: 95987)
|
||||
test_swapTokenForSingleSpecificNFTWithProtocolFee() (gas: 124548)
|
||||
test_swapTokenforAny5NFTs() (gas: 151631)
|
||||
test_swapTokenforSpecific5NFTs() (gas: 149473)
|
||||
test_swap5NFTsForToken() (gas: 133953)
|
||||
test_swapSingleNFTForAnyNFT() (gas: 96672)
|
||||
test_swapSingleNFTForSpecificNFT() (gas: 98579)
|
||||
test_swapSingleNFTForToken() (gas: 68902)
|
||||
test_swapSingleNFTForTokenWithProtocolFee() (gas: 105750)
|
||||
test_swapTokenForSingleAnyNFT() (gas: 38148)
|
||||
test_swapTokenForSingleAnyNFTWithProtocolFee() (gas: 81574)
|
||||
test_swapTokenForSingleSpecificNFT() (gas: 40840)
|
||||
test_swapTokenForSingleSpecificNFTWithProtocolFee() (gas: 84233)
|
||||
test_swapTokenforAny5NFTs() (gas: 0)
|
||||
test_swapTokenforSpecific5NFTs() (gas: 0)
|
||||
test_swap5NFTsForToken() (gas: 138078)
|
||||
test_swapSingleNFTForAnyNFT() (gas: 121907)
|
||||
test_swapSingleNFTForSpecificNFT() (gas: 124173)
|
||||
test_swapSingleNFTForToken() (gas: 72563)
|
||||
test_swapSingleNFTForTokenWithProtocolFee() (gas: 89181)
|
||||
test_swapTokenForSingleAnyNFT() (gas: 52693)
|
||||
test_swapTokenForSingleAnyNFTWithProtocolFee() (gas: 81243)
|
||||
test_swapTokenForSingleSpecificNFT() (gas: 55733)
|
||||
test_swapTokenForSingleSpecificNFTWithProtocolFee() (gas: 84294)
|
||||
test_swapTokenforAny5NFTs() (gas: 0)
|
||||
test_swapTokenforSpecific5NFTs() (gas: 0)
|
||||
|
||||
@@ -6,7 +6,7 @@ import {IERC721} from "@openzeppelin/contracts/token/ERC721/IERC721.sol";
|
||||
import {ERC165Checker} from "@openzeppelin/contracts/utils/introspection/ERC165Checker.sol";
|
||||
import {IERC721Enumerable} from "@openzeppelin/contracts/token/ERC721/extensions/IERC721Enumerable.sol";
|
||||
|
||||
// @dev Solmate's ERC20 is used instead of OZ's ERC20 so we can use safeTransferLib for cheaper safeTransfers for
|
||||
// @dev Solmate's ERC20 is used instead of OZ's ERC20 so we can use safeTransferLib for cheaper safeTransfers for
|
||||
// ETH and ERC20 tokens
|
||||
import {ERC20} from "solmate/tokens/ERC20.sol";
|
||||
import {SafeTransferLib} from "solmate/utils/SafeTransferLib.sol";
|
||||
@@ -235,24 +235,28 @@ contract LSSVMPairFactory is Ownable, LSSVMPairFactoryLike {
|
||||
if (variant == PairVariant.ENUMERABLE_ERC20) {
|
||||
return
|
||||
LSSVMPairCloner.isERC20PairClone(
|
||||
address(this),
|
||||
address(enumerableERC20Template),
|
||||
potentialPair
|
||||
);
|
||||
} else if (variant == PairVariant.MISSING_ENUMERABLE_ERC20) {
|
||||
return
|
||||
LSSVMPairCloner.isERC20PairClone(
|
||||
address(this),
|
||||
address(missingEnumerableERC20Template),
|
||||
potentialPair
|
||||
);
|
||||
} else if (variant == PairVariant.ENUMERABLE_ETH) {
|
||||
return
|
||||
LSSVMPairCloner.isETHPairClone(
|
||||
address(this),
|
||||
address(enumerableETHTemplate),
|
||||
potentialPair
|
||||
);
|
||||
} else if (variant == PairVariant.MISSING_ENUMERABLE_ETH) {
|
||||
return
|
||||
LSSVMPairCloner.isETHPairClone(
|
||||
address(this),
|
||||
address(missingEnumerableETHTemplate),
|
||||
potentialPair
|
||||
);
|
||||
|
||||
+129
-124
@@ -29,76 +29,74 @@ library LSSVMPairCloner {
|
||||
let ptr := mload(0x40)
|
||||
|
||||
// -------------------------------------------------------------------------------------------------------------
|
||||
// CREATION (11 bytes)
|
||||
// CREATION (9 bytes)
|
||||
// -------------------------------------------------------------------------------------------------------------
|
||||
|
||||
// creation size = 0a
|
||||
// runtime size = 73
|
||||
// 3d | RETURNDATASIZE | 0 | –
|
||||
// 60 runtime | PUSH1 runtime (r) | r 0 | –
|
||||
// 80 | DUP1 | r r 0 | –
|
||||
// 60 creation | PUSH1 creation (c) | c r r 0 | –
|
||||
// 3d | RETURNDATASIZE | 0 c r r 0 | –
|
||||
// 39 | CODECOPY | r 0 | [0-2d]: runtime code
|
||||
// 81 | DUP2 | 0 c 0 | [0-2d]: runtime code
|
||||
// f3 | RETURN | 0 | [0-2d]: runtime code
|
||||
// creation size = 09
|
||||
// runtime size = 72
|
||||
// 60 runtime | PUSH1 runtime (r) | r | –
|
||||
// 3d | RETURNDATASIZE | 0 r | –
|
||||
// 81 | DUP2 | r 0 r | –
|
||||
// 60 creation | PUSH1 creation (c) | c r 0 r | –
|
||||
// 3d | RETURNDATASIZE | 0 c r 0 r | –
|
||||
// 39 | CODECOPY | 0 r | [0-runSize): runtime code
|
||||
// f3 | RETURN | | [0-runSize): runtime code
|
||||
|
||||
// -------------------------------------------------------------------------------------------------------------
|
||||
// RUNTIME (54 bytes of code + 61 bytes of extra data = 115 bytes)
|
||||
// RUNTIME (53 bytes of code + 61 bytes of extra data = 114 bytes)
|
||||
// -------------------------------------------------------------------------------------------------------------
|
||||
|
||||
// extra data size = 3d
|
||||
// 36 | CALLDATASIZE | cds | –
|
||||
// 3d | RETURNDATASIZE | 0 cds | –
|
||||
// 3d | RETURNDATASIZE | 0 0 cds | –
|
||||
// 37 | CALLDATACOPY | – | [0, cds] = calldata
|
||||
// 60 extra | PUSH1 extra | extra | [0, cds] = calldata
|
||||
// 60 0x36 | PUSH1 0x36 | 0x36 extra | [0, cds] = calldata // 0x36 (54) is runtime size - data
|
||||
// 36 | CALLDATASIZE | cds 0x36 extra | [0, cds] = calldata
|
||||
// 39 | CODECOPY | _ | [0, cds] = calldata
|
||||
// 3d | RETURNDATASIZE | 0 | [0, cds] = calldata
|
||||
// 3d | RETURNDATASIZE | 0 0 | [0, cds] = calldata
|
||||
// 3d | RETURNDATASIZE | 0 0 0 | [0, cds] = calldata
|
||||
// 36 | CALLDATASIZE | cds 0 0 0 | [0, cds] = calldata
|
||||
// 60 extra | PUSH1 extra | extra cds 0 0 0 | [0, cds] = calldata
|
||||
// 01 | ADD | cds+extra 0 0 0 | [0, cds] = calldata
|
||||
// 3d | RETURNDATASIZE | 0 cds 0 0 0 | [0, cds] = calldata
|
||||
// 73 addr | PUSH20 0x123… | addr 0 cds 0 0 0 | [0, cds] = calldata
|
||||
// 3d | RETURNDATASIZE | 0 | –
|
||||
// 3d | RETURNDATASIZE | 0 0 | –
|
||||
// 3d | RETURNDATASIZE | 0 0 0 | –
|
||||
// 3d | RETURNDATASIZE | 0 0 0 0 | –
|
||||
// 36 | CALLDATASIZE | cds 0 0 0 0 | –
|
||||
// 3d | RETURNDATASIZE | 0 cds 0 0 0 0 | –
|
||||
// 3d | RETURNDATASIZE | 0 0 cds 0 0 0 0 | –
|
||||
// 37 | CALLDATACOPY | 0 0 0 0 | [0, cds) = calldata
|
||||
// 60 extra | PUSH1 extra | extra 0 0 0 0 | [0, cds) = calldata
|
||||
// 60 0x35 | PUSH1 0x35 | 0x35 extra 0 0 0 0 | [0, cds) = calldata // 0x35 (53) is runtime size - data
|
||||
// 36 | CALLDATASIZE | cds 0x35 extra 0 0 0 0 | [0, cds) = calldata
|
||||
// 39 | CODECOPY | 0 0 0 0 | [0, cds) = calldata, [cds, cds+0x35) = extraData
|
||||
// 36 | CALLDATASIZE | cds 0 0 0 0 | [0, cds) = calldata, [cds, cds+0x35) = extraData
|
||||
// 60 extra | PUSH1 extra | extra cds 0 0 0 0 | [0, cds) = calldata, [cds, cds+0x35) = extraData
|
||||
// 01 | ADD | cds+extra 0 0 0 0 | [0, cds) = calldata, [cds, cds+0x35) = extraData
|
||||
// 3d | RETURNDATASIZE | 0 cds 0 0 0 0 | [0, cds) = calldata, [cds, cds+0x35) = extraData
|
||||
// 73 addr | PUSH20 0x123… | addr 0 cds 0 0 0 0 | [0, cds) = calldata, [cds, cds+0x35) = extraData
|
||||
mstore(
|
||||
ptr,
|
||||
hex"3d_60_73_80_60_0a_3d_39_81_f3_36_3d_3d_37_60_3d_60_36_36_39_3d_3d_3d_36_60_3d_01_3d_73_00_00_00"
|
||||
hex"60_72_3d_81_60_09_3d_39_f3_3d_3d_3d_3d_36_3d_3d_37_60_3d_60_35_36_39_36_60_3d_01_3d_73_00_00_00"
|
||||
)
|
||||
mstore(add(ptr, 0x1d), shl(0x60, implementation))
|
||||
|
||||
// 5a | GAS | gas addr 0 cds 0 0 0 | [0, cds] = calldata
|
||||
// f4 | DELEGATECALL | success 0 | [0, cds] = calldata
|
||||
// 3d | RETURNDATASIZE | rds success 0 | [0, cds] = calldata
|
||||
// 82 | DUP3 | 0 rds success 0 | [0, cds] = calldata
|
||||
// 80 | DUP1 | 0 0 rds success 0 | [0, cds] = calldata
|
||||
// 3e | RETURNDATACOPY | success 0 | [0, rds] = return data (there might be some irrelevant leftovers in memory [rds, cds] when rds < cds)
|
||||
// 90 | SWAP1 | 0 success | [0, rds] = return data
|
||||
// 3d | RETURNDATASIZE | rds 0 success | [0, rds] = return data
|
||||
// 91 | SWAP2 | success 0 rds | [0, rds] = return data
|
||||
// 60 0x36 | PUSH1 0x36 | 0x36 success 0 rds | [0, rds] = return data
|
||||
// 57 | JUMPI | 0 rds | [0, rds] = return data
|
||||
// fd | REVERT | – | [0, rds] = return data
|
||||
// 5b | JUMPDEST | 0 rds | [0, rds] = return data
|
||||
// f3 | RETURN | – | [0, rds] = return data
|
||||
// 5a | GAS | gas addr 0 cds 0 0 0 0 | [0, cds) = calldata, [cds, cds+0x35) = extraData
|
||||
// f4 | DELEGATECALL | success 0 0 | [0, cds) = calldata, [cds, cds+0x35) = extraData
|
||||
// 3d | RETURNDATASIZE | rds success 0 0 | [0, cds) = calldata, [cds, cds+0x35) = extraData
|
||||
// 3d | RETURNDATASIZE | rds rds success 0 0 | [0, cds) = calldata, [cds, cds+0x35) = extraData
|
||||
// 93 | SWAP4 | 0 rds success 0 rds | [0, cds) = calldata, [cds, cds+0x35) = extraData
|
||||
// 80 | DUP1 | 0 0 rds success 0 rds | [0, cds) = calldata, [cds, cds+0x35) = extraData
|
||||
// 3e | RETURNDATACOPY | success 0 rds | [0, rds) = return data (there might be some irrelevant leftovers in memory [rds, cds+0x37) when rds < cds+0x37)
|
||||
// 60 0x33 | PUSH1 0x33 | 0x33 sucess 0 rds | [0, rds) = return data
|
||||
// 57 | JUMPI | 0 rds | [0, rds) = return data
|
||||
// fd | REVERT | – | [0, rds) = return data
|
||||
// 5b | JUMPDEST | 0 rds | [0, rds) = return data
|
||||
// f3 | RETURN | – | [0, rds) = return data
|
||||
mstore(
|
||||
add(ptr, 0x31),
|
||||
0x5af43d82803e903d91603457fd5bf30000000000000000000000000000000000
|
||||
hex"5a_f4_3d_3d_93_80_3e_60_33_57_fd_5b_f3_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00"
|
||||
)
|
||||
|
||||
// -------------------------------------------------------------------------------------------------------------
|
||||
// EXTRA DATA (61 bytes)
|
||||
// -------------------------------------------------------------------------------------------------------------
|
||||
|
||||
mstore(add(ptr, 0x40), shl(0x60, factory))
|
||||
mstore(add(ptr, 0x54), shl(0x60, bondingCurve))
|
||||
mstore(add(ptr, 0x68), shl(0x60, nft))
|
||||
mstore8(add(ptr, 0x7c), poolType)
|
||||
mstore(add(ptr, 0x3e), shl(0x60, factory))
|
||||
mstore(add(ptr, 0x52), shl(0x60, bondingCurve))
|
||||
mstore(add(ptr, 0x66), shl(0x60, nft))
|
||||
mstore8(add(ptr, 0x7a), poolType)
|
||||
|
||||
instance := create(0, ptr, 0x7d)
|
||||
instance := create(0, ptr, 0x7b)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -122,111 +120,114 @@ library LSSVMPairCloner {
|
||||
let ptr := mload(0x40)
|
||||
|
||||
// -------------------------------------------------------------------------------------------------------------
|
||||
// CREATION (11 bytes)
|
||||
// CREATION (9 bytes)
|
||||
// -------------------------------------------------------------------------------------------------------------
|
||||
|
||||
// creation size = 0a
|
||||
// runtime size = 87
|
||||
// 3d | RETURNDATASIZE | 0 | –
|
||||
// 60 runtime | PUSH1 runtime (r) | r 0 | –
|
||||
// 80 | DUP1 | r r 0 | –
|
||||
// 60 creation | PUSH1 creation (c) | c r r 0 | –
|
||||
// 3d | RETURNDATASIZE | 0 c r r 0 | –
|
||||
// 39 | CODECOPY | r 0 | [0-2d]: runtime code
|
||||
// 81 | DUP2 | 0 c 0 | [0-2d]: runtime code
|
||||
// f3 | RETURN | 0 | [0-2d]: runtime code
|
||||
// creation size = 09
|
||||
// runtime size = 86
|
||||
// 60 runtime | PUSH1 runtime (r) | r | –
|
||||
// 3d | RETURNDATASIZE | 0 r | –
|
||||
// 81 | DUP2 | r 0 r | –
|
||||
// 60 creation | PUSH1 creation (c) | c r 0 r | –
|
||||
// 3d | RETURNDATASIZE | 0 c r 0 r | –
|
||||
// 39 | CODECOPY | 0 r | [0-runSize): runtime code
|
||||
// f3 | RETURN | | [0-runSize): runtime code
|
||||
|
||||
// -------------------------------------------------------------------------------------------------------------
|
||||
// RUNTIME (54 bytes of code + 81 bytes of extra data = 135 bytes)
|
||||
// RUNTIME (53 bytes of code + 81 bytes of extra data = 134 bytes)
|
||||
// -------------------------------------------------------------------------------------------------------------
|
||||
|
||||
// extra data size = 51
|
||||
// 36 | CALLDATASIZE | cds | –
|
||||
// 3d | RETURNDATASIZE | 0 cds | –
|
||||
// 3d | RETURNDATASIZE | 0 0 cds | –
|
||||
// 37 | CALLDATACOPY | – | [0, cds] = calldata
|
||||
// 60 extra | PUSH1 extra | extra | [0, cds] = calldata
|
||||
// 60 0x36 | PUSH1 0x36 | 0x36 extra | [0, cds] = calldata // 0x36 (54) is runtime size - data
|
||||
// 36 | CALLDATASIZE | cds 0x36 extra | [0, cds] = calldata
|
||||
// 39 | CODECOPY | _ | [0, cds] = calldata
|
||||
// 3d | RETURNDATASIZE | 0 | [0, cds] = calldata
|
||||
// 3d | RETURNDATASIZE | 0 0 | [0, cds] = calldata
|
||||
// 3d | RETURNDATASIZE | 0 0 0 | [0, cds] = calldata
|
||||
// 36 | CALLDATASIZE | cds 0 0 0 | [0, cds] = calldata
|
||||
// 60 extra | PUSH1 extra | extra cds 0 0 0 | [0, cds] = calldata
|
||||
// 01 | ADD | cds+extra 0 0 0 | [0, cds] = calldata
|
||||
// 3d | RETURNDATASIZE | 0 cds 0 0 0 | [0, cds] = calldata
|
||||
// 73 addr | PUSH20 0x123… | addr 0 cds 0 0 0 | [0, cds] = calldata
|
||||
// 3d | RETURNDATASIZE | 0 | –
|
||||
// 3d | RETURNDATASIZE | 0 0 | –
|
||||
// 3d | RETURNDATASIZE | 0 0 0 | –
|
||||
// 3d | RETURNDATASIZE | 0 0 0 0 | –
|
||||
// 36 | CALLDATASIZE | cds 0 0 0 0 | –
|
||||
// 3d | RETURNDATASIZE | 0 cds 0 0 0 0 | –
|
||||
// 3d | RETURNDATASIZE | 0 0 cds 0 0 0 0 | –
|
||||
// 37 | CALLDATACOPY | 0 0 0 0 | [0, cds) = calldata
|
||||
// 60 extra | PUSH1 extra | extra 0 0 0 0 | [0, cds) = calldata
|
||||
// 60 0x35 | PUSH1 0x35 | 0x35 extra 0 0 0 0 | [0, cds) = calldata // 0x35 (53) is runtime size - data
|
||||
// 36 | CALLDATASIZE | cds 0x35 extra 0 0 0 0 | [0, cds) = calldata
|
||||
// 39 | CODECOPY | 0 0 0 0 | [0, cds) = calldata, [cds, cds+0x35) = extraData
|
||||
// 36 | CALLDATASIZE | cds 0 0 0 0 | [0, cds) = calldata, [cds, cds+0x35) = extraData
|
||||
// 60 extra | PUSH1 extra | extra cds 0 0 0 0 | [0, cds) = calldata, [cds, cds+0x35) = extraData
|
||||
// 01 | ADD | cds+extra 0 0 0 0 | [0, cds) = calldata, [cds, cds+0x35) = extraData
|
||||
// 3d | RETURNDATASIZE | 0 cds 0 0 0 0 | [0, cds) = calldata, [cds, cds+0x35) = extraData
|
||||
// 73 addr | PUSH20 0x123… | addr 0 cds 0 0 0 0 | [0, cds) = calldata, [cds, cds+0x35) = extraData
|
||||
mstore(
|
||||
ptr,
|
||||
hex"3d_60_87_80_60_0a_3d_39_81_f3_36_3d_3d_37_60_51_60_36_36_39_3d_3d_3d_36_60_51_01_3d_73_00_00_00"
|
||||
hex"60_86_3d_81_60_09_3d_39_f3_3d_3d_3d_3d_36_3d_3d_37_60_51_60_35_36_39_36_60_51_01_3d_73_00_00_00"
|
||||
)
|
||||
mstore(add(ptr, 0x1d), shl(0x60, implementation))
|
||||
|
||||
// 5a | GAS | gas addr 0 cds 0 0 0 | [0, cds] = calldata
|
||||
// f4 | DELEGATECALL | success 0 | [0, cds] = calldata
|
||||
// 3d | RETURNDATASIZE | rds success 0 | [0, cds] = calldata
|
||||
// 82 | DUP3 | 0 rds success 0 | [0, cds] = calldata
|
||||
// 80 | DUP1 | 0 0 rds success 0 | [0, cds] = calldata
|
||||
// 3e | RETURNDATACOPY | success 0 | [0, rds] = return data (there might be some irrelevant leftovers in memory [rds, cds] when rds < cds)
|
||||
// 90 | SWAP1 | 0 success | [0, rds] = return data
|
||||
// 3d | RETURNDATASIZE | rds 0 success | [0, rds] = return data
|
||||
// 91 | SWAP2 | success 0 rds | [0, rds] = return data
|
||||
// 60 0x36 | PUSH1 0x36 | 0x36 success 0 rds | [0, rds] = return data
|
||||
// 57 | JUMPI | 0 rds | [0, rds] = return data
|
||||
// fd | REVERT | – | [0, rds] = return data
|
||||
// 5b | JUMPDEST | 0 rds | [0, rds] = return data
|
||||
// f3 | RETURN | – | [0, rds] = return data
|
||||
// 5a | GAS | gas addr 0 cds 0 0 0 0 | [0, cds) = calldata, [cds, cds+0x35) = extraData
|
||||
// f4 | DELEGATECALL | success 0 0 | [0, cds) = calldata, [cds, cds+0x35) = extraData
|
||||
// 3d | RETURNDATASIZE | rds success 0 0 | [0, cds) = calldata, [cds, cds+0x35) = extraData
|
||||
// 3d | RETURNDATASIZE | rds rds success 0 0 | [0, cds) = calldata, [cds, cds+0x35) = extraData
|
||||
// 93 | SWAP4 | 0 rds success 0 rds | [0, cds) = calldata, [cds, cds+0x35) = extraData
|
||||
// 80 | DUP1 | 0 0 rds success 0 rds | [0, cds) = calldata, [cds, cds+0x35) = extraData
|
||||
// 3e | RETURNDATACOPY | success 0 rds | [0, rds) = return data (there might be some irrelevant leftovers in memory [rds, cds+0x37) when rds < cds+0x37)
|
||||
// 60 0x33 | PUSH1 0x33 | 0x33 sucess 0 rds | [0, rds) = return data
|
||||
// 57 | JUMPI | 0 rds | [0, rds) = return data
|
||||
// fd | REVERT | – | [0, rds) = return data
|
||||
// 5b | JUMPDEST | 0 rds | [0, rds) = return data
|
||||
// f3 | RETURN | – | [0, rds) = return data
|
||||
mstore(
|
||||
add(ptr, 0x31),
|
||||
0x5af43d82803e903d91603457fd5bf30000000000000000000000000000000000
|
||||
hex"5a_f4_3d_3d_93_80_3e_60_33_57_fd_5b_f3_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00"
|
||||
)
|
||||
|
||||
// -------------------------------------------------------------------------------------------------------------
|
||||
// EXTRA DATA (61 bytes)
|
||||
// EXTRA DATA (81 bytes)
|
||||
// -------------------------------------------------------------------------------------------------------------
|
||||
|
||||
mstore(add(ptr, 0x40), shl(0x60, factory))
|
||||
mstore(add(ptr, 0x54), shl(0x60, bondingCurve))
|
||||
mstore(add(ptr, 0x68), shl(0x60, nft))
|
||||
mstore8(add(ptr, 0x7c), poolType)
|
||||
mstore(add(ptr, 0x7d), shl(0x60, token))
|
||||
mstore(add(ptr, 0x3e), shl(0x60, factory))
|
||||
mstore(add(ptr, 0x52), shl(0x60, bondingCurve))
|
||||
mstore(add(ptr, 0x66), shl(0x60, nft))
|
||||
mstore8(add(ptr, 0x7a), poolType)
|
||||
mstore(add(ptr, 0x7b), shl(0x60, token))
|
||||
|
||||
instance := create(0, ptr, 0x91)
|
||||
instance := create(0, ptr, 0x8f)
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @notice Checks if a contract is a clone of a LSSVMPairETH.
|
||||
* @dev Only checks the runtime bytecode, does not check the extra data.
|
||||
* @param factory the factory that deployed the clone
|
||||
* @param implementation the LSSVMPairETH implementation contract
|
||||
* @param query the contract to check
|
||||
* @return result True if the contract is a clone, false otherwise
|
||||
*/
|
||||
function isETHPairClone(address implementation, address query)
|
||||
internal
|
||||
view
|
||||
returns (bool result)
|
||||
{
|
||||
function isETHPairClone(
|
||||
address factory,
|
||||
address implementation,
|
||||
address query
|
||||
) internal view returns (bool result) {
|
||||
// solhint-disable-next-line no-inline-assembly
|
||||
assembly {
|
||||
let ptr := mload(0x40)
|
||||
mstore(
|
||||
ptr,
|
||||
hex"36_3d_3d_37_60_3d_60_36_36_39_3d_3d_3d_36_60_3d_01_3d_73_00_00_00_00_00_00_00_00_00_00_00_00_00"
|
||||
hex"3d_3d_3d_3d_36_3d_3d_37_60_3d_60_35_36_39_36_60_3d_01_3d_73_00_00_00_00_00_00_00_00_00_00_00_00"
|
||||
)
|
||||
mstore(add(ptr, 0x13), shl(0x60, implementation))
|
||||
mstore(add(ptr, 0x14), shl(0x60, implementation))
|
||||
mstore(
|
||||
add(ptr, 0x27),
|
||||
0x5af43d82803e903d91603457fd5bf30000000000000000000000000000000000
|
||||
add(ptr, 0x28),
|
||||
hex"5a_f4_3d_3d_93_80_3e_60_33_57_fd_5b_f3_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00"
|
||||
)
|
||||
mstore(add(ptr, 0x35), shl(0x60, factory))
|
||||
|
||||
// compare expected bytecode with that of the queried contract
|
||||
let other := add(ptr, 0x40)
|
||||
extcodecopy(query, other, 0, 0x36)
|
||||
let other := add(ptr, 0x49)
|
||||
extcodecopy(query, other, 0, 0x49)
|
||||
result := and(
|
||||
eq(mload(ptr), mload(other)),
|
||||
eq(mload(add(ptr, 0x16)), mload(add(other, 0x16)))
|
||||
and(
|
||||
eq(mload(add(ptr, 0x20)), mload(add(other, 0x20))),
|
||||
eq(mload(add(ptr, 0x29)), mload(add(other, 0x29)))
|
||||
)
|
||||
)
|
||||
}
|
||||
}
|
||||
@@ -238,30 +239,34 @@ library LSSVMPairCloner {
|
||||
* @param query the contract to check
|
||||
* @return result True if the contract is a clone, false otherwise
|
||||
*/
|
||||
function isERC20PairClone(address implementation, address query)
|
||||
internal
|
||||
view
|
||||
returns (bool result)
|
||||
{
|
||||
function isERC20PairClone(
|
||||
address factory,
|
||||
address implementation,
|
||||
address query
|
||||
) internal view returns (bool result) {
|
||||
// solhint-disable-next-line no-inline-assembly
|
||||
assembly {
|
||||
let ptr := mload(0x40)
|
||||
mstore(
|
||||
ptr,
|
||||
hex"36_3d_3d_37_60_51_60_36_36_39_3d_3d_3d_36_60_51_01_3d_73_00_00_00_00_00_00_00_00_00_00_00_00_00"
|
||||
hex"3d_3d_3d_3d_36_3d_3d_37_60_51_60_35_36_39_36_60_51_01_3d_73_00_00_00_00_00_00_00_00_00_00_00_00"
|
||||
)
|
||||
mstore(add(ptr, 0x13), shl(0x60, implementation))
|
||||
mstore(add(ptr, 0x14), shl(0x60, implementation))
|
||||
mstore(
|
||||
add(ptr, 0x27),
|
||||
0x5af43d82803e903d91603457fd5bf30000000000000000000000000000000000
|
||||
add(ptr, 0x28),
|
||||
hex"5a_f4_3d_3d_93_80_3e_60_33_57_fd_5b_f3_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00"
|
||||
)
|
||||
mstore(add(ptr, 0x35), shl(0x60, factory))
|
||||
|
||||
// compare expected bytecode with that of the queried contract
|
||||
let other := add(ptr, 0x40)
|
||||
extcodecopy(query, other, 0, 0x36)
|
||||
let other := add(ptr, 0x49)
|
||||
extcodecopy(query, other, 0, 0x49)
|
||||
result := and(
|
||||
eq(mload(ptr), mload(other)),
|
||||
eq(mload(add(ptr, 0x16)), mload(add(other, 0x16)))
|
||||
and(
|
||||
eq(mload(add(ptr, 0x20)), mload(add(other, 0x20))),
|
||||
eq(mload(add(ptr, 0x29)), mload(add(other, 0x29)))
|
||||
)
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user