Closed cdummett closed 5 months ago
VMS PR adding fuzzed AMM transactions into the fuzzing run hits a panic.
Market-sim dump including replay file: vega-sim-6nqo2sr4.zip
Note: panic encountered in local run, attempting to reproduce in CI.
panic: missing max price in levels goroutine 16782 [running]: go.uber.org/zap/zapcore.CheckWriteAction.OnWrite(0x0?, 0x1?, {0x1?, 0x0?, 0x0?}) /Users/caed/go/pkg/mod/go.uber.org/zap@v1.25.0/zapcore/entry.go:196 +0x78 go.uber.org/zap/zapcore.(*CheckedEntry).Write(0x140100db860, {0x14014cd3100, 0x1, 0x1}) /Users/caed/go/pkg/mod/go.uber.org/zap@v1.25.0/zapcore/entry.go:262 +0x2c0 go.uber.org/zap.(*Logger).Panic(0x14bd448243820000?, {0x103991b8f?, 0x0?}, {0x14014cd3100, 0x1, 0x1}) /Users/caed/go/pkg/mod/go.uber.org/zap@v1.25.0/logger.go:258 +0x54 code.vegaprotocol.io/vega/core/matching.(*IndicativePriceAndVolume).getLevelsWithinRange(0x140009772d0, 0x1400bf70978, 0x14017f6ebc0) /Users/caed/Projects/vega-market-sim/extern/vega/core/matching/indicative_price_and_volume.go:179 +0x1e8 code.vegaprotocol.io/vega/core/matching.(*IndicativePriceAndVolume).GetCumulativePriceLevels(0x140009772d0, 0x0?, 0x1400bf70a08?) /Users/caed/Projects/vega-market-sim/extern/vega/core/matching/indicative_price_and_volume.go:209 +0x15c code.vegaprotocol.io/vega/core/matching.(*OrderBook).buildCumulativePriceLevels(0x1400104dea0) /Users/caed/Projects/vega-market-sim/extern/vega/core/matching/orderbook.go:523 +0x140 code.vegaprotocol.io/vega/core/matching.(*OrderBook).GetIndicativePrice(0x1400104dea0) /Users/caed/Projects/vega-market-sim/extern/vega/core/matching/orderbook.go:442 +0x28 code.vegaprotocol.io/vega/core/matching.(*CachedOrderBook).GetIndicativePrice(0x14001077d70) /Users/caed/Projects/vega-market-sim/extern/vega/core/matching/cached_orderbook.go:214 +0x64 code.vegaprotocol.io/vega/core/liquidity/v2.(*Engine).doesLPMeetsCommitment(0x1400102f8c0, {0x1400b27bf00, 0x40}, 0x14017f6e180, 0x14017f6e6a0, {0x1400c30c280?, 0x2?}) /Users/caed/Projects/vega-market-sim/extern/vega/core/liquidity/v2/sla.go:160 +0x170 code.vegaprotocol.io/vega/core/liquidity/v2.(*Engine).EndBlock(0x1400102f8c0, 0x14017f6e6a0?, 0x14017f6e420?, {0x1400c30c280?, 0x17f6e1e0?}) /Users/caed/Projects/vega-market-sim/extern/vega/core/liquidity/v2/sla.go:65 +0xc8 code.vegaprotocol.io/vega/core/execution/common.(*MarketLiquidity).EndBlock(...) /Users/caed/Projects/vega-market-sim/extern/vega/core/execution/common/liquidity_provision.go:385 code.vegaprotocol.io/vega/core/execution/future.(*Market).BlockEnd(0x1400c320000, {0x104d48b18, 0x1400eebc4b0}) /Users/caed/Projects/vega-market-sim/extern/vega/core/execution/future/market.go:1168 +0x12f4 code.vegaprotocol.io/vega/core/execution.(*Engine).BlockEnd(0x1400097f200?, {0x104d48b18, 0x1400eebc4b0}) /Users/caed/Projects/vega-market-sim/extern/vega/core/execution/engine.go:1565 +0x4c code.vegaprotocol.io/vega/core/processor.(*App).OnEndBlock(0x14000a7dc00, 0x108da0a68?) /Users/caed/Projects/vega-market-sim/extern/vega/core/processor/abci.go:1011 +0x630 code.vegaprotocol.io/vega/core/blockchain/abci.(*App).FinalizeBlock(0x140006eafc0, {0x104af9660?, 0x1?}, 0x1400de47380) /Users/caed/Projects/vega-market-sim/extern/vega/core/blockchain/abci/abci.go:185 +0x5b8 code.vegaprotocol.io/vega/cmd/vega/commands/node.(*appW).FinalizeBlock(0x1400efba900?, {0x104d48ae0?, 0x1073f37a0?}, 0x14000034000?) /Users/caed/Projects/vega-market-sim/extern/vega/cmd/vega/commands/node/app_wrapper.go:91 +0x30 code.vegaprotocol.io/vega/core/blockchain/nullchain.(*NullBlockchain).processBlock(0x140006f6120) /Users/caed/Projects/vega-market-sim/extern/vega/core/blockchain/nullchain/nullchain.go:198 +0x3e8 code.vegaprotocol.io/vega/core/blockchain/nullchain.(*NullBlockchain).ForwardTime(0x140006f6120, 0x3b9aca00) /Users/caed/Projects/vega-market-sim/extern/vega/core/blockchain/nullchain/nullchain.go:275 +0x194 code.vegaprotocol.io/vega/core/blockchain/nullchain.(*NullBlockchain).handleForwardTime.func1() /Users/caed/Projects/vega-market-sim/extern/vega/core/blockchain/nullchain/server.go:132 +0x2c created by code.vegaprotocol.io/vega/core/blockchain/nullchain.(*NullBlockchain).handleForwardTime in goroutine 16780 /Users/caed/Projects/vega-market-sim/extern/vega/core/blockchain/nullchain/server.go:131 +0x1e0
panic
no panic
replay replay file
8f33438dc91338ea35e547074360a2c8dedd1832
vega-market-sim fuzz test
No response
{ "genesis_time": "2023-05-09T10:00:00.000000000Z", "chain_id": "CUSTOM", "initial_height": "0", "consensus_params": { "block": { "max_bytes": "22020096", "max_gas": "-1", "time_iota_ms": "1" }, "evidence": { "max_age_num_blocks": "100000", "max_age_duration": "172800000000000", "max_bytes": "1048576" }, "validator": { "pub_key_types": ["ed25519"] }, "version": {} }, "validators": [ { "address": "7DFD3744A773C166B36F170E4F5EF3E998703F4E", "pub_key": { "type": "tendermint/PubKeyEd25519", "value": "2lPO6I0p5uCBZzeoA2+ECJ2+57LtLVMjXpxH5za9TvE=" }, "power": "10", "name": "" } ], "app_hash": "", "app_state": { "assets": { "0000000000000000000000000000000000000000000000000000000000000000": { "name": "VOTE", "symbol": "VOTE", "decimals": 5, "quantum": "1", "min_lp_stake": "1", "source": { "builtin_asset": { "max_faucet_amount_mint": "100000000000000000" } } } }, "validators": { "6NemqXSfN4zfZvAQeIANflEFqQ98izX9C0KLI2dITSY=": { "id": "c2b0ab69fb1bd19862c04df401920ea62d3e0bce41a50148240f42017824d17a", "vega_pub_key": "dfcf0fa8d67cfa11b3a511e320f3c47807a5e0735cc06dd9c2bc00f7ccc67117", "vega_pub_key_index": 1, "ethereum_address": "0x9e5BEEC6E56B28cCbd02864840B0f1e0125e42Ce", "tm_pub_key": "6NemqXSfN4zfZvAQeIANflEFqQ98izX9C0KLI2dITSY=", "info_url": "", "country": "", "name": "", "avatar_url": "" } }, "network": { "replay_attack_threshold": 150 }, "network_parameters": { "blockchains.ethereumConfig": "{\"network_id\": \"3\", \"chain_id\": \"3\", \"collateral_bridge_contract\": { \"address\": \"0xa6F1E140daC13002Dfd9789D6dBA59117c717D7a\" }, \"confirmations\": 50, \"staking_bridge_contract\": { \"address\": \"0xfce2CC92203A266a9C8e67461ae5067c78f67235\", \"deployment_block_height\": 11001702}, \"multisig_control_contract\": {\"address\": \"0xCF6d41235911184fe6F35D47207813bFF3B91601\", \"deployment_block_height\": 12710009 } }", "blockchains.evmBridgeConfigs": "{\"configs\":[{\"network_id\": \"3\", \"chain_id\": \"3\", \"collateral_bridge_contract\": { \"address\": \"0xa6F1E140daC13002Dfd9789D6dBA59117c717D7a\" }, \"confirmations\": 50, \"multisig_control_contract\": {\"address\": \"0xCF6d41235911184fe6F35D47207813bFF3B91601\", \"deployment_block_height\": 12710009 } }]}", "blockchains.ethereumRpcAndEvmCompatDataSourcesConfig": "{\"configs\": []}", "governance.proposal.asset.maxClose": "8760h0m0s", "governance.proposal.asset.maxEnact": "8760h0m0s", "governance.proposal.asset.minClose": "1s", "governance.proposal.asset.minEnact": "1s", "governance.proposal.asset.minProposerBalance": "1", "governance.proposal.asset.minVoterBalance": "1", "governance.proposal.asset.requiredMajority": "0.66", "governance.proposal.asset.requiredParticipation": "0.00001", "governance.proposal.freeform.maxClose": "8760h0m0s", "governance.proposal.freeform.minClose": "1s", "governance.proposal.freeform.minProposerBalance": "1", "governance.proposal.freeform.minVoterBalance": "1", "governance.proposal.freeform.requiredMajority": "0.66", "governance.proposal.freeform.requiredParticipation": "0.00001", "governance.proposal.market.maxClose": "8760h0m0s", "governance.proposal.market.maxEnact": "8760h0m0s", "governance.proposal.market.minClose": "1s", "governance.proposal.market.minEnact": "2s", "governance.proposal.market.minProposerBalance": "1", "governance.proposal.market.minVoterBalance": "1", "governance.proposal.market.requiredMajority": "0.66", "governance.proposal.market.requiredParticipation": "0.00001", "governance.proposal.updateAsset.maxClose": "720h", "governance.proposal.updateAsset.maxEnact": "720h", "governance.proposal.updateAsset.minClose": "1s", "governance.proposal.updateAsset.minEnact": "1s", "governance.proposal.updateAsset.minProposerBalance": "1", "governance.proposal.updateAsset.minVoterBalance": "1", "governance.proposal.updateAsset.requiredMajority": "0.66", "governance.proposal.updateAsset.requiredParticipation": "0.09", "governance.proposal.updateMarket.maxClose": "8760h0m0s", "governance.proposal.updateMarket.maxEnact": "8760h0m0s", "governance.proposal.updateMarket.minClose": "1s", "governance.proposal.updateMarket.minEnact": "1s", "governance.proposal.updateMarket.minProposerBalance": "1", "governance.proposal.updateMarket.minProposerEquityLikeShare": "0", "governance.proposal.updateMarket.minVoterBalance": "1", "governance.proposal.updateMarket.requiredMajority": "0.66", "governance.proposal.updateMarket.requiredMajorityLP": "0.66", "governance.proposal.updateMarket.requiredParticipation": "0.00001", "governance.proposal.updateMarket.requiredParticipationLP": "0", "governance.proposal.updateNetParam.maxClose": "8760h0m0s", "governance.proposal.updateNetParam.maxEnact": "8760h0m0s", "governance.proposal.updateNetParam.minClose": "1s", "governance.proposal.updateNetParam.minEnact": "1s", "governance.proposal.updateNetParam.minProposerBalance": "1", "governance.proposal.updateNetParam.minVoterBalance": "1", "governance.proposal.updateNetParam.requiredMajority": "0.5", "governance.proposal.updateNetParam.requiredParticipation": "0.00001", "governance.proposal.referralProgram.maxClose": "8760h0m0s", "governance.proposal.referralProgram.maxEnact": "8760h0m0s", "governance.proposal.referralProgram.minClose": "1s", "governance.proposal.referralProgram.minEnact": "1s", "governance.proposal.referralProgram.minProposerBalance": "1", "governance.proposal.referralProgram.minVoterBalance": "1", "governance.proposal.referralProgram.requiredMajority": "0.5", "governance.proposal.referralProgram.requiredParticipation": "0.00001", "governance.proposal.VolumeDiscountProgram.maxClose": "8760h0m0s", "governance.proposal.VolumeDiscountProgram.maxEnact": "8760h0m0s", "governance.proposal.VolumeDiscountProgram.minClose": "1s", "governance.proposal.VolumeDiscountProgram.minEnact": "1s", "governance.proposal.VolumeDiscountProgram.minProposerBalance": "1", "governance.proposal.VolumeDiscountProgram.minVoterBalance": "1", "governance.proposal.VolumeDiscountProgram.requiredMajority": "0.5", "governance.proposal.VolumeDiscountProgram.requiredParticipation": "0.00001", "governance.proposal.transfer.maxClose": "8760h0m0s", "governance.proposal.transfer.maxEnact": "8760h0m0s", "governance.proposal.transfer.minClose": "1s", "governance.proposal.transfer.minEnact": "1s", "governance.proposal.transfer.minProposerBalance": "1", "governance.proposal.transfer.minVoterBalance": "1", "governance.proposal.transfer.requiredMajority": "0.5", "governance.proposal.transfer.requiredParticipation": "0.00001", "limits.markets.maxPeggedOrders": "1500", "limits.markets.proposePerpetualEnabled": "1", "market.auction.maximumDuration": "168h", "market.auction.minimumDuration": "1s", "market.fee.factors.infrastructureFee": "0.0005", "market.fee.factors.makerFee": "0.0002", "market.liquidity.bondPenaltyParameter": "0.1", "market.liquidity.earlyExitPenalty": "0.1", "market.liquidity.maximumLiquidityFeeFactorLevel": "0.03", "market.liquidity.minimum.probabilityOfTrading.lpOrders": "1e-6", "market.liquidity.probabilityOfTrading.tau.scaling": "10.0", "market.liquidity.providersFeeCalculationTimeStep": "1s", "market.liquidity.sla.nonPerformanceBondPenaltyMax": "0.5", "market.liquidity.sla.nonPerformanceBondPenaltySlope": "2", "market.liquidity.stakeToCcyVolume": "1.0", "market.liquidity.targetstake.triggering.ratio": "0.25", "market.liquidityProvision.minLpStakeQuantumMultiple": "5000", "market.liquidityProvision.shapes.maxSize": "100", "market.margin.scalingFactors": "{\"search_level\": 1.1, \"initial_margin\": 1.5, \"collateral_release\": 1.7}", "market.monitor.price.defaultParameters": "{\"triggers\": [{\"auction_extension\": 300, \"horizon\": 43200, \"probability\": \"0.9999999\"}] }", "market.stake.target.scalingFactor": "0.0001", "market.stake.target.timeWindow": "1h", "market.value.windowLength": "2h0m0s", "network.checkpoint.timeElapsedBetweenCheckpoints": "5m", "network.floatingPointUpdates.delay": "5m", "network.markPriceUpdateMaximumFrequency": "5s", "network.transaction.defaultgas": "1", "network.transactions.maxgasperblock": "3000000", "network.transactions.minBlockCapacity": "32", "network.validators.ersatz.multipleOfTendermintValidators": "0", "network.validators.ersatz.rewardFactor": "0.85", "network.validators.incumbentBonus": "0.05", "network.validators.minimumEthereumEventsForNewValidator": "3", "network.validators.multisig.numberOfSigners": "13", "network.validators.tendermint.number": "13", "reward.asset": "0000000000000000000000000000000000000000000000000000000000000000", "reward.staking.delegation.competitionLevel": "1.3", "reward.staking.delegation.delegatorShare": "0.8", "reward.staking.delegation.maxPayoutPerEpoch": "9890000000000000000000", "reward.staking.delegation.maxPayoutPerParticipant": "700000000000000000000", "reward.staking.delegation.minimumValidatorStake": "3000000000000000000000", "reward.staking.delegation.minValidators": "5", "reward.staking.delegation.optimalStakeMultiplier": "3.0", "reward.staking.delegation.payoutDelay": "0h", "reward.staking.delegation.payoutFraction": "1.0", "rewards.marketCreationQuantumMultiple": "1", "snapshot.interval.length": "300", "spam.pow.difficulty": "15", "spam.pow.hashFunction": "sha3_24_rounds", "spam.pow.increaseDifficulty": "0", "spam.pow.numberOfPastBlocks": "100", "spam.pow.numberOfTxPerBlock": "1000", "spam.protection.delegation.min.tokens": "100000000000000000", "spam.protection.max.batchSize": "30", "spam.protection.max.delegations": "360", "spam.protection.max.proposals": "300", "spam.protection.max.votes": "300", "spam.protection.maxUserTransfersPerEpoch": "10000", "spam.protection.minimumWithdrawalQuantumMultiple": "10", "spam.protection.minMultisigUpdates": "100000000000000000000", "spam.protection.proposal.min.tokens": "2000000000000000000000", "spam.protection.voting.min.tokens": "1000000000000000000", "spam.protection.applyReferral.min.funds": "0", "transfer.fee.factor": "0.001", "transfer.minTransferQuantumMultiple": "0", "transfer.fee.maxQuantumAmount": "100", "transfer.feeDiscountMinimumTrackedAmount": "0.001", "transfer.feeDiscountDecayFraction": "0.5", "validator.performance.scaling.factor": "0", "validators.delegation.minAmount": "1", "validators.epoch.length": "2m", "validators.vote.required": "0.67", "referralProgram.maxReferralTiers": "10", "referralProgram.maxReferralRewardFactor": "1", "referralProgram.maxReferralDiscountFactor": "1", "referralProgram.maxPartyNotionalVolumeByQuantumPerEpoch": "10000", "referralProgram.minStakedVegaTokens": "0", "referralProgram.maxReferralRewardProportion": "1" }, "network_limits": { "propose_market_enabled": true, "propose_asset_enabled": true, "bootstrap_block_count": 0 }, "checkpoint": { "load_hash": "" } } }
Auctions uncrossings are still not implemented and this is failing in that code path: https://github.com/vegaprotocol/vega/issues/10539
it'll make for a good test case for me though to confirm it all works with!
Problem encountered
VMS PR adding fuzzed AMM transactions into the fuzzing run hits a panic.
Market-sim dump including replay file: vega-sim-6nqo2sr4.zip
Note: panic encountered in local run, attempting to reproduce in CI.
Observed behaviour
panic
Expected behaviour
no panic
Steps to reproduce
Software version
8f33438dc91338ea35e547074360a2c8dedd1832
Failing test
vega-market-sim fuzz test
Jenkins run
No response
Configuration used
Relevant log output