Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/sismo-core/sismo-badges
Contracts of the Sismo Badge Minting Protocol
https://github.com/sismo-core/sismo-badges
attestations did ethereum smart-contracts zkp
Last synced: 27 days ago
JSON representation
Contracts of the Sismo Badge Minting Protocol
- Host: GitHub
- URL: https://github.com/sismo-core/sismo-badges
- Owner: sismo-core
- License: mit
- Created: 2022-06-16T15:46:44.000Z (over 2 years ago)
- Default Branch: main
- Last Pushed: 2023-10-03T15:47:29.000Z (about 1 year ago)
- Last Synced: 2024-08-07T08:02:32.508Z (3 months ago)
- Topics: attestations, did, ethereum, smart-contracts, zkp
- Language: TypeScript
- Homepage: https://docs.sismo.io
- Size: 4.5 MB
- Stars: 16,127
- Watchers: 192
- Forks: 538
- Open Issues: 6
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
- StarryDivineSky - sismo-core/sismo-badges
README
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 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](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)