Logo

Sismo Protocol Contracts

Made by Sismo


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 it - `core/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 registry - `core/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](https://hydra-s1.docs.sismo.io) 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)

## Sismo protocol A complete overview of the protocol is available in our [documentation](https://protocol.docs.sismo.io) ## Deployed contracts Deployed contracts can be found [here](https://docs.sismo.io/sismo-docs/deployed-contract-addresses) ## Usage ### Installation ``` yarn ``` ### Compile contracts Compile contracts using hardhat ``` yarn compile ``` ### Test Launch all tests ``` yarn test ``` ### Print storage layout ``` yarn storage-layout ``` ### Deploy on local chain Terminal tab 1 ``` yarn chain ``` Terminal tab 2 ``` yarn deploy:local ``` ## Create a new Attester 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 user - `buildAttestations(request, proofData)`: You must build the attestations that will be recorded from a verified user request Other 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](https://attesters.docs.sismo.io) is offered in our documentation. Feel free open a PR with your new attester in `/attester`! ## License Distributed under the MIT License. ## Contribute Please, feel free to open issues, PRs or simply provide feedback! ## Contact Prefer [Discord](https://discord.gg/sismo) or [Twitter](https://twitter.com/sismo_eth)
bottom