@excubiae/contracts
Version:
114 lines (72 loc) • 3.29 kB
Markdown
# Excubiae Smart Contracts
This package contains the smart contracts which define the composable framework for building custom attribute-based access control policies on Ethereum.
You can learn more in the [Design](https://github.com/privacy-scaling-explorations/excubiae/tree/main/documentation/03_design.md) section of the current [documentation](https://github.com/privacy-scaling-explorations/excubiae/tree/main/documentation).
The extensions are ready to use Checker / Policy contracts that give unique features (e.g., enforcing a proof of membership for a Semaphore group with frontrunning resistance).
Please, follow the [Guides](https://github.com/privacy-scaling-explorations/excubiae/tree/main/documentation/04_guides.md) section for an explanation on how to write, integrate & deploy; your own Checker & Policy contracts.
> []
> Excubiae is currently in the MVP stage. Audits are not yet available. Expect fast development cycles with potential breaking changes — use at your own risk! Please, refer to [release](https://github.com/privacy-scaling-explorations/excubiae/releases) section for latest changes and updates.
## Installation
You can install the excubiae contracts with any node package manager (`bun`, `npm`, `pnpm`,`yarn`):
```bash
bun add @excubiae/contracts
npm i @excubiae/contracts
pnpm add @excubiae/contracts
yarn add @excubiae/contracts
```
## Usage
This package is configured to support the combination of [Hardhat](https://hardhat.org/) and [Foundry](https://book.getfoundry.sh/), see the Hardhat's [documentation](https://hardhat.org/hardhat-runner/docs/advanced/hardhat-and-foundry) to learn more.
### Compile contracts
Compile the smart contracts with [Hardhat](https://hardhat.org/):
```bash
yarn compile:hardhat
```
Compile the smart contracts with Foundry's [Forge](https://book.getfoundry.sh/forge/):
```bash
yarn compile:forge
```
Run both in one command:
```bash
yarn compile
```
### Deploy extensions
The package provides deployment scripts for the available extensions.
#### Semaphore
Deploy a Semaphore extension by providing the Semaphore contract address and group ID. This extension enforces membership proofs for a Semaphore group with frontrunning resistance.
Using Hardhat Ignition:
```bash
yarn deploy:semaphore-ignition --parameters '{"semaphoreAddress":"0x1234...5678","groupId":1}' --network sepolia
```
Using Hardhat task:
```bash
yarn deploy:semaphore-task --semaphore-address 0x1234...5678 --group-id 1 --network sepolia
```
Required parameters per deployment:
- `semaphoreAddress`: Address of the deployed Semaphore contract
- `groupId`: ID of the Semaphore group to check membership against
- `network`: Network to deploy to (e.g., sepolia, hardhat, mainnet)
### Testing
Run [Mocha](https://mochajs.org/) to test the contracts (Typescript tests):
```bash
yarn test:hardhat
```
Run Foundry's [Forge](https://book.getfoundry.sh/forge/) to test the contracts (Solidity tests):
```bash
yarn test:forge
```
Run both in one command:
```bash
yarn test
```
You can also generate a test coverage report:
```bash
yarn test:coverage
```
Or a test gas report:
```bash
yarn test:report-gas
```
### Documentation
You can generate smart contract documentation (book):
```bash
yarn docs:forge
```