@rev-net/core-v6 0.0.7 → 0.0.9
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/ADMINISTRATION.md +186 -0
- package/ARCHITECTURE.md +87 -0
- package/README.md +4 -2
- package/RISKS.md +49 -0
- package/SKILLS.md +22 -2
- package/STYLE_GUIDE.md +482 -0
- package/foundry.toml +6 -6
- package/package.json +13 -10
- package/script/Deploy.s.sol +3 -2
- package/src/REVDeployer.sol +129 -72
- package/src/REVLoans.sol +174 -165
- package/src/interfaces/IREVDeployer.sol +111 -72
- package/src/interfaces/IREVLoans.sol +116 -76
- package/src/structs/REV721TiersHookFlags.sol +14 -0
- package/src/structs/REVBaseline721HookConfig.sol +27 -0
- package/src/structs/REVDeploy721TiersHookConfig.sol +2 -2
- package/test/REV.integrations.t.sol +4 -3
- package/test/REVAutoIssuanceFuzz.t.sol +12 -8
- package/test/REVDeployerAuditRegressions.t.sol +4 -3
- package/test/REVInvincibility.t.sol +8 -6
- package/test/REVInvincibilityHandler.sol +1 -0
- package/test/REVLifecycle.t.sol +4 -3
- package/test/REVLoans.invariants.t.sol +5 -3
- package/test/REVLoansAttacks.t.sol +4 -3
- package/test/REVLoansAuditRegressions.t.sol +13 -24
- package/test/REVLoansFeeRecovery.t.sol +4 -3
- package/test/REVLoansSourced.t.sol +4 -3
- package/test/REVLoansUnSourced.t.sol +4 -3
- package/test/REVLoans_AuditFindings.t.sol +644 -0
- package/test/TestEmptyBuybackSpecs.t.sol +4 -3
- package/test/TestPR09_ConversionDocumentation.t.sol +4 -3
- package/test/TestPR10_LiquidationBehavior.t.sol +4 -3
- package/test/TestPR11_LowFindings.t.sol +4 -3
- package/test/TestPR12_FlashLoanSurplus.t.sol +4 -3
- package/test/TestPR13_CrossSourceReallocation.t.sol +4 -3
- package/test/TestPR15_CashOutCallerValidation.t.sol +4 -3
- package/test/TestPR16_ZeroRepayment.t.sol +4 -3
- package/test/TestPR21_Uint112Overflow.t.sol +4 -3
- package/test/TestPR22_HookArrayOOB.t.sol +4 -3
- package/test/TestPR26_BurnHeldTokens.t.sol +4 -3
- package/test/TestPR27_CEIPattern.t.sol +4 -3
- package/test/TestPR29_SwapTerminalPermission.t.sol +4 -3
- package/test/TestPR32_MixedFixes.t.sol +4 -3
- package/test/TestSplitWeightAdjustment.t.sol +445 -0
- package/test/TestSplitWeightE2E.t.sol +528 -0
- package/test/TestSplitWeightFork.t.sol +821 -0
- package/test/TestStageTransitionBorrowable.t.sol +4 -3
- package/test/fork/ForkTestBase.sol +617 -0
- package/test/fork/TestCashOutFork.t.sol +245 -0
- package/test/fork/TestLoanBorrowFork.t.sol +163 -0
- package/test/fork/TestLoanLiquidationFork.t.sol +129 -0
- package/test/fork/TestLoanReallocateFork.t.sol +103 -0
- package/test/fork/TestLoanRepayFork.t.sol +184 -0
- package/test/fork/TestSplitWeightFork.t.sol +186 -0
- package/test/mock/MockBuybackDataHook.sol +11 -4
- package/test/mock/MockBuybackDataHookMintPath.sol +11 -3
- package/test/regression/TestI20_CumulativeLoanCounter.t.sol +6 -5
- package/test/regression/TestL27_LiquidateGapHandling.t.sol +7 -6
- package/SECURITY.md +0 -68
|
@@ -31,7 +31,7 @@ import {JB721TiersHookStore} from "@bananapus/721-hook-v6/src/JB721TiersHookStor
|
|
|
31
31
|
import {JBAddressRegistry} from "@bananapus/address-registry-v6/src/JBAddressRegistry.sol";
|
|
32
32
|
import {IJBAddressRegistry} from "@bananapus/address-registry-v6/src/interfaces/IJBAddressRegistry.sol";
|
|
33
33
|
|
|
34
|
-
contract TestPR09_ConversionDocumentation is TestBaseWorkflow
|
|
34
|
+
contract TestPR09_ConversionDocumentation is TestBaseWorkflow {
|
|
35
35
|
bytes32 REV_DEPLOYER_SALT = "REVDeployer";
|
|
36
36
|
bytes32 ERC20_SALT = "REV_TOKEN";
|
|
37
37
|
|
|
@@ -112,7 +112,8 @@ contract TestPR09_ConversionDocumentation is TestBaseWorkflow, JBTest {
|
|
|
112
112
|
FEE_PROJECT_ID = jbProjects().createFor(multisig());
|
|
113
113
|
SUCKER_REGISTRY = new JBSuckerRegistry(jbDirectory(), jbPermissions(), multisig(), address(0));
|
|
114
114
|
HOOK_STORE = new JB721TiersHookStore();
|
|
115
|
-
EXAMPLE_HOOK =
|
|
115
|
+
EXAMPLE_HOOK =
|
|
116
|
+
new JB721TiersHook(jbDirectory(), jbPermissions(), jbRulesets(), HOOK_STORE, jbSplits(), multisig());
|
|
116
117
|
ADDRESS_REGISTRY = new JBAddressRegistry();
|
|
117
118
|
HOOK_DEPLOYER = new JB721TiersHookDeployer(EXAMPLE_HOOK, HOOK_STORE, ADDRESS_REGISTRY, multisig());
|
|
118
119
|
PUBLISHER = new CTPublisher(jbDirectory(), jbPermissions(), FEE_PROJECT_ID, multisig());
|
|
@@ -134,7 +135,7 @@ contract TestPR09_ConversionDocumentation is TestBaseWorkflow, JBTest {
|
|
|
134
135
|
FEE_PROJECT_ID,
|
|
135
136
|
HOOK_DEPLOYER,
|
|
136
137
|
PUBLISHER,
|
|
137
|
-
|
|
138
|
+
IJBBuybackHookRegistry(address(MOCK_BUYBACK)),
|
|
138
139
|
address(LOANS_CONTRACT),
|
|
139
140
|
TRUSTED_FORWARDER
|
|
140
141
|
);
|
|
@@ -33,7 +33,7 @@ import {IJBAddressRegistry} from "@bananapus/address-registry-v6/src/interfaces/
|
|
|
33
33
|
import {IERC721} from "@openzeppelin/contracts/token/ERC721/IERC721.sol";
|
|
34
34
|
|
|
35
35
|
/// @notice Tests for PR #10: liquidation behavior documentation and collateral burn mechanics.
|
|
36
|
-
contract TestPR10_LiquidationBehavior is TestBaseWorkflow
|
|
36
|
+
contract TestPR10_LiquidationBehavior is TestBaseWorkflow {
|
|
37
37
|
bytes32 REV_DEPLOYER_SALT = "REVDeployer";
|
|
38
38
|
|
|
39
39
|
REVDeployer REV_DEPLOYER;
|
|
@@ -59,7 +59,8 @@ contract TestPR10_LiquidationBehavior is TestBaseWorkflow, JBTest {
|
|
|
59
59
|
FEE_PROJECT_ID = jbProjects().createFor(multisig());
|
|
60
60
|
SUCKER_REGISTRY = new JBSuckerRegistry(jbDirectory(), jbPermissions(), multisig(), address(0));
|
|
61
61
|
HOOK_STORE = new JB721TiersHookStore();
|
|
62
|
-
EXAMPLE_HOOK =
|
|
62
|
+
EXAMPLE_HOOK =
|
|
63
|
+
new JB721TiersHook(jbDirectory(), jbPermissions(), jbRulesets(), HOOK_STORE, jbSplits(), multisig());
|
|
63
64
|
ADDRESS_REGISTRY = new JBAddressRegistry();
|
|
64
65
|
HOOK_DEPLOYER = new JB721TiersHookDeployer(EXAMPLE_HOOK, HOOK_STORE, ADDRESS_REGISTRY, multisig());
|
|
65
66
|
PUBLISHER = new CTPublisher(jbDirectory(), jbPermissions(), FEE_PROJECT_ID, multisig());
|
|
@@ -83,7 +84,7 @@ contract TestPR10_LiquidationBehavior is TestBaseWorkflow, JBTest {
|
|
|
83
84
|
FEE_PROJECT_ID,
|
|
84
85
|
HOOK_DEPLOYER,
|
|
85
86
|
PUBLISHER,
|
|
86
|
-
|
|
87
|
+
IJBBuybackHookRegistry(address(MOCK_BUYBACK)),
|
|
87
88
|
address(LOANS_CONTRACT),
|
|
88
89
|
TRUSTED_FORWARDER
|
|
89
90
|
);
|
|
@@ -37,7 +37,7 @@ struct FeeProjectConfig {
|
|
|
37
37
|
REVSuckerDeploymentConfig suckerDeploymentConfiguration;
|
|
38
38
|
}
|
|
39
39
|
|
|
40
|
-
contract TestPR11_LowFindings is TestBaseWorkflow
|
|
40
|
+
contract TestPR11_LowFindings is TestBaseWorkflow {
|
|
41
41
|
bytes32 REV_DEPLOYER_SALT = "REVDeployer";
|
|
42
42
|
bytes32 ERC20_SALT = "REV_TOKEN";
|
|
43
43
|
|
|
@@ -235,7 +235,8 @@ contract TestPR11_LowFindings is TestBaseWorkflow, JBTest {
|
|
|
235
235
|
FEE_PROJECT_ID = jbProjects().createFor(multisig());
|
|
236
236
|
SUCKER_REGISTRY = new JBSuckerRegistry(jbDirectory(), jbPermissions(), multisig(), address(0));
|
|
237
237
|
HOOK_STORE = new JB721TiersHookStore();
|
|
238
|
-
EXAMPLE_HOOK =
|
|
238
|
+
EXAMPLE_HOOK =
|
|
239
|
+
new JB721TiersHook(jbDirectory(), jbPermissions(), jbRulesets(), HOOK_STORE, jbSplits(), multisig());
|
|
239
240
|
ADDRESS_REGISTRY = new JBAddressRegistry();
|
|
240
241
|
HOOK_DEPLOYER = new JB721TiersHookDeployer(EXAMPLE_HOOK, HOOK_STORE, ADDRESS_REGISTRY, multisig());
|
|
241
242
|
PUBLISHER = new CTPublisher(jbDirectory(), jbPermissions(), FEE_PROJECT_ID, multisig());
|
|
@@ -262,7 +263,7 @@ contract TestPR11_LowFindings is TestBaseWorkflow, JBTest {
|
|
|
262
263
|
FEE_PROJECT_ID,
|
|
263
264
|
HOOK_DEPLOYER,
|
|
264
265
|
PUBLISHER,
|
|
265
|
-
|
|
266
|
+
IJBBuybackHookRegistry(address(MOCK_BUYBACK)),
|
|
266
267
|
address(LOANS_CONTRACT),
|
|
267
268
|
TRUSTED_FORWARDER
|
|
268
269
|
);
|
|
@@ -31,7 +31,7 @@ import {JBAddressRegistry} from "@bananapus/address-registry-v6/src/JBAddressReg
|
|
|
31
31
|
import {IJBAddressRegistry} from "@bananapus/address-registry-v6/src/interfaces/IJBAddressRegistry.sol";
|
|
32
32
|
|
|
33
33
|
/// @notice Tests showing that flash loan surplus manipulation is economically unprofitable.
|
|
34
|
-
contract TestPR12_FlashLoanSurplus is TestBaseWorkflow
|
|
34
|
+
contract TestPR12_FlashLoanSurplus is TestBaseWorkflow {
|
|
35
35
|
bytes32 REV_DEPLOYER_SALT = "REVDeployer";
|
|
36
36
|
bytes32 ERC20_SALT = "REV_TOKEN";
|
|
37
37
|
|
|
@@ -59,7 +59,8 @@ contract TestPR12_FlashLoanSurplus is TestBaseWorkflow, JBTest {
|
|
|
59
59
|
FEE_PROJECT_ID = jbProjects().createFor(multisig());
|
|
60
60
|
SUCKER_REGISTRY = new JBSuckerRegistry(jbDirectory(), jbPermissions(), multisig(), address(0));
|
|
61
61
|
HOOK_STORE = new JB721TiersHookStore();
|
|
62
|
-
EXAMPLE_HOOK =
|
|
62
|
+
EXAMPLE_HOOK =
|
|
63
|
+
new JB721TiersHook(jbDirectory(), jbPermissions(), jbRulesets(), HOOK_STORE, jbSplits(), multisig());
|
|
63
64
|
ADDRESS_REGISTRY = new JBAddressRegistry();
|
|
64
65
|
HOOK_DEPLOYER = new JB721TiersHookDeployer(EXAMPLE_HOOK, HOOK_STORE, ADDRESS_REGISTRY, multisig());
|
|
65
66
|
PUBLISHER = new CTPublisher(jbDirectory(), jbPermissions(), FEE_PROJECT_ID, multisig());
|
|
@@ -83,7 +84,7 @@ contract TestPR12_FlashLoanSurplus is TestBaseWorkflow, JBTest {
|
|
|
83
84
|
FEE_PROJECT_ID,
|
|
84
85
|
HOOK_DEPLOYER,
|
|
85
86
|
PUBLISHER,
|
|
86
|
-
|
|
87
|
+
IJBBuybackHookRegistry(address(MOCK_BUYBACK)),
|
|
87
88
|
address(LOANS_CONTRACT),
|
|
88
89
|
TRUSTED_FORWARDER
|
|
89
90
|
);
|
|
@@ -31,7 +31,7 @@ import {JBAddressRegistry} from "@bananapus/address-registry-v6/src/JBAddressReg
|
|
|
31
31
|
import {IJBAddressRegistry} from "@bananapus/address-registry-v6/src/interfaces/IJBAddressRegistry.sol";
|
|
32
32
|
|
|
33
33
|
/// @notice Tests for PR #13: cross-source reallocation prevention.
|
|
34
|
-
contract TestPR13_CrossSourceReallocation is TestBaseWorkflow
|
|
34
|
+
contract TestPR13_CrossSourceReallocation is TestBaseWorkflow {
|
|
35
35
|
bytes32 REV_DEPLOYER_SALT = "REVDeployer";
|
|
36
36
|
|
|
37
37
|
REVDeployer REV_DEPLOYER;
|
|
@@ -57,7 +57,8 @@ contract TestPR13_CrossSourceReallocation is TestBaseWorkflow, JBTest {
|
|
|
57
57
|
FEE_PROJECT_ID = jbProjects().createFor(multisig());
|
|
58
58
|
SUCKER_REGISTRY = new JBSuckerRegistry(jbDirectory(), jbPermissions(), multisig(), address(0));
|
|
59
59
|
HOOK_STORE = new JB721TiersHookStore();
|
|
60
|
-
EXAMPLE_HOOK =
|
|
60
|
+
EXAMPLE_HOOK =
|
|
61
|
+
new JB721TiersHook(jbDirectory(), jbPermissions(), jbRulesets(), HOOK_STORE, jbSplits(), multisig());
|
|
61
62
|
ADDRESS_REGISTRY = new JBAddressRegistry();
|
|
62
63
|
HOOK_DEPLOYER = new JB721TiersHookDeployer(EXAMPLE_HOOK, HOOK_STORE, ADDRESS_REGISTRY, multisig());
|
|
63
64
|
PUBLISHER = new CTPublisher(jbDirectory(), jbPermissions(), FEE_PROJECT_ID, multisig());
|
|
@@ -81,7 +82,7 @@ contract TestPR13_CrossSourceReallocation is TestBaseWorkflow, JBTest {
|
|
|
81
82
|
FEE_PROJECT_ID,
|
|
82
83
|
HOOK_DEPLOYER,
|
|
83
84
|
PUBLISHER,
|
|
84
|
-
|
|
85
|
+
IJBBuybackHookRegistry(address(MOCK_BUYBACK)),
|
|
85
86
|
address(LOANS_CONTRACT),
|
|
86
87
|
TRUSTED_FORWARDER
|
|
87
88
|
);
|
|
@@ -37,7 +37,7 @@ struct FeeProjectConfig {
|
|
|
37
37
|
REVSuckerDeploymentConfig suckerDeploymentConfiguration;
|
|
38
38
|
}
|
|
39
39
|
|
|
40
|
-
contract TestPR15_CashOutCallerValidation is TestBaseWorkflow
|
|
40
|
+
contract TestPR15_CashOutCallerValidation is TestBaseWorkflow {
|
|
41
41
|
bytes32 REV_DEPLOYER_SALT = "REVDeployer";
|
|
42
42
|
bytes32 ERC20_SALT = "REV_TOKEN";
|
|
43
43
|
|
|
@@ -175,7 +175,8 @@ contract TestPR15_CashOutCallerValidation is TestBaseWorkflow, JBTest {
|
|
|
175
175
|
FEE_PROJECT_ID = jbProjects().createFor(multisig());
|
|
176
176
|
SUCKER_REGISTRY = new JBSuckerRegistry(jbDirectory(), jbPermissions(), multisig(), address(0));
|
|
177
177
|
HOOK_STORE = new JB721TiersHookStore();
|
|
178
|
-
EXAMPLE_HOOK =
|
|
178
|
+
EXAMPLE_HOOK =
|
|
179
|
+
new JB721TiersHook(jbDirectory(), jbPermissions(), jbRulesets(), HOOK_STORE, jbSplits(), multisig());
|
|
179
180
|
ADDRESS_REGISTRY = new JBAddressRegistry();
|
|
180
181
|
HOOK_DEPLOYER = new JB721TiersHookDeployer(EXAMPLE_HOOK, HOOK_STORE, ADDRESS_REGISTRY, multisig());
|
|
181
182
|
PUBLISHER = new CTPublisher(jbDirectory(), jbPermissions(), FEE_PROJECT_ID, multisig());
|
|
@@ -197,7 +198,7 @@ contract TestPR15_CashOutCallerValidation is TestBaseWorkflow, JBTest {
|
|
|
197
198
|
FEE_PROJECT_ID,
|
|
198
199
|
HOOK_DEPLOYER,
|
|
199
200
|
PUBLISHER,
|
|
200
|
-
|
|
201
|
+
IJBBuybackHookRegistry(address(MOCK_BUYBACK)),
|
|
201
202
|
address(LOANS_CONTRACT),
|
|
202
203
|
TRUSTED_FORWARDER
|
|
203
204
|
);
|
|
@@ -32,7 +32,7 @@ import {JBAddressRegistry} from "@bananapus/address-registry-v6/src/JBAddressReg
|
|
|
32
32
|
import {IJBAddressRegistry} from "@bananapus/address-registry-v6/src/interfaces/IJBAddressRegistry.sol";
|
|
33
33
|
|
|
34
34
|
/// @notice Tests for PR #16: zero repayment prevention.
|
|
35
|
-
contract TestPR16_ZeroRepayment is TestBaseWorkflow
|
|
35
|
+
contract TestPR16_ZeroRepayment is TestBaseWorkflow {
|
|
36
36
|
bytes32 REV_DEPLOYER_SALT = "REVDeployer";
|
|
37
37
|
|
|
38
38
|
REVDeployer REV_DEPLOYER;
|
|
@@ -58,7 +58,8 @@ contract TestPR16_ZeroRepayment is TestBaseWorkflow, JBTest {
|
|
|
58
58
|
FEE_PROJECT_ID = jbProjects().createFor(multisig());
|
|
59
59
|
SUCKER_REGISTRY = new JBSuckerRegistry(jbDirectory(), jbPermissions(), multisig(), address(0));
|
|
60
60
|
HOOK_STORE = new JB721TiersHookStore();
|
|
61
|
-
EXAMPLE_HOOK =
|
|
61
|
+
EXAMPLE_HOOK =
|
|
62
|
+
new JB721TiersHook(jbDirectory(), jbPermissions(), jbRulesets(), HOOK_STORE, jbSplits(), multisig());
|
|
62
63
|
ADDRESS_REGISTRY = new JBAddressRegistry();
|
|
63
64
|
HOOK_DEPLOYER = new JB721TiersHookDeployer(EXAMPLE_HOOK, HOOK_STORE, ADDRESS_REGISTRY, multisig());
|
|
64
65
|
PUBLISHER = new CTPublisher(jbDirectory(), jbPermissions(), FEE_PROJECT_ID, multisig());
|
|
@@ -82,7 +83,7 @@ contract TestPR16_ZeroRepayment is TestBaseWorkflow, JBTest {
|
|
|
82
83
|
FEE_PROJECT_ID,
|
|
83
84
|
HOOK_DEPLOYER,
|
|
84
85
|
PUBLISHER,
|
|
85
|
-
|
|
86
|
+
IJBBuybackHookRegistry(address(MOCK_BUYBACK)),
|
|
86
87
|
address(LOANS_CONTRACT),
|
|
87
88
|
TRUSTED_FORWARDER
|
|
88
89
|
);
|
|
@@ -33,7 +33,7 @@ import {IJBAddressRegistry} from "@bananapus/address-registry-v6/src/interfaces/
|
|
|
33
33
|
|
|
34
34
|
/// @title TestPR21_Uint112Overflow
|
|
35
35
|
/// @notice Tests for uint112 truncation fix in REVLoans._adjust()
|
|
36
|
-
contract TestPR21_Uint112Overflow is TestBaseWorkflow
|
|
36
|
+
contract TestPR21_Uint112Overflow is TestBaseWorkflow {
|
|
37
37
|
bytes32 REV_DEPLOYER_SALT = "REVDeployer";
|
|
38
38
|
bytes32 ERC20_SALT = "REV_TOKEN";
|
|
39
39
|
|
|
@@ -61,7 +61,8 @@ contract TestPR21_Uint112Overflow is TestBaseWorkflow, JBTest {
|
|
|
61
61
|
|
|
62
62
|
SUCKER_REGISTRY = new JBSuckerRegistry(jbDirectory(), jbPermissions(), multisig(), address(0));
|
|
63
63
|
HOOK_STORE = new JB721TiersHookStore();
|
|
64
|
-
EXAMPLE_HOOK =
|
|
64
|
+
EXAMPLE_HOOK =
|
|
65
|
+
new JB721TiersHook(jbDirectory(), jbPermissions(), jbRulesets(), HOOK_STORE, jbSplits(), multisig());
|
|
65
66
|
ADDRESS_REGISTRY = new JBAddressRegistry();
|
|
66
67
|
HOOK_DEPLOYER = new JB721TiersHookDeployer(EXAMPLE_HOOK, HOOK_STORE, ADDRESS_REGISTRY, multisig());
|
|
67
68
|
PUBLISHER = new CTPublisher(jbDirectory(), jbPermissions(), FEE_PROJECT_ID, multisig());
|
|
@@ -88,7 +89,7 @@ contract TestPR21_Uint112Overflow is TestBaseWorkflow, JBTest {
|
|
|
88
89
|
FEE_PROJECT_ID,
|
|
89
90
|
HOOK_DEPLOYER,
|
|
90
91
|
PUBLISHER,
|
|
91
|
-
|
|
92
|
+
IJBBuybackHookRegistry(address(MOCK_BUYBACK)),
|
|
92
93
|
address(LOANS_CONTRACT),
|
|
93
94
|
TRUSTED_FORWARDER
|
|
94
95
|
);
|
|
@@ -36,7 +36,7 @@ import {JBRuleset} from "@bananapus/core-v6/src/structs/JBRuleset.sol";
|
|
|
36
36
|
/// The bug: `hookSpecifications[1] = buybackHookSpecifications[0]` would revert with OOB
|
|
37
37
|
/// when there is no tiered 721 hook (array size is 1, not 2).
|
|
38
38
|
/// The fix: `hookSpecifications[usesTiered721Hook ? 1 : 0] = buybackHookSpecifications[0]`.
|
|
39
|
-
contract TestPR22_HookArrayOOB is TestBaseWorkflow
|
|
39
|
+
contract TestPR22_HookArrayOOB is TestBaseWorkflow {
|
|
40
40
|
bytes32 REV_DEPLOYER_SALT = "REVDeployer";
|
|
41
41
|
|
|
42
42
|
REVDeployer REV_DEPLOYER;
|
|
@@ -59,7 +59,8 @@ contract TestPR22_HookArrayOOB is TestBaseWorkflow, JBTest {
|
|
|
59
59
|
FEE_PROJECT_ID = jbProjects().createFor(multisig());
|
|
60
60
|
SUCKER_REGISTRY = new JBSuckerRegistry(jbDirectory(), jbPermissions(), multisig(), address(0));
|
|
61
61
|
HOOK_STORE = new JB721TiersHookStore();
|
|
62
|
-
EXAMPLE_HOOK =
|
|
62
|
+
EXAMPLE_HOOK =
|
|
63
|
+
new JB721TiersHook(jbDirectory(), jbPermissions(), jbRulesets(), HOOK_STORE, jbSplits(), multisig());
|
|
63
64
|
ADDRESS_REGISTRY = new JBAddressRegistry();
|
|
64
65
|
HOOK_DEPLOYER = new JB721TiersHookDeployer(EXAMPLE_HOOK, HOOK_STORE, ADDRESS_REGISTRY, multisig());
|
|
65
66
|
PUBLISHER = new CTPublisher(jbDirectory(), jbPermissions(), FEE_PROJECT_ID, multisig());
|
|
@@ -78,7 +79,7 @@ contract TestPR22_HookArrayOOB is TestBaseWorkflow, JBTest {
|
|
|
78
79
|
FEE_PROJECT_ID,
|
|
79
80
|
HOOK_DEPLOYER,
|
|
80
81
|
PUBLISHER,
|
|
81
|
-
|
|
82
|
+
IJBBuybackHookRegistry(address(MOCK_BUYBACK)),
|
|
82
83
|
address(LOANS_CONTRACT),
|
|
83
84
|
TRUSTED_FORWARDER
|
|
84
85
|
);
|
|
@@ -37,7 +37,7 @@ struct FeeProjectConfig {
|
|
|
37
37
|
REVSuckerDeploymentConfig suckerDeploymentConfiguration;
|
|
38
38
|
}
|
|
39
39
|
|
|
40
|
-
contract TestPR26_BurnHeldTokens is TestBaseWorkflow
|
|
40
|
+
contract TestPR26_BurnHeldTokens is TestBaseWorkflow {
|
|
41
41
|
bytes32 REV_DEPLOYER_SALT = "REVDeployer";
|
|
42
42
|
bytes32 ERC20_SALT = "REV_TOKEN";
|
|
43
43
|
|
|
@@ -163,7 +163,8 @@ contract TestPR26_BurnHeldTokens is TestBaseWorkflow, JBTest {
|
|
|
163
163
|
FEE_PROJECT_ID = jbProjects().createFor(multisig());
|
|
164
164
|
SUCKER_REGISTRY = new JBSuckerRegistry(jbDirectory(), jbPermissions(), multisig(), address(0));
|
|
165
165
|
HOOK_STORE = new JB721TiersHookStore();
|
|
166
|
-
EXAMPLE_HOOK =
|
|
166
|
+
EXAMPLE_HOOK =
|
|
167
|
+
new JB721TiersHook(jbDirectory(), jbPermissions(), jbRulesets(), HOOK_STORE, jbSplits(), multisig());
|
|
167
168
|
ADDRESS_REGISTRY = new JBAddressRegistry();
|
|
168
169
|
HOOK_DEPLOYER = new JB721TiersHookDeployer(EXAMPLE_HOOK, HOOK_STORE, ADDRESS_REGISTRY, multisig());
|
|
169
170
|
PUBLISHER = new CTPublisher(jbDirectory(), jbPermissions(), FEE_PROJECT_ID, multisig());
|
|
@@ -185,7 +186,7 @@ contract TestPR26_BurnHeldTokens is TestBaseWorkflow, JBTest {
|
|
|
185
186
|
FEE_PROJECT_ID,
|
|
186
187
|
HOOK_DEPLOYER,
|
|
187
188
|
PUBLISHER,
|
|
188
|
-
|
|
189
|
+
IJBBuybackHookRegistry(address(MOCK_BUYBACK)),
|
|
189
190
|
address(LOANS_CONTRACT),
|
|
190
191
|
TRUSTED_FORWARDER
|
|
191
192
|
);
|
|
@@ -69,7 +69,7 @@ contract ReentrantBorrower {
|
|
|
69
69
|
/// - _returnCollateralFrom(uint256 revnetId, uint256 collateralCount, ...) — no loan reference
|
|
70
70
|
/// None of the four helpers read loan.amount or loan.collateral — they all use pre-computed deltas.
|
|
71
71
|
/// The CEI fix writes loan.amount and loan.collateral BEFORE calling any of these helpers.
|
|
72
|
-
contract TestPR27_CEIPattern is TestBaseWorkflow
|
|
72
|
+
contract TestPR27_CEIPattern is TestBaseWorkflow {
|
|
73
73
|
bytes32 REV_DEPLOYER_SALT = "REVDeployer";
|
|
74
74
|
|
|
75
75
|
REVDeployer REV_DEPLOYER;
|
|
@@ -94,7 +94,8 @@ contract TestPR27_CEIPattern is TestBaseWorkflow, JBTest {
|
|
|
94
94
|
FEE_PROJECT_ID = jbProjects().createFor(multisig());
|
|
95
95
|
SUCKER_REGISTRY = new JBSuckerRegistry(jbDirectory(), jbPermissions(), multisig(), address(0));
|
|
96
96
|
HOOK_STORE = new JB721TiersHookStore();
|
|
97
|
-
EXAMPLE_HOOK =
|
|
97
|
+
EXAMPLE_HOOK =
|
|
98
|
+
new JB721TiersHook(jbDirectory(), jbPermissions(), jbRulesets(), HOOK_STORE, jbSplits(), multisig());
|
|
98
99
|
ADDRESS_REGISTRY = new JBAddressRegistry();
|
|
99
100
|
HOOK_DEPLOYER = new JB721TiersHookDeployer(EXAMPLE_HOOK, HOOK_STORE, ADDRESS_REGISTRY, multisig());
|
|
100
101
|
PUBLISHER = new CTPublisher(jbDirectory(), jbPermissions(), FEE_PROJECT_ID, multisig());
|
|
@@ -118,7 +119,7 @@ contract TestPR27_CEIPattern is TestBaseWorkflow, JBTest {
|
|
|
118
119
|
FEE_PROJECT_ID,
|
|
119
120
|
HOOK_DEPLOYER,
|
|
120
121
|
PUBLISHER,
|
|
121
|
-
|
|
122
|
+
IJBBuybackHookRegistry(address(MOCK_BUYBACK)),
|
|
122
123
|
address(LOANS_CONTRACT),
|
|
123
124
|
TRUSTED_FORWARDER
|
|
124
125
|
);
|
|
@@ -30,7 +30,7 @@ import {IJBAddressRegistry} from "@bananapus/address-registry-v6/src/interfaces/
|
|
|
30
30
|
|
|
31
31
|
/// @notice Tests for default operator permissions including SET_ROUTER_TERMINAL.
|
|
32
32
|
/// Verifies that all default split operator permissions are granted correctly.
|
|
33
|
-
contract TestPR29_SwapTerminalPermission is TestBaseWorkflow
|
|
33
|
+
contract TestPR29_SwapTerminalPermission is TestBaseWorkflow {
|
|
34
34
|
bytes32 REV_DEPLOYER_SALT = "REVDeployer";
|
|
35
35
|
|
|
36
36
|
REVDeployer REV_DEPLOYER;
|
|
@@ -53,7 +53,8 @@ contract TestPR29_SwapTerminalPermission is TestBaseWorkflow, JBTest {
|
|
|
53
53
|
FEE_PROJECT_ID = jbProjects().createFor(multisig());
|
|
54
54
|
SUCKER_REGISTRY = new JBSuckerRegistry(jbDirectory(), jbPermissions(), multisig(), address(0));
|
|
55
55
|
HOOK_STORE = new JB721TiersHookStore();
|
|
56
|
-
EXAMPLE_HOOK =
|
|
56
|
+
EXAMPLE_HOOK =
|
|
57
|
+
new JB721TiersHook(jbDirectory(), jbPermissions(), jbRulesets(), HOOK_STORE, jbSplits(), multisig());
|
|
57
58
|
ADDRESS_REGISTRY = new JBAddressRegistry();
|
|
58
59
|
HOOK_DEPLOYER = new JB721TiersHookDeployer(EXAMPLE_HOOK, HOOK_STORE, ADDRESS_REGISTRY, multisig());
|
|
59
60
|
PUBLISHER = new CTPublisher(jbDirectory(), jbPermissions(), FEE_PROJECT_ID, multisig());
|
|
@@ -72,7 +73,7 @@ contract TestPR29_SwapTerminalPermission is TestBaseWorkflow, JBTest {
|
|
|
72
73
|
FEE_PROJECT_ID,
|
|
73
74
|
HOOK_DEPLOYER,
|
|
74
75
|
PUBLISHER,
|
|
75
|
-
|
|
76
|
+
IJBBuybackHookRegistry(address(MOCK_BUYBACK)),
|
|
76
77
|
address(LOANS_CONTRACT),
|
|
77
78
|
TRUSTED_FORWARDER
|
|
78
79
|
);
|
|
@@ -31,7 +31,7 @@ import {JBAddressRegistry} from "@bananapus/address-registry-v6/src/JBAddressReg
|
|
|
31
31
|
import {IJBAddressRegistry} from "@bananapus/address-registry-v6/src/interfaces/IJBAddressRegistry.sol";
|
|
32
32
|
|
|
33
33
|
/// @notice Tests for PR #32: liquidation boundary, reallocate msg.value, and decimal normalization fixes.
|
|
34
|
-
contract TestPR32_MixedFixes is TestBaseWorkflow
|
|
34
|
+
contract TestPR32_MixedFixes is TestBaseWorkflow {
|
|
35
35
|
bytes32 REV_DEPLOYER_SALT = "REVDeployer";
|
|
36
36
|
|
|
37
37
|
REVDeployer REV_DEPLOYER;
|
|
@@ -57,7 +57,8 @@ contract TestPR32_MixedFixes is TestBaseWorkflow, JBTest {
|
|
|
57
57
|
FEE_PROJECT_ID = jbProjects().createFor(multisig());
|
|
58
58
|
SUCKER_REGISTRY = new JBSuckerRegistry(jbDirectory(), jbPermissions(), multisig(), address(0));
|
|
59
59
|
HOOK_STORE = new JB721TiersHookStore();
|
|
60
|
-
EXAMPLE_HOOK =
|
|
60
|
+
EXAMPLE_HOOK =
|
|
61
|
+
new JB721TiersHook(jbDirectory(), jbPermissions(), jbRulesets(), HOOK_STORE, jbSplits(), multisig());
|
|
61
62
|
ADDRESS_REGISTRY = new JBAddressRegistry();
|
|
62
63
|
HOOK_DEPLOYER = new JB721TiersHookDeployer(EXAMPLE_HOOK, HOOK_STORE, ADDRESS_REGISTRY, multisig());
|
|
63
64
|
PUBLISHER = new CTPublisher(jbDirectory(), jbPermissions(), FEE_PROJECT_ID, multisig());
|
|
@@ -81,7 +82,7 @@ contract TestPR32_MixedFixes is TestBaseWorkflow, JBTest {
|
|
|
81
82
|
FEE_PROJECT_ID,
|
|
82
83
|
HOOK_DEPLOYER,
|
|
83
84
|
PUBLISHER,
|
|
84
|
-
|
|
85
|
+
IJBBuybackHookRegistry(address(MOCK_BUYBACK)),
|
|
85
86
|
address(LOANS_CONTRACT),
|
|
86
87
|
TRUSTED_FORWARDER
|
|
87
88
|
);
|