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:
Prove the minimum
posRep-negRepthat an attester gives:minRepProve the reputation nullifiers:
nonceListProve 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?