Announcement Validation

DSNP Announcements are validated differently depending on the type of Announcement. Batched Announcements are off-chain and MUST be validated at read time. Non-batched Announcements (example: Graph Change), are on-chain and are validated at write time and do not need to be re-validated at read time.

On-chain Announcements

Creation of an Announcement as an on-chain Frequency Message requires that the delegation be validated before adding the message to the chain. Thus, any Graph Change Announcements read from a trusted node, can be trusted to have been made by the DSNP identity or a delegate of the identity at the time the Frequency Message was sent.

On-Chain Announcement Types

  • Graph Change

Batch Publication Announcements

DSNP Announcements that are in a Batch Publication MUST be validated at read time.

Batched Announcement Types

  • Tombstone
  • Broadcast
  • Reply
  • Reaction
  • Profile

Batch Publication Frequency Message Validation

The Frequency Message for a Batch Publication has several important fields for validation:

FieldDescription
provider_msa_idMSA Id of the provider sending the message
cidThe Content IDentifier v1 for IPFS content
payload_lengthExpected length of the content from IPFS
block_numberBlock number that the message was recorded on the chain.

File Validation

  1. Retrieve the file from the IPFS network using the cid.
  2. (Required for non-trusted IPFS nodes) Verify the file hash by comparing it to the hash included in the cid.
  3. Verify that the byte length of the retrieved file matches the payload_length.

Publication Announcements Validation

  1. Collect the unique set of fromId values.
  2. Use the Custom RPC msa_checkDelegations with the fromId values as the delegator_msa_ids and the provider_msa_id at the block_number.
  3. The fromId values that msa_checkDelegations verifies as having a delegation at block_number are valid Announcements.

Announcement Duplicates

Duplicate Announcements MUST be rejected or ignored.