8. Reputation proof

Generate a reputation proof

See 4. Epoch key proof to know how to generate a current user state.

Specify what will be included in the reputation proof:

  1. Prove the minimum posRep-negRep that an attester gives: minRep

  2. Prove the reputation nullifiers: nonceList

  3. Prove the graffiti pre-image: graffitiPreImage

User should also specify the attesterId and epochKeyNonce to generate an output epoch key.

const attesterID = await contract.attesters(attester.address)
const epkNonce = 0
const rep = userState.getRepByAttester(BigInt(attesterId))
const minRep = Number(rep.posRep) - Number(rep.negRep)
const proveGraffiti = 0 // 0 then it will not prove the pre-image
const nonceList = 0 // 0 or [-1,..,-1] with length 'maxReputationBudget' means the proof will not generate reputation nullifiers.

const proof = await userState.genProveReputationProof(
    attesterId,
    epkNonce,
    minRep,
    proveGraffiti,
    graffitiPreImage,
    nonceList
)

Spend reputation

Call the spendReputation in UniRep smart contract

Get the proof index

Use the reputation proof to attest others. To construct another attestation, epochKey, and index, see 5. Attest

Verify the proof

with UniRep smart contract:

with a prover:

Verify UniRep state

Check global state tree root exits.

Verify reputation nullifiers.

Last updated

Was this helpful?