
Made by <a href="https://www.sismo.io/" target="_blank">Sismo</a>
<a href="https://discord.gg/sismo" target="_blank">
<img src="https://img.shields.io/badge/Discord-7289DA?style=for-the-badge&logo=discord&logoColor=white"/>
</a>
<a href="https://twitter.com/sismo_eth" target="_blank">
<img src="https://img.shields.io/badge/Twitter-1DA1F2?style=for-the-badge&logo=twitter&logoColor=white"/>
</a>
This repository contains the smart contracts of the Sismo Protocol.
There are three core contracts:
core/AttestationsRegistry.sol: The registry stores all attestations. It is owned by the governance that authorizes/unauthorize issuers to record in itcore/Attester.sol The standard abstract contract must be inherited by attesters. Attesters are issuers of attestations. They verify user requests and build attestations that will be recorded in the registrycore/Badges.sol Reads the registry. Stateless Non Transferable Token view of attestations (ERC1155)It also contains implementations of attester in attesters/:
- HydraS1SimpleAttester.sol: ZK Attester using the Hydra S1 Proving Scheme and the notion of nullifiers. Users must provide a ZK Proof along with their request to generate attestations
- HydraS1AccountboundAttester.sol: Accountbound version of the Simple Hydra S1 Simple Attester. (Users can update at will where the attestation is stored)
A complete overview of the protocol is available in our documentation
Deployed contracts can be found here
yarn
Compile contracts using hardhat
yarn compile
Launch all tests
yarn test
yarn storage-layout
Terminal tab 1
yarn chain
Terminal tab 2
yarn deploy:local
To develop a new attester, you must inherit the core/Attester.sol abstract contract and implement the following functions:
_verifyRequest(request, proofData): You must implement the user request verification against the proof provided by the userbuildAttestations(request, proofData): You must build the attestations that will be recorded from a verified user requestOther optional hook functions that can be implemented:
_beforeRecordAttestations(request, proofData)_afterRecordAttestations(request, proofData)The /attesters/hydra-s1/HydraS1SimpleAttester.sol is a good example of an attester implementing those functions.
A guide is offered in our documentation.
Feel free open a PR with your new attester in /attester!
Distributed under the MIT License.
Please, feel free to open issues, PRs or simply provide feedback!

$ claude mcp add sismo-badges \
-- python -m otcore.mcp_server <graph>