Please refer to the Official Documentation for high level concepts of the protocol.
This is a monorepo with the following folder structure and packages:
.
├── markets // Standalone projects that extend the core protocol with markets.
│ ├── legacy-market // Legacy Market.
│ └── perps-market // Market extension for perps.
│ └── spot-market // Market extension for spot synths.
│ └── bfp-market // Market extension for eth l1 perp.
│
├── protocol // Core protocol projects.
│ ├── governance // Governance contracts for on chain voting.
│ ├── oracle-manager // Composable oracle and price provider for the core protocol.
│ └── synthetix // Core protocol (to be extended by markets).
│
└── utils // Utilities, plugins, tooling.
├── common-config // Common npm and hardhat configuration for multiple packages in the monorepo.
├── core-contracts // Standard contract implementations like ERC20, adapted for custom router storage.
├── core-modules // Modules intended to be reused between multiple router based projects.
├── core-utils // Simple Javascript/Typescript utilities that are used in other packages (e.g. test utils, etc).
├── deps // Dependency handling (e.g. mismatched, circular etc.)
├── docgen // Auto-generate docs from natspec etc.
├── hardhat-storage // Hardhat plugin used to detect storage collisions between proxy implementations.
└── sample-project // Sample project based on router proxy and cannon.
All projects in this monorepo that involve contracts use a proxy architecture developed by Synthetix referred to as the "Router Proxy". It is basically a way to merge several contracts, which we call "modules", into a single implementation contract which is the router itself. This router is used as the implementation of the main proxy of the system.
See the Router README for more details.
If you intend to develop in this repository, please read the following items.
- Foundry
- NPM version 8
- Node version 16
In the contracts, use import "hardhat/console.sol";
, then run DEBUG=cannon:cli:rpc yarn test
.
The Liquidity Layer of Polynomial Chain is built upon the Synthetix v3 codebase, which has undergone thorough auditing. The audit report for Synthetix v3 can be accessed here. Unlike some systems, the Liquidity Layer does not issue its own stablecoin. Instead, it maintains risk parameters closely aligned with those of the base deployment that powered Polynomial Trade. This approach is deliberately chosen to ensure that both markets share a similar attack surface, minimizing potential vulnerabilities.