Grappa
An option protocol that focus on composability and capital efficiency.
Don't waste your capital.
Introduction
This is the repository of the core component of Grappa, which is a decentralized settlement layer for options and spreads.
In our design, a option (derivative) token can be created by different margin engine. Users with different risk tolerance can choose among different engines based on gas cost, capital efficiency and risk of liquidation.
We also natively support call spread and put spread that can increase capital efficiency by a lot while being fully collateralized.
Documentation
For detailed documentation about how the system architecture is designed, please visit docs
Get Started
forge build
forge test
For auto linting and running gas snapshot, you will also need to setup npm environment, and install husky hooks
# install yarn dependencies
yarn
# install hooks
npx husky install
Test locally
forge test
Run Coverage
forge coverage
Linting
forge fmt
Deployment
Simulate deployment for launch
forge script script/deploy-launch.sol --private-key <your PK> --fork-url <RPC-endpoint>
Run Slither
installation
pip3 install slither-analyzer
pip3 install solc-select
solc-select install 0.8.13
solc-select use 0.8.13
Run analysis
slither ./src/core/FullMargin
slither ./src/core/
Install Grappa into your project
With hardhat
yarn add @grappafinance/grappa-contracts
// or
npm install @grappafinance/grappa-contracts
With Foundry
forge install grappafinance/core
Then you will be able to import the libraries or contract interface
pragma solidity ^0.8.0;
import "@grappafinance/grappa-contracts/src/libraries/ActionUtil.sol";