Sismo Docs


When a user receives an attestation, they also receive a Badge that wraps the attestation data in a Non-Transferable Token a.k.a Soulbound Token (non-transferable ERC1155). The value of the attestation is encoded as the balance of that ERC1155 NFT.
Note: The Badge can be considered 'soulbound' to the source account used to confirm the user claim(s) and generate the attestation and badge.
The Hydra-S1 Soulbound Attester, for instance, allows users to update the owner of their attestation and thus their badge owner.
Badges make Sismo attestations natively readable by all apps supporting the ERC1155 NFT standard such as Snapshot, Guild and countless other apps!
Attestation <-> Badge
The user balance for a specific badge is always equal to the value of its underlying attestation. In fact, Badges are a stateless ERC1155 smart contract and balances are read directly from the underlying attestation's value:
function balanceOf(address account, uint256 id) public view returns (uint256) {
return ATTESTATIONS_REGISTRY.getAttestationValue(id, account);
Example: Alice owns the Attestation #135 with value = 4 and also owns the Badge #135 with balance = 4. (e.g the destination address 0x3a..7e owns 4 ZK Badges: "ENS DAO Voter" )
Anyone is welcome to create custom badges that read attestations!