def beacon_attestation_validator(msg_forwarder: ID, msg: rpc_pb2.Message) -> bool: try: attestation = ssz.decode(msg.data, sedes=Attestation) except (TypeError, ssz.DeserializationError) as error: # Not correctly encoded logger.debug( bold_red( "Failed to deserialize Attestation from %s, error=%s"), encode_hex(msg.data), str(error), ) return False state = chain.get_head_state() state_machine = chain.get_state_machine() try: validate_voting_beacon_block(chain, attestation) validate_attestation_signature( state, attestation, CommitteeConfig(state_machine.config), ) except InvalidGossipMessage as error: logger.debug("%s", str(error)) return False else: return True
def committee_index_beacon_attestation_validator( msg_forwarder: ID, msg: rpc_pb2.Message) -> bool: try: attestation = ssz.decode(msg.data, sedes=Attestation) except (TypeError, ssz.DeserializationError) as error: # Not correctly encoded logger.debug( bold_red("Failed to validate attestation=%s, error=%s"), encode_hex(msg.data), str(error), ) return False state_machine = chain.get_state_machine() state = chain.get_head_state() try: validate_subnet_id(attestation, subnet_id) validate_is_unaggregated(attestation) validate_voting_beacon_block(chain, attestation) validate_attestation_propagation_slot_range( state, attestation, ATTESTATION_PROPAGATION_SLOT_RANGE, ) validate_attestation_signature( state, attestation, CommitteeConfig(state_machine.config), ) except InvalidGossipMessage as error: logger.debug("%s", str(error)) return False else: return True