Data Attestation
Anyone can submit data to the Vana network. However, for data to be considered valid by a DataDAO, it must be attested for by a trusted party. These trusted parties issue an attestation about the data to prove that it is, in fact, authentic, high-quality, unique, and has whatever other properties DataDAOs value in its data contributions.
Data attestations live mostly offchain, and a URL to a data's attestation is written onchain alongside the data itself.

A DataDAO that uses TEE validators gets its data contributions attested for (in blue)
Attestation Schema
The attestation of a data point must follow a spec. Attestations show relevant information about how the data was evaluated, proof-of-contribution scores, integrity checksums, and custom metadata relevant to a specific DataDAO.
An example of when this would be useful: consider a ChatGPT DataDAO that accepts GDPR exports from chatgpt.com. Say the DataDAO considers the export to be high quality when the number of conversations in the export exceeds 10. This DataDAO can insert numberOfConversations: xxx in the attestation when Proof of Contribution is run, and anyone can see how valuable that encrypted data point is.
Schema
signed_fieldsContains the main data fields that are signed by the prover.subjectInformation about the datapoint being attested for.urlURL where the encrypted file lives.file_idThe ID of the file, given by the Data Registryowner_addressWallet address of the file owner.decrypted_file_checksumChecksum of the decrypted file for integrity verification.encrypted_file_checksumChecksum of the encrypted file for integrity verification.encryption_seedThe message that was signed by the owner to retrieve the encryption key.
proverInformation about the prover.typeType of the prover,satyais one of the confidential TEE nodes in the Satya network. Proofs can also beself-signedwhere the data owner generates the proof.addressWallet address of the prover.urlURL or address where the prover service is hosted.
proofDetails about the generated proof.image_urlDocker image URL of where the instructions to generate the proof is downloaded fromcreated_atTimestamp of when the proof was created.durationDuration of the proof generation process, in seconds.dlp_idDLP ID from the Root Network Contract, this is used to tie the proof to a DataDAO.validBoolean indicating if the subject is valid.score*Overall score of the subject, from 0-1.authenticityAuthenticity score of the subject, from 0-1.ownershipOwnership score of the subject, from 0-1.qualityQuality score of the subject, from 0-1.uniquenessUniqueness score of the subject, from 0-1.attributesAdditional key/value pairs that will be available on the public proof. These can be used to quickly view properties about the encrypted subject.metadata*Key/value metadata about the proof that is written onchain.
signatureGenerated by the prover signing a stringified representation ofsigned_fields, sorted by the key name. To verify it, we can take the signature and the stringified representation, and extract the address that signed it, which should match theprover.address.
NoteThe
scoreandmetadatafields are written onchain, and a DataDAO can use these fields to calculate how many DataDAO-specific tokens should be issued as a reward to the data contributor for their contribution.
Sample Attestation
{
"signed_fields": {
"subject": {
"file_id": 18,
"url": "<https://drive.google.com/uc?export=download&id=1E0piiDCaHWgNPqlZdu937pALQt8CeROj">,
"owner_address": "0x34529235dAF0B317D30F8e3120Ef04Dff59aB411",
"decrypted_file_checksum": "f5b21ff47184fb726101804ab59deb6b1df28c160b47bec03121489f356ef6a9",
"encrypted_file_checksum": "33c26529712db36c46aa1bd75d35bfe3b5ec6cfd781ee13694cf327a8861087b",
"encryption_seed": "Please sign to retrieve your encryption key"
},
"prover": {
"type": "satya",
"address": "0x2B1A9C62397e77Fa365ef95010e27D4eF3de0c55",
"url": "<http://172.191.63.53:8091">
},
"proof": {
"image_url": "<https://github.com/vana-com/vana-satya-proof-template/releases/download/v24/gsc-my-proof-24.tar.gz">,
"created_at": 1727408053,
"duration": 9.1242094039917,
"dlp_id": 1234,
"valid": false,
"score": 0.8411764705882352,
"authenticity": 0,
"ownership": 1,
"quality": 0.7352941176470588,
"uniqueness": 0,
"attributes": {
"total_score": 0.5,
"score_threshold": 0.68,
"email_verified": true
},
"metadata": {
"dlp_id": 1234
}
}
},
"signature": "0xbd0905b9f41d773b25b7ebeb194fafd4475107e1bc5f520ce1ebfaa0d3c362177cf06f8127a9fe07eec95f02d21f2ed893a473cf88e01e0f701460b848fe324b1c"
}Updated about 1 month ago
