Attribute Expiration and Active/Inactive state

timestamp

  • field in attribute_validation_request

  • represents the moment in time when the validation was made

expire_timestamp

  • field in attributes

  • decided by the user during attribute creation

  • can be changed during attribute update

  • stores the future timestamp at which the attribute will expire ( and become no longer usable )

  • is part of the validation effort ( an OK from a validator means that he/she agrees not only with the attribute value, but also with its expire_timestamp

  • for some attributes, expire_timestamp will be required ( card, ID, passport ), and for others it will not ( date and place of birth, email )

  • an attribute of a type that requires an expire_timestamp cannot be created without it being provided

possible states of an attribute

  • Expired - an attribute with an expire_timestamp in the past

  • Inactive - an attribute with an expire_timestamp in the future, which has less than 1 validations in the last year ( calculated from the currentTimestamp )

  • Active - an attribute with an expire_timestamp in the future, which has 1 or more validations in the last year ( calculated from the currentTimestamp )

active/inactive decision

  • if at least 1 validation exists ( in the future maybe the equivalent of x points (???) ) with a "timestamp" that is no more than 1 year in the past from the currentTimestamp, then the attribute is active, otherwise it is inactive.

usage

  • consumptions and identity uses can only be performed on non-expired and active attributes

  • validations can only be performed on non-expired attributes

  • attribute consumption : the consumption reward will be distributed (in the subsequent reward round) towards the validators which made validations with a timestamp less than the consumeTimestamp, but greater than (expire_timestamp - 1 year)

Pro-s

  • Validations are consistent

  • An attribute's expiry date becomes an information which is validated

  • The expiration state is trivial to retrieve (by comparing the currentTimestamp with the expire_timestamp)