{"assessments":[],"deployments":[{"attestationHash":"0323d7ed0717444bb229750144ae69519248d8e3ad60faad89994f9f1d9f6773","chainId":11155111,"contracts":[{"address":"0x171985d413bcea96306a6fb55055d103a6a91cfa","blockNumber":11833739,"name":"PaidVoting","role":"other","txHash":"0x48a68b261a16f1e1babed9b4838837d82d3079f53f38e83399ee7e21cd6f10d3"}],"id":"0c738648-abdf-4aff-bb3c-a7d602be4cf0","manifestHash":"fc1a9586e536f0fd7eff206a6fa3e5c96bd047ac4b570632d8c5c3d072c987e3","status":"live"}],"fuzz":[],"identity":{"adapter":"0xde152afb7db5373f34876e1499fbd893a82dd336","chainId":1,"collection":"0x0000ec93127baa929e58e97dd0095a2bfb38ec1d","registry":"0x8004a169fb4a3325136eb29fa0ceb6d2e539a432"},"interpretation":"Records acceptance and evidence. Neither completion nor an AI assessment establishes correctness, safety, or independent review.","jobId":"55a8cc1a-bd00-499b-8fca-ed624c40444a","kind":"shape:chain","nodes":[{"acceptedSubmissionHash":"ee5668ea036d423038d8a248559192a759cb4b9efba96afce32d877156be45f9","dependsOn":["build_contract_project"],"execution":{"network":false,"profile":"foundry","requires":[],"skillHash":"e5ac2cb1fd91a56aa40b16487fc230c48de0d317c8266140331dd3219bb40a85","skillId":"audit-specialist","tools":[]},"key":"audit_economics","kind":"code","role":"review","skillHash":"e5ac2cb1fd91a56aa40b16487fc230c48de0d317c8266140331dd3219bb40a85","skillId":"audit-specialist","state":"accepted"},{"acceptedSubmissionHash":"780e6cc755e39baa7c535ce2680a0b6d80cf388a1794246c67cf1389aaf42237","dependsOn":["build_contract_project"],"execution":{"network":false,"profile":"foundry","requires":[],"skillHash":"e5ac2cb1fd91a56aa40b16487fc230c48de0d317c8266140331dd3219bb40a85","skillId":"audit-specialist","tools":[]},"key":"audit_flow","kind":"code","role":"review","skillHash":"e5ac2cb1fd91a56aa40b16487fc230c48de0d317c8266140331dd3219bb40a85","skillId":"audit-specialist","state":"accepted"},{"acceptedSubmissionHash":"87dde7c75295fc42b72aeb631364ad549556eed811da7063c931bff69d4be6e4","dependsOn":["build_contract_project","write_foundry_tests","manifest","audit_math","audit_permissions","audit_economics","audit_flow"],"execution":{"network":false,"profile":"foundry","requires":[],"skillHash":"3014f1ea5961918ca059453a484bf4c8bcbbfc2248dbe31d94ac7c5cdf8f50bd","skillId":"audit-judge","tools":[]},"key":"audit_judge","kind":"code","role":"review","skillHash":"3014f1ea5961918ca059453a484bf4c8bcbbfc2248dbe31d94ac7c5cdf8f50bd","skillId":"audit-judge","state":"accepted"},{"acceptedSubmissionHash":"2ee4f9a31b6f20c8be03ba71e955d67053b6c4dbe1d32f6680271ce209b0de8d","dependsOn":["build_contract_project"],"execution":{"network":false,"profile":"foundry","requires":[],"skillHash":"e5ac2cb1fd91a56aa40b16487fc230c48de0d317c8266140331dd3219bb40a85","skillId":"audit-specialist","tools":[]},"key":"audit_math","kind":"code","role":"review","skillHash":"e5ac2cb1fd91a56aa40b16487fc230c48de0d317c8266140331dd3219bb40a85","skillId":"audit-specialist","state":"accepted"},{"acceptedSubmissionHash":"85302ae63b87916dabc469436a4ef19a3e3bdd04dbc8f3a6218858c8310aee1b","dependsOn":["build_contract_project"],"execution":{"network":false,"profile":"foundry","requires":[],"skillHash":"e5ac2cb1fd91a56aa40b16487fc230c48de0d317c8266140331dd3219bb40a85","skillId":"audit-specialist","tools":[]},"key":"audit_permissions","kind":"code","role":"review","skillHash":"e5ac2cb1fd91a56aa40b16487fc230c48de0d317c8266140331dd3219bb40a85","skillId":"audit-specialist","state":"accepted"},{"acceptedSubmissionHash":"00266d8ccee6a3432fa64a0e7dba546df0cbe207d0f7114b8c42b9ea32611019","dependsOn":[],"execution":{"network":false,"profile":"foundry","requires":[],"skillHash":"b6503de65ad02f845827887c23da4c3b56ccc5df7a459db263bae6e549d92f7f","skillId":"build-contract-project","tools":[]},"key":"build_contract_project","kind":"code","role":"implement","skillHash":"b6503de65ad02f845827887c23da4c3b56ccc5df7a459db263bae6e549d92f7f","skillId":"build-contract-project","state":"accepted"},{"acceptedSubmissionHash":"a08576bd00e021d3ec530a9cb20f9cd2bcd254510953140372d4f6a672e1a914","dependsOn":["build_contract_project"],"execution":{"network":false,"profile":"foundry","requires":[],"tools":[]},"key":"manifest","kind":"code","role":"integrate","skillHash":null,"skillId":null,"state":"accepted"},{"acceptedSubmissionHash":"bd6957d9ec02d1f04ef58bcef3d1770a7b410b324014f4f5469c49ec45522837","dependsOn":["build_contract_project"],"execution":{"network":false,"profile":"foundry","requires":[],"skillHash":"73431852439ad3a343f3d2b7db1c43cd363b9f48f9bb51497374a0cf6d50b223","skillId":"write-foundry-tests","tools":[]},"key":"write_foundry_tests","kind":"code","role":"tests","skillHash":"73431852439ad3a343f3d2b7db1c43cd363b9f48f9bb51497374a0cf6d50b223","skillId":"write-foundry-tests","state":"accepted"}],"objective":"Launch a contract where we can pay for \"vote\" and keeps a list of top 3 payers\n\nWho can call what: no one\nUpgrades and pausing: no\nOutside contracts: no","parentJobId":null,"planHash":"933d0e1d5061f9efc194499c7f1375d6aac344ef7d010dbd084d2fdae50b84d1","previousHash":"a4c31768ab86d20510fc4f31ba933fc2ddb78e57e64bd778e16bf6722ecaaa5f","projectId":"55a8cc1a-bd00-499b-8fca-ed624c40444a","publication":{"commit":"3ec109730bda79468a5997e09fce0f6e2ce0e6b7","deliveredAt":"2026-10-03T05:13:14.362Z","repoUrl":"https://github.com/identity-md-launches/launch-663-launch-contract-where-we"},"receiptIdentity":{"adapter":"0xde152afb7db5373f34876e1499fbd893a82dd336","chainId":1,"collection":"0x0000ec93127baa929e58e97dd0095a2bfb38ec1d","registry":"0x8004a169fb4a3325136eb29fa0ceb6d2e539a432"},"registry":"0xb6d0a187b050fa5bb0b87033a203f37becf4a775","research":[],"schema":"identitymd-work-v1","signals":[],"site":null,"snapshotHash":"e546108f96a4d56a18bedce854dd4bbac037d6f46fcc0bb98d8db7ffdd46ee18","state":"completed","submissions":[{"artifacts":[],"attempt":1,"bundleHash":"d8c691b92369f59e23d93180ebd0dd19a24e96a6eb350b3b23e77e73ce51bd02","device":"0256823ae36e7900","findings":[],"hash":"00266d8ccee6a3432fa64a0e7dba546df0cbe207d0f7114b8c42b9ea32611019","nodeId":"cee740de-fc8d-4c3c-a88b-9c6ba084bf1b","outcome":"completed","summary":"Implemented [PaidVoting](/home/imd-worker/.identitymd/work/55a8cc1a-bd00-499b-8fca-ed624c40444a/cee740de-fc8d-4c3c-a88b-9c6ba084bf1b/src/PaidVoting.sol) with cumulative top-three rankings and deterministic ties.\n\nVoting is public; there are no privileged roles, upgrades, pauses, or external calls. **Paid ETH remains permanently locked.**\n\nIncluded deployment documentation, launch manifest, and vendored dependencies.\n\nVerified with Solidity 0.8.26:\n\n- `forge build` passed.\n- `forge test`: 27 passed, including fuzz tests.\n- `forge fmt --check` passed.\n\nPrepared for factory deployment; no on-chain transaction was sent.","treeHash":"580b6eef223d63036dcfe90a145ed91cd7371ed1","usage":{"cachedInputTokens":553472,"inputTokens":35436,"model":"gpt-6-astra","outputTokens":8253,"runtime":"codex","turns":6,"wallClockMs":421163}},{"artifacts":[],"attempt":1,"bundleHash":null,"device":"35c52a5b502e847c","findings":[],"hash":"2ee4f9a31b6f20c8be03ba71e955d67053b6c4dbe1d32f6680271ce209b0de8d","nodeId":"fe698f2c-3f3c-4431-bd97-a73f79c7a11a","outcome":"completed","summary":"Recorded no substantiated findings and full assigned-area coverage in [.imd-findings.json](.imd-findings.json).\n\nAll 27 Foundry tests passed, including 1,024 runs per fuzz test. `uint256` extremes were reviewed statically. No contract or configuration files changed.","treeHash":null,"usage":{"cachedInputTokens":291456,"inputTokens":138197,"model":"gpt-6-astra","outputTokens":5182,"runtime":"codex","turns":4,"wallClockMs":238386}},{"artifacts":[],"attempt":1,"bundleHash":null,"device":"720122d0ca9f60ca","findings":[],"hash":"780e6cc755e39baa7c535ce2680a0b6d80cf388a1794246c67cf1389aaf42237","nodeId":"c3d6b81e-8a16-4a38-a70f-a9826c7815e0","outcome":"completed","summary":"Recorded no substantiated defects and full assigned coverage in [.imd-findings.json](/Users/hhyy/.lobster_wallets/identitymd/work/55a8cc1a-bd00-499b-8fca-ed624c40444a/c3d6b81e-8a16-4a38-a70f-a9826c7815e0/.imd-findings.json).\n\nAll 27 Foundry tests passed offline. Application and configuration files remain unchanged.","treeHash":null,"usage":{"cachedInputTokens":350464,"inputTokens":90672,"model":"gpt-6-astra","outputTokens":5118,"runtime":"codex","turns":4,"wallClockMs":250066}},{"artifacts":[],"attempt":1,"bundleHash":null,"device":"3f6a9bdd601cb99f","findings":[],"hash":"85302ae63b87916dabc469436a4ef19a3e3bdd04dbc8f3a6218858c8310aee1b","nodeId":"a01e436d-5ae4-46b4-a542-3fb794756466","outcome":"completed","summary":"Saved the [permissions review](.imd-findings.json): no substantiated defects, with full entry-point coverage. “No one” was interpreted as no privileged roles.\n\nAll 27 Foundry tests passed. Payments remain permanently locked; the brief specifies no withdrawal or refund entitlement.","treeHash":null,"usage":{"cachedInputTokens":350464,"inputTokens":59627,"model":"gpt-6-astra","outputTokens":5130,"runtime":"codex","turns":4,"wallClockMs":217685}},{"artifacts":[],"attempt":1,"bundleHash":null,"device":"02ae6543274731ab","findings":[],"hash":"87dde7c75295fc42b72aeb631364ad549556eed811da7063c931bff69d4be6e4","nodeId":"aebc2796-98df-4835-b506-63697bd1b439","outcome":"completed","summary":"Wrote [.imd-findings.json](/home/imd-worker/.identitymd/work/55a8cc1a-bd00-499b-8fca-ed624c40444a/aebc2796-98df-4835-b506-63697bd1b439/.imd-findings.json): no substantiated defects; full entry-point coverage.\n\nAll 36 Foundry tests passed. ETH remains permanently locked, but no payout obligation was specified, so that lead was excluded. Existing files were unchanged.","treeHash":null,"usage":{"cachedInputTokens":493312,"inputTokens":78035,"model":"gpt-6-astra","outputTokens":3599,"runtime":"codex","turns":4,"wallClockMs":178058}},{"artifacts":[],"attempt":1,"bundleHash":"7d006e2933628430f5db56f8cb4a12ba0d74b1ee09046f13f45d8ed888025e39","device":"468e82a89b9bfe18","findings":[],"hash":"a08576bd00e021d3ec530a9cb20f9cd2bcd254510953140372d4f6a672e1a914","nodeId":"8ab27d0b-278e-48c8-83ac-44c951f57daf","outcome":"completed","summary":"`launch.json` is updated and verified. The untracked dotfiles shown by git are sandbox device nodes, not files I created.\n\n**What the manifest declares**\n\n- One contract, `PaidVoting`, with an empty constructor argument list. The accepted source has a nonpayable no-argument constructor, confirmed against the compiled ABI.\n- No `$owner` reference, because the brief states no privileged roles and the contract has no owner, pause, upgrade or external dependency.\n- Notes re-derived from the accepted source: permissionless payable `vote()`, the three view functions and the public mappings, cumulative-wei ranking with earlier-payer tie-breaking, no receive or fallback, permanent retention of all paid ETH, Cancun EVM requirement, and zero deployment ETH with no initialization.\n\n**Checks run**\n\n- Schema check of the manifest with a local script: exact top-level keys, kind, identifier pattern, unique names, argument limits, notes under 4000 characters. Passed.\n- `forge build --offline` and `forge test --offline`: 27 tests passed, 0 failed. The only compiler output is the pre-existing locked-ether lint note, which is the intended design.\n- Only `launch.json` differs from the accepted tree.","treeHash":"ced19bb05d8637bd654b1783f1196a9478b3353e","usage":{"cachedInputTokens":226825,"inputTokens":162,"model":"claude-fable-5-1","outputTokens":3183,"runtime":"claude","turns":6,"wallClockMs":80740}},{"artifacts":[],"attempt":1,"bundleHash":"de7ae6360be96ce22ff4cd1d975dbc9a07977beb19f755722c9330142e77a60e","device":"0256823ae36e7900","findings":[],"hash":"bd6957d9ec02d1f04ef58bcef3d1770a7b410b324014f4f5469c49ec45522837","nodeId":"e16d3c50-3a54-46ad-9112-439c6075f9e2","outcome":"completed","summary":"Added tests under `test/` covering failure paths, maximum payments, malformed calls, batch rollback, and payment-splitting fuzzing.\n\nStateful invariants check accounting, custody, ranking, and ties across eight payers: 256 random sequences, 32,768 calls.\n\n`forge build` and `forge test` pass: **36 tests, zero failures**. No concrete defects found. Only two test files added.","treeHash":"6e77241def11054de900bbb178f816eb16c688ea","usage":{"cachedInputTokens":667264,"inputTokens":56212,"model":"gpt-6-astra","outputTokens":7023,"runtime":"codex","turns":5,"wallClockMs":384851}},{"artifacts":[],"attempt":1,"bundleHash":null,"device":"98b4506bef931d13","findings":[{"citation":"resolved","description":"Economic Security / Flow Gap (execution x first principles). vote() takes msg.value into the contract and nothing in the contract can ever move it out: there is no withdraw, sweep, beneficiary, refund or payout path, and the compiled runtime contains no CALL, CALLCODE, DELEGATECALL, STATICCALL or SELFDESTRUCT opcode (confirmed by scanning the deployed bytecode in a scratch test and by the project's own test_runtimeMeetsProtectedSizeAndOpcodeConstraints). The brief says 'we can pay for vote' but names no recipient, and 'Who can call what: no one' rules out a privileged withdrawer; the author resolved this by making the contract an ETH sink, and documents it in README.md and launch.json notes. This is therefore a design decision rather than a coding error, but it is the single material economic property of the contract and the requester should confirm it explicitly: every wei anyone pays, including the requester's own payments, is lost forever, and the deployed contract cannot be amended (no upgrade path, by design). If the requester expected to collect the payments, the fix needs a scope decision: e.g. a constructor `address payable beneficiary` argument filled by $owner in launch.json plus a permissionless `withdraw()` that forwards the balance only to that fixed address (no privileged caller, so 'no one' still holds; 'Outside contracts: no' means the beneficiary must be an EOA or a receiver that cannot revert, and a pull pattern avoids a reverting receiver blocking vote()). If the burn is intended, no code change is needed and this finding only records the trust assumption. Not a loss-of-funds defect against the documented design, hence low.","line":32,"path":"src/PaidVoting.sol","reproduction":"Deploy PaidVoting with no arguments. From any account call vote{value: 1 ether}(). Expected under a 'payment' model: some party can eventually receive the 1 ether. Actual: address(voting).balance == 1 ether and totalReceived == 1 ether forever; every selector other than vote() is a view or reverts (tests test_NoWithdrawalPauseOrUpgradeEntryPoints, test_DirectETHTransfersRevertAndPreserveState), and a scan of address(voting).code finds no 0xf1/0xf2/0xf4/0xfa/0xff opcode, so no execution path can transfer the balance. Scratch check: test_AllPaymentsAreLockedForever in test/scratch (run, passed, then removed) votes 5 ether and asserts the balance is 5 ether and the runtime has none of those opcodes.","severity":"low","snippet":"    function vote() external payable {\n        if (msg.value == 0) revert ZeroPayment();\n\n        uint256 cumulativePaid = totalPaid[msg.sender] + msg.value;\n        totalPaid[msg.sender] = cumulativePaid;\n        totalReceived += msg.value;","title":"Every vote payment is permanently locked: the 'pay for vote' flow has no payee, so paid ETH is a burn"}],"hash":"ee5668ea036d423038d8a248559192a759cb4b9efba96afce32d877156be45f9","nodeId":"7ac3889d-724b-4a1a-a668-120f41319c47","outcome":"completed","summary":"The review is complete and `.imd-findings.json` is written at the repository root. No other file was changed (the scratch test was removed, and `git status --porcelain` shows nothing stray).\n\n**Outcome:** the contract holds up in my area. One low-severity economic finding, no critical or high.\n\n**Finding 1 (low), `src/PaidVoting.sol:32`.** Every wei paid through `vote()` is permanently locked. There is no beneficiary, withdraw, refund or payout path, and the runtime bytecode contains no CALL, CALLCODE, DELEGATECALL, STATICCALL or SELFDESTRUCT opcode, so no execution path can ever move the balance. The brief says \"pay for vote\" but names no payee, and \"no one can call what\" rules out a privileged withdrawer, so the author made the contract an ETH sink and documented it in the README and the manifest notes. I report it as a design decision the requester must confirm, with a fix sketch that keeps \"no privileged caller\" if they expected to collect payments. The slither and aderyn locked-ether lines are this same item, confirmed.\n\n**What held, with evidence:**\n- Top-3 ranking invariant. The array matched an independent full-sort model with the documented tie rule across 2000 random sequences of up to 200 votes among 16 actors, including tiny amounts that force ties, evictions and re-entries.\n- Conservation. Total received equals the sum of per-payer totals, balance never falls below it, vote count equals successful calls.\n- View and write agree, empty slots read as zero, constructor is argument-free and nonpayable, and the factory gains no role.\n- Sybil addresses, builder-controlled tie ordering and 1-wei vote inflation are recorded as documented trust assumptions, not defects, since the brief names no price or identity requirement.\n\n**Coverage record:** 8 rows, including the one listed entry point `PaidVoting.vote()` (marked `finding`, referencing finding 1) plus the invariants above. Nothing was left unreached. The remaining static-analysis lines (costly loop, literals, uninitialized local) are style or false positives with no behavioural effect and were left out.","treeHash":null,"usage":{"cachedInputTokens":609183,"inputTokens":290,"model":"claude-fable-5-1","outputTokens":15179,"runtime":"claude","turns":14,"wallClockMs":273688}}],"verification":[{"checks":[{"durationMs":989,"exitCode":0,"name":"build","output":"Compiling 22 files with Solc 0.8.26\nSolc 0.8.26 finished in 795.00ms\nCompiler run successful!\nwarning[locked-ether]: contract can receive ETH but has no mechanism to send it out\n  ╭▸ src/PaidVoting.sol:8:10\n  │\n8 │ contract PaidVoting {\n  │          ━━━━━━━━━━\n  │\n  ╰ help: https://getfoundry.sh/forge/linting/locked-ether\n\n","passed":true},{"durationMs":307,"exitCode":0,"name":"test","output":"No files changed, compilation skipped\n\nRan 3 tests for test/PaidVotingDeployment.t.sol:PaidVotingDeploymentTest\n[PASS] test_constructorRejectsEther() (gas: 112603)\n[PASS] test_factoryDeploymentNeedsNoArgumentsOrInitialization() (gas: 359774)\n[PASS] test_runtimeMeetsProtectedSizeAndOpcodeConstraints() (gas: 1335002)\nSuite result: ok. 3 passed; 0 failed; 0 skipped; finished in 8.65ms (3.63ms CPU time)\n\nRan 24 tests for test/PaidVoting.t.sol:PaidVotingTest\n[PASS] testFuzz_PositivePaymentIsCreditedExactly(uint96) (runs: 256, μ: 262855, ~: 262853)\nLogs:\n  Bound result 79228162514264337593543950335\n\n[PASS] testFuzz_RandomPaymentSequenceMatchesIndependentRanking(uint256,uint8) (runs: 256, μ: 5699737, ~: 3273737)\nLogs:\n  Bound result 5\n\n[PASS] test_ContractPayerGetsCreditInsteadOfOriginatingEOA() (gas: 405555)\n[PASS] test_DirectETHTransfersRevertAndPreserveState() (gas: 547829)\n[PASS] test_EqualPaymentsKeepEarlierPayersAheadAndExcludeFourth() (gas: 513500)\n[PASS] test_EvictedPayerCanReenterUsingLifetimePayments() (gas: 893797)\n[PASS] test_ForcedBalanceDoesNotCreateVotesOrAlterRanking() (gas: 657426)\n[PASS] test_InitialStateIsEmpty() (gas: 125673)\n[PASS] test_LeaderCanIncreaseWithoutDuplicatingItsEntry() (gas: 487429)\n[PASS] test_NewPayerCanEnterFirstPlace() (gas: 528645)\n[PASS] test_NewPayerCanEnterSecondPlace() (gas: 514506)\n[PASS] test_NewPayerCanEnterThirdPlace() (gas: 508699)\n[PASS] test_NoWithdrawalPauseOrUpgradeEntryPoints() (gas: 663990)\n[PASS] test_OneWeiVoteEmitsPaymentAndUpdatesAccounting() (gas: 266179)\n[PASS] test_PayerBelowThirdStillHasPaymentsCounted() (gas: 539196)\n[PASS] test_QueriesCannotReceivePayment() (gas: 514820)\n[PASS] test_RepeatPaymentsAccumulateAndEmitNewCumulativeAmount() (gas: 442172)\n[PASS] test_SecondPlaceCanMoveToFirst() (gas: 487900)\n[PASS] test_ThirdPlaceCanMoveOneOrTwoPlaces() (gas: 659201)\n[PASS] test_TieAtThirdDoesNotAllowAnEvictedPayerToDisplaceIncumbent() (gas: 733390)\n[PASS] test_TiesUseTimeCurrentTotalWasReachedRatherThanFirstVote() (gas: 930032)\n[PASS] test_UnknownSelectorsRevertWithOrWithoutETH() (gas: 547380)\n[PASS] test_ZeroPaymentPreservesExistingState() (gas: 507239)\n[PASS] test_ZeroPaymentRevertsOnEmptyState() (gas: 145588)\nSuite result: ok. 24 passed; 0 failed; 0 skipped; finished in 210.93ms (232.48ms CPU time)\n\nRan 2 test suites in 211.52ms (219.58ms CPU time): 27 tests passed, 0 failed, 0 skipped (27 total tests)\n","passed":true},{"durationMs":46,"exitCode":0,"name":"source-index","output":"{\"v\":1,\"entryPoints\":[\"PaidVoting.vote()\"],\"files\":{\".gitignore\":4,\"README.md\":104,\"foundry.toml\":18,\"launch.json\":10,\"remappings.txt\":1,\"src/PaidVoting.sol\":77,\"test/PaidVoting.t.sol\":393,\"test/PaidVotingDeployment.t.sol\":67},\"excluded\":[\"lib/\",\"node_modules/\"],\"truncated\":false}","passed":true},{"durationMs":1035,"exitCode":0,"name":"slither","output":"[medium/high] locked-ether at src/PaidVoting.sol:32: Contract locking ether found:","passed":true},{"durationMs":280,"exitCode":0,"name":"aderyn","output":"[high] contract-locks-ether at src/PaidVoting.sol:8: Contract locks Ether without a withdraw function\n[low] costly-loop at src/PaidVoting.sol:71: Costly operations inside loop\n[low] literal-instead-of-constant at src/PaidVoting.sol:47: Literal Instead of Constant (6 places)\n[low] uninitialized-local-variable at src/PaidVoting.sol:56: Uninitialized Local Variable","passed":true}],"detail":"all checks passed","evaluation":"checks","profile":"foundry","status":"accepted","submissionHash":"00266d8ccee6a3432fa64a0e7dba546df0cbe207d0f7114b8c42b9ea32611019","verifiedTreeHash":"580b6eef223d63036dcfe90a145ed91cd7371ed1","verifierVersion":"0.1.0+1d62b75e"},{"checks":[{"durationMs":956,"exitCode":0,"name":"build","output":"Compiling 22 files with Solc 0.8.26\nSolc 0.8.26 finished in 819.86ms\nCompiler run successful!\nwarning[locked-ether]: contract can receive ETH but has no mechanism to send it out\n  ╭▸ src/PaidVoting.sol:8:10\n  │\n8 │ contract PaidVoting {\n  │          ━━━━━━━━━━\n  │\n  ╰ help: https://getfoundry.sh/forge/linting/locked-ether\n\n","passed":true},{"durationMs":325,"exitCode":0,"name":"test","output":"No files changed, compilation skipped\n\nRan 3 tests for test/PaidVotingDeployment.t.sol:PaidVotingDeploymentTest\n[PASS] test_constructorRejectsEther() (gas: 112603)\n[PASS] test_factoryDeploymentNeedsNoArgumentsOrInitialization() (gas: 359774)\n[PASS] test_runtimeMeetsProtectedSizeAndOpcodeConstraints() (gas: 1335002)\nSuite result: ok. 3 passed; 0 failed; 0 skipped; finished in 229.77ms (2.83ms CPU time)\n\nRan 24 tests for test/PaidVoting.t.sol:PaidVotingTest\n[PASS] testFuzz_PositivePaymentIsCreditedExactly(uint96) (runs: 256, μ: 262860, ~: 262853)\nLogs:\n  Bound result 1\n\n[PASS] testFuzz_RandomPaymentSequenceMatchesIndependentRanking(uint256,uint8) (runs: 256, μ: 5726880, ~: 3865076)\nLogs:\n  Bound result 40\n\n[PASS] test_ContractPayerGetsCreditInsteadOfOriginatingEOA() (gas: 405555)\n[PASS] test_DirectETHTransfersRevertAndPreserveState() (gas: 547829)\n[PASS] test_EqualPaymentsKeepEarlierPayersAheadAndExcludeFourth() (gas: 513500)\n[PASS] test_EvictedPayerCanReenterUsingLifetimePayments() (gas: 893797)\n[PASS] test_ForcedBalanceDoesNotCreateVotesOrAlterRanking() (gas: 657426)\n[PASS] test_InitialStateIsEmpty() (gas: 125673)\n[PASS] test_LeaderCanIncreaseWithoutDuplicatingItsEntry() (gas: 487429)\n[PASS] test_NewPayerCanEnterFirstPlace() (gas: 528645)\n[PASS] test_NewPayerCanEnterSecondPlace() (gas: 514506)\n[PASS] test_NewPayerCanEnterThirdPlace() (gas: 508699)\n[PASS] test_NoWithdrawalPauseOrUpgradeEntryPoints() (gas: 663990)\n[PASS] test_OneWeiVoteEmitsPaymentAndUpdatesAccounting() (gas: 266179)\n[PASS] test_PayerBelowThirdStillHasPaymentsCounted() (gas: 539196)\n[PASS] test_QueriesCannotReceivePayment() (gas: 514820)\n[PASS] test_RepeatPaymentsAccumulateAndEmitNewCumulativeAmount() (gas: 442172)\n[PASS] test_SecondPlaceCanMoveToFirst() (gas: 487900)\n[PASS] test_ThirdPlaceCanMoveOneOrTwoPlaces() (gas: 659201)\n[PASS] test_TieAtThirdDoesNotAllowAnEvictedPayerToDisplaceIncumbent() (gas: 733390)\n[PASS] test_TiesUseTimeCurrentTotalWasReachedRatherThanFirstVote() (gas: 930032)\n[PASS] test_UnknownSelectorsRevertWithOrWithoutETH() (gas: 547380)\n[PASS] test_ZeroPaymentPreservesExistingState() (gas: 507239)\n[PASS] test_ZeroPaymentRevertsOnEmptyState() (gas: 145588)\nSuite result: ok. 24 passed; 0 failed; 0 skipped; finished in 229.91ms (249.31ms CPU time)\n\nRan 2 test suites in 230.57ms (459.68ms CPU time): 27 tests passed, 0 failed, 0 skipped (27 total tests)\n","passed":true},{"durationMs":46,"exitCode":0,"name":"source-index","output":"{\"v\":1,\"entryPoints\":[\"PaidVoting.vote()\"],\"files\":{\".gitignore\":4,\"README.md\":104,\"foundry.toml\":18,\"launch.json\":10,\"remappings.txt\":1,\"src/PaidVoting.sol\":77,\"test/PaidVoting.t.sol\":393,\"test/PaidVotingDeployment.t.sol\":67},\"excluded\":[\"lib/\",\"node_modules/\"],\"truncated\":false}","passed":true}],"detail":"all checks passed","evaluation":"checks","profile":"foundry","status":"accepted","submissionHash":"a08576bd00e021d3ec530a9cb20f9cd2bcd254510953140372d4f6a672e1a914","verifiedTreeHash":"ced19bb05d8637bd654b1783f1196a9478b3353e","verifierVersion":"0.1.0+1d62b75e"},{"checks":[{"durationMs":1357,"exitCode":0,"name":"build","output":"Compiling 24 files with Solc 0.8.26\nSolc 0.8.26 finished in 1.24s\nCompiler run successful with warnings:\nWarning (5159): \"selfdestruct\" has been deprecated. Note that, starting from the Cancun hard fork, the underlying opcode no longer deletes the code and data associated with an account and only transfers its Ether to the beneficiary, unless executed in the same transaction in which the contract was created (see EIP-6780). Any use in newly deployed contracts is strongly discouraged even if the new behavior is taken into account. Future changes to the EVM might further reduce the functionality of the opcode.\n  --> test/PaidVotingInvariant.t.sol:10:9:\n   |\n10 |         selfdestruct(recipient);\n   |         ^^^^^^^^^^^^\n\nwarning[locked-ether]: contract can receive ETH but has no mechanism to send it out\n  ╭▸ src/PaidVoting.sol:8:10\n  │\n8 │ contract PaidVoting {\n  │          ━━━━━━━━━━\n  │\n  ╰ help: https://getfoundry.sh/forge/linting/locked-ether\n\n","passed":true},{"durationMs":8623,"exitCode":0,"name":"test","output":"No files changed, compilation skipped\n\nRan 3 tests for test/PaidVotingDeployment.t.sol:PaidVotingDeploymentTest\n[PASS] test_constructorRejectsEther() (gas: 112603)\n[PASS] test_factoryDeploymentNeedsNoArgumentsOrInitialization() (gas: 359774)\n[PASS] test_runtimeMeetsProtectedSizeAndOpcodeConstraints() (gas: 1335002)\nSuite result: ok. 3 passed; 0 failed; 0 skipped; finished in 34.82ms (4.37ms CPU time)\n\nRan 7 tests for test/PaidVotingBoundary.t.sol:PaidVotingBoundaryTest\n[PASS] testFuzz_PaymentSplittingPreservesCumulativeRanking(uint256,uint256) (runs: 1000, μ: 1018524, ~: 1016795)\nLogs:\n  Bound result 37747613170415143181552554637904906007866851175365851181032472052305598229622\n  Bound result 4\n\n[PASS] test_AllGeneratedGettersRejectEtherWithoutChangingState() (gas: 823140)\n[PASS] test_FailedBatchRollsBackEarlierPaidVote() (gas: 677899)\n[PASS] test_GettersRejectEveryTruncatedArgumentLength() (gas: 987142)\n[PASS] test_MaximumUint256PaymentIsNotTruncated() (gas: 190955)\n[PASS] test_PublicGetterIndexBounds() (gas: 453220)\n[PASS] test_SplitPaymentsCanReachMaximumTotalReceivedExactly() (gas: 1009395)\nSuite result: ok. 7 passed; 0 failed; 0 skipped; finished in 35.75ms (38.12ms CPU time)\n\nRan 24 tests for test/PaidVoting.t.sol:PaidVotingTest\n[PASS] testFuzz_PositivePaymentIsCreditedExactly(uint96) (runs: 256, μ: 262857, ~: 262853)\nLogs:\n  Bound result 79228162514264337593543950335\n\n[PASS] testFuzz_RandomPaymentSequenceMatchesIndependentRanking(uint256,uint8) (runs: 256, μ: 5280398, ~: 3413955)\nLogs:\n  Bound result 32\n\n[PASS] test_ContractPayerGetsCreditInsteadOfOriginatingEOA() (gas: 405555)\n[PASS] test_DirectETHTransfersRevertAndPreserveState() (gas: 547829)\n[PASS] test_EqualPaymentsKeepEarlierPayersAheadAndExcludeFourth() (gas: 513500)\n[PASS] test_EvictedPayerCanReenterUsingLifetimePayments() (gas: 893797)\n[PASS] test_ForcedBalanceDoesNotCreateVotesOrAlterRanking() (gas: 657426)\n[PASS] test_InitialStateIsEmpty() (gas: 125673)\n[PASS] test_LeaderCanIncreaseWithoutDuplicatingItsEntry() (gas: 487429)\n[PASS] test_NewPayerCanEnterFirstPlace() (gas: 528645)\n[PASS] test_NewPayerCanEnterSecondPlace() (gas: 514506)\n[PASS] test_NewPayerCanEnterThirdPlace() (gas: 508699)\n[PASS] test_NoWithdrawalPauseOrUpgradeEntryPoints() (gas: 663990)\n[PASS] test_OneWeiVoteEmitsPaymentAndUpdatesAccounting() (gas: 266179)\n[PASS] test_PayerBelowThirdStillHasPaymentsCounted() (gas: 539196)\n[PASS] test_QueriesCannotReceivePayment() (gas: 514820)\n[PASS] test_RepeatPaymentsAccumulateAndEmitNewCumulativeAmount() (gas: 442172)\n[PASS] test_SecondPlaceCanMoveToFirst() (gas: 487900)\n[PASS] test_ThirdPlaceCanMoveOneOrTwoPlaces() (gas: 659201)\n[PASS] test_TieAtThirdDoesNotAllowAnEvictedPayerToDisplaceIncumbent() (gas: 733390)\n[PASS] test_TiesUseTimeCurrentTotalWasReachedRatherThanFirstVote() (gas: 930032)\n[PASS] test_UnknownSelectorsRevertWithOrWithoutETH() (gas: 547380)\n[PASS] test_ZeroPaymentPreservesExistingState() (gas: 507239)\n[PASS] test_ZeroPaymentRevertsOnEmptyState() (gas: 145588)\nSuite result: ok. 24 passed; 0 failed; 0 skipped; finished in 183.01ms (202.65ms CPU time)\n\nRan 2 tests for test/PaidVotingInvariant.t.sol:PaidVotingInvariantTest\n[PASS]\nPaidVotingInvariantTest invariants:\n[PASS] invariant_AccountingAndCustodyMatchAllSuccessfulPayments\n[PASS] invariant_LeaderboardMatchesGlobalRankAndTieOrder\n PaidVotingInvariantTest invariants (runs: 256, calls: 32768, reverts: 0)\n\n╭-------------------+----------------+-------+---------+----------╮\n| Contract          | Selector       | Calls | Reverts | Discards |\n+=================================================================+\n| PaidVotingHandler | chaseScore     | 5507  | 0       | 0        |\n|-------------------+----------------+-------+---------+----------|\n| PaidVotingHandler | forceETH       | 5435  | 0       | 0        |\n|-------------------+----------------+-------+---------+----------|\n| PaidVotingHandler | payLarge       | 5519  | 0       | 0        |\n|-------------------+----------------+-------+---------+----------|\n| PaidVotingHandler | paySmall       | 5466  | 0       | 0        |\n|-------------------+----------------+-------+---------+----------|\n| PaidVotingHandler | rejectPayment  | 5416  | 0       | 0        |\n|-------------------+----------------+-------+---------+----------|\n| PaidVotingHandler | rejectZeroVote | 5425  | 0       | 0        |\n╰-------------------+----------------+-------+---------+----------╯\n\nLogs:\n  Bound result 6\n  Bound result 24\n  Bound result 5\n  Bound result 42\n  Bound result 0\n  Bound result 2\n  Bound result 6\n  Bound result 7\n  Bound result 5\n  Bound result 60\n  Bound result 3\n  Bound result 217942463188086065955806806969643288586\n  Bound result 2\n  Bound result 21\n  Bound result 2\n  Bound result 4\n  Bound result 5\n  Bound result 4666\n  Bound result 0\n  Bound result 1\n  Bound result 0\n  Bound result 2\n  Bound result 32\n  Bound result 0\n  Bound result 1208\n  Bound result 4\n  Bound result 7\n  Bound result 0\n  Bound result 6\n  Bound result 23\n  Bound result 7\n  Bound result 7\n  Bound result 5\n  Bound result 4786\n  Bound result 1\n  Bound result 6\n  Bound result 26\n  Bound result 1\n  Bound result 8\n  Bound result 3\n  Bound result 3\n  Bound result 7\n  Bound result 6\n  Bound result 233\n  Bound result 0\n  Bound result 0\n  Bound result 0\n  Bound result 3\n  Bound result 3\n  Bound result 95\n  Bound result 230\n  Bound result 5\n  Bound result 8783\n  Bound result 0\n  Bound result 6\n  Bound result 7286\n  Bound result 1\n  Bound result 9781\n  Bound result 3\n  Bound result 6\n  Bound result 6135\n  Bound result 0\n  Bound result 2\n  Bound result 3\n  Bound result 18\n  Bound result 2\n  Bound result 45\n  Bound result 2\n  Bound result 1\n  Bound result 3\n  Bound result 5\n  Bound result 7\n  Bound result 25\n  Bound result 0\n  Bound result 195\n  Bound result 6\n  Bound result 20\n  Bound result 4\n  Bound result 5552\n  Bound result 0\n  Bound result 3696\n  Bound result 7\n  Bound result 100\n  Bound result 3\n  Bound result 6\n  Bound result 3\n  Bound result 95602559455233668448239006507518378344\n  Bound result 7\n  Bound result 6\n  Bound result 2928\n  Bound result 9985188808532195645901835462276409833\n  Bound result 4\n  Bound result 20\n  Bound result 7\n  Bound result 15196385103\n  Bound result 2\n  Bound result 3469\n  Bound result 1\n  Bound result 983584526\n  Bound result 5\n  Bound result 1\n  Bound result 4\n  Bound result 4\n  Bound result 4\n  Bound result 6\n  Bound result 4\n  Bound result 4909\n  Bound result 3\n  Bound result 3\n  Bound result 7\n  Bound result 7\n  Bound result 25\n  Bound result 2\n  Bound result 44\n  Bound result 0\n  Bound result 31\n  Bound result 4\n  Bound result 7000000000000000000\n  Bound result 6\n  Bound result 2827\n  Bound result 178766160110140252220026\n  Bound result 7644014761264664596539801\n  Bound result 0\n  Bound result 627\n  Bound result 1\n  Bound result 0\n  Bound result 0\n  Bound result 1\n  Bound result 4\n  Bound result 15\n  Bound result 0\n  Bound result 1000000000000000000\n  Bound result 0\n  Bound result 1\n  Bound result 340282366920938463463374607431768211448\n  Bound result 6\n  Bound result 7000000000000000000\n  Bound result 5\n  Bound result 0\n  Bound result 30\n  Bound result 0\n  Bound result 4908\n  Bound result 3\n  Bound result 2\n  Bound result 7\n  Bound result 32\n  Bound result 6\n  Bound result 100\n  Bound result 6\n  Bound result 512404576235841103739117620350426193\n  Bound result 0\n  Bound result 6102\n  Bound result 0\n  Bound result 8033117913352803569220292997216\n  Bound result 3\n  Bound result 3\n  Bound result 2\n  Bound result 1\n  Bound result 1\n  Bound result 5\n  Bound result 3\n  Bound result 5\n  Bound result 0\n  Bound result 17987242740395413320046\n  Bound result 5\n  Bound result 1\n  Bound result 5\n  Bound result 6\n  Bound result 6\n  Bound result 2\n  Bound result 2\n  Bound result 25\n  Bound result 497\n  Bound result 5\n  Bound result 2\n  Bound result 6\n  Bound result 1\n  Bound result 2\n  Bound result 4\n  Bound result 2360\n  Bound result 0\n  Bound result 2\n  Bound result 322017556061002852052835679242656883053\n  Bound result 0\n  Bound result 6\n  Bound result 13\n  Bound result 7\n  Bound result 9\n  Bound result 3\n  Bound result 3\n  Bound result 0\n  Bound result 7\n  Bound result 17\n  Bound result 0\n  Bound result 16\n  Bound result 6\n  Bound result 3\n  Bound result 4\n  Bound result 2\n  Bound result 6\n  Bound result 31\n  Bound result 0\n  Bound result 1006\n  Bound result 1\n  Bound result 7\n  Bound result 217942463188086065962806806969643291530\n  Bound result 4\n  Bound result 1\n  Bound result 281650136792229984044205839662637654133\n  Bound result 0\n  Bound result 58394\n  Bound result 2\n  Bound result 1\n  Bound result 29\n  Bound result 7\n  Bound result 58394\n  Bound result 0\n  Bound result 2\n  Bound result 132596725792619632208555491706133615507\n  Bound result 3\n  Bound result 67468401205736609540223810290183128783\n  Bound result 3442\n  Bound result 1\n  Bound result 5\n  Bound result 2\n  Bound result 3176\n  Bound result 2\n  Bound result 6\n  Bound result 5\n  Bound result 3\n  Bound result 100\n  Bound result 7\n  Bound result 5\n  Bound result 4\n  Bound result 0\n  Bound result 55934\n  Bound result 6\n  Bound result 1\n  Bound result 1\n  Bound result 3\n  Bound result 6\n  Bound result 5\n  Bound result 1000000000000000071\n  Bound result 0\n  Bound result 71\n  Bound result 2\n  Bound result 79228162514264337593543950335\n\n[PASS] test_HandlerExercisesTiesRevertsAndDonations() (gas: 2294260)\nLogs:\n  Bound result 0\n  Bound result 30\n  Bound result 1\n  Bound result 20\n  Bound result 2\n  Bound result 10\n  Bound result 3\n  Bound result 31\n  Bound result 2\n  Bound result 1\n  Bound result 2\n  Bound result 1\n  Bound result 2\n  Bound result 3\n  Bound result 1\n  Bound result 0\n  Bound result 3\n  Bound result 1\n  Bound result 1\n  Bound result 3\n  Bound result 1\n  Bound result 2\n  Bound result 3\n  Bound result 1\n  Bound result 3\n  Bound result 17\n  Bound result 7\n  Bound result 340282366920938463463374607431768211455\n\nSuite result: ok. 2 passed; 0 failed; 0 skipped; finished in 8.54s (8.54s CPU time)\n\nRan 4 test suites in 8.54s (8.79s CPU time): 36 tests passed, 0 failed, 0 skipped (36 total tests)\n","passed":true},{"durationMs":34,"exitCode":0,"name":"source-index","output":"{\"v\":1,\"entryPoints\":[\"PaidVoting.vote()\"],\"files\":{\".gitignore\":4,\"README.md\":104,\"foundry.toml\":18,\"launch.json\":10,\"remappings.txt\":1,\"src/PaidVoting.sol\":77,\"test/PaidVoting.t.sol\":393,\"test/PaidVotingBoundary.t.sol\":173,\"test/PaidVotingDeployment.t.sol\":67,\"test/PaidVotingInvariant.t.sol\":234},\"excluded\":[\"lib/\",\"node_modules/\"],\"truncated\":false}","passed":true}],"detail":"all checks passed","evaluation":"checks","profile":"foundry","status":"accepted","submissionHash":"bd6957d9ec02d1f04ef58bcef3d1770a7b410b324014f4f5469c49ec45522837","verifiedTreeHash":"6e77241def11054de900bbb178f816eb16c688ea","verifierVersion":"0.1.0+1d62b75e"}]}