release-2024-01-22T222532
What's Changed
- Add initial hardhat project structure by @venables in #2
- Enable testing from VSCode by @venables in #4
- Bump got and @nomicfoundation/hardhat-toolbox by @dependabot in #7
- Add helper scripts for testing coverage, gas usage by @venables in #8
- Add PoolManagerPermission contract by @venables in #9
- Check ServiceConfiguration Operator permission by @venables in #10
- Add coverage to .eslintignore by @bricestacey in #12
- Add solhint to the lint step by @venables in #14
- Add basic PoolFactory by @bricestacey in #15
- Fix events testing by @venables in #13
- Add ERC-4246 and IPool interfaces by @ams9198 in #11
- Add skeleton Pool contract by @ams9198 in #18
- Enable format on save by @venables in #21
- Permissioned Pool factory by @bricestacey in #16
- Add LoanFactory, Loan, and state transitions by @bricestacey in #22
- Add first loss contributions to the Pool by @ams9198 in #20
- Link PoolLib in Loan.test by @venables in #25
- Enforce code-formatting in github actions by @venables in #24
- Update visibility by @bricestacey in #26
- Post ERC20 collateral by @bricestacey in #28
- Add ability to post NFT as collateral by @bricestacey in #30
- Add Pool Access Control methods by @venables in #27
- Add flow for depositing into the pool by @ams9198 in #29
- Disable pool token transfers by @ams9198 in #32
- Clean up associated IPool types by @ams9198 in #31
- Add initial withdrawWindow calculations by @venables in #35
- Allow PM withdrawals of first loss once a pool is closed by @ams9198 in #34
- Record Loan collateral by @bricestacey in #33
- Better handling for withdraw windows by @venables in #36
- Add drop dead timestamp for loans by @bricestacey in #37
- Add ERC4626 initial mint support by @ams9198 in #39
- Allow anyone to create a loan by @bricestacey in #40
- Add withdrawal requests by @venables in #38
- Add basic Loan parameters by @bricestacey in #41
- Remove extraneous Poollib function by @ams9198 in #42
- Add funding loans by @bricestacey in #43
- Add support for defaults by @ams9198 in #44
- Emit LoanFunded and LoanDrawnDown events by @bricestacey in #45
- VAL-34 Add guards against funding untrusted loans by @ams9198 in #48
- Loan Interest Payments by @bricestacey in #47
- VAL-39 Apply first-loss to the pool in case of default by @ams9198 in #49
- EIP-4626 Withdrawals with a crank by @venables in #46
- Add pool fee during interest payments by @bricestacey in #50
- VAL-37 Add expected interest accruals to nav calculation by @ams9198 in #51
- VAL-25 Add method to allow claiming collateral items under specific conditions by @ams9198 in #52
- Fix build by @bricestacey in #55
- Cleanup: only read new Pool.lifeCycleState() computed value instead of stored var by @ams9198 in #57
- Pool fees setting should be per pool, not service level by @bricestacey in #56
- Add
totalAvailableAssets
methods which account for withdrawable/redeemable funds by @venables in #58 - VAL-36 Allow setting pool capacity by @ams9198 in #54
- VAL-52 Allow canceling loans in funded states by @ams9198 in #59
- VAL-44, VAL-63: Updates to default / FL behavior in Closed state by @ams9198 in #61
- Shrink pool by @bricestacey in #62
- Add support for fixed fees by @bricestacey in #53
- Remove contract size constraint by @ams9198 in #64
- VAL-59 Allow cancelling requests by @venables in #60
- Add late payment when making a late payment by @bricestacey in #63
- VAL-8 Add ToS acceptance criteria to permissioned pools & factory by @ams9198 in #66
- VAL-23 Implement rounding per 4626 by @ams9198 in #67
- Add origination fees by @bricestacey in #65
- VAL-67 Add support for adjusting the pool end date by @ams9198 in #68
- Add verite credential support by @venables in #69
- Allow withdrawals of full token balance + crank tweak by @ams9198 in #72
- Pull most loan settings into an ILoanSettings struct by @bricestacey in #70
- Decrement global offsets when redeem / withdraw is performed by @ams9198 in #73
- Add markCallback function by @bricestacey in #71
- Add drawdown function for open term loans by @bricestacey in #74
- VAL-62 Part 1: add first e2e scenario test by @ams9198 in #75
- Use withdrawGate() in crank by @ams9198 in #76
- Move withdraw logic to PoolWithdrawManager contract by @venables in #77
- VAL-62 (cont): Add scenario 2 by @ams9198 in #78
- Add prorated fees for open term loans by @bricestacey in #79
- Rename pool manager to pool admin by @venables in #81
- VAL-91 Don't allow funding loans with earmarked funds by @ams9198 in #82
- Rename Valyria to Perimeter by @bricestacey in #84
- Remove withdrawManager proxy methods (rename to WithdrawController) by @venables in #86
- VAL-86 Add PermissionedLoan and Factory by @ams9198 in #80
- VAL-62 (cont.) Scenario 3 by @ams9198 in #89
- Fix deposit exchange rate by @ams9198 in #91
- Add PoolController to handle pool admin tasks by @venables in #90
- Add LoanFunded event to the Pool by @bricestacey in #83
- Add tasks to manage service configuration + tests by @bricestacey in #92
- VAL-69 Constant-time, per-user "crank" by @ams9198 in #88
- VAL-87 Soften requirement on Collateralized loan state by @ams9198 in #93
- VAL-89 Shrink PermissionedPoolFactory by using a factory to created the AccessControl contract by @ams9198 in #94
- Move first loss, default, and loan issuance to pool controller by @venables in #96
- VAL-95 Add scenario 4 by @ams9198 in #97
- Fix business scenario 4 tests by @venables in #102
- Move PoolController,WithdrawController factory definitions to PoolFactory constructor by @venables in #101
- VAL-91 (cont.) Prevent deploying capital to new loans unless it exists in the pool by @ams9198 in #99
- Update exchange rate in crank by @ams9198 in #100
- VAL-104 Run crank lazily by @ams9198 in #104
- Allow PAs to set cancellation fees by @venables in #105
- Add deploy script for permissioned and permissionless protocols by @bricestacey in #103
- Require pools to have sufficient first loss minimum by @bricestacey in #106
- Add Global Protocol Fee parameter and set to zero by @bricestacey in #107
- VAL-50 Pt. 1 (Reopened) Tighten loan <> pool interactions to fix accounting gaps by @ams9198 in #108
- Add more ServiceConfiguration setters and tasks by @bricestacey in #109
- VAL-110 Ensure deposits go against callers by @ams9198 in #110
- VAL-113 Validate all "bps" variables by @ams9198 in #114
- Fees redo to be more clear by @bricestacey in #115
- VAL-111 Defaults only apply FL to cover the loan principal by @ams9198 in #113
- VAL-112 Prevent creating pools with unsupported asset types by @ams9198 in #112
- VAL-105 Add withdraw / redeem methods and tests to PermissionedPool by @ams9198 in #111
- Don't do unnecessary crank "simulations" by @ams9198 in #117
- Fix all compile-time warnings by @venables in #118
- VAL-100 Lower the withdrawal window to 1 day automatically on Pool close by @ams9198 in #121
- [VAL-88] Add verite check for PoolAdmin and remove AllowList by @venables in #116
- Complete full payment by @bricestacey in #119
- [VAL-43] Update PermissionedLoan to use override modifier pattern by @venables in #122
- [No ticket] Rename functions for consistency by @ams9198 in #123
- Allow Pool Admin to modify pool fees by @bricestacey in #120
- VAL-102 Return additional pool statistics to help with yield calculations by @ams9198 in #125
- Add solidity docgen by @venables in #126
- Refactor Pool / loan factories to remove duplication and cover gaps by @ams9198 in #128
- VAL-114 First cut of adding an upgradeable contract by @ams9198 in #127
- VAL-117 Make Pool/WithdrawControllers upgradeable + Loan by @ams9198 in #131
- Remove accidental .only by @venables in #132
- Add permissioned versions of all Business Scenarios by @venables in #130
- Fix the divide by zero bug when someone transfers directly by @venables in #135
- Fix PoolController test by @bricestacey in #136
- Add pauser role and user it in service config by @bricestacey in #124
- Refactor FeeVault tests to use support functions by @bricestacey in #138
- VAL-118 Make PoolAccessControl and PoolAdminAccessControl upgradeable by @ams9198 in #137
- Update docs to break out per file by @venables in #134
- Create LICENSE by @pickle4325 in #139
- Change SPDX-License-Identifiers to MIT by @pickle4325 in #141
- Make PoolAcessControl paused when protocol is paused by @bricestacey in #142
- VAL-120 Make ToSAcceptanceRegistry upgradeable by @ams9198 in #140
- Handle case where all assets are missing, but tokens exist by @venables in #143
- Fix more tests with incorrect await / expect ordering by @ams9198 in #146
- Fix lint warnings and type errors (and check types in CI) by @venables in #145
- Update permissionless deploy script by @bricestacey in #144
- Add etherscan verification info by @bricestacey in #147
- Allow anyone to submit a verification result by @venables in #148
- Update deploy script for permissioned protocol by @bricestacey in #150
- Prevent funding the same loan 2x by @ams9198 in #152
- VAL-123 Update docs to be one large file by @venables in #153
- Update deploy script by @bricestacey in #151
- VAL-121 Consolidate Vault implementations; make upgradeable by @ams9198 in #154
- [VAL-124] Rename crank to snapshot by @venables in #155
- Remove hardhat/console.sol imports by @venables in #156
- Move factories to the /factories folder by @venables in #157
- Add code comments and cleanups by @ams9198 in #159
- [VAL-81] Remove TODOs from code by @venables in #161
- Update PoolController to check PoolAdmin verification on every action by @venables in #158
- Verite integration updates by @bricestacey in #160
- Verite on chain verify scripts by @bricestacey in #163
- Add Verite verification script by @venables in #162
- [No ticket] Remove "Paused" from PoolLifecycleState enum by @ams9198 in #165
- Add more code comments / cleanup by @ams9198 in #164
- Rename ACCOUNT_ACCOUNT to ACCOUNT_OTHER by @bricestacey in #167
- Add polygon support by @bricestacey in #166
- Fix lint warnings by @bricestacey in #169
- [Bug] Un-stick funds in FeeVault via mediated access through the controller by @ams9198 in #171
- VAL-132 Allow cancellation of full requested balance by @ams9198 in #173
- VAL-128 Fix 5.1 audit report issue. by @ams9198 in #172
- VAL-137 Remove unused ILoanLifeCycleState.Callback enum state by @ams9198 in #174
- VAL-134 Add missing permissioning checks around the Loan by @ams9198 in #175
- VAL-139 Missing Sanity Checks by @ams9198 in #176
- VAL-133 Send late fees to the FL Vault (not the Pool) by @ams9198 in #177
- VAL-138 Inconsistent global withdraw state after cancellation by @ams9198 in #178
- [No ticket] Silence warning by removing extraneous variable (and test) by @ams9198 in #180
- VAL-136 Fix issue where borrower had extra time to repay principal without penalty by @ams9198 in #181
- VAL-142 Return actual value from completeFullPayment() by @ams9198 in #182
- VAL-131 (Part 2) Add methods for previewing withdraw/redeem request fees by @ams9198 in #184
- VAL-131 Updates to conform better to EIP 4626 by @ams9198 in #183
- VAL-129 [Refactor] Switch to per-lender "crank" that iterates over snapshots by @ams9198 in #179
- VAL-143 Snapshot the pool on all loan payments by @ams9198 in #186
- Update license to Apache 2.0 by @ams9198 in #198
- [No ticket] Update README, deployment scripts for clarity by @ams9198 in #199
- Add audit report by @ams9198 in #201
- Update README by @ams9198 in #203
- chore(ci): implement code scanning by @jscaltreto in #207
New Contributors
- @venables made their first contribution in #2
- @dependabot made their first contribution in #7
- @bricestacey made their first contribution in #12
- @ams9198 made their first contribution in #11
- @pickle4325 made their first contribution in #139
- @jscaltreto made their first contribution in #207
Full Changelog: https://github.com/circlefin/perimeter-protocol/commits/release-2024-01-22T222532