Zeronym issues its Clean Hands attestation to users who prove that they are not on any sanctions lists.
See for a description of architecture.
Off-chain with Sign Protocol
Use Sign Protocol's scan API to see whether a user has a valid Clean Hands attestation.
// Set user addressconstaddress='0x123'constresp=awaitfetch(`https://mainnet-rpc.sign.global/api/scan/addresses/${address}/attestations`)constdata=awaitresp.json()constcleanHandsAttestations=data.data.rows.filter((att) => (att.fullSchemaId =='onchain_evm_10_0x8'&&att.attester =='0xB1f50c6C34C72346b1229e5C80587D0D659556Fd'&&att.isReceiver ==true&&!att.revoked &&att.validUntil > (newDate().getTime() /1000)))consthasValidAttestation=cleanHandsAttestations.length>0
On Optimism with Sign Protocol
Tutorial coming soon...
On-chain (not Optimism)
Use our off-chain attester, and verify its signature on-chain. Our attester returns a signature of the circuit ID, action ID, and user address, if the address has a clean hands attestation.
Our attester address is 0xa74772264f896843c6346ceA9B13e0128A1d3b5D.
Query for signature
// Set user addressconstuserAddress='0x123'constactionId=123456789const resp = await fetch(`https://api.holonym.io/attestation/sbts/clean-hands?action-id=${actionId}&address=${userAddress}`)
const { isUnique,signature,circuitId } =awaitresp.json();