Skip to content

Attestations

An attestation associates a key-value pair with an identity. For example, hosts attest to their network address by pairing it with the key "HostAnnouncement". Renters and other clients can then discover hosts by scanning the blockchain for attestations with this key. And since attestations include a public key and signature, the renter can verify that the host they connect to is the same host that created the attestation.

Attestations are a fairly generic affordance, so their semantics are governed by convention. One common convention is that an attestation for a particular key is considered to overwrite any previous attestations with the same key. (This allows hosts to announce a new network address, for example.)

Attestations are included as elements in the Accumulator, and the State also tracks the total number of attestations. This allows a light client to trustlessly download any subset of attestations from a peer or an explorer. Verification of the subset is via multiproof; committing to the total number of attestations prevents the counterparty from omitting any attestations in their response.

In v1

Attestations formalize a common use of Arbitrary Data in v1, namely host announcements. These would be encoded as an opaque binary blob and placed in the arbitrary data field. Renters would then scan for arbitrary data that began with "HostAnnouncement" and interpret the subsequent bytes as an announcement object.