Transparency
The contracts, the numbers of the holders' vote, and every rule the contract must keep with the tests that check it.
Contracts
Robinhood Chain Testnet, chain 46630. Each address links to the explorer, where the source of our contracts is published.
- The main contract: the walls, mining, bonds, rewards and the holders' vote0x20b8A711468b8Ff7d61BfE824a806840420128Ec
- The token (HETH)0xa297BdEcdD09703045b425421896f7289568e937
- The launch contract0xB1b9e992279699B97F170509625Bf14205e1FeB6
- Uniswap v4 pool manager (it holds the pool)0x8366a39CC670B4001A1121B8F6A443A643e40951
- WETH (the chain's wrapped ETH)0x7943e237c7F95DA44E0301572D358911207852Fa
Deployed in chain block 132565304: 0x318e6b2bd18fb23e8bc22877d78811a628753e3692a106300c1df0bd5960ece5
After a crash
What happens after a crash: who buys when you sell, and when a sell cannot be paid.
New versions and the holders' voteHolders decide with a simple YES or NO. A new version is approved when the YES voters hold enough Powered H and their score is higher than the NO voters' score. No team key can decide it or stop it.
Read from the contract at one chain block. What the vote is and how to vote: Vote. Times are counted in HETH blocksThe contract's own unit of time, about seven minutes. Mining, rewards and the walls all run on it. It is not the chain's block.; votes weigh by Power Up scoreYour Powered H multiplied by the time you have held it, counted by the contract in whole points: 1 point is 1,000 H Powered for one HETH day. It decides your share of the daily holder rewards and the weight of your vote: twice the score, twice the share..
Reading the live state…
The rules the contract must always keep, and their tests
Each rule is checked by the tests named under it. A sabotage is a deliberate break of the contract that one of those tests must catch.
INV-0 · 65 tests · 33 sabotages
- V2NeverStuck.invariant_every_recovery_action_works
- C1Successor.test_F218_migrate_before_a_successor_says_NoSuccessor_where_the_zero_address_holds_ETH
- WallAudit.invariant_W0_no_unexpected_revert
- V2MoneyInvariants.invariant_heartbeats_never_revert_but_for_not_due
- F09Replay.test_F09_attack_sequence_never_bricks_the_heartbeat
- F09Replay.test_F09_placement_near_the_edge_never_bricks_the_heartbeat
- D46.test_D46_gas_is_linear_in_locked_legacy
- WallAudit.invariant_W3_the_legacy_store_stays_within_its_derivation
- F09Guard.test_F09_a_placement_near_the_tick_edge_is_declined_not_reverted
- Falsifier_S08.test_S08_a_flush_over_the_per_tick_maximum_at_the_upper_tick_is_skipped_and_retried
- Falsifier_S08.test_S08_a_flush_over_the_per_tick_maximum_at_the_lower_tick_is_skipped_and_retried
- Falsifier_S08.test_S08_a_flush_that_exactly_reaches_the_per_tick_maximum_is_placed
- Falsifier_S08.test_S08_a_flush_one_unit_over_the_per_tick_maximum_is_skipped
- WallAudit.invariant_W4_the_price_never_leaves_the_book
- WallAudit.invariant_W5_every_d46_move_does_what_it_must
- V2MoneyInvariants.invariant_the_price_never_leaves_the_book
- V2MoneyInvariants.invariant_every_d46_move_does_what_it_must
- V2NeverStuck.invariant_every_d46_move_does_what_it_must
- C1Successor.test_C1_an_exit_at_100_legacy_rungs_fits_the_ceiling
- F97Proof.testFuzz_F97_a_floored_liquidity_never_costs_more_than_its_amount
- F97Proof.testFuzz_F97_on_tick_aligned_rungs
- AuditStuck.test_S03_the_pol_residue_is_settled_once_and_never_flushed_again
- AuditStuck.test_S03b_ordinary_buys_never_open_a_dust_pol_range
- D46.test_F95_a_dust_cascade_closes_the_sell_side_until_one_small_buy
- D78PendingQueue.test_D78_the_queue_resolves_exactly_as_the_range_did
- S05PendingCatchupGas.test_S05_a_heartbeat_through_a_wide_pending_range_fits_the_gas_ceiling
- S05PendingCatchupGas.test_S05_the_cost_is_the_per_block_resolution_inside_the_range
- V2Defects.test_INV20_donate_refused
- Falsifier_B5.test_B5_A2_a_prepaying_router_sell_rebases_and_completes
- Falsifier_B5.test_B5_a_call_that_did_nothing_does_not_consume_the_blocks_gate
- Falsifier_B5.test_B5_a_slot_only_call_pays_nothing
- Falsifier_B5.test_B5_the_heartbeat_before_the_first_anchor_is_gated_and_unpaid
- Falsifier_B5.test_B5_F244_a_placement_above_zero_and_under_the_minimum_pays_nothing
- Falsifier_F313.test_F313_a_count_at_its_maximum_never_reverts_an_exit_or_a_placement
- Step5eBatch.test_5e2b_fail_succeed_fail_stays_on_native_ETH
- Step5eBatch.test_5e2b_two_failures_in_a_row_switch_to_WETH_and_WETH_is_delivered
- Step5eBatch.test_5e2b_a_wallet_that_calls_the_PoolManager_fails_alone_and_the_batch_completes
- Step5eClaimBound.test_5e2c_a_claim_stops_at_256_entries_and_the_next_claim_pays_the_257th
- Step5eClaimBound.test_5e2c_a_batch_payout_delivers_256_entries_for_their_fee_and_leaves_the_257th
- Falsifier_WallCallGates.test_F306_a_second_wall_call_in_one_block_is_refused_though_new_pending_is_due
- Falsifier_SettleRebateNeverReverts.test_SNR_1_any_arguments_never_revert_with_nothing_reserved
- Falsifier_SettleRebateNeverReverts.test_SNR_1_any_arguments_never_revert_with_a_reserve_from_real_buys
- Falsifier_SettleRebateNeverReverts.test_SNR_1_any_arguments_never_revert_after_rebates_were_fixed_and_forfeited
- Falsifier_SettleRebateNeverReverts.test_SNR_1_any_arguments_never_revert_with_a_successor_active
- Falsifier_SettleRebateNeverReverts.test_SNR_1_any_arguments_never_revert_with_a_successor_active_and_nothing_reserved
- Falsifier_SettleRebateNeverReverts.testFuzz_SNR_1_any_arguments_never_revert_with_nothing_reserved
- Falsifier_SettleRebateNeverReverts.testFuzz_SNR_1_any_arguments_never_revert_with_a_reserve_from_real_buys
- Falsifier_SettleRebateNeverReverts.testFuzz_SNR_1_any_arguments_never_revert_after_rebates_were_fixed_and_forfeited
- Falsifier_SettleRebateNeverReverts.testFuzz_SNR_1_any_arguments_never_revert_with_a_successor_active
- Falsifier_SettleRebateNeverReverts.testFuzz_SNR_1_any_arguments_never_revert_with_a_successor_active_and_nothing_reserved
- Falsifier_SettleRebateNeverReverts.test_SNR_2_any_caller_but_the_token_is_refused
- Falsifier_SettleRebateNeverReverts.testFuzz_SNR_2_any_caller_but_the_token_is_refused
- Falsifier_SettleRebateNeverReverts.test_SNR_3_a_transfer_of_H_with_a_reserved_rebate_in_its_first_day_succeeds_and_settles
- Falsifier_SettleRebateNeverReverts.test_SNR_3_a_transfer_of_H_whose_rebate_is_due_and_never_settled_succeeds_and_settles
- Falsifier_SettleRebateNeverReverts.test_SNR_3_a_transfer_of_H_with_no_rebate_succeeds_and_tells_the_hook_nothing
- Falsifier_SettleRebateNeverReverts.test_SNR_3_transfers_succeed_after_rebates_were_fixed_and_forfeited
- Falsifier_SettleRebateNeverReverts.test_SNR_3_transfers_succeed_after_a_successor_is_active
- Falsifier_SettleRebateNeverReverts.test_SNR_3_transfers_succeed_after_a_successor_is_active_with_nothing_reserved
- Falsifier_SettleRebateNeverReverts.test_SNR_3_with_the_reserve_short_a_transfer_still_succeeds
- Falsifier_SettleRebateNeverReverts.test_SNR_edge_only_a_book_forged_to_the_top_of_uint256_makes_it_revert
- Falsifier_LaunchSettleRebateNeverReverts.test_SNR_1_any_arguments_never_revert_with_the_launch_batchs_rebate_recorded
- Falsifier_LaunchSettleRebateNeverReverts.test_SNR_1_any_arguments_never_revert_with_the_launch_batch_partly_delivered
- Falsifier_LaunchSettleRebateNeverReverts.testFuzz_SNR_1_any_arguments_never_revert_with_the_launch_batchs_rebate_recorded
- Falsifier_LaunchSettleRebateNeverReverts.testFuzz_SNR_1_any_arguments_never_revert_with_the_launch_batch_partly_delivered
- Falsifier_LaunchSettleRebateNeverReverts.test_SNR_3_transfers_by_the_launch_batchs_depositors_succeed_and_settle
INV-1 · 25 tests · 13 sabotages
- WallAudit.invariant_W1_no_rung_pulled_or_moved_at_or_around_the_price
- V2Defects.test_INV05_rung_in_range_survives_heartbeat
- V2Defects.test_INV05b_in_range_rung_not_migrated
- V2Defects.test_INV05c_untouched_rung_with_unplaceable_destination_stays
- InvariantReplaySynthetic.test_R11_a_removal_inside_an_exit_is_the_exception
- InvariantReplaySynthetic.test_R12_the_exception_ends_with_the_exit_call
- InvariantReplaySynthetic.test_R13_a_reverted_exits_nested_removal_never_happened
- InvariantReplaySynthetic.test_R14_a_pull_after_a_reverted_exit_is_judged
- InvariantReplaySynthetic.test_R15_the_exit_frames_resume_keeps_the_exception_open
- Falsifier_B3Ladder.test_B3_a_wall_in_its_zone_4pct_above_is_not_rehung_the_rest_are
- Falsifier_B3Ladder.test_B3_the_TW_alone_keeps_a_wall_in_its_zone_from_a_rehang
- InvariantReplaySynthetic.test_R1_a_removal_near_the_price_is_flagged
- InvariantReplaySynthetic.test_R4_a_shallower_wall_near_the_price_no_longer_locks_a_deeper_one
- InvariantReplaySynthetic.test_R10_the_zone_and_the_guarantee_are_the_independent_percentages
- InvariantReplaySynthetic.test_R16_a_guaranteed_wall_removed_without_its_replacement_is_flagged
- InvariantReplaySynthetic.test_R17_a_guaranteed_wall_moved_up_with_its_ETH_passes
- InvariantReplaySynthetic.test_R18_a_guaranteed_wall_moved_lower_is_flagged
- InvariantReplaySynthetic.test_R19_another_walls_placement_does_not_pay_the_debt
- InvariantReplaySynthetic.test_R20_a_guaranteed_wall_moved_up_with_less_ETH_is_flagged
- InvariantReplaySynthetic.test_R21_the_debt_settles_by_the_end_of_the_call_into_the_hook
- WallAuditW1.test_W1_sees_a_wall_rehung_inside_its_zone
- Falsifier_WallsFollow.test_F235_after_a_small_move_and_after_a_full_step_every_wall_not_reached_is_at_its_new_place
- Falsifier_WallsFollow.test_F246_after_a_rebase_with_legacy_walls_near_the_price_the_new_ladder_follows_the_next_rise
- Falsifier_WallsFollow.test_F247_a_wall_skipped_with_the_price_inside_it_is_at_its_place_after_the_next_call
- Falsifier_WallsFollow.test_F248_after_an_atomic_sell_ratchet_buy_the_next_call_puts_wall0_at_its_place
INV-01 · 3 tests · 3 sabotages
- V2Defects.test_INV01_partial_buy_earns_no_work
- V2Defects.test_INV01a_a_sell_earns_no_work
- V2Defects.test_INV01b_exact_output_swaps_are_refused_by_the_rule
INV-02 · 1 tests · 1 sabotages
- V2Defects.test_INV02_third_party_liquidity_refused
INV-20 · 1 tests · 1 sabotages
- V2Defects.test_INV20_donate_refused
INV-ATTR · 14 tests · 9 sabotages
- V2Defects.test_INVATTR_a_splitting_locker_is_the_swapper
- V2Defects.test_INVATTR_allowlisted_router_credits_its_msgSender
- V2Defects.test_INVATTR_hookData_cannot_redirect_Work
- V2Defects.test_INVATTR_smart_wallet_not_the_bundler
- AuditWorkNoteCaptureTest.test_C01a_a_flash_take_mid_route_captures_nothing
- AuditWorkNoteCaptureTest.test_C01b_a_later_party_in_the_same_tx_captures_nothing
- D51Fixes.test_D51_S11_a_malformed_router_answer_never_bricks_a_swap
- D51Fixes.test_D51_S11_a_dirty_32_byte_router_answer_credits_no_one
- Falsifier_TollEventSeller.test_D215_a_sale_through_the_allowlisted_router_names_the_selling_wallet_and_notes_its_Power_Down
- Falsifier_TollEventSeller.test_D215_the_router_is_asked_for_the_wallet_once_per_sale
- Falsifier_TollEventSeller.test_D215_the_routed_sale_costs_less_gas_than_one_that_asks_the_router_twice
- Falsifier_TollEventSeller.test_D215_a_sale_through_an_allowlisted_router_that_names_no_wallet_names_nobody_and_is_not_refused
- Falsifier_TollEventSeller.test_D215_a_buy_is_unchanged_it_names_the_buying_wallet_or_the_unlisted_router
- Falsifier_TollEventSeller.test_D215_a_sale_by_a_contract_that_is_no_allowlisted_router_names_that_contract
INV-04 · 12 tests · 12 sabotages
- V2MoneyInvariants.invariant_eth_conservation
- C1Successor.test_C1_an_exit_shrinks_every_rung_by_exactly_f
- Falsifier_B3Draw.test_B3_a_rebate_draws_pending_first_then_the_walls_reserve_pro_rata
- Falsifier_B3Exit.test_B3_an_exit_takes_its_share_of_every_walls_reserve
- Falsifier_F250.test_F250_investigate_exit_then_migrate_harvest_release_deep_in_the_dust_regime
- Falsifier_F313.test_F313_after_many_exits_the_ledger_check_holds_and_every_wall_is_within_its_count
- Falsifier_F313.test_F313_the_count_follows_placements_exits_and_closes
- Falsifier_F313.test_F313_the_view_reads_false_for_a_wall_richer_than_its_ledger_and_for_one_beyond_its_count
- V2MoneyInvariants.invariant_no_wall_is_richer_than_its_ledger
- V2MoneyInvariantsDeep.invariant_no_wall_is_richer_than_its_ledger
- Step5eClaims.test_5e2_a_claim_pays_what_accrued_since_the_wallets_last_settlement_with_no_settle_first
- Step5eBatch.test_5e2b_a_WETH_that_refuses_transfers_stops_nothing_and_strands_no_WETH
INV-21 · 8 tests · 6 sabotages
- V2MoneyInvariants.invariant_eth_claims_exact
- V2MoneyInvariants.invariant_eth_solvent
- D96Custody.test_D96_custodyOk_is_true_exactly_while_the_claims_cover_the_owed_sum
- V2MoneyInvariants.invariant_custody_view_agrees_with_the_books
- D51Fixes.test_D51_DRAIN03_placement_never_spends_the_escrow_or_the_holders_eth
- D51Fixes.test_D51_DRAIN03_the_holders_eth_term_keeps_the_holders_eth_backed
- D51Fixes.test_D51_DRAIN03_the_rebate_reserve_term_keeps_the_reserve_backed
- HolderPayoutSolvencyReplay.test_INV21_a_holders_own_payout_that_pays_ETH_leaves_the_claims_covering_what_the_hook_owes
INV-03 · 15 tests · 19 sabotages
- V2MoneyInvariants.invariant_every_claim_that_leaves_arrives_where_the_books_say
- Step5ePull.test_5e2_the_send_is_made_after_the_unlock_and_every_money_function_is_locked
- Step5ePull.test_5e2_claimRewardsTo_pays_the_callers_own_rewards_to_a_destination
- Step5ePull.test_5e2_claimRewards_pays_the_callers_own_ETH_and_H_exactly_once
- Step5ePull.test_5e2_claimRewardsTo_refuses_the_system_addresses
- Step5eClaims.test_5e2_a_destination_that_refuses_ETH_reverts_the_whole_claim_and_nothing_is_lost
- Step5eClaims.test_5e2_a_claim_pays_what_accrued_since_the_wallets_last_settlement_with_no_settle_first
- Step5eClaims.test_5e2_claimRewardsTo_refuses_every_allowlisted_router
- Falsifier_F322.test_F322_claimRewardsTo_refuses_the_launch_batch
- Step5eClaims.test_D151_claimAllRewards_pays_both_kinds_and_tells_the_amounts_apart
- Step5eClaims.test_D151_a_pushed_payout_reports_holder_H_and_mining_H_apart
- Step5eLedger.test_5e_the_lifetime_guard_refuses_a_take_beyond_what_was_accrued
- Step5eLedger.test_5e_only_the_address_itself_can_opt_in_and_it_restarts_the_wait
- Step5eLedger.test_5e_an_address_that_gains_code_stops_earning_at_its_next_touch
- Step5eBatch.test_5e2b_two_failures_in_a_row_switch_to_WETH_and_WETH_is_delivered
INV-06 · 26 tests · 15 sabotages
- V2Defects.test_INV06_no_rung_above_conservative_price
- V2Defects.test_INV06b_lift_before_heartbeat_places_nothing_above_market
- TrueTwap.test_D19_a_painted_pump_cannot_lift_the_anchor
- WallAudit.invariant_W2_no_wall_eth_added_at_or_above_the_market
- AuditStuck.test_S04_the_twap_still_averages_after_2106
- AuditStuck.test_S04_the_twap_after_2106_equals_the_same_history_before_it
- F190Boundary.test_F190_a_placement_at_a_rungs_lower_edge_is_refused_by_the_hooks_check
- B3ZonePredicates.test_B3_untouched_and_reached
- WallAuditW2.test_W2_sees_wall_eth_placed_into_a_wall_whose_lower_edge_is_the_market
- WallAuditW2Replay.test_F325_the_counterexamples_wall_is_placed_under_the_price_and_the_same_sell_then_enters_it
- WallAuditW2Replay.test_F325_W2_does_not_flag_a_wall_placed_under_the_price_and_sold_into_by_the_same_swap
- InvariantReplaySynthetic.test_R22_an_addition_under_the_price_is_counted_and_passes
- InvariantReplaySynthetic.test_R23_an_addition_with_the_price_at_the_walls_lower_edge_is_flagged
- InvariantReplaySynthetic.test_R24_an_addition_with_the_price_inside_or_past_the_wall_is_flagged
- InvariantReplaySynthetic.test_R25_an_addition_is_judged_at_the_price_of_its_own_moment
- InvariantReplaySynthetic.test_R26_a_reverted_addition_never_happened
- InvariantReplaySynthetic.test_R27_only_the_hooks_wall_additions_are_judged
- Falsifier_TwapTrueMean.test_D19_the_average_is_a_mean_of_prices_in_force_seed_1
- Falsifier_TwapTrueMean.test_D19_the_average_is_a_mean_of_prices_in_force_seed_2
- Falsifier_TwapTrueMean.test_D19_the_average_is_a_mean_of_prices_in_force_seed_3
- Falsifier_TwapTrueMean.test_D19_at_every_cell_of_quiet_blocks_and_first_seconds_the_average_is_a_mean_of_prices_in_force
- Falsifier_TwapTrueMean.test_D19_after_a_quiet_HETH_day_the_day_average_at_the_first_trade_is_the_true_mean_since_the_last_traded_block
- Falsifier_TwapTrueMean.test_D19_with_a_full_ring_of_snapshots_the_average_is_still_a_mean_of_prices_in_force
- Falsifier_TwapTrueMean.test_D19_at_a_negative_tick_the_average_is_a_mean_of_prices_in_force_and_S2s_rounding_is_the_negative_one
- Falsifier_TwapTrueMean.test_D19_one_second_one_tick_higher_with_positive_ticks_the_average_is_the_means_round_up
- Falsifier_TwapTrueMean.test_D19_one_second_one_tick_higher_with_negative_ticks_the_average_is_one_tick_under_the_means_round_up
INV-07 · 52 tests · 45 sabotages
- V2Defects.test_INV07_empty_underwater_ladder_rebases_next_beat
- WallsD42.test_D42_a_genuine_crash_rebases_within_one_block
- Step4Place.test_4b_underwater_rebases_and_places_the_next_block
- D46.test_D46_a_cascade_rearms_within_one_block
- D46.test_D47_a_dust_crumb_rebases_in_the_next_block
- D46.test_D46_a_rebase_releases_unlocked_legacy_first
- WallsD42.test_INV07_C1_a_lift_back_into_a_rung_is_not_underwater_under_the_live_price
- Falsifier_B3Rest.test_B3_after_a_rebase_the_walls_return_one_by_one_as_the_price_recovers
- B3RecoveryGateMath.test_B3_gate_low_follows_the_fall_and_the_level_has_no_latch
- B3RecoveryGateMath.test_B3_gate_thresholds_are_the_first_tick_at_n_times_5pct
- Falsifier_B4.test_F199_a_rebase_under_the_minimum_places_nothing_moves_no_edge_and_pays_nothing
- Falsifier_B4.test_F256_the_close_is_the_exact_price_not_a_whole_tick
- Falsifier_B4.test_B4_a_dust_buy_back_into_the_last_wall_does_not_hold_the_rebase_off
- Falsifier_B4.test_F261_with_L6_absent_a_crash_to_the_deepest_standing_wall_rebases
- Falsifier_B4.test_F269_the_first_anchor_is_not_a_crash
- Falsifier_B4.test_F269_after_an_empty_rebase_a_further_fall_is_not_another_crash
- Falsifier_B5.test_B5_A2_rebases_inside_the_first_buy_of_a_crash_block_and_the_buy_completes
- Falsifier_B5.test_B5_A2_a_failed_step_is_retried_by_the_next_swap_of_the_block
- Falsifier_B5.test_B5_A2_runs_before_the_buys_toll
- Falsifier_B5.test_B5_A2_never_releases_legacy_inside_the_swap
- Falsifier_WallsBurnRebase.test_F232_a_crash_condition_held_one_second_at_a_boundary_rebases_within_that_block
- Falsifier_WallsBurnRebase.test_F249_a_crossed_wall_past_its_bounce_zone_is_burned_at_the_next_wall_call
- D148WatchReplay.test_F320_no_rebase_is_demanded_while_no_wall_has_stood
- D148WatchReplay.test_a_crash_through_standing_walls_is_watched_and_rebased
- WatchThereAndBackReplay.test_F330_a_price_that_left_and_came_back_is_a_trade_since
- Falsifier_PlaceRebaseOrder.test_a_ladder_burned_by_the_calls_own_harvest_is_rebased_in_that_same_call
- Falsifier_PlaceRebaseOrder.test_the_same_with_the_keepers_calls_after_every_trade_of_the_straddled_blocks
- Falsifier_PlaceRebaseOrder.test_control_already_underwater_before_the_harvest_rebases_in_that_call
- Falsifier_EmptyRebase.test_D202_once_the_walls_ETH_reaches_the_minimum_one_wall_call_stands_wall_6_at_the_new_anchor
- Falsifier_EmptyRebase.test_D202_with_no_wall_call_the_next_blocks_first_trade_stands_wall_6
- Falsifier_EmptyRebase.test_D202_a_fall_inside_the_block_makes_the_branch_wait_one_block
- Falsifier_EmptyRebase.test_D202_a_legacy_wall_across_wall_6s_place_holds_the_rebase_until_it_is_released
- Falsifier_EmptyRebase.test_D202_generation_0_before_its_first_wall_is_not_an_empty_generation
- Falsifier_EmptyRebase.test_D202_an_empty_generation_under_the_minimum_is_not_rebased_again_in_200_blocks
- Falsifier_EmptyRebase.test_D202_at_the_ends_of_the_tick_range_a_wall_6_from_the_minimum_up_gets_no_liquidity_or_passes_the_cap
- Falsifier_EmptyRebaseFit.test_D202_an_empty_generation_whose_wall_6_cannot_be_placed_is_not_rebased_again_by_the_wall_calls
- Falsifier_EmptyRebaseFit.test_D202_nor_by_the_next_blocks_first_trade
- Falsifier_EmptyRebaseFit.test_D202_where_a_wall_6_gets_no_liquidity_or_passes_the_cap
- Measure_EmptyRebase.test_measure_A_after_an_empty_rebase_the_price_falls_on_under_the_minimum_and_a_wall_stands_once_it_is_reached
- Measure_EmptyRebase.test_measure_B_after_an_empty_rebase_at_the_books_edge_every_sell_is_refused
- EmptyRebaseCampaignReplay.test_D202_the_campaigns_own_actions_reach_an_empty_generation_and_its_second_rebase
- DeployPreflight.test_D202_a_wall_minimum_at_its_ceiling_passes_and_one_wei_above_it_is_refused
- DeployPreflight.test_D202_a_ceiling_of_zero_is_refused
- DeployPreflight.test_D202_on_the_ETH_pairs_chains_the_ceiling_is_one_thousandth_of_an_ETH
- V2MoneyInvariants.invariant_D202_no_wall_is_formed_under_the_minimum
- V2MoneyInvariants.invariant_D202_a_rebase_out_of_an_empty_generation_leaves_a_wall_standing
- V2MoneyInvariantsBigMinimum.invariant_D202_no_wall_is_formed_under_the_minimum
- V2MoneyInvariantsBigMinimum.invariant_D202_a_rebase_out_of_an_empty_generation_leaves_a_wall_standing
- DeployPreflight.test_D202_a_wall_minimum_at_its_floor_passes_and_one_wei_under_it_is_refused
- DeployPreflight.test_D202_a_floor_of_zero_is_refused
- DeployPreflight.test_D202_on_the_ETH_pairs_chains_the_floor_is_one_hundred_thousandth_of_an_ETH
- Falsifier_EmptyRebaseFit.test_D202_from_the_floor_up_the_fit_at_the_minimum_never_refuses_where_the_fit_at_the_whole_pool_does_not
INV-08 · 14 tests · 15 sabotages
- V2MoneyInvariants.invariant_events_rebuild_the_wall
- Step4Events.test_4d_harvest_of_a_crossed_rung_is_rebuilt_from_events
- Step4Events.test_lock_legacy_move_reform_release_rebuilt_from_events
- Falsifier_B3Draw.test_B6_a_draw_beyond_pending_is_rebuilt_from_events
- Falsifier_B3Exit.test_B6_an_exit_through_a_wall_holding_H_is_rebuilt_from_events
- Falsifier_B3Exit.test_B3_an_exit_takes_its_share_of_every_walls_reserve
- Falsifier_B5.test_B5_A2_H_claims_are_not_float_and_are_burned_by_the_next_call
- Falsifier_F182.test_F182_INV08_a_ratchet_at_the_testnet_price_is_rebuilt_by_its_events
- Falsifier_F182.test_F182_INV08_a_ratchet_deep_in_the_dust_regime_is_rebuilt_by_its_events
- Falsifier_B3Merge.test_B3_a_dust_wall_that_would_not_fit_merges_into_its_own_held_ETH
- Falsifier_B3Merge.test_B3_a_dust_wall_merges_into_the_next_wall_when_it_fits
- Falsifier_F251.test_F251_dust_walls_left_by_exits_are_merged_by_the_next_wall_call
- Falsifier_ExitRebate.test_D171_the_events_mirror_rebuilds_pending_across_an_activation
- Falsifier_B3Draw.test_B6_a_capped_draw_with_nothing_held_is_rebuilt_from_events
INV-10 · 18 tests · 8 sabotages
- F328Replay.test_F328_the_thirteen_calls_never_wrap_the_supply_and_the_mint_goes_through
- V2MoneyInvariants.invariant_the_schedule_is_never_oversold
- Step2Bonds.test_2c_a_delivered_bond_is_counted_in_totalMinted
- V2MoneyInvariants.invariant_the_supply_is_exactly_minted_less_burned
- D76MintCap.test_D76_a_mint_past_the_cap_reverts_CapExceeded
- D76MintCap.test_D76_burns_never_lower_mintedTotal
- D76MintCap.test_D76_a_product_settle_past_the_cap_reverts_whole
- D76MintCap.test_D76_the_cap_is_the_schedules_hard_cap
- D76MintCap.test_D76_a_mint_emits_Minted_with_its_kind_and_the_new_total
- D76MintCap.test_D76_genesis_settle_counts_GENESIS
- D76MintCap.test_D76_a_miners_settle_counts_MINER
- D76MintCap.test_D76_a_holders_batch_payout_counts_HOLDER
- D76MintCap.test_D76_an_own_payout_counts_HOLDER
- D76MintCap.test_D76_a_bond_delivery_counts_BOND
- D76MintCap.test_D76_hook_totalMinted_is_the_tokens_count
- V2MoneyInvariants.invariant_totalMinted_is_the_tokens
- Falsifier_B5.test_B5_A2_H_claims_are_not_float_and_are_burned_by_the_next_call
- Step5ePull.test_5e2_the_global_H_cap_refuses_a_mint_beyond_the_H_booked
INV-19 · 1 tests · 2 sabotages
- Step5Maturity.test_5a_reward_is_not_claimable_before_209_confirmations
INV-23 · 9 tests · 8 sabotages
- Step2Release.test_2b_the_release_follows_demand_exactly
- Step2Release.test_2b_the_vein_holds_closed_blocks_only
- V2MoneyInvariants.invariant_the_schedule_is_never_oversold
- AuditStuck.test_S05_a_long_idle_block_waits_then_gets_its_release
- AuditStuck.test_S05_the_claim_cursor_waits_at_a_pending_block
- D51DeadMarket.test_D51_F05_a_dust_bot_in_a_dead_market_earns_at_most_1pct_of_the_day
- Step2Release.test_2b_INV23a_rising_demand_releases_at_most_the_whole_block
- Step5eClaimBound.test_5e2c_a_claim_stops_at_256_entries_and_the_next_claim_pays_the_257th
- Falsifier_WallsLaunch.test_F240_the_launch_fill_toll_does_not_seed_the_demand_record
INV-24 · 3 tests · 1 sabotages
- Step2Bonds.test_2c_delivery_after_209_blocks_to_the_buyer_once
- Step2Bonds.test_2c_a_bond_sells_vein_H_at_the_locked_price_and_funds_the_walls
- Step5eBonds.test_5e2c_a_bond_not_yet_due_is_skipped_never_a_revert
INV-V1-REPLAY · 6 tests · 3 sabotages
- V1Defects.test_INV02_third_party_liquidity_refused
- V1Defects.test_INV05_rung_in_range_survives_heartbeat
- V1Defects.test_INV06_no_rung_above_conservative_price
- V2Defects.test_INV02_third_party_liquidity_refused
- V2Defects.test_INV05_rung_in_range_survives_heartbeat
- V2Defects.test_INV06_no_rung_above_conservative_price
INV-NO-ADMIN · 0 tests · 0 sabotages
INV-NO-ORACLE · 0 tests · 0 sabotages
INV-NO-FREE-PRICE · 6 tests · 3 sabotages
- D46.test_D46_a_sell_past_the_last_bid_is_refused_and_moves_nothing
- D46.test_D46_the_paint_is_impossible
- D46.test_D46_the_vein_cannot_be_painted
- D46.test_D46_the_edge_freeze_is_impossible
- D46.test_D46_the_pol_flush_never_raises_the_book_edge
- D46Launch.test_D46_the_first_pol_flush_raises_the_book_edge_from_no_book
INV-SELL-NEVER-REFUSED · 6 tests · 4 sabotages
- D46.test_D46_ordinary_trading_is_unchanged
- D46.test_D46_the_last_wall_is_finished_by_a_limit_sell
- D46.test_D46_a_partial_sell_pays_for_every_H
- D46.test_D46_a_total_collapse_is_not_stuck
- D46.test_D47_a_dust_crumb_rebases_in_the_next_block
- F95ThinPool.test_F95_with_no_walls_sells_are_paid_by_the_pools_thin_liquidity_down_to_the_edge
INV-BOND-CAP · 29 tests · 39 sabotages
- D46.test_D43_one_bond_takes_at_most_1pct_of_the_vein
- D46.test_D43_one_block_sells_at_most_5pct
- Falsifier_BondLivePrice.test_D204_a_bond_is_never_sold_more_than_ten_percent_under_the_last_close_while_others_buy_under_the_minimum
- Falsifier_BondLivePrice.test_D204_no_quote_is_above_the_old_rules_and_every_quote_is_the_three_reading_formula
- Falsifier_BondLivePrice.test_D204_a_dump_a_bond_and_a_buy_back_pay_in_no_cell
- Falsifier_BondLivePrice.test_D204_a_dump_the_blocks_five_bonds_and_a_buy_back_pay_in_no_cell
- Falsifier_BondLivePrice.test_D204_after_a_day_of_buys_under_the_minimum_the_bond_is_priced_at_the_last_close_exactly
- Falsifier_BondLivePrice.test_D204_in_a_falling_market_the_bond_is_priced_as_before_to_the_wei
- V2MoneyInvariants.invariant_D204_a_bond_quote_is_never_above_the_old_rules_nor_a_quote_at_the_last_close
- Falsifier_BondLivePrice.test_D204_two_bonds_in_one_block_with_a_buy_of_any_size_between_them_receive_the_same_H_to_the_wei
- Falsifier_BondLivePrice.test_D204_a_pump_inside_the_block_does_not_change_the_pumpers_own_bond
- Falsifier_BondLivePrice.test_D204_bondReference_answers_where_bondQuote_refuses_and_before_the_first_trade_it_shows_no_reference
- D204CloseReplay.test_D204_the_campaigns_own_actions_reach_the_close_as_the_deciding_reading_and_a_trade_in_the_block_does_not_move_it
- Falsifier_BondBlockStart.test_D214_1_two_bonds_at_a_blocks_first_and_last_second_with_a_buy_between_receive_the_same_H_to_the_wei
- Falsifier_BondBlockStart.test_D214_3_with_no_trade_and_after_a_trade_free_block_the_reference_is_the_present_time_rule_read_at_the_blocks_first_second
- Falsifier_BondBlockStart.test_D217_5_the_stored_word_is_the_records_last_accrual_before_the_block_and_never_changes_inside_a_block
- Falsifier_BondBlockStart.test_D214_2_bondReference_is_the_same_at_every_second_of_a_block_except_the_live_price_and_is_what_bondQuote_used
- Falsifier_BondBlockStart.test_D214_6_nothing_else_moved_twapTick_the_exits_preview_and_the_wall_call_are_the_build_before_to_the_wei
- Falsifier_BondBlockStart.test_D214_6_nothing_else_moved_in_the_block_of_the_first_trade_ever
- Falsifier_BondLivePrice.test_D214_a_later_bond_of_the_same_block_after_a_buy_that_meets_the_minimum_is_the_quote_before_the_buy_to_the_wei
- Falsifier_BondBlockStart.test_D217_1c_in_every_cell_the_bond_before_and_the_bond_after_a_blocks_first_trade_receive_the_same_H_to_the_wei
- Falsifier_BondBlockStart.test_D217_1c_after_a_full_ring_of_300_traded_blocks_the_readings_are_the_present_time_rules_at_each_blocks_first_second
- Falsifier_BondBlockStart.test_D217_5_in_the_block_of_the_first_trade_ever_the_stored_word_is_the_records_first_point
- Falsifier_BondBlockStart.test_D217_5_the_same_when_the_first_trade_ever_is_at_its_blocks_first_second
- Falsifier_BondBlockStart.test_D217_1d_no_bond_before_the_first_trade_ever_nor_in_its_block_and_bondReference_shows_no_reference_there
- Falsifier_BondBlockStart.test_D217_1d_the_same_when_the_first_trade_ever_is_at_its_blocks_first_second
- Falsifier_BondBlockStart.test_D217_1d_after_a_failed_launch_no_bond_before_the_first_trade_nor_in_its_block
- Falsifier_BondBlockStart.test_D217_1d_no_bond_in_the_launch_fills_own_block_and_the_next_block_sells_one_at_its_start
- Falsifier_BondBlockStart.test_D217_1d_the_same_when_the_launch_fill_is_in_the_first_tradable_block
INV-EXIT-FAIR · 70 tests · 49 sabotages
- C1Successor.test_C1_an_exit_shrinks_every_rung_by_exactly_f
- C1Successor.test_C1_exits_are_order_independent
- C1Successor.test_C1_a_locked_rung_shrinks_too
- C1Successor.test_C1_no_exit_before_a_successor
- C1Successor.test_C1_a_migration_needs_the_successors_acceptance
- C1Successor.test_C1_a_successor_without_the_interface_takes_nothing
- RehearsalE2E.test_REH_a_migration_end_to_end
- RehearsalE2E.test_REH_the_launch_deadline
- RehearsalE2E.test_REH_a_stranger_cannot_mint
- C1Successor.test_C1_preview_equals_the_exit_to_the_wei
- C1Successor.test_F149_H_bought_from_the_POL_in_the_same_transaction_does_not_inflate_the_exit
- C1Successor.test_D75_a_dump_then_exit_in_one_transaction_is_not_inflated
- C1Successor.test_D75_at_rest_the_exit_fraction_is_unchanged
- ExitFairDonation.test_INV_EXIT_FAIR_a_donation_never_raises_an_exit_by_more_than_its_value
- ExitFairDonation.test_INV_EXIT_FAIR_measure_buy_and_donate_vs_buy_and_exit_in_the_cheap_state
- Falsifier_B3Exit.test_B3_an_exit_takes_its_share_of_every_walls_reserve
- Falsifier_B5.test_B5_A2_H_claims_are_not_float_and_are_burned_by_the_next_call
- Falsifier_D89.test_D152_two_orders_pay_within_the_stated_bound_with_the_price_at_rest_inside_a_wall
- Falsifier_D89.test_D152_two_orders_pay_within_the_stated_bound_when_only_the_live_price_is_inside_the_wall
- Falsifier_D89.test_D152_two_orders_pay_within_the_stated_bound_when_only_the_time_weighted_price_is_inside_the_wall
- Falsifier_D89.test_D152_an_exit_takes_exactly_f_from_every_wall_also_the_one_in_range
- Falsifier_D89.test_D152_a_legacy_wall_in_range_shrinks_by_exactly_f_as_every_other_wall
- Falsifier_D89.test_D152_a_migration_takes_exactly_f_from_the_in_range_wall_too
- Falsifier_D89.test_D152_two_orders_pay_within_the_stated_bound_when_a_wall_lies_between_the_two_prices
- Falsifier_ExitRebate.test_D171_two_equal_exits_by_holders_never_settled_are_paid_alike_in_either_order
- Falsifier_ExitRebate.test_D171_an_exit_and_a_migration_of_equal_H_are_paid_alike_in_either_order
- Falsifier_ExitRebate.test_D171_a_stayers_preview_does_not_rise_when_others_leave_and_equals_its_exit
- Falsifier_ExitRebate.test_D171_after_an_activation_a_forfeited_rebate_is_in_the_holders_pool_never_in_pending
- Falsifier_ExitRebate.test_D171_the_forfeits_are_paid_at_the_next_payday_to_the_wallets_holding_Powered_H
- Falsifier_ExitRebate.test_D171_before_an_activation_a_forfeit_goes_to_pending_and_in_the_same_transaction_after_it_to_the_pool
- Falsifier_ExitRebate.test_D171_a_zero_forfeit_changes_nothing_and_the_saturated_remainder_takes_the_same_route
- Falsifier_ExitRebate.test_D171_control_with_every_holder_settled_first_two_equal_exits_are_paid_alike
- Falsifier_ExitFloat.test_D180_a_mining_reward_settled_between_two_equal_exits_moves_neither_payout
- Falsifier_ExitFloat.test_D180_the_holders_H_claimed_between_two_equal_exits_moves_neither_payout
- Falsifier_ExitFloat.test_D180_a_bond_delivered_between_two_equal_exits_moves_neither_payout
- Falsifier_ExitFloat.test_D180_a_payout_batch_between_two_equal_exits_moves_neither_payout
- Falsifier_ExitFloat.test_D180_an_exit_and_a_migration_with_every_owed_kind_minted_between_are_paid_alike
- Falsifier_ExitFloat.test_D180_owedUnmintedH_equals_an_independent_count_of_what_is_owed
- Falsifier_ExitFloat.test_D180_a_mint_moves_the_exits_float_by_zero_and_the_circulating_float_by_the_mint
- Falsifier_ExitFloat.test_D180_the_fraction_is_taken_on_the_float_plus_the_owed_H_and_the_preview_equals_the_exit
- Falsifier_ExitFloat.test_D180_each_bracket_is_floored_at_zero_and_never_reverts
- Falsifier_ExitFloat.test_D180_after_an_activation_a_void_proposals_deposit_goes_to_the_holders_pool_never_to_pending
- Falsifier_ExitFloat.test_D180_a_leaver_who_calls_finalizeVotes_first_gains_nothing_over_an_equal_leaver
- Falsifier_ExitFloat.test_D180_before_an_activation_a_forfeited_deposit_still_enters_pending
- Falsifier_ExitFloat.test_D180_control_with_nothing_minted_between_two_equal_exits_are_paid_alike
- Falsifier_ExitFloat.test_D180_control_a_block_mined_without_a_lag_is_in_the_term_at_once
- Falsifier_ExitFloat.test_D181_a_PENDING_blocks_booking_never_raises_the_owed_term_nor_lowers_an_exits_fraction
- Falsifier_ExitPendingCeiling.test_D181_an_exit_and_a_migration_before_a_PENDING_block_is_booked_are_paid_at_most_what_they_are_after
- Falsifier_ExitPendingCeiling.test_D181_three_PENDING_blocks_are_counted_as_one_sum_and_no_call_on_the_way_raises_the_term
- Falsifier_ExitPendingCeiling.test_D181_an_exit_in_the_block_whose_first_Work_is_PENDING_counts_its_reward
- Falsifier_ExitPendingCeiling.test_D181_with_no_PENDING_block_the_term_the_fraction_and_the_payouts_are_unchanged_to_the_wei
- Falsifier_ExitPendingCeilingEdge.test_D181_at_a_release_fraction_of_one_the_exit_before_the_booking_equals_the_exit_after_it
- Falsifier_ExitMinimum.test_D201_an_exit_one_wei_above_its_preview_reverts_and_moves_nothing_and_at_the_figure_pays_it
- Falsifier_ExitMinimum.test_D201_a_migration_one_wei_above_its_preview_reverts_and_moves_nothing_and_at_the_figure_pays_it
- Falsifier_ExitMinimum.test_D201_the_minimum_is_checked_before_the_successor_is_called
- Falsifier_ExitMinimum.test_D201_after_a_large_sale_the_settled_preview_is_what_the_exit_pays_three_blocks_later
- Falsifier_ExitMinimum.test_D201_with_the_price_inside_a_tick_the_settled_preview_stays_above_the_exit_by_less_than_a_tick
- Falsifier_ExitMinimum.test_D201_after_a_buy_and_in_a_quiet_market_on_a_tick_the_two_previews_are_equal_to_the_wei
- Falsifier_ExitMinimum.test_D201_the_settled_preview_answers_in_every_state_and_reads_one_at_the_float
- V2MoneyInvariants.invariant_D201_the_settled_preview_is_never_below_the_exits_own
- Measure_ExitPaintedRecord.test_D209_a_record_held_low_and_a_dump_in_the_exits_own_transaction_do_not_raise_the_exits_fraction
- Measure_ExitPaintedRecord.test_D209_the_same_with_the_walls_ETH_raised_by_forty_blocks_of_bonds
- Measure_ExitPaintedRecord.test_D209_the_same_with_the_walls_ETH_raised_by_four_blocks_of_bonds
- Falsifier_ExitFloatClose.test_D209_in_a_quiet_market_and_after_a_buy_the_exit_and_both_previews_are_as_before_to_the_wei
- Falsifier_ExitFloatClose.test_D209_inside_a_large_sales_own_block_after_a_quiet_market_the_exit_is_as_before_to_the_wei
- Falsifier_ExitFloatClose.test_D209_after_a_rise_a_sale_in_the_exits_own_block_leaves_the_exit_on_the_closes_float
- Falsifier_ExitFloatClose.test_D209_from_the_block_after_a_large_sale_on_the_exit_is_as_before_to_the_wei
- V2MoneyInvariants.invariant_D209_the_exits_fraction_is_never_above_the_rule_before_the_close_was_read
- Falsifier_ExitCloseWallCall.test_D238_a_wall_call_between_the_dump_and_the_exit_lowers_the_closes_float_by_the_burned_H_and_no_more_with_forty_blocks_of_bonds
- Falsifier_ExitCloseWallCall.test_D238_a_wall_call_between_the_dump_and_the_exit_lowers_the_closes_float_by_the_burned_H_and_no_more_with_no_bonds
INV-NO-DUMP-ADVANTAGE · 7 tests · 4 sabotages
- Step5cScoreMath.testFuzz_5c_INV_PD_PATH_two_outflows_compose
- Step5cScoreMath.testFuzz_5c_INV_PD_PATH_inside_the_shield
- Step5cScoreMath.testFuzz_5c_waiting_between_parts_never_costs_more
- Step5cScoreMath.testFuzz_5c_tax_between_floor_and_toll
- Step5cScoreMath.test_5c_carl_sells_all_at_five_days
- Falsifier_F198.test_F198_INV_NO_DUMP_ADVANTAGE_a_fold_between_the_parts_costs_at_most_the_measured_transient
- Falsifier_F198.test_F198_INV_NO_DUMP_ADVANTAGE_from_50_blocks_after_a_fold_waiting_is_never_dearer
INV-PD-PATH · 5 tests · 1 sabotages
- Step5cScoreMath.testFuzz_5c_INV_PD_PATH_two_outflows_compose
- Step5cScoreMath.testFuzz_5c_INV_PD_PATH_inside_the_shield
- Step5cScoreMath.test_5c_anna_half_closed_form
- Step5cScoreMath.test_5c_shield_phase_is_three_percent
- Step5cScore.test_5c_anna_half_on_the_token
INV-FRESH-NO-PD · 2 tests · 2 sabotages
- Step5cScore.test_5c_INV_FRESH_NO_PD_bob_and_anna
- Step5cScore.test_5c_anna_half_on_the_token
INV-SCORE-SPLIT · 20 tests · 21 sabotages
- Step5cScore.test_5c_INV_SCORE_SPLIT
- Step5cScore.test_5c_pools_sum_exactly_and_never_overpay
- Step5cScoreMath.test_5c_tier_exactly_at_each_threshold
- Step5cScore.test_5c_powered_exactly_209_blocks_after_arrival_live
- Step5cScoreMath.test_5c_F197_unequal_age_lots_owe_less_split_than_merged_at_400_and_436_blocks
- Step5cScore.testFuzz_5c_F105_the_older_piles_merge_is_unreachable
- Step5dPools.test_5d_the_launch_payout_is_pro_rata_to_the_score
- Step5dLoyaltyPays.test_5d_the_launch_payday_pays_the_whole_loyalty_accumulation_over_the_score
- Step5dLoyaltyPays.test_5d_after_the_launch_the_loyalty_pool_pays_each_Loyal_wallet_by_its_Powered_H
- Step5cPiles.test_5c_a_settled_wallet_reaches_the_loyal_total_at_its_crossing_untouched
- Falsifier_ScorePoints.test_SP_one_point_is_1000_H_Powered_for_one_HETH_day
- Falsifier_ScorePoints.test_SP_1000_H_Powered_read_0_one_second_before_their_pooled_day_is_full
- Falsifier_ScorePoints.test_SP_999_H_read_zero_at_one_day_points_round_down
- Falsifier_ScorePoints.test_SP_the_point_is_the_locked_constant
- Falsifier_ScorePoints.testFuzz_SP_the_views_are_the_raw_figures_in_points
- Falsifier_ScorePoints.test_SP_totalScore_is_the_stored_global_pair_in_points
- Falsifier_ScorePoints.test_SP_daysHeldOf_is_30_exactly_when_pilesOf_first_reports_Loyal
- Falsifier_ScorePoints.test_SP_the_four_live_rows_of_the_locked_table
- Falsifier_ScorePoints.test_SP_the_token_fits_and_the_three_views_are_bounded_reads
- NothingMoved_ScorePointsPins.test_SP_nothing_else_moved_the_figures_of_the_build_before
INV-REBATE-HELD · 9 tests · 10 sabotages
- Step5cScore.test_5c_INV_REBATE_HELD_a_buy_reserves_and_fixes_at_power_up
- Step5cScore.test_5c_INV_REBATE_HELD_a_sold_share_forfeits
- Step5cScore.test_5c_the_rebate_reads_the_tier_at_power_up_not_at_settlement
- Step5cScore.test_5c_erik_weekly_buys_rebates_follow_the_tier
- Step5cScore.test_5c_a_custody_router_buy_reserves_nothing
- V2MoneyInvariants.invariant_the_rebate_reserve_is_exactly_the_piles_rebates
- Step5cRebateFloor.test_5c_a_rebate_fixed_while_the_pool_is_Loyal_is_owed_whole
- Step5cRebateFloor.test_5c_a_claim_at_power_up_fixes_the_rebate_and_pays_it_with_no_settle_first
- Step5cRebateFloor.test_5c_a_waiting_piles_rebate_returns_to_pending_when_its_wallet_stops_earning
INV-REBATE · 4 tests · 3 sabotages
- Step5cScore.test_5c_a_sale_is_credited_its_discount
- Step5fPowerDown.test_5f_another_wallets_H_in_the_same_tx_takes_nothing
- Step5fPowerDown.test_5f_H_arriving_without_a_sale_is_not_credited
- Falsifier_B3Draw.test_B3_a_rebate_draws_pending_first_then_the_walls_reserve_pro_rata
INV-NO-TAKE · 3 tests · 1 sabotages
- D46.test_D46_a_sell_past_the_last_bid_is_refused_and_moves_nothing
- D46.test_D46_a_sell_paid_nothing_is_refused
- D46.test_D46_a_partial_sell_pays_for_every_H
INV-SUCCESSOR-BY-HOLDERS · 79 tests · 41 sabotages
- C2HolderSuccessor.test_C2_a_7702_account_is_refused_as_successor
- C2HolderSuccessor.test_C2_a_proposal_needs_the_exact_deposit
- C2HolderSuccessor.test_C2_a_proposal_opens_nothing
- C2HolderSuccessor.test_C2_a_successor_is_a_contract_never_a_system_address
- C2HolderSuccessor.test_C2_an_approval_refunds_the_deposit_to_its_payer
- C2HolderSuccessor.test_C2_approval_grace_activation_then_exit
- C2HolderSuccessor.test_C2_changed_code_voids_the_approval
- C2HolderSuccessor.test_C2_junk_proposals_never_block_a_voted_one
- C2HolderSuccessor.test_C2_no_activation_inside_the_grace
- C2HolderSuccessor.test_C2_no_activation_without_approval
- C2HolderSuccessor.test_C2_nothing_is_decided_before_the_count_is_over
- C2HolderSuccessor.test_C2_yes_below_twenty_percent_fails_and_forfeits_the_deposit
- C2HolderSuccessor.test_D81_migrate_only_to_the_voted_code
- C2RedTeam.test_RT01_control_without_fresh_H_the_majority_defeats_the_junk
- C2RedTeam.test_RT01a_H_still_waiting_at_the_close_gets_no_weight
- C2RedTeam.test_RT01b_fresh_H_cannot_pass_junk_against_the_majority
- C2RedTeam.test_RT01c_a_pile_powered_exactly_at_the_close_counts_exactly_itself
- C2RedTeam.test_RT02a_junk_proposed_after_a_voted_proposal_never_delays_it
- C2RedTeam.test_RT02b_a_minority_whale_cannot_delay_a_voted_proposal_with_junk_ahead_of_it
- C2RedTeam.test_RT03a_a_refusing_payer_breaks_no_book_and_blocks_nothing
- C2RedTeam.test_RT03b_reentering_claimDeposit_pays_once
- C2RedTeam.test_RT04_selfdestruct_cannot_change_a_proposed_successors_code
- Falsifier_VoteOneStage.test_W4_a_lone_holder_under_20_percent_is_not_approved_while_the_others_are_unsettled
- Falsifier_VoteOneStage.test_W4_control_the_unsettled_majority_approves
- Falsifier_VoteOneStage.test_W4_nothing_after_the_close_changes_a_counted_weight_or_the_supply_figure
- Falsifier_VoteOneStage.test_W4_settling_the_others_changes_no_figure
- VoteOneStage.testFuzz_VOTE_the_hook_and_the_token_read_the_same_block
- VoteOneStage.test_VOTE_H_moved_after_the_close_counts_in_neither_a_second_wallet_nor_twice
- VoteOneStage.test_VOTE_H_waiting_at_the_close_counts_zero_even_if_counted_late
- VoteOneStage.test_VOTE_a_ballot_and_its_count_touch_no_pool
- VoteOneStage.test_VOTE_a_buy_and_time_after_the_close_change_no_counted_weight
- VoteOneStage.test_VOTE_a_failed_proposal_with_full_participation_forfeits_into_pending
- VoteOneStage.test_VOTE_a_non_earning_contract_and_a_system_address_count_zero
- VoteOneStage.test_VOTE_a_sale_after_the_close_changes_no_counted_weight
- VoteOneStage.test_VOTE_a_settle_after_the_close_changes_no_counted_weight
- VoteOneStage.test_VOTE_a_void_proposal_forfeits_its_deposit
- VoteOneStage.test_VOTE_a_voided_approval_keeps_its_refund
- VoteOneStage.test_VOTE_a_voided_approval_lets_an_undecided_proposal_pass
- VoteOneStage.test_VOTE_after_activation_propose_and_vote_revert_and_open_proposals_are_void
- VoteOneStage.test_VOTE_an_approved_proposal_returns_its_deposit
- VoteOneStage.test_VOTE_an_exit_burn_after_a_close_records_the_figure_before_it
- VoteOneStage.test_VOTE_an_incoming_gift_after_the_close_changes_no_counted_weight
- VoteOneStage.test_VOTE_an_uncounted_ballot_does_not_count
- VoteOneStage.test_VOTE_counting_is_refused_before_the_close_and_after_the_window
- VoteOneStage.test_VOTE_decided_in_submission_order_and_a_later_one_is_void
- VoteOneStage.test_VOTE_equal_scores_fail
- VoteOneStage.test_VOTE_exactly_twenty_percent_passes
- VoteOneStage.test_VOTE_no_ballot_after_the_close_or_on_no_proposal
- VoteOneStage.test_VOTE_no_ballot_twice
- VoteOneStage.test_VOTE_one_checkpoint_covers_every_close_it_passes
- VoteOneStage.test_VOTE_one_wei_under_twenty_percent_fails
- VoteOneStage.test_VOTE_only_the_hook_tells_the_token
- VoteOneStage.test_VOTE_the_count_skips_and_never_depends_on_its_order
- VoteOneStage.test_VOTE_the_last_ballot_and_the_first_count_meet_at_the_close
- VoteOneStage.test_VOTE_the_proposal_event_carries_every_field
- VoteOneStage.test_VOTE_the_supply_figure_is_the_H_in_wallets_at_the_close
- VoteOneStage.test_VOTE_two_proposals_of_one_block_the_first_submitted_wins
- VoteOneStageGas.test_GAS_a_ballot_a_count_and_the_voters_first_pile_write_after_the_close
- VoteOneStageGas.test_GAS_a_transfer_between_former_voters_pays_no_write
- VoteOneStageGas.test_GAS_a_transfer_between_non_voters_pays_three_storage_reads
- VoteOneStageGas.test_GAS_the_first_balance_change_after_a_close_pays_one_checkpoint
- VoteOneStageNoHolders.test_VOTE_with_no_H_in_wallets_a_proposal_fails_and_forfeits
- VoteOneStageOpenPoints.test_OPEN1_H_waiting_at_the_close_counts_on_the_second_proposal_of_the_block
- VoteOneStageOpenPoints.test_OPEN1_two_proposals_of_one_block_weigh_a_wallet_alike
- VoteOneStageOpenPoints.test_OPEN2_a_majority_votes_no_on_every_open_proposal
- VoteOneStagePayout.test_GAS_a_payout_that_pays_the_snapshot
- VoteOneStagePayout.test_VOTE_a_keeper_payout_after_the_close_changes_no_counted_weight
- VoteOneStageSnapshot.test_SNAP_a_first_ballot_cast_after_an_older_close_saves_no_unused_copy
- VoteOneStageSnapshot.test_SNAP_a_wallet_with_no_ballot_never_saves_a_copy
- VoteOneStageSnapshot.test_SNAP_a_write_between_two_closes_saves_two_copies_and_each_close_reads_its_own
- VoteOneStageSnapshot.test_SNAP_an_earlier_proposals_close_may_save_a_copy_that_changes_no_weight
- VoteOneStageSnapshot.test_SNAP_edge_a_first_ever_write_after_the_close_counts_nothing
- VoteOneStageSnapshot.test_SNAP_edge_a_voter_never_written_again_is_read_from_its_stored_piles
- VoteOneStageSnapshot.test_SNAP_edge_a_write_in_the_closes_own_block_saves_the_copy_the_close_reads
- VoteOneStageSnapshot.test_SNAP_edge_after_a_write_at_the_close_no_later_write_saves_a_copy
- VoteOneStageSnapshot.test_SNAP_edge_the_last_date_that_saves_a_copy_is_votesUntil
- VoteOneStageSnapshot.test_SNAP_ten_closes_one_pile_write_one_copy_ten_exact_weights
- VoteOneStageSnapshot.test_SNAP_two_proposals_of_one_close_weigh_alike_in_both_orders_of_counting
- VoteOneStageSnapshot.test_SNAP_votesUntil_is_never_lowered_by_a_ballot_on_an_earlier_close
INV-SLOT · 19 tests · 16 sabotages
- Falsifier_B2Slots.test_B2_a_pump_held_3_slots_moves_nothing_held_4_slots_moves_one_cap_step
- Falsifier_B2Slots.test_B2_one_anchor_per_slot_whatever_the_call_time
- Falsifier_B2Slots.test_B2_ratchet_is_removed
- Falsifier_B2Slots.test_B2_slot_applied_event_carries_the_exact_slot_twap
- Falsifier_WallsFollow.test_F252_a_one_second_boundary_trade_does_not_change_the_anchor_a_due_move_sets
- Falsifier_WallsBurnRebase.test_D154_a_small_sell_takes_the_recorded_price_down_and_a_dust_buy_does_not_take_it_back_up
- Falsifier_WallsBurnRebase.test_F258_a_one_wei_buy_below_the_launch_price_does_not_move_the_TW_the_walls_read
- Falsifier_WallsLaunch.test_F236_the_bond_quote_after_the_fill_reads_post_fill_prices_only
- B2SlotEdge.test_B2_the_book_edge_follows_an_applied_slot_that_moves_the_deepest_rung
- Falsifier_WallsLaunch.test_F231_no_wall_from_a_pre_fill_price_and_wall0_5pct_under_the_first_hour_TWAP_for_every_first_poke
- Falsifier_B2Slots.test_B2_F183_two_due_calls_in_one_slot_move_the_anchor_once
- Falsifier_B2Slots.test_F231_no_anchor_before_slot_0_is_complete_and_the_first_anchor_is_its_whole_TWAP
- Falsifier_B2Slots.test_F320_a_first_hour_that_pumps_and_fades_gets_its_ladder_one_slot_later
- Falsifier_B2Slots.test_F320_a_dump_as_the_first_anchor_is_set_heals_at_the_next_slot
- Falsifier_B2Slots.test_F320_once_a_wall_stands_a_lower_candidate_moves_nothing
- Falsifier_B4.test_F320_a_rebases_anchor_is_never_provisional
- Falsifier_PlacedSlotRestart.test_a_rebase_restarts_the_placement_slot_with_the_slot_clock
- Falsifier_PlacedSlotRestart.test_after_a_rebase_the_next_slot_of_the_new_clock_places_the_new_pending
- Falsifier_WallCallGates.test_F245_a_split_that_placed_nothing_does_not_spend_the_slots_placement
INV-LAUNCH-BATCH · 37 tests · 34 sabotages
- D73LaunchBatch.test_S2_no_swap_before_the_fill
- D73LaunchBatch.test_D85_no_bond_while_the_batch_is_open
- D73LaunchBatch.test_D85_no_bond_quote_while_the_batch_is_open
- D73LaunchBatch.test_D85_the_batch_gate_is_the_bonds_first_refusal
- D73LaunchBatch.test_S2_the_fill_buys_at_one_price
- D73LaunchBatch.test_S2_withdraw_only_ones_own_and_only_while_open
- D73LaunchBatch.test_S2_deposit_after_block_199_refused
- D73LaunchBatch.test_S2_zero_deposits_fill_as_FILLED_and_open_trading
- D73LaunchBatch.test_S2_fill_only_from_block_209_and_once
- D73LaunchBatch.test_S2_totalDeposited_is_never_the_balance
- D73LaunchBatch.test_S2_a_reentrant_withdraw_takes_nothing_twice
- D73LaunchBatch.test_S3_the_fill_reserves_the_batch_rebate_once
- D73LaunchBatch.test_S3_each_depositor_gets_its_pro_rata_H_and_rebate
- D73LaunchBatch.test_S3_delivered_once
- D73LaunchBatch.test_S3_sum_delivered_never_exceeds_what_was_bought
- D73LaunchBatch.test_S3_no_delivery_before_the_fill_nor_without_a_deposit
- D73LaunchBatch.test_S3_a_contract_depositors_rebate_returns_to_pending
- D73LaunchBatch.test_S4_the_batchs_Work_is_its_toll
- D73LaunchBatch.test_S4_the_reward_is_split_pro_rata_once
- D73LaunchBatch.test_S4_a_strangers_settleFor_never_strands_the_reward
- D73LaunchBatch.test_S5_a_failed_swap_marks_FAILED_refunds_and_opens_trading
- D73LaunchBatch.test_S5_a_starved_fill_reverts_whole
- D73LaunchBatch.test_S5_FILL_GAS_MIN_is_twice_the_worst_fill
- D73LaunchBatch.test_S5_a_dust_batch_fills_or_fails_and_trading_opens
- D73DustAtAHighLaunchPrice.test_F163_a_one_wei_batch_never_strands_the_launch
- P8LaunchPrice.test_P8A_the_deliverable_H_is_the_harmonic_mean_of_the_H_bought_and_the_H_at_the_opening_price
- P8LaunchPrice.test_P8A_every_depositor_receives_its_share_of_the_deliverable_H_at_one_price
- P8LaunchPrice.test_P8A_the_depositors_keep_the_whole_rebate
- P8LaunchPrice.test_P8A_the_Filled_event_carries_the_price_each_depositor_pays
- P8LaunchPrice.test_P8A_launchSplit_never_reverts_and_never_exceeds_the_H_bought
- P8LaunchPrice.test_P8A_a_fill_whose_deliverable_H_is_zero_does_not_revert
- P8LaunchRemainder.test_P8B_the_remainder_is_one_H_only_range_up_to_the_opening_tick_placed_in_the_fill
- P8LaunchRemainder.test_P8B_the_launch_never_goes_through_the_pending_POL_deposit
- P8LaunchRemainder.test_P8B_delivered_plus_dust_plus_remainder_is_exactly_the_H_bought
- P8LaunchRemainder.test_P8B_placeLaunchRemainder_is_the_batchs_alone_and_once
- P8LaunchRemainder.test_P8B_a_remainder_that_cannot_be_placed_stays_in_the_hooks_own_H_and_the_fill_succeeds
- P8TinyFillReal.test_P8A_a_real_batch_that_buys_no_H_fails_and_refunds
INV-VIEWS · 16 tests · 11 sabotages
- D77Views.test_D77_blockReleaseOf_is_the_booking_of_a_closed_block
- D77Views.test_D77_releaseFracNow_is_the_fraction_the_next_buy_fixes
- D77Views.test_D77_releaseFracNow_after_the_longest_gap_one_buy_closes
- D77Views.test_D77_releaseFracNow_in_the_S05_range_is_pending
- D77Views.test_D86_releaseFracNow_in_a_pending_block_is_the_fraction_the_next_buy_fixes
- D77Views.test_D86_a_pending_block_the_next_buy_cannot_reach_reads_the_marker
- D77Views.test_D77_bondQuote_is_what_bond_delivers_and_charges_below_the_caps
- D77Views.test_D77_bondQuote_is_what_bond_delivers_and_charges_at_the_vein_cap
- D77Views.test_D77_bondQuote_is_what_bond_delivers_and_charges_at_the_block_cap
- D77Views.test_D77_previewMiningReward_is_the_reward_of_a_blocks_first_buy
- D77Views.test_D77_previewMiningReward_is_the_reward_at_the_work_so_far
- D77Views.test_D77_maturingRewards_are_the_unmatured_entries_and_when_the_first_matures
- D77Views.test_D77_minersOwed_against_the_miners_own_views
- D77Views.test_D77_the_schedule_views_are_the_emission_modules
- D77Views.test_D77_hardCap_is_the_tokens_cap_and_spot_is_the_pools
- D78PendingQueue.test_D78_the_queue_resolves_exactly_as_the_range_did
INV-DONATED-H-LOCKED · 8 tests · 10 sabotages
- DonatedHLockedFlush.test_INV_DONATED_H_LOCKED_the_POL_flush_sends_only_its_owed
- DonatedHLocked.test_INV_DONATED_H_LOCKED_no_path_spends_the_donation
- P8AccountedHFlows.test_P8C_the_accounted_H_is_the_balance_through_the_genesis_flush_and_a_wall_burn
- P8AccountedHFlows.test_P8C_the_accounted_H_is_the_balance_through_A2s_claims_and_their_burn
- P8DonationTwin.test_P8C_the_same_sequence_with_donations_interleaved_gives_the_same_outputs
- P8DonationTwin.test_P8C_a_donation_changes_no_view_and_shows_as_unaccounted
- P8DonateReplay.test_P8C_a_fixed_sequence_with_donations_keeps_the_hooks_H_its_accounted_H_plus_the_donations
- V2MoneyInvariants.invariant_the_hooks_H_is_its_accounted_H_plus_the_donations
INV-VAULT-ATTR · 5 tests · 2 sabotages
- Vault00FirstFalsifier.test_first_falsifier_a_direct_swap_earns_the_Work_the_rebate_and_the_H
- Vault00FirstFalsifier.test_first_falsifier_after_setAutoPayout_the_H_is_a_waiting_pile
- Vault00FirstFalsifier.test_first_falsifier_the_Work_matures_into_H_at_the_contract
- Vault05Trade.test_S5_the_Work_the_rebate_and_the_H_of_a_step_land_at_the_vault
- Vault02Factory.test_S2_createVault_deploys_the_callers_vault_at_vaultOf_with_the_caller_as_owner
INV-VAULT-GUARD · 30 tests · 23 sabotages
- Vault05Trade.test_S5_a_buy_fills_at_or_above_the_guards_minimum
- Vault05Trade.test_S5_a_price_pushed_past_the_tolerance_before_a_BUY_step_makes_it_revert
- Vault05Trade.test_S5_the_BUY_guard_passes_at_its_minimum_and_reverts_one_bps_under
- Vault05Trade.test_S5_a_sale_fills_at_or_above_the_guards_minimum
- Vault05Trade.test_S5_a_price_pushed_past_the_tolerance_before_a_SELL_step_makes_it_revert
- Vault05Trade.test_S5_the_unlock_callback_answers_only_the_PoolManager_inside_the_vaults_own_unlock
- Vault05Trade.test_S5_a_step_cannot_run_inside_another_contracts_unlock
- Vault04Step.test_S4_status_the_price_above_the_maximum
- Vault04Step.test_S4_status_no_wall_standing
- Vault12PriceLimit.test_S12_6_the_falsifier_a_sale_too_big_for_the_tolerance_sells_the_part_that_fits_and_does_not_revert
- Vault12PriceLimit.test_S12_6_1_at_the_least_tolerance_the_limit_stands_49_basis_points_past_the_record_and_a_part_fills_up_to_it
- Vault12BookEdge.test_S12_6_1_a_sale_larger_than_the_whole_book_stops_at_the_books_edge_and_is_not_refused
- Vault12BookEdge.test_S12_6_1_the_limits_two_terms_a_wide_tolerance_stops_at_the_edge_a_narrow_one_at_the_tolerance
- Vault12NoBook.test_S12_6_1_with_no_book_there_is_no_sale_and_the_decision_does_not_revert
- Vault12PriceLimit.testFuzz_S12_6_a_chosen_SELL_above_the_wei_scale_never_reverts_on_the_guard_or_the_rule
- Vault12PriceLimit.test_S12_6_the_spread_reaches_every_outcome_and_no_chosen_sale_above_the_wei_scale_reverts
- Vault12StartPrice.test_S12_6_the_flush_in_beforeSwap_does_not_move_the_price_a_sell_starts_from
- Vault12StartPrice.test_S12_6_the_rebase_in_beforeSwap_does_not_move_the_price_a_sell_starts_from_the_block_after_a_crash
- Vault12StartPrice.test_S12_6_the_rebase_in_beforeSwap_does_not_move_the_price_a_sell_starts_from_four_blocks_after_a_crash
- Vault12StartPrice.test_S12_6_control_with_no_other_work_the_swap_starts_from_the_price_read
- Vault12StartPrice.test_S12_6_the_instrument_sees_a_price_moved_between_the_read_and_the_swap
- Vault15SaleReference.test_S12_10_2_the_record_held_under_the_live_price_by_small_buys_the_sale_stops_one_tolerance_under_the_LIVE_price
- Vault15SaleReference.test_S12_10_2_with_the_live_price_at_or_under_the_record_the_sale_is_judged_by_the_record_as_before
- Vault15SalePartLeavesTheBuy.test_S12_10_3_where_no_sale_is_chosen_the_buy_is_still_judged_by_the_record_alone
- Vault15BuyStall.test_S12_10_6_four_hundred_blocks_of_buys_under_MIN_TW_ETH_with_a_rising_price
- Vault19SaleRemainder.test_S15_6_a_sender_that_selected_the_token_at_the_pool_manager_in_the_same_transaction_the_buy_is_made
- Vault19SaleRemainder.test_S15_7_the_price_ceiling_stops_buys_only_a_due_sale_is_made_and_the_next_blocks_buy_answers_13
- Vault19SaleRemainder.test_S15_7_a_sale_tried_and_not_made_above_the_ceiling_refuses_with_22_and_pays_nobody
- Vault19SaleRemainder.test_S15_7_a_chosen_sale_reads_no_ceiling_and_a_buy_is_held_against_the_recorded_price
- Vault08AutoSell.test_S8_the_sale_is_the_need_of_the_plans_next_day_at_the_record_price
INV-VAULT-FEE · 53 tests · 49 sabotages
- Vault06Fee.test_S6_the_bounds_are_the_measured_gas_at_the_base_fee_plus_ten_percent_and_a_step_pays_the_gas_it_used
- Vault06Fee.test_S6_the_callers_own_gas_price_does_not_change_the_fee
- Vault06Fee.test_S6_a_step_whose_fee_exceeds_the_owners_limit_does_not_run
- Vault06Fee.test_S6_a_caller_that_refuses_its_fee_reverts_the_whole_step
- Vault06Fee.test_S6_a_caller_reentering_from_its_fee_can_do_nothing_more
- Vault06Fee.test_S6_the_lock_refuses_reentry_even_from_the_owner
- Vault06Fee.test_S6_a_step_moves_nothing_but_the_buy_and_the_fee
- Vault04Step.test_S4_status_the_fee_above_the_limit
- Vault10Gas.test_gas_every_BUY_step_shape_is_covered_and_BUY_GAS_is_the_worst_rounded_up
- Vault10Gas.test_gas_every_SELL_step_shape_is_covered_and_SELL_GAS_is_the_worst_rounded_up
- Vault10Gas.test_gas_what_the_limit_adds_to_a_BUY_that_a_due_sale_goes_on_to
- Vault13FailedSale.test_S12_7_3_one_gas_unit_under_the_requirement_the_step_reverts_NotEnoughGas_and_with_exactly_it_the_sale_is_made
- Vault13FailedSale.test_S12_7_3_whatever_gas_the_caller_gives_the_sale_gets_exactly_SELL_GAS
- Vault13FailedSale.test_S12_7_4_the_failed_sale_then_buy_step_is_repaid_its_gas_under_SELL_BUY_GAS_at_the_base_fee_plus_ten_percent
- Vault13FailedSale.test_S12_7_4_the_free_ETH_must_cover_the_buy_and_the_failed_sale_fee_else_no_buy_code_22
- Vault13FailedSale.test_S12_7_4_the_owners_fee_limit_applies_to_the_failed_sale_then_buy_fee
- Vault13FailedSale.test_S12_7_4_a_budget_plan_pays_the_failed_sale_fee_from_its_budget
- Vault13FailedSale.test_S12_7_8_a_sale_not_even_tried_is_no_failed_sale_the_step_pays_the_BUY_fee
- Vault10Gas.test_gas_every_failed_sale_then_buy_shape_is_covered_and_SELL_BUY_GAS_is_the_worst_rounded_up
- Vault10Gas.test_gas_STEP_OVERHEAD_GAS_is_the_worst_measured_overhead_of_a_failed_sale_rounded_up
- Vault10Gas.test_gas_with_exactly_the_requirement_the_dearest_failed_sale_then_buy_step_completes
- Vault16GroupCaller.test_S7_4_a_sender_whose_receive_reverts_the_whole_transaction_reverts_and_no_vault_has_stepped
- Vault16GroupCaller.testFuzz_S7_7_no_ETH_is_left_in_the_caller_after_any_transaction
- Vault16StepCallGas.test_S3_2_STEP_CALL_GAS_is_the_least_gas_with_which_the_dearest_step_runs_rounded_up
- Vault16GroupCaller.test_S5_an_empty_list_does_nothing_and_ETH_sent_by_mistake_goes_to_the_next_caller
- DeployMinerVaultsTest.test_gas_constants_that_are_not_the_measured_ones_are_refused
- DeployMinerVaultsTest.test_a_factory_standing_with_gas_constants_that_were_not_measured_is_refused
- DeployMinerVaultsTest.test_a_caller_whose_step_gas_does_not_cover_the_factorys_constants_is_refused
- DeployMinerVaultsTest.test_run_from_the_environment_deploys_the_factory_and_the_caller_and_a_vault_buys_through_them
- Vault19SaleRemainder.test_S15_5_no_sale_for_buys_the_owners_fee_limit_refuses_status_answers_12_with_the_BUY_fee
- Vault19SaleRemainder.test_S15_8_with_the_fee_limit_between_the_two_fees_no_sale_is_tried_while_the_ETH_covers_a_buy
- Vault19SaleRemainder.test_S15_8_with_ETH_under_one_buy_the_sale_is_tried_made_it_pays_the_SELL_fee_not_made_the_step_refuses_22
- Vault19SaleRemainder.test_S15_8_with_the_fee_limit_at_the_BUY_fee_the_plan_buys_sells_once_when_its_ETH_is_out_and_completes
- Vault20StepRepay.test_S16_1_a_BUY_step_pays_the_gas_it_used_at_the_base_fee_plus_ten_percent_to_the_wei
- Vault20StepRepay.test_S16_1_a_SELL_step_pays_the_gas_it_used_and_the_vault_holds_before_plus_ethOut_less_paid
- Vault20StepRepay.test_S16_1_a_failed_sale_then_a_buy_is_repaid_the_gas_of_both_under_the_bound_of_that_shape
- Vault20StepRepay.test_S16_1_the_amount_is_one_gas_figure_times_the_base_fee_times_1_1_rounded_DOWN_at_three_base_fees
- Vault20StepRepay.test_S16_2_a_step_dearer_than_the_worst_measured_is_paid_exactly_the_bound_and_no_more
- Vault20StepRepay.test_S16_3_the_owners_fee_limit_is_held_against_the_bound_not_against_what_the_step_pays
- Vault20StepRepay.test_S16_3_a_buy_needs_ETH_for_the_buy_and_the_bound_and_what_the_step_did_not_use_stays_in_the_vault
- Vault20StepRepay.test_S16_3_after_N_buys_the_free_ETH_is_the_start_less_each_buy_and_what_each_step_paid
- Vault20StepRepay.test_S16_3_a_sale_is_due_and_sized_with_the_bounds_of_a_BUY_step_and_a_SELL_step
- Vault20StepRepay.test_S16_4_a_sales_ledger_line_removes_the_H_sold_and_adds_what_the_step_paid_once
- Vault20StepRepay.test_S16_4_a_budget_plan_loses_the_buy_and_what_its_step_paid_and_ends_when_no_buy_fits
- Vault20StepRepay.test_S16_4_a_count_plans_last_buy_closes_the_ledger_with_what_was_paid
- Vault20StepRepay.test_S16_5_a_caller_that_offers_a_higher_gas_price_is_repaid_no_more
- Vault20StepRepay.test_S16_6_a_caller_whose_receive_burns_gas_is_repaid_nothing_for_it
- Vault20StepRepay.test_S16_6_stepFees_answers_the_three_bounds_each_rounded_UP
- Vault20StepRepay.test_S16_with_no_base_fee_the_bounds_and_the_amount_paid_are_zero_and_the_step_runs
- Vault20StepRepay.test_S16_the_locked_margin_and_the_new_constant_are_the_vaults_own
- Vault10Gas.test_gas_STEP_REPAY_BASE_GAS_is_the_worst_measured_gas_outside_a_steps_own_measure_rounded_up
- Vault18AlwaysOutCampaign.invariant_no_step_paid_its_caller_more_than_the_most_it_may
- DeployMinerVaultsTest.test_a_vault_that_repays_another_margin_than_the_locked_ten_percent_is_refused
INV-VAULT-STEP · 37 tests · 25 sabotages
- Vault04Step.test_S4_anyone_runs_a_step_and_it_does_exactly_one_buy
- Vault04Step.test_S4_at_most_one_action_per_HETH_block
- Vault04Step.test_S4_a_missed_block_is_never_caught_up
- Vault04Step.test_S4_a_count_plan_runs_its_count_then_is_cleared_and_nothing_is_withdrawn
- Vault04Step.test_S4_a_budget_plan_spends_the_buy_and_its_fee_and_ends_when_no_buy_can_fit
- Vault04Step.test_S4_a_budget_rest_between_the_buy_and_the_buy_plus_fee_waits_for_a_lower_fee
- Vault04Step.test_S4_status_no_plan_waiting_due_and_not_enough_ETH
- Vault04Step.test_S4_a_step_emits_one_Stepped_and_the_history_adds_up
- Vault03Plan.test_S3_setPlan_stores_every_field_and_the_first_buy_is_due_from_the_next_block
- Vault03Plan.test_S3_a_budget_plan_carries_its_budget_and_no_count
- Vault03Plan.test_S3_a_plan_outside_the_bounds_reverts
- Vault03Plan.test_S3_the_bounds_edges_are_accepted
- Vault03Plan.test_S3_setPlan_replaces_the_plan_one_at_a_time
- Vault03Plan.test_S3_stopPlan_clears_the_plan_and_withdraws_nothing
- Vault03Plan.test_S3_only_the_owner_sets_or_stops_the_plan
- Vault03Plan.test_S12_7_6_with_the_auto_sell_on_a_tolerance_of_49_basis_points_is_refused_and_50_is_accepted
- Vault13FailedSale.test_S12_7_8_the_self_only_sale_function_refuses_every_caller_but_the_vault_itself
- Vault13FailedSale.test_S12_7_8_a_failed_sale_followed_by_a_buy_is_the_blocks_one_action
- Vault13FailedSale.test_S12_7_8_the_owners_manual_sale_has_no_least_sale_and_no_fallback
- Vault13FailedSale.test_S12_7_9_a_failed_sale_and_a_buy_that_fails_its_own_guard_the_whole_step_reverts_and_nothing_is_paid
- Vault13FailedSale.test_S12_7_the_two_locked_values_the_new_code_and_the_names
- Vault16GroupTraces.test_S7_1_three_vaults_buys_in_ONE_transaction_all_run_each_credited_its_own_Work_and_the_sender_receives_the_three_fees
- Vault16GroupTraces.test_S7_2_the_same_three_steps_one_by_one_in_the_same_block_and_order_give_each_vault_the_same_H_to_the_wei
- Vault16GroupCaller.test_S7_3_a_non_vault_a_reverting_step_a_vault_twice_and_a_gas_burner_do_not_stop_the_others_which_run_and_are_paid
- Vault16GroupCaller.test_S7_3_a_listed_address_that_burns_all_its_gas_costs_the_sender_at_most_STEP_CALL_GAS_MOCKED
- Vault16GroupCaller.test_S7_5_a_list_longer_than_the_gas_given_ends_cleanly_the_first_entries_done_and_paid_the_rest_false
- Vault16GroupCaller.test_S3_stepMany_cannot_be_entered_again_from_the_payment_of_its_fees_and_the_lock_is_not_left_set
- Vault16GroupCaller.test_S3_2_a_step_whose_sale_is_made_runs_in_a_group_as_it_does_alone
- Vault16GroupCaller.test_S3_3_with_exactly_the_gas_its_own_check_asks_the_function_completes_even_when_the_entry_burns_all_its_gas_MOCKED
- Vault16GroupCaller.test_S5_a_vault_whose_plan_refuses_the_fee_is_skipped_and_the_others_run
- Vault16GroupOfTen.test_S2_in_a_group_of_ten_the_later_buys_are_refused_by_their_own_guard_exactly_as_one_by_one
- Vault02Factory.test_D208_isVault_is_true_for_every_vault_this_factory_created_and_for_nothing_else
- Vault08AutoSell.test_S8_the_sale_is_the_need_of_the_plans_next_day_at_the_record_price
- DeployMinerVaultsTest.test_a_caller_pointed_at_another_factory_is_refused
- Vault20StepRepay.test_S16_4_a_budget_plan_loses_the_buy_and_what_its_step_paid_and_ends_when_no_buy_fits
- Vault20StepRepay.test_S16_7_the_ledger_is_never_at_the_bound_when_the_payment_leaves_a_budget_plans_buys
- Vault20StepRepay.test_S16_7_a_budget_plans_end_is_read_on_what_is_left_after_what_was_paid_not_on_the_line_at_the_bound
INV-VAULT-AUTOSELL · 52 tests · 48 sabotages
- Vault08AutoSell.test_S8_the_sale_is_the_need_of_the_plans_next_day_at_the_record_price
- Vault08AutoSell.test_S8_the_need_counts_only_the_buys_due_in_the_next_209_blocks
- Vault08AutoSell.test_S8_no_sale_while_the_free_ETH_covers_autoSellWhenBuysLeft_buys
- Vault08AutoSell.test_S8_auto_sell_off_never_sells
- Vault08AutoSell.test_S8_the_floor_lowers_the_sale_and_is_never_crossed
- Vault08AutoSell.test_S8_at_the_floor_with_ETH_for_a_buy_the_step_goes_on_to_BUY
- Vault08AutoSell.test_S8_the_daily_cap_lowers_the_sale_and_resets_with_the_HETH_day
- Vault08AutoSell.test_S8_a_sale_under_the_average_cost_reverts_whole
- Vault08AutoSell.test_S8_autoSellAnyPrice_sells_under_the_average_cost
- Vault08AutoSell.test_S8_a_sale_at_or_above_the_average_cost_sells
- Vault08AutoSell.test_S8_the_price_rule_passes_an_honest_fill_at_the_owners_margin
- Vault08AutoSell.test_S8_the_price_rule_is_on_the_ETH_actually_received_not_on_the_quote
- Vault08AutoSell.test_S12_under_the_average_cost_the_vault_keeps_buying_while_its_ETH_covers_a_buy
- Vault08AutoSell.test_S12_with_autoSellAnyPrice_the_due_sale_is_chosen_before_the_buy
- Vault08AutoSell.test_S12_maxPriceWeiPerH_still_stops_the_fallback_BUY_and_since_S15_7_no_SELL
- Vault08AutoSell.test_S12_4_a_sale_that_holds_at_the_record_price_and_not_for_the_guards_minimum_is_not_tried_the_step_buys_at_once
- Vault11RuleOnMinimum.test_S12_4_a_sale_whose_own_impact_would_fail_the_rule_is_not_chosen_the_step_buys
- Vault11RuleOnMinimum.test_S12_4_without_ETH_for_a_buy_it_refuses_with_the_price_reason_and_under_the_guards_minimum_it_sells
- Vault11RuleOnMinimum.test_S12_4_the_boundary_on_the_price_SELL_at_the_least_balance_one_wei_of_basis_more_BUY
- Vault11RuleOnMinimum.testFuzz_S12_4_a_chosen_sale_that_passes_its_price_guard_never_fails_the_average_cost_rule
- Vault11RuleOnMinimum.test_S12_4_the_spread_reaches_every_outcome_and_no_chosen_sale_fails_the_rule
- Vault12PriceLimit.test_S12_6_2_a_live_price_past_the_limit_is_no_sale_the_step_buys_and_without_ETH_it_refuses_with_code_21
- Vault12PriceLimit.test_S12_6_2_the_boundary_a_live_price_exactly_at_the_limit_is_no_sale_one_unit_under_it_is
- Vault12PriceLimit.test_S12_6_4_the_price_rule_is_decided_on_prices_the_boundary_to_the_unit_for_a_part_of_x
- Vault12BookEdge.test_S12_7_the_gap_is_closed_a_sale_into_the_gap_is_undone_the_same_step_buys_and_no_later_step_reverts
- Vault12BookEdge.test_S12_7_5_in_the_gap_with_no_ETH_for_a_buy_the_step_reverts_with_code_22_and_the_caller_is_paid_nothing
- Vault13FailedSale.test_S12_7_2_a_sale_the_main_contract_refuses_ZeroSellOutput_MOCKED_is_undone_and_the_same_step_buys
- Vault13FailedSale.test_S12_7_2_a_sale_refused_SellBeyondTheBook_MOCKED_is_undone_and_the_same_step_buys
- Vault13FailedSale.test_S12_7_2_a_sale_refused_for_a_reason_that_does_not_exist_today_MOCKED_is_undone_and_the_same_step_buys
- Vault13FailedSale.test_S15_4_a_sale_of_the_wei_scale_that_would_fail_its_price_guard_is_no_longer_tried_the_step_is_a_plain_BUY
- Vault13FailedSale.test_S12_7_2_a_sale_that_fails_the_average_cost_rule_on_the_ETH_received_MOCKED_is_undone_and_the_same_step_buys
- Vault13FailedSale.test_S12_7_2_a_sale_that_runs_out_of_its_fixed_gas_is_undone_and_the_same_step_buys
- Vault13FailedSale.test_S12_7_5_no_sale_and_no_buy_the_step_reverts_NothingDue_22_and_changes_nothing
- Vault13FailedSale.test_S12_7_7_a_sale_one_wei_under_ten_times_its_fee_is_not_made_and_one_of_exactly_ten_times_is
- Vault13FailedSale.test_S12_7_7_at_a_high_base_fee_the_vault_does_not_sell_it_buys_while_its_ETH_lasts_then_waits
- Vault12BookEdge.test_S12_7_in_the_gap_with_ETH_for_sixty_buys_no_step_reverts_in_sixty_blocks
- Vault12BookEdge.test_S12_9_in_the_gap_book_with_ETH_for_N_buys_inside_the_limit_the_sale_is_made_and_with_less_it_is_not
- Vault14ThinBook.test_S12_9_1_a_sale_one_wei_under_the_cost_of_N_buys_is_not_made_and_one_of_exactly_that_is
- Vault14ThinBook.test_S12_9_1a_a_plan_that_wants_less_than_N_buys_sells_what_it_wanted_less_its_tolerance_in_a_quiet_deep_market
- Vault14ThinBook.test_S12_9_7_the_owners_own_caps_can_keep_every_sale_under_the_least_then_the_vault_never_sells
- Vault14ThinBook.test_S12_9_7_in_a_deep_book_the_least_is_far_under_the_sale_and_nothing_changes
- Vault14ThinBook.test_S12_9_1a_a_sale_one_wei_under_what_it_wanted_less_its_tolerance_is_not_made_and_one_of_exactly_that_is
- Vault19SaleRemainder.test_S15_1_what_a_sale_must_raise_holds_the_SELL_steps_own_fee_to_the_wei
- Vault19SaleRemainder.test_S15_1_a_shortfall_under_ten_SELL_fees_raises_a_sale_of_ten_fees_worth
- Vault19SaleRemainder.test_S15_1_the_base_fee_rising_between_the_sale_and_the_buy_one_small_sale_of_ten_fees_worth_then_the_buy
- Vault19SaleRemainder.test_S15_2_the_amount_brings_T_at_the_guards_minimum_price_and_a_sale_that_fills_whole_leaves_no_remainder
- Vault19SaleRemainder.test_S15_a_plan_of_three_buys_funded_by_ONE_sale_pays_one_SELL_fee_and_three_BUY_fees_and_completes
- Vault19SaleRemainder.test_S15_3_a_sale_filled_in_part_is_made_at_or_above_the_least_and_refused_under_it
- Vault19SaleRemainder.test_S15_4_with_the_floor_leaving_room_for_less_than_the_least_no_sale_is_tried_and_the_step_is_a_plain_BUY
- Vault19SaleRemainder.test_S15_4_with_the_days_cap_leaving_room_for_less_than_the_least_no_sale_is_tried_and_the_step_is_a_plain_BUY
- Vault19SaleRemainder.test_S15_4_the_boundary_a_sale_whose_most_reaches_the_least_is_chosen_and_one_unit_of_H_under_it_is_not
- Vault13FailedSale.test_S15_4_a_sale_of_one_unit_of_H_is_no_longer_tried_the_step_is_a_plain_BUY
INV-VAULT-LEDGER · 8 tests · 8 sabotages
- Vault07Ledger.test_S7_the_average_cost_equals_a_hand_calculation
- Vault07Ledger.test_S7_an_outflow_never_lowers_the_average_cost
- Vault07Ledger.test_S7_withdrawing_all_the_H_removes_the_whole_basis
- Vault20StepRepay.test_S16_3_after_N_buys_the_free_ETH_is_the_start_less_each_buy_and_what_each_step_paid
- Vault20StepRepay.test_S16_4_a_sales_ledger_line_removes_the_H_sold_and_adds_what_the_step_paid_once
- Vault20StepRepay.test_S16_7_the_ledger_is_never_at_the_bound_when_the_payment_leaves_a_budget_plans_buys
- Vault20StepRepay.test_S16_7_the_ledger_is_never_at_the_bound_when_the_payment_leaves_a_count_plans_buy_and_a_sale
- Vault20StepRepay.test_S16_7_a_step_that_paid_its_bound_leaves_the_ledger_with_the_buy_and_the_bound
INV-VAULT-OWNER · 36 tests · 39 sabotages
- Vault09Owner.test_S9_withdrawEth_sends_to_the_owner_and_only_the_owner_calls_it
- Vault09Owner.test_S9_withdrawH_sends_to_the_owner_and_only_the_owner_calls_it
- Vault09Owner.test_S9_a_withdrawal_to_an_owner_that_refuses_ETH_reverts_and_goes_nowhere_else
- Vault09Owner.test_S9_a_caller_other_than_the_owner_can_move_nothing
- Vault09Owner.testFuzz_S9_no_call_by_a_non_owner_changes_the_owner_or_takes_funds
- Vault09Owner.test_S9_the_owner_is_in_the_code_not_in_storage
- Vault09Owner.test_S9_the_owner_sells_from_the_vault_and_the_ETH_stays_in_the_vault
- Vault09Owner.test_S9_mining_rewards_reach_the_vault_by_the_owners_claim_or_anyones_settleFor
- Vault09Owner.test_S9_a_pushed_holder_payout_is_received_under_SEND_GAS
- Vault09Owner.test_S9_claimRewards_brings_the_holder_ETH_and_H_into_the_vault
- Vault09Owner.test_S9_anyone_may_send_ETH_and_nothing_else_happens
- Vault09Owner.test_S9_the_vault_votes_by_its_owner
- Vault09Owner.test_S9_the_vault_exits_and_the_ETH_stays_in_the_vault
- Vault09Owner.test_S12_the_vault_has_no_migrate_and_exit_still_works
- Vault09Owner.test_S10_with_an_active_successor_the_vault_still_buys_and_sells
- Vault09Owner.test_S9_exit_refuses_before_a_successor_is_active
- Vault17ExitMinimum.test_D201_the_vaults_exit_one_wei_above_its_payout_reverts_ExitBelowMinimum_and_moves_nothing_and_at_the_payout_pays_it
- Vault17ExitMinimum.test_D201_the_vaults_exit_hands_the_owners_minimum_to_the_main_contract_unchanged
- Vault17ExitMinimum.test_D201_with_no_minimum_the_vaults_exit_pays_its_share
- Vault17ExitMinimum.test_D201_the_vault_has_no_exit_without_a_minimum
- Vault02Factory.test_S2_a_second_createVault_of_the_same_wallet_reverts
- Vault02Factory.test_S2_the_factorys_immutables_are_the_main_contracts_own_pool
- Vault02Factory.test_S2_a_factory_for_another_pool_cannot_be_deployed
- Vault02Factory.test_S2_a_vault_deployed_outside_a_factory_does_not_deploy
- Vault03Plan.test_S3_only_the_owner_sets_or_stops_the_plan
- DeployMinerVaultsTest.test_a_hook_address_with_no_code_is_refused
- DeployMinerVaultsTest.test_run_from_the_environment_deploys_the_factory_and_the_caller_and_a_vault_buys_through_them
- DeployMinerVaultsTest.test_runtime_code_over_the_chains_size_limit_is_refused
- DeployMinerVaultsTest.test_the_wrong_chain_and_a_deployer_that_cannot_send_are_refused
- DeployMinerVaultsTest.test_a_hook_whose_pool_key_is_not_its_own_pool_is_refused
- DeployMinerVaultsTest.test_a_hook_whose_token_names_another_pool_is_refused
- DeployMinerVaultsTest.test_a_hook_of_the_other_clock_is_refused
- DeployMinerVaultsTest.test_a_code_size_limit_of_zero_or_not_Robinhood_Chains_own_is_refused
- DeployMinerVaultsTest.test_a_factory_that_is_not_the_given_main_contracts_is_refused
- DeployMinerVaultsTest.test_an_older_main_contract_without_the_two_argument_exit_is_refused
- DeployMinerVaultsTest.test_a_contract_that_is_not_a_main_contract_is_refused_by_name
INV-VAULT-OUT · 41 tests · 17 sabotages
- Vault18AlwaysOut.test_S13_out_with_no_plan
- Vault18AlwaysOut.test_S13_out_with_a_count_plan_running
- Vault18AlwaysOut.test_S13_out_with_a_count_plan_set_and_not_yet_stepped
- Vault18AlwaysOut.test_S13_out_with_a_budget_plan_running
- Vault18AlwaysOut.test_S13_out_with_the_auto_sell_on_and_a_sale_made
- Vault18AlwaysOut.test_S13_out_with_a_plan_ended
- Vault18AlwaysOut.test_S13_out_with_a_plan_stopped
- Vault18AlwaysOut.test_S13_out_in_the_block_of_a_step
- Vault18AlwaysOut.test_S13_out_with_powered_H_bought_a_day_ago
- Vault18AlwaysOut.test_S13_out_with_a_successor_active
- Vault18AlwaysOut.test_S13_out_with_H_bought_a_day_ago_and_never_settled
- Vault18AlwaysOut.test_S13_all_with_no_plan
- Vault18AlwaysOut.test_S13_all_with_a_count_plan_running
- Vault18AlwaysOut.test_S13_all_with_a_count_plan_set_and_not_yet_stepped
- Vault18AlwaysOut.test_S13_all_with_a_budget_plan_running
- Vault18AlwaysOut.test_S13_all_with_the_auto_sell_on_and_a_sale_made
- Vault18AlwaysOut.test_S13_all_with_a_plan_ended
- Vault18AlwaysOut.test_S13_all_with_a_plan_stopped
- Vault18AlwaysOut.test_S13_all_in_the_block_of_a_step
- Vault18AlwaysOut.test_S13_all_with_powered_H_bought_a_day_ago
- Vault18AlwaysOut.test_S13_all_with_a_successor_active
- Vault18AlwaysOut.test_S13_all_with_H_bought_a_day_ago_and_never_settled
- Vault18AlwaysOut.test_S13_out_right_after_a_step_that_reverted_in_the_same_transaction
- Vault18AlwaysOut.test_S13_out_right_after_a_step_that_reverted_with_the_main_contract_replaced
- Vault18AlwaysOut.test_S13_all_right_after_a_step_that_reverted_in_the_same_transaction
- Vault18AlwaysOut.test_S13_all_right_after_a_step_that_reverted_with_the_main_contract_replaced
- Vault18AlwaysOut.test_S13_an_owner_that_refuses_ETH_still_takes_the_H_out
- Vault18AlwaysOut.test_S13_all_reverts_whole_for_an_owner_that_refuses_ETH_and_withdrawH_still_takes_the_H
- Vault18AlwaysOut.test_S13_not_the_owner_is_refused
- Vault18AlwaysOut.test_S13_all_is_refused_for_everyone_but_the_owner
- Vault18AlwaysOut.test_S13_all_on_an_empty_vault_does_nothing_and_does_not_revert
- Vault18AlwaysOut.test_S13_all_with_only_wei_skips_the_H
- Vault18AlwaysOut.test_S13_all_with_only_H_skips_the_wei
- Vault18AlwaysOut.test_S13_all_with_no_H_and_a_basis_left_by_a_sale_leaves_the_basis
- Vault18AlwaysOut.test_S13_all_sends_the_H_before_the_wei
- Vault18AlwaysOut.test_S13_all_holds_the_lock_while_it_sends
- Vault18AlwaysOutBeforeTheLaunch.test_S13_out_before_the_launch_is_filled
- Vault18AlwaysOutBeforeTheLaunch.test_S13_all_before_the_launch_is_filled
- Vault18AlwaysOutCampaign.invariant_the_owner_can_always_take_everything_out
- Vault18AlwaysOutCampaign.invariant_no_withdrawal_the_owner_made_was_refused
- Vault18AlwaysOutCampaignReplay.test_S13_the_campaigns_handler_reaches_buys_a_sale_and_every_withdrawal
read from the contract's repository when this site was built