Fix #355 - Test Net HARDFORK at block 58500
This commit is contained in:
parent
3ded0d4e77
commit
f05475cc8f
2 changed files with 23 additions and 11 deletions
|
|
@ -630,14 +630,30 @@ const witness_object& database::validate_block_header( uint32_t skip, const sign
|
|||
if( !(skip&skip_witness_signature) )
|
||||
FC_ASSERT( next_block.validate_signee( witness.signing_key ) );
|
||||
|
||||
if( !skip_witness_schedule_check )
|
||||
if( !(skip&skip_witness_schedule_check) )
|
||||
{
|
||||
uint32_t slot_num = get_slot_at_time( next_block.timestamp );
|
||||
FC_ASSERT( slot_num > 0 );
|
||||
|
||||
witness_id_type scheduled_witness = get_scheduled_witness( slot_num );
|
||||
FC_ASSERT( next_block.witness == scheduled_witness );
|
||||
|
||||
#warning REMOVE HARDFORK in final release check
|
||||
if( next_block.block_num() > 58500 ) {
|
||||
FC_ASSERT( next_block.witness == scheduled_witness, "Witness produced block at wrong time",
|
||||
("block witness",next_block.witness)("scheduled",scheduled_witness)("slot_num",slot_num) );
|
||||
}
|
||||
} /*else {
|
||||
uint32_t slot_num = get_slot_at_time( next_block.timestamp );
|
||||
FC_ASSERT( slot_num > 0 );
|
||||
|
||||
const witness_schedule_object& wso = witness_schedule_id_type()(*this);
|
||||
const dynamic_global_property_object& dpo = get_dynamic_global_properties();
|
||||
|
||||
witness_id_type scheduled_witness = get_scheduled_witness( slot_num );
|
||||
if( next_block.witness != scheduled_witness )
|
||||
edump( (next_block.block_num())(next_block.witness)(scheduled_witness)(slot_num)(wso)(dpo.current_aslot) );
|
||||
}
|
||||
*/
|
||||
|
||||
return witness;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -49,23 +49,19 @@ fc::time_point_sec database::get_slot_time(uint32_t slot_num)const
|
|||
return genesis_time + slot_num * interval;
|
||||
}
|
||||
|
||||
auto head_block_abs_slot = head_block_time().sec_since_epoch() / interval;
|
||||
int64_t head_block_abs_slot = head_block_time().sec_since_epoch() / interval;
|
||||
fc::time_point_sec head_slot_time(head_block_abs_slot * interval);
|
||||
|
||||
const global_property_object& gpo = get_global_properties();
|
||||
|
||||
if( dpo.dynamic_flags & dynamic_global_property_object::maintenance_flag )
|
||||
slot_num += gpo.parameters.maintenance_skip_slots;
|
||||
|
||||
// "slot 0" is head_slot_time
|
||||
// "slot 1" is head_slot_time,
|
||||
// plus maint interval if head block is a maint block
|
||||
// plus block interval if head block is not a maint block
|
||||
return head_slot_time
|
||||
+ (slot_num +
|
||||
(
|
||||
(dpo.dynamic_flags & dynamic_global_property_object::maintenance_flag)
|
||||
? gpo.parameters.maintenance_skip_slots : 0
|
||||
)
|
||||
) * interval
|
||||
;
|
||||
return head_slot_time + (slot_num * interval);
|
||||
}
|
||||
|
||||
uint32_t database::get_slot_at_time(fc::time_point_sec when)const
|
||||
|
|
|
|||
Loading…
Reference in a new issue