FC_DECLARE_DERIVED_EXCEPTION(block_tx_output_exception,eosio::chain::block_validate_exception,3020001,"transaction outputs in block do not match transaction outputs from applying block")
FC_DECLARE_DERIVED_EXCEPTION(block_concurrency_exception,eosio::chain::block_validate_exception,3020002,"block does not guarantee concurrent exection without conflicts")
FC_DECLARE_DERIVED_EXCEPTION(block_lock_exception,eosio::chain::block_validate_exception,3020003,"shard locks in block are incorrect or mal-formed")
// this is enough iterations for the average to reach/exceed the target (triggering congestion handling) and then the iterations to contract down to the min
// subtracting 1 for the iteration that pulls double duty as reaching/exceeding the target and starting congestion handling
// this is enough iterations for the average to reach/exceed the target (triggering congestion handling) and then the iterations to contract down to the min
// subtracting 1 for the iteration that pulls double duty as reaching/exceeding the target and starting congestion handling