enzymefinance / protocol

Enzyme Protocol Implementation
https://enzyme.finance
GNU General Public License v3.0
375 stars 156 forks source link
blockchain defi enzyme ethereum protocol

Enzyme Protocol

CI License: GPL v3

Enzyme is an Ethereum-based protocol for decentralized on-chain asset management. It is a protocol for people or entities to manage their wealth & the wealth of others within a customizable and safe environment. Enzyme empowers anyone to set up, manage and invest in customized on-chain investment vehicles.

Security Issues and Bug Bounty

If you find a vulnerability that may affect live deployments, you can submit a report via:

A. Immunefi (https://immunefi.com/bounty/enzymefinance/), or

B. Direct email to security@enzyme.finance

Please DO NOT open a public issue.

Using this Repository

This is the branch for active development, and it contains:

  1. Not fully audited: work-in-progress system contracts changes
  2. Audited and in-use: "plugin" contracts (e.g., integrations, price feeds, policies, fees) and peripheral contracts (e.g., wrappers) that are backwards-compatible with v4.

For deployed, in-production system contracts, see the relevant release branch (e.g., v4).

v4 contract deployments can be found here.

Prerequisites

Automatic

This repository comes with a reproducible development environment based on nix and direnv.

For the best possible developer experience, make sure you have the following installed:

Once you have these installed, your isolated local development environment will be set up automatically whenever you navigate to this directory.

Manual

If you don't want to use nix, make sure to have the following installed:

Then, clone this repository:

git clone [GIT_REPOSITORY_URL]

Compile Contracts

Generate internal interfaces for foundry deployment and tests:

make build

Run Tests

First, create your .env file by copying .env.example. Input your Ethereum (and/or other networks) node endpoint info as-needed (generally, only setting ETHEREUM_NODE_MAINNET, ETHEREUM_NODE_POLYGON, etc is fine).

Then, in order to run the test suite:

make test

You can also manually run parts of the test suite using forge directly, e.g:

forge test --match-test <REGEX>

Hardhat test coverage

This repository has been migrated from Hardhat to Foundry, and old test suites are still being ported.

If you are looking for the legacy test suite & test coverage please refer to the hardhat branch.

Contributing

See our contributing instructions.

Please note that all repositories hosted under this organization follow our Code of Conduct, make sure to review and follow it.