Background
Maple is a decentralized corporate credit market. Maple provides capital to institutional borrowers through globally accessible fixed-income yield opportunities.
For Borrowers, Maple offers transparent and efficient financing done entirely on-chain.
- Funds can leverage their reputation to borrow undercollateralized without constant fear of liquidation and margin calls
- Borrowers access pools of capital governed by smart contracts and liaise with Pool Delegates to confidentially complete loan assessments
For Liquidity Providers, Maple offers a sustainable yield source through professionally managed lending pools.
- Diversified exposure across premium borrowers with staked
MPL-<liquidityAsset>
50-50 Balancer Pool Tokens (BPTs) providing reserve capital against loan defaults (E.g., MPL-USDC 50-50 BPTs for USDC Pools) - Set and forget solution with diligence outsourced to Pool Delegates
- Interest is accrued and reinvested to enable capital to compound over time
For Pool Delegates, Maple is a vehicle to attract funding and earn performance fees.
- Maple is a new platform providing decentralised asset management infrastructure
- Globally accessible pools enable increased AUM from varied liquidity sources to be provided to networks of premium, creditworthy borrowers
Technical Documentation
For all technical documentation related to the Maple protocol, please refer to the GitHub wiki.
Toolset
Development Setup
git clone git@github.com:maple-labs/maple-core.git
cd maple-core
dapp update
Build Config
To create a new config.json file, use DAPP_SRC=contracts dapp mk-standard-json | pbcopy
and then paste that into a new file. If using deployed libraries, make sure to add
export DAPP_LIBRARIES=" contracts/libraries/loan/v1/LoanLib.sol:LoanLib:0x51A189ccD2eB5e1168DdcA7e59F7c8f39AA52232 contracts/libraries/pool/v1/PoolLib.sol:PoolLib:0x2c1C30fb8cC313Ef3cfd2E2bBf2da88AdD902C30"
in that format (space delimited with a space at the beginning) with relevant libraries and addresses.
Testing
- To run all unit tests:
make test
(runs ./test.sh
) - To run a specific unit test:
./test.sh <test_name>
(e.g. ./test.sh test_fundLoan
)
To alter number of fuzz runs, change the --fuzz-runs
flag in test.sh
. Note: Number of --fuzz-runs
in test.sh
should remain constant on push. Only change for local testing if needed.
Audit Reports
Deployed Addresses
Mainnet
v1.0.0
Rinkeby
v1.0.0
Join us on Discord
Maple Discord