archon.audit.report
100.0
1,000,000 free RPC requestsJust a wallet, via x402.
Start buildingFor agent 97 on Mantle Mainnet · 2026-06-15
https://archonaudit.xyz/app/proofs
{
"chain": {
"name": "Mantle Mainnet",
"chainId": 5000
},
"report": {
"id": "8f048f46-7c48-4b24-93be-443bf7c9b9a2",
"scope": {
"pragma": "^0.8.24",
"network": "mantle-mainnet",
"lineCount": 63,
"protocols": [
"mETH",
"cmETH",
"USDY",
"Aave V3",
"Merchant Moe",
"Agni"
],
"sourceKind": "paste",
"aiReasoning": {
"hits": 0,
"total": 17,
"misses": 17,
"batches": 4,
"reasons": {},
"skipped": 0,
"provider": "openai",
"timeoutMs": 75000,
"fallbackCount": 0
},
"reducedMode": null,
"solcVersion": "0.8.24",
"gasOptimizer": {
"pricing": {
"mode": "calibrated-receipts",
"pricedAt": "2026-06-15T07:27:41.001Z",
"l2GasPriceWei": "50000100000",
"deployDataFeeMnt": "0.006395246020247076",
"deployDataFeeWei": "6395246020247076",
"calldataZeroBytes": 24,
"calibrationErrorPct": 0,
"calldataGasEstimate": 28656,
"calldataNonZeroBytes": 1785,
"creationBytecodeBytes": 1809
},
"daPricing": {
"model": {
"mode": "calibrated-receipts",
"samples": [
{
"txHash": "0x82d99588e5f1bff33d618743025d598445493032637de25844a67aa8e88088ef",
"l1FeeWei": "699231354481640",
"l1GasUsed": "2530",
"zeroBytes": 135,
"l1GasPrice": "538782662",
"totalBytes": 228,
"blobGasUsed": "63200",
"blockNumber": "96205628",
"nonZeroBytes": 93,
"l1BlobBaseFee": "330004069609410902",
"l1BaseFeeScalar": "169019",
"operatorFeeScalar": "100000000",
"calldataGasEstimate": 2028,
"l1BlobBaseFeeScalar": "0",
"operatorFeeConstant": "0",
"daFootprintGasScalar": "400"
},
{
"txHash": "0xb9ce87de86b212b91eb64012bbdab91014373da1f6d960470b340e1991a1a7c5",
"l1FeeWei": "6874261528561290",
"l1GasUsed": "22258",
"zeroBytes": 28,
"l1GasPrice": "603039864",
"totalBytes": 1945,
"blobGasUsed": "556400",
"blockNumber": "96205472",
"nonZeroBytes": 1917,
"l1BlobBaseFee": "321479049246759320",
"l1BaseFeeScalar": "169019",
"operatorFeeScalar": "100000000",
"calldataGasEstimate": 30784,
"l1BlobBaseFeeScalar": "0",
"operatorFeeConstant": "0",
"daFootprintGasScalar": "400"
}
],
"validation": [
{
"txHash": "0x82d99588e5f1bff33d618743025d598445493032637de25844a67aa8e88088ef",
"errorPct": 0,
"actualL1FeeWei": "699231354481640",
"predictedL1FeeWei": "699231354481572"
},
{
"txHash": "0xb9ce87de86b212b91eb64012bbdab91014373da1f6d960470b340e1991a1a7c5",
"errorPct": 0,
"actualL1FeeWei": "6874261528561290",
"predictedL1FeeWei": "6874261528560500"
}
],
"sampleCount": 2,
"zeroByteFeeWei": "2736708878864",
"nonZeroByteFeeWei": "3545974793924",
"maxValidationErrorPct": 0,
"meanValidationErrorPct": 0
},
"source": "receipt-calibrated",
"groundTruthField": "l1Fee"
},
"sourceHash": "0xd7d6b27a06d59cc30ccd87bc372addb959896ab00f9ff8263077e2eab57bfaab",
"measurement": {
"forge": {
"ok": false,
"error": "Error (7576): Undeclared identifier.",
"command": "forge test --gas-report",
"attempted": true,
"gasReport": null
},
"source": "deterministic-estimate",
"status": "degraded",
"patches": [
{
"note": "Review-only patch is not auto-applied for measurement.",
"after": "Use the smallest ABI-safe integer width only when the domain is bounded and documented.",
"before": "function withdraw(uint256 amount) external {",
"ruleId": "calldata-smaller-types",
"safety": "review",
"status": "skipped",
"l2GasDelta": null,
"l1DaDeltaWei": null
},
{
"note": "Foundry measurement unavailable; deterministic rule estimate retained and clearly labeled.",
"after": "error INSUFFICIENTBALANCE(); … if (!(condition)) revert INSUFFICIENTBALANCE();",
"before": "require(balances[msg.sender] >= amount, \"INSUFFICIENT_BALANCE\");",
"ruleId": "custom-errors",
"safety": "safe",
"status": "estimated",
"l2GasDelta": 120,
"l1DaDeltaWei": null
},
{
"note": "Foundry measurement unavailable; deterministic rule estimate retained and clearly labeled.",
"after": "error INSUFFICIENTBALANCE(); … if (!(condition)) revert INSUFFICIENTBALANCE();",
"before": "require(balances[msg.sender] >= amountIn, \"INSUFFICIENT_BALANCE\");",
"ruleId": "custom-errors",
"safety": "safe",
"status": "estimated",
"l2GasDelta": 120,
"l1DaDeltaWei": null
},
{
"note": "Review-only patch is not auto-applied for measurement.",
"after": "uint256 cached = balances[msg.sender]; // reuse cached value",
"before": "balances[msg.sender] read 7 times",
"ruleId": "cache-repeated-sload",
"safety": "review",
"status": "skipped",
"l2GasDelta": 600,
"l1DaDeltaWei": null
},
{
"note": "Review-only patch is not auto-applied for measurement.",
"after": "for (uint256 i = 0; i < depositors.length; unchecked { ++i; }) {",
"before": "for (uint256 i = 0; i < depositors.length; i++) {",
"ruleId": "unchecked-loop-increment",
"safety": "review",
"status": "skipped",
"l2GasDelta": 30,
"l1DaDeltaWei": null
},
{
"note": "Review-only patch is not auto-applied for measurement.",
"after": "uint256 len = array.length; for (...; i < len; ) { ... }",
"before": "for (uint256 i = 0; i < depositors.length; i++) {",
"ruleId": "loop-hygiene",
"safety": "review",
"status": "skipped",
"l2GasDelta": 100,
"l1DaDeltaWei": null
},
{
"note": "Foundry measurement unavailable; deterministic rule estimate retained and clearly labeled.",
"after": "require(msg.value != 0, \"NO_VALUE\");",
"before": "require(msg.value > 0, \"NO_VALUE\");",
"ruleId": "nonzero-comparison",
"safety": "safe",
"status": "estimated",
"l2GasDelta": 3,
"l1DaDeltaWei": null
},
{
"note": "Foundry measurement unavailable; deterministic rule estimate retained and clearly labeled.",
"after": "require(amountIn != 0, \"BAD_AMOUNT\");",
"before": "require(amountIn > 0, \"BAD_AMOUNT\");",
"ruleId": "nonzero-comparison",
"safety": "safe",
"status": "estimated",
"l2GasDelta": 3,
"l1DaDeltaWei": null
},
{
"note": "Foundry measurement unavailable; deterministic rule estimate retained and clearly labeled.",
"after": "for (uint256 i; i < depositors.length; i++) {",
"before": "for (uint256 i = 0; i < depositors.length; i++) {",
"ruleId": "remove-zero-init",
"safety": "safe",
"status": "estimated",
"l2GasDelta": 3,
"l1DaDeltaWei": null
}
],
"version": "archon.gasMeasurement.v1",
"measuredAt": "2026-06-15T07:27:41.549Z",
"rulesetHash": "72a68b7ce6f5e5608c921f739be80a1ee353f022dafe9e4452ede5edf06fcca2",
"contractHash": "d7d6b27a06d59cc30ccd87bc372addb959896ab00f9ff8263077e2eab57bfaab"
},
"opportunities": [
{
"id": "calldata-smaller-types",
"file": "VaultV2_Demo_Vault.sol",
"after": "Use the smallest ABI-safe integer width only when the domain is bounded and documented.",
"patch": {
"newText": " function withdraw(uint256 amount) external { // REVIEW: bounded calldata params may be packable/smaller in structs or encoded batches",
"oldText": " function withdraw(uint256 amount) external {"
},
"title": "Review calldata parameter width",
"where": "VaultV2_Demo_Vault.sol:27",
"before": "function withdraw(uint256 amount) external {",
"safety": "review",
"newText": " function withdraw(uint256 amount) external { // REVIEW: bounded calldata params may be packable/smaller in structs or encoded batches",
"oldText": " function withdraw(uint256 amount) external {",
"category": "calldata",
"severity": "low",
"lineStart": 27,
"rationale": "For individual ABI params uint256 still occupies a full word, but bounded types help packed structs/batches and prevent redundant calldata.",
"confidence": 0.55,
"estL1Delta": 16,
"estL2Delta": null,
"annualizedBasis": "Receipt-calibrated DA estimate for calldata/data bytes; exact deltas require V2.1.2 harness measurement.",
"estimatedGasSaved": null,
"estimatedDataBytesSaved": 16
},
{
"id": "custom-errors",
"file": "VaultV2_Demo_Vault.sol",
"after": "error INSUFFICIENTBALANCE(); … if (!(condition)) revert INSUFFICIENTBALANCE();",
"patch": {
"newText": " if (!(balances[msg.sender] >= amount)) revert INSUFFICIENTBALANCE();",
"oldText": " require(balances[msg.sender] >= amount, \"INSUFFICIENT_BALANCE\");"
},
"title": "Replace long revert string with custom error",
"where": "VaultV2_Demo_Vault.sol:28",
"before": "require(balances[msg.sender] >= amount, \"INSUFFICIENT_BALANCE\");",
"safety": "safe",
"newText": " if (!(balances[msg.sender] >= amount)) revert INSUFFICIENTBALANCE();",
"oldText": " require(balances[msg.sender] >= amount, \"INSUFFICIENT_BALANCE\");",
"category": "deployment",
"severity": "info",
"lineStart": 28,
"rationale": "Custom errors reduce deployment bytecode and revert-path gas while preserving typed failure semantics.",
"confidence": 0.9,
"estL1Delta": 20,
"estL2Delta": 120,
"annualizedBasis": "Static deterministic estimate. Exact runtime deltas require queued Foundry snapshots with representative inputs.",
"estimatedGasSaved": 120,
"estimatedDataBytesSaved": 20
},
{
"id": "custom-errors",
"file": "VaultV2_Demo_Vault.sol",
"after": "error INSUFFICIENTBALANCE(); … if (!(condition)) revert INSUFFICIENTBALANCE();",
"patch": {
"newText": " if (!(balances[msg.sender] >= amountIn)) revert INSUFFICIENTBALANCE();",
"oldText": " require(balances[msg.sender] >= amountIn, \"INSUFFICIENT_BALANCE\");"
},
"title": "Replace long revert string with custom error",
"where": "VaultV2_Demo_Vault.sol:41",
"before": "require(balances[msg.sender] >= amountIn, \"INSUFFICIENT_BALANCE\");",
"safety": "safe",
"newText": " if (!(balances[msg.sender] >= amountIn)) revert INSUFFICIENTBALANCE();",
"oldText": " require(balances[msg.sender] >= amountIn, \"INSUFFICIENT_BALANCE\");",
"category": "deployment",
"severity": "info",
"lineStart": 41,
"rationale": "Custom errors reduce deployment bytecode and revert-path gas while preserving typed failure semantics.",
"confidence": 0.9,
"estL1Delta": 20,
"estL2Delta": 120,
"annualizedBasis": "Static deterministic estimate. Exact runtime deltas require queued Foundry snapshots with representative inputs.",
"estimatedGasSaved": 120,
"estimatedDataBytesSaved": 20
},
{
"id": "cache-repeated-sload",
"file": "VaultV2_Demo_Vault.sol",
"after": "uint256 cached = balances[msg.sender]; // reuse cached value",
"patch": {
"newText": "balances[msg.sender]",
"oldText": "balances[msg.sender]"
},
"title": "Cache repeated storage read",
"where": "VaultV2_Demo_Vault.sol:18",
"before": "balances[msg.sender] read 7 times",
"safety": "review",
"newText": "balances[msg.sender]",
"oldText": "balances[msg.sender]",
"category": "storage",
"severity": "info",
"lineStart": 18,
"rationale": "Repeated SLOADs should be cached in stack/memory when state cannot change between reads.",
"confidence": 0.7,
"estL1Delta": null,
"estL2Delta": 600,
"annualizedBasis": "Static deterministic estimate. Exact runtime deltas require queued Foundry snapshots with representative inputs.",
"estimatedGasSaved": 600,
"estimatedDataBytesSaved": null
},
{
"id": "unchecked-loop-increment",
"file": "VaultV2_Demo_Vault.sol",
"after": "for (uint256 i = 0; i < depositors.length; unchecked { ++i; }) {",
"patch": {
"newText": " for (uint256 i = 0; i < depositors.length; ++i /* wrap increment in unchecked block after refactor */) {",
"oldText": " for (uint256 i = 0; i < depositors.length; i++) {"
},
"title": "Use unchecked loop increment where bounded",
"where": "VaultV2_Demo_Vault.sol:55",
"before": "for (uint256 i = 0; i < depositors.length; i++) {",
"safety": "review",
"newText": " for (uint256 i = 0; i < depositors.length; ++i /* wrap increment in unchecked block after refactor */) {",
"oldText": " for (uint256 i = 0; i < depositors.length; i++) {",
"category": "computation",
"severity": "info",
"lineStart": 55,
"rationale": "A loop counter bounded by array length cannot overflow in practical execution; unchecked removes overflow checks after manual review.",
"confidence": 0.58,
"estL1Delta": null,
"estL2Delta": 30,
"annualizedBasis": "Static deterministic estimate. Exact runtime deltas require queued Foundry snapshots with representative inputs.",
"estimatedGasSaved": 30,
"estimatedDataBytesSaved": null
},
{
"id": "loop-hygiene",
"file": "VaultV2_Demo_Vault.sol",
"after": "uint256 len = array.length; for (...; i < len; ) { ... }",
"patch": {
"newText": " for (uint256 i = 0; i < depositors.length; i++) { // REVIEW: cache .length before loop and prefer ++i",
"oldText": " for (uint256 i = 0; i < depositors.length; i++) {"
},
"title": "Cache array length before loop",
"where": "VaultV2_Demo_Vault.sol:55",
"before": "for (uint256 i = 0; i < depositors.length; i++) {",
"safety": "review",
"newText": " for (uint256 i = 0; i < depositors.length; i++) { // REVIEW: cache .length before loop and prefer ++i",
"oldText": " for (uint256 i = 0; i < depositors.length; i++) {",
"category": "storage",
"severity": "info",
"lineStart": 55,
"rationale": "Caching storage array length avoids repeated SLOADs; using ++i/unchecked can reduce loop overhead.",
"confidence": 0.82,
"estL1Delta": null,
"estL2Delta": 100,
"annualizedBasis": "Static deterministic estimate. Exact runtime deltas require queued Foundry snapshots with representative inputs.",
"estimatedGasSaved": 100,
"estimatedDataBytesSaved": null
},
{
"id": "nonzero-comparison",
"file": "VaultV2_Demo_Vault.sol",
"after": "require(msg.value != 0, \"NO_VALUE\");",
"patch": {
"newText": " require(msg.value != 0, \"NO_VALUE\");",
"oldText": " require(msg.value > 0, \"NO_VALUE\");"
},
"title": "Use != 0 for unsigned non-zero checks",
"where": "VaultV2_Demo_Vault.sol:16",
"before": "require(msg.value > 0, \"NO_VALUE\");",
"safety": "safe",
"newText": " require(msg.value != 0, \"NO_VALUE\");",
"oldText": " require(msg.value > 0, \"NO_VALUE\");",
"category": "computation",
"severity": "info",
"lineStart": 16,
"rationale": "For unsigned integers, != 0 is equivalent for non-zero checks and can compile slightly cheaper.",
"confidence": 0.7,
"estL1Delta": null,
"estL2Delta": 3,
"annualizedBasis": "Static deterministic estimate. Exact runtime deltas require queued Foundry snapshots with representative inputs.",
"estimatedGasSaved": 3,
"estimatedDataBytesSaved": null
},
{
"id": "nonzero-comparison",
"file": "VaultV2_Demo_Vault.sol",
"after": "require(amountIn != 0, \"BAD_AMOUNT\");",
"patch": {
"newText": " require(amountIn != 0, \"BAD_AMOUNT\");",
"oldText": " require(amountIn > 0, \"BAD_AMOUNT\");"
},
"title": "Use != 0 for unsigned non-zero checks",
"where": "VaultV2_Demo_Vault.sol:40",
"before": "require(amountIn > 0, \"BAD_AMOUNT\");",
"safety": "safe",
"newText": " require(amountIn != 0, \"BAD_AMOUNT\");",
"oldText": " require(amountIn > 0, \"BAD_AMOUNT\");",
"category": "computation",
"severity": "info",
"lineStart": 40,
"rationale": "For unsigned integers, != 0 is equivalent for non-zero checks and can compile slightly cheaper.",
"confidence": 0.7,
"estL1Delta": null,
"estL2Delta": 3,
"annualizedBasis": "Static deterministic estimate. Exact runtime deltas require queued Foundry snapshots with representative inputs.",
"estimatedGasSaved": 3,
"estimatedDataBytesSaved": null
},
{
"id": "remove-zero-init",
"file": "VaultV2_Demo_Vault.sol",
"after": "for (uint256 i; i < depositors.length; i++) {",
"patch": {
"newText": " for (uint256 i; i < depositors.length; i++) {",
"oldText": " for (uint256 i = 0; i < depositors.length; i++) {"
},
"title": "Remove redundant zero initialization",
"where": "VaultV2_Demo_Vault.sol:55",
"before": "for (uint256 i = 0; i < depositors.length; i++) {",
"safety": "safe",
"newText": " for (uint256 i; i < depositors.length; i++) {",
"oldText": " for (uint256 i = 0; i < depositors.length; i++) {",
"category": "deployment",
"severity": "info",
"lineStart": 55,
"rationale": "Solidity initializes variables to zero by default; explicit zero init adds bytecode/instructions.",
"confidence": 0.86,
"estL1Delta": 4,
"estL2Delta": 3,
"annualizedBasis": "Static deterministic estimate. Exact runtime deltas require queued Foundry snapshots with representative inputs.",
"estimatedGasSaved": 3,
"estimatedDataBytesSaved": 4
}
]
}
},
"scanId": "31647b82-d8c5-492a-88d8-1abefcceb807",
"createdAt": "2026-06-15T07:28:44.599Z",
"riskScore": 100,
"contractName": "VaultV2_Demo_Vault",
"severityCounts": {
"low": 3,
"high": 2,
"info": 10,
"medium": 1,
"critical": 1
},
"executiveSummary": "Archon completed a read-only Mantle Mainnet audit of VaultV2_Demo_Vault and found 17 deterministic findings. The highest-priority issue is Reentrancy Eth, with risk score 100/100 based on severity-weighted findings. The withdraw function is vulnerable to reentrancy attacks due to the external call occurring before the state change. Review the recommended fixes and run regression tests before deployment."
},
"schema": "archon.proof.metadata.v1",
"erc8004": {
"verifiedConfig": true,
"agentIdentityRef": "eip155:5000:0x8004A169FB4a3325136EB29fA0ceB6D2e539a432:97",
"identityRegistry": "0x8004A169FB4a3325136EB29fA0ceB6D2e539a432",
"reputationRegistry": "0x8004BAa17C55a88189AE136b182e5fdA19dE9b63",
"validationRegistry": null
},
"product": "Archon",
"findings": [
{
"id": "af815d74-d613-4db5-9edd-1c5784ef6864",
"title": "Reentrancy Eth",
"category": "reentrancy-eth",
"location": {
"file": "VaultV2_Demo_Vault.sol",
"lineEnd": 35,
"lineStart": 27
},
"severity": "high"
},
{
"id": "e1d1efe3-2b04-47d8-a943-e2a2ee85da87",
"title": "Reentrancy Events",
"category": "reentrancy-events",
"location": {
"file": "VaultV2_Demo_Vault.sol",
"lineEnd": 35,
"lineStart": 27
},
"severity": "low"
},
{
"id": "9a2e8960-96e7-4e96-8334-c04ba0bb7c6f",
"title": "Low Level Calls",
"category": "low-level-calls",
"location": {
"file": "VaultV2_Demo_Vault.sol",
"lineEnd": 35,
"lineStart": 27
},
"severity": "info"
},
{
"id": "51efddf7-2f3d-4be1-adaa-78d51c295122",
"title": "Redundant Statements",
"category": "redundant-statements",
"location": {
"file": "VaultV2_Demo_Vault.sol",
"lineEnd": 48,
"lineStart": 48
},
"severity": "info"
},
{
"id": "e751b57f-6d20-486e-86c4-d1beb3352c9c",
"title": "Cache Array Length",
"category": "cache-array-length",
"location": {
"file": "VaultV2_Demo_Vault.sol",
"lineEnd": 55,
"lineStart": 55
},
"severity": "low"
},
{
"id": "5efa2795-e82c-4b38-91bc-114b92c18e2a",
"title": "External value transfer before balance update",
"category": "mantle-reentrancy-rule",
"location": {
"file": "VaultV2_Demo_Vault.sol",
"lineEnd": null,
"lineStart": 30
},
"severity": "critical"
},
{
"id": "f5ce8290-6113-4c22-8f21-2d9263a4c177",
"title": "Missing slippage enforcement for swap output",
"category": "mantle-missing-slippage-bound",
"location": {
"file": "VaultV2_Demo_Vault.sol",
"lineEnd": null,
"lineStart": 37
},
"severity": "high"
},
{
"id": "df8bdf07-9074-44fd-b844-531afb96d119",
"title": "Unbounded storage iteration can create runaway gas cost",
"category": "mantle-l1-data-fee-unaware-gas",
"location": {
"file": "VaultV2_Demo_Vault.sol",
"lineEnd": null,
"lineStart": 55
},
"severity": "medium"
},
{
"id": "1f23f062-b9bd-4ab8-872a-33351e578f6f",
"title": "Review calldata parameter width",
"category": "mantle-gas-optimizer/calldata/calldata-smaller-types",
"location": {
"file": "VaultV2_Demo_Vault.sol",
"lineEnd": 27,
"lineStart": 27
},
"severity": "low"
},
{
"id": "79b995e0-e8bc-45d1-a252-ec8815d295cb",
"title": "Replace long revert string with custom error",
"category": "mantle-gas-optimizer/deployment/custom-errors",
"location": {
"file": "VaultV2_Demo_Vault.sol",
"lineEnd": 28,
"lineStart": 28
},
"severity": "info"
},
{
"id": "7f34a742-594e-46c7-bfa6-57f8da2a06ee",
"title": "Replace long revert string with custom error",
"category": "mantle-gas-optimizer/deployment/custom-errors",
"location": {
"file": "VaultV2_Demo_Vault.sol",
"lineEnd": 41,
"lineStart": 41
},
"severity": "info"
},
{
"id": "20d4861d-0580-4b0b-8bf9-cd3b3270cb65",
"title": "Cache repeated storage read",
"category": "mantle-gas-optimizer/storage/cache-repeated-sload",
"location": {
"file": "VaultV2_Demo_Vault.sol",
"lineEnd": 18,
"lineStart": 18
},
"severity": "info"
},
{
"id": "3ab4dccf-09e3-426c-9dda-3ef3f7ca599c",
"title": "Use unchecked loop increment where bounded",
"category": "mantle-gas-optimizer/computation/unchecked-loop-increment",
"location": {
"file": "VaultV2_Demo_Vault.sol",
"lineEnd": 55,
"lineStart": 55
},
"severity": "info"
},
{
"id": "14110886-fbc3-44a4-9aa4-972c130806c6",
"title": "Cache array length before loop",
"category": "mantle-gas-optimizer/storage/loop-hygiene",
"location": {
"file": "VaultV2_Demo_Vault.sol",
"lineEnd": 55,
"lineStart": 55
},
"severity": "info"
},
{
"id": "9ab40ce5-3879-41ad-9ea4-070dcd5808f1",
"title": "Use != 0 for unsigned non-zero checks",
"category": "mantle-gas-optimizer/computation/nonzero-comparison",
"location": {
"file": "VaultV2_Demo_Vault.sol",
"lineEnd": 16,
"lineStart": 16
},
"severity": "info"
},
{
"id": "c344bcea-45ed-4f1c-839c-54dd697e3b4f",
"title": "Use != 0 for unsigned non-zero checks",
"category": "mantle-gas-optimizer/computation/nonzero-comparison",
"location": {
"file": "VaultV2_Demo_Vault.sol",
"lineEnd": 40,
"lineStart": 40
},
"severity": "info"
},
{
"id": "cc7b3bde-4e36-40c4-a677-bf1041d52b14",
"title": "Remove redundant zero initialization",
"category": "mantle-gas-optimizer/deployment/remove-zero-init",
"location": {
"file": "VaultV2_Demo_Vault.sol",
"lineEnd": 55,
"lineStart": 55
},
"severity": "info"
}
]
}
ipfs://QmSA7ydHVKbR5zSZdQkwEYvvakUnHNvzdeY2rVAPzAa5Lr