@bananapus/721-hook-v6 0.0.28 → 0.0.30
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 +38 -11
- package/ARCHITECTURE.md +53 -99
- package/AUDIT_INSTRUCTIONS.md +84 -383
- package/CHANGELOG.md +71 -0
- package/README.md +79 -225
- package/RISKS.md +28 -11
- package/SKILLS.md +29 -296
- package/STYLE_GUIDE.md +57 -18
- package/USER_JOURNEYS.md +57 -501
- package/package.json +1 -1
- package/references/operations.md +28 -0
- package/references/runtime.md +32 -0
- package/script/Deploy.s.sol +5 -4
- package/src/JB721TiersHook.sol +1 -1
- package/src/JB721TiersHookDeployer.sol +1 -1
- package/src/JB721TiersHookProjectDeployer.sol +1 -1
- package/src/JB721TiersHookStore.sol +23 -17
- package/src/libraries/JB721Constants.sol +1 -1
- package/src/libraries/JB721TiersRulesetMetadataResolver.sol +1 -1
- package/src/libraries/JBBitmap.sol +1 -1
- package/src/libraries/JBIpfsDecoder.sol +1 -1
- package/src/structs/JB721Tier.sol +5 -11
- package/src/structs/JB721TierConfig.sol +5 -20
- package/src/structs/JB721TierConfigFlags.sol +26 -0
- package/src/structs/JB721TierFlags.sol +17 -0
- package/test/721HookAttacks.t.sol +22 -17
- package/test/E2E/Pay_Mint_Redeem_E2E.t.sol +19 -14
- package/test/Fork.t.sol +69 -54
- package/test/TestAuditGaps.sol +73 -56
- package/test/TestSafeTransferReentrancy.t.sol +4 -4
- package/test/TestVotingUnitsLifecycle.t.sol +11 -11
- package/test/audit/CodexPayCreditsBypassTierSplits.t.sol +10 -7
- package/test/audit/CodexSplitCreditsMismatch.t.sol +10 -7
- package/test/fork/ERC20CashOutFork.t.sol +37 -28
- package/test/fork/ERC20TierSplitFork.t.sol +28 -21
- package/test/fork/IssueTokensForSplitsFork.t.sol +10 -7
- package/test/invariants/handlers/TierLifecycleHandler.sol +10 -7
- package/test/invariants/handlers/TierStoreHandler.sol +10 -7
- package/test/regression/ProjectDeployerRulesets.t.sol +10 -7
- package/test/regression/ReserveBeneficiaryOverwrite.t.sol +6 -6
- package/test/unit/AuditFixes_Unit.t.sol +37 -28
- package/test/unit/adjustTier_Unit.t.sol +268 -202
- package/test/unit/getters_constructor_Unit.t.sol +20 -14
- package/test/unit/mintFor_mintReservesFor_Unit.t.sol +2 -2
- package/test/unit/pay_Unit.t.sol +1 -1
- package/CHANGE_LOG.md +0 -359
|
@@ -80,6 +80,7 @@ import "../../src/structs/JBLaunchProjectConfig.sol";
|
|
|
80
80
|
import "../../src/structs/JBPayDataHookRulesetConfig.sol";
|
|
81
81
|
// forge-lint: disable-next-line(unaliased-plain-import)
|
|
82
82
|
import "../../src/structs/JBPayDataHookRulesetMetadata.sol";
|
|
83
|
+
import {JB721TierConfigFlags} from "../../src/structs/JB721TierConfigFlags.sol";
|
|
83
84
|
|
|
84
85
|
/// @notice Mock ERC20 with 6 decimals (USDC-like).
|
|
85
86
|
contract MockUSDC6_CashOut is ERC20 {
|
|
@@ -349,13 +350,15 @@ contract ERC20CashOutFork is Test {
|
|
|
349
350
|
encodedIPFSUri: bytes32("tier1"),
|
|
350
351
|
category: 1,
|
|
351
352
|
discountPercent: 0,
|
|
352
|
-
|
|
353
|
-
|
|
354
|
-
|
|
355
|
-
|
|
356
|
-
|
|
357
|
-
|
|
358
|
-
|
|
353
|
+
flags: JB721TierConfigFlags({
|
|
354
|
+
allowOwnerMint: false,
|
|
355
|
+
useReserveBeneficiaryAsDefault: false,
|
|
356
|
+
transfersPausable: false,
|
|
357
|
+
useVotingUnits: false,
|
|
358
|
+
cantBeRemoved: false,
|
|
359
|
+
cantIncreaseDiscountPercent: false,
|
|
360
|
+
cantBuyWithCredits: false
|
|
361
|
+
}),
|
|
359
362
|
splitPercent: 0,
|
|
360
363
|
splits: new JBSplit[](0)
|
|
361
364
|
});
|
|
@@ -435,13 +438,15 @@ contract ERC20CashOutFork is Test {
|
|
|
435
438
|
encodedIPFSUri: bytes32("tier1"),
|
|
436
439
|
category: 1,
|
|
437
440
|
discountPercent: 0,
|
|
438
|
-
|
|
439
|
-
|
|
440
|
-
|
|
441
|
-
|
|
442
|
-
|
|
443
|
-
|
|
444
|
-
|
|
441
|
+
flags: JB721TierConfigFlags({
|
|
442
|
+
allowOwnerMint: false,
|
|
443
|
+
useReserveBeneficiaryAsDefault: false,
|
|
444
|
+
transfersPausable: false,
|
|
445
|
+
useVotingUnits: false,
|
|
446
|
+
cantBeRemoved: false,
|
|
447
|
+
cantIncreaseDiscountPercent: false,
|
|
448
|
+
cantBuyWithCredits: false
|
|
449
|
+
}),
|
|
445
450
|
splitPercent: 0,
|
|
446
451
|
splits: new JBSplit[](0)
|
|
447
452
|
});
|
|
@@ -522,13 +527,15 @@ contract ERC20CashOutFork is Test {
|
|
|
522
527
|
encodedIPFSUri: bytes32("tier1"),
|
|
523
528
|
category: 1,
|
|
524
529
|
discountPercent: 0,
|
|
525
|
-
|
|
526
|
-
|
|
527
|
-
|
|
528
|
-
|
|
529
|
-
|
|
530
|
-
|
|
531
|
-
|
|
530
|
+
flags: JB721TierConfigFlags({
|
|
531
|
+
allowOwnerMint: false,
|
|
532
|
+
useReserveBeneficiaryAsDefault: false,
|
|
533
|
+
transfersPausable: false,
|
|
534
|
+
useVotingUnits: false,
|
|
535
|
+
cantBeRemoved: false,
|
|
536
|
+
cantIncreaseDiscountPercent: false,
|
|
537
|
+
cantBuyWithCredits: false
|
|
538
|
+
}),
|
|
532
539
|
splitPercent: 0,
|
|
533
540
|
splits: new JBSplit[](0)
|
|
534
541
|
});
|
|
@@ -542,13 +549,15 @@ contract ERC20CashOutFork is Test {
|
|
|
542
549
|
encodedIPFSUri: bytes32("tier2"),
|
|
543
550
|
category: 2,
|
|
544
551
|
discountPercent: 0,
|
|
545
|
-
|
|
546
|
-
|
|
547
|
-
|
|
548
|
-
|
|
549
|
-
|
|
550
|
-
|
|
551
|
-
|
|
552
|
+
flags: JB721TierConfigFlags({
|
|
553
|
+
allowOwnerMint: false,
|
|
554
|
+
useReserveBeneficiaryAsDefault: false,
|
|
555
|
+
transfersPausable: false,
|
|
556
|
+
useVotingUnits: false,
|
|
557
|
+
cantBeRemoved: false,
|
|
558
|
+
cantIncreaseDiscountPercent: false,
|
|
559
|
+
cantBuyWithCredits: false
|
|
560
|
+
}),
|
|
552
561
|
splitPercent: 0,
|
|
553
562
|
splits: new JBSplit[](0)
|
|
554
563
|
});
|
|
@@ -80,6 +80,7 @@ import "../../src/structs/JBLaunchProjectConfig.sol";
|
|
|
80
80
|
import "../../src/structs/JBPayDataHookRulesetConfig.sol";
|
|
81
81
|
// forge-lint: disable-next-line(unaliased-plain-import)
|
|
82
82
|
import "../../src/structs/JBPayDataHookRulesetMetadata.sol";
|
|
83
|
+
import {JB721TierConfigFlags} from "../../src/structs/JB721TierConfigFlags.sol";
|
|
83
84
|
|
|
84
85
|
/// @notice Mock ERC20 with 6 decimals (USDC-like).
|
|
85
86
|
contract MockUSDC6 is ERC20 {
|
|
@@ -402,13 +403,15 @@ contract ERC20TierSplitFork is Test {
|
|
|
402
403
|
encodedIPFSUri: bytes32("tier1"),
|
|
403
404
|
category: 1,
|
|
404
405
|
discountPercent: 0,
|
|
405
|
-
|
|
406
|
-
|
|
407
|
-
|
|
408
|
-
|
|
409
|
-
|
|
410
|
-
|
|
411
|
-
|
|
406
|
+
flags: JB721TierConfigFlags({
|
|
407
|
+
allowOwnerMint: false,
|
|
408
|
+
useReserveBeneficiaryAsDefault: false,
|
|
409
|
+
transfersPausable: false,
|
|
410
|
+
useVotingUnits: false,
|
|
411
|
+
cantBeRemoved: false,
|
|
412
|
+
cantIncreaseDiscountPercent: false,
|
|
413
|
+
cantBuyWithCredits: false
|
|
414
|
+
}),
|
|
412
415
|
splitPercent: 300_000_000, // 30%
|
|
413
416
|
splits: splits
|
|
414
417
|
});
|
|
@@ -472,13 +475,15 @@ contract ERC20TierSplitFork is Test {
|
|
|
472
475
|
encodedIPFSUri: bytes32("tier1"),
|
|
473
476
|
category: 1,
|
|
474
477
|
discountPercent: 0,
|
|
475
|
-
|
|
476
|
-
|
|
477
|
-
|
|
478
|
-
|
|
479
|
-
|
|
480
|
-
|
|
481
|
-
|
|
478
|
+
flags: JB721TierConfigFlags({
|
|
479
|
+
allowOwnerMint: false,
|
|
480
|
+
useReserveBeneficiaryAsDefault: false,
|
|
481
|
+
transfersPausable: false,
|
|
482
|
+
useVotingUnits: false,
|
|
483
|
+
cantBeRemoved: false,
|
|
484
|
+
cantIncreaseDiscountPercent: false,
|
|
485
|
+
cantBuyWithCredits: false
|
|
486
|
+
}),
|
|
482
487
|
splitPercent: 300_000_000, // 30%
|
|
483
488
|
splits: splits
|
|
484
489
|
});
|
|
@@ -540,13 +545,15 @@ contract ERC20TierSplitFork is Test {
|
|
|
540
545
|
encodedIPFSUri: bytes32("tier1"),
|
|
541
546
|
category: 1,
|
|
542
547
|
discountPercent: 0,
|
|
543
|
-
|
|
544
|
-
|
|
545
|
-
|
|
546
|
-
|
|
547
|
-
|
|
548
|
-
|
|
549
|
-
|
|
548
|
+
flags: JB721TierConfigFlags({
|
|
549
|
+
allowOwnerMint: false,
|
|
550
|
+
useReserveBeneficiaryAsDefault: false,
|
|
551
|
+
transfersPausable: false,
|
|
552
|
+
useVotingUnits: false,
|
|
553
|
+
cantBeRemoved: false,
|
|
554
|
+
cantIncreaseDiscountPercent: false,
|
|
555
|
+
cantBuyWithCredits: false
|
|
556
|
+
}),
|
|
550
557
|
splitPercent: 500_000_000, // 50%
|
|
551
558
|
splits: splits
|
|
552
559
|
});
|
|
@@ -78,6 +78,7 @@ import "../../src/structs/JBLaunchProjectConfig.sol";
|
|
|
78
78
|
import "../../src/structs/JBPayDataHookRulesetConfig.sol";
|
|
79
79
|
// forge-lint: disable-next-line(unaliased-plain-import)
|
|
80
80
|
import "../../src/structs/JBPayDataHookRulesetMetadata.sol";
|
|
81
|
+
import {JB721TierConfigFlags} from "../../src/structs/JB721TierConfigFlags.sol";
|
|
81
82
|
|
|
82
83
|
/// @title IssueTokensForSplitsFork
|
|
83
84
|
/// @notice Fork tests for the issueTokensForSplits flag in JB721TiersHookFlags.
|
|
@@ -349,13 +350,15 @@ contract IssueTokensForSplitsFork is Test {
|
|
|
349
350
|
encodedIPFSUri: bytes32("tier1"),
|
|
350
351
|
category: 1,
|
|
351
352
|
discountPercent: 0,
|
|
352
|
-
|
|
353
|
-
|
|
354
|
-
|
|
355
|
-
|
|
356
|
-
|
|
357
|
-
|
|
358
|
-
|
|
353
|
+
flags: JB721TierConfigFlags({
|
|
354
|
+
allowOwnerMint: false,
|
|
355
|
+
useReserveBeneficiaryAsDefault: false,
|
|
356
|
+
transfersPausable: false,
|
|
357
|
+
useVotingUnits: false,
|
|
358
|
+
cantBeRemoved: false,
|
|
359
|
+
cantIncreaseDiscountPercent: false,
|
|
360
|
+
cantBuyWithCredits: false
|
|
361
|
+
}),
|
|
359
362
|
splitPercent: splitPercent,
|
|
360
363
|
splits: splits
|
|
361
364
|
});
|
|
@@ -11,6 +11,7 @@ import "../../../src/JB721TiersHookStore.sol";
|
|
|
11
11
|
import "../../../src/structs/JB721TierConfig.sol";
|
|
12
12
|
// forge-lint: disable-next-line(unaliased-plain-import)
|
|
13
13
|
import "../../../src/structs/JB721Tier.sol";
|
|
14
|
+
import {JB721TierConfigFlags} from "../../../src/structs/JB721TierConfigFlags.sol";
|
|
14
15
|
// forge-lint: disable-next-line(unaliased-plain-import)
|
|
15
16
|
import "../../../src/interfaces/IJB721TiersHookStore.sol";
|
|
16
17
|
// forge-lint: disable-next-line(unaliased-plain-import)
|
|
@@ -189,13 +190,15 @@ contract TierLifecycleHandler is Test {
|
|
|
189
190
|
encodedIPFSUri: bytes32(0),
|
|
190
191
|
category: uint24(100),
|
|
191
192
|
discountPercent: 0,
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
193
|
+
flags: JB721TierConfigFlags({
|
|
194
|
+
allowOwnerMint: true,
|
|
195
|
+
useReserveBeneficiaryAsDefault: false,
|
|
196
|
+
transfersPausable: false,
|
|
197
|
+
useVotingUnits: false,
|
|
198
|
+
cantBeRemoved: false,
|
|
199
|
+
cantIncreaseDiscountPercent: false,
|
|
200
|
+
cantBuyWithCredits: false
|
|
201
|
+
}),
|
|
199
202
|
splitPercent: 0,
|
|
200
203
|
splits: new JBSplit[](0)
|
|
201
204
|
});
|
|
@@ -7,6 +7,7 @@ import {StdUtils} from "forge-std/StdUtils.sol";
|
|
|
7
7
|
|
|
8
8
|
import {JB721TiersHookStore} from "../../../src/JB721TiersHookStore.sol";
|
|
9
9
|
import {JB721TierConfig} from "../../../src/structs/JB721TierConfig.sol";
|
|
10
|
+
import {JB721TierConfigFlags} from "../../../src/structs/JB721TierConfigFlags.sol";
|
|
10
11
|
// forge-lint: disable-next-line(unused-import)
|
|
11
12
|
import {JB721TiersHookFlags} from "../../../src/structs/JB721TiersHookFlags.sol";
|
|
12
13
|
import {JBSplit} from "@bananapus/core-v6/src/structs/JBSplit.sol";
|
|
@@ -59,13 +60,15 @@ contract TierStoreHandler is CommonBase, StdCheats, StdUtils {
|
|
|
59
60
|
encodedIPFSUri: bytes32(0),
|
|
60
61
|
category: category,
|
|
61
62
|
discountPercent: 0,
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
63
|
+
flags: JB721TierConfigFlags({
|
|
64
|
+
allowOwnerMint: true,
|
|
65
|
+
useReserveBeneficiaryAsDefault: false,
|
|
66
|
+
transfersPausable: false,
|
|
67
|
+
useVotingUnits: false,
|
|
68
|
+
cantBeRemoved: false,
|
|
69
|
+
cantIncreaseDiscountPercent: false,
|
|
70
|
+
cantBuyWithCredits: false
|
|
71
|
+
}),
|
|
69
72
|
splitPercent: 0,
|
|
70
73
|
splits: new JBSplit[](0)
|
|
71
74
|
});
|
|
@@ -11,6 +11,7 @@ import "../../src/structs/JBLaunchRulesetsConfig.sol";
|
|
|
11
11
|
import "../../src/structs/JBQueueRulesetsConfig.sol";
|
|
12
12
|
|
|
13
13
|
import {IJBController} from "@bananapus/core-v6/src/interfaces/IJBController.sol";
|
|
14
|
+
import {JB721TierConfigFlags} from "../../src/structs/JB721TierConfigFlags.sol";
|
|
14
15
|
import {IJBDirectory} from "@bananapus/core-v6/src/interfaces/IJBDirectory.sol";
|
|
15
16
|
import {IJBPermissions} from "@bananapus/core-v6/src/interfaces/IJBPermissions.sol";
|
|
16
17
|
import {JBTerminalConfig} from "@bananapus/core-v6/src/structs/JBTerminalConfig.sol";
|
|
@@ -119,13 +120,15 @@ contract Test_ProjectDeployerRulesets is UnitTestSetup {
|
|
|
119
120
|
encodedIPFSUri: tokenUris[0],
|
|
120
121
|
category: uint24(100),
|
|
121
122
|
discountPercent: uint8(0),
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
123
|
+
flags: JB721TierConfigFlags({
|
|
124
|
+
allowOwnerMint: false,
|
|
125
|
+
useReserveBeneficiaryAsDefault: false,
|
|
126
|
+
transfersPausable: false,
|
|
127
|
+
useVotingUnits: true,
|
|
128
|
+
cantBeRemoved: false,
|
|
129
|
+
cantIncreaseDiscountPercent: false,
|
|
130
|
+
cantBuyWithCredits: false
|
|
131
|
+
}),
|
|
129
132
|
splitPercent: 0,
|
|
130
133
|
splits: new JBSplit[](0)
|
|
131
134
|
});
|
|
@@ -27,7 +27,7 @@ contract Test_L34_ReserveBeneficiaryOverwrite is UnitTestSetup {
|
|
|
27
27
|
tier1Configs[0].encodedIPFSUri = bytes32(uint256(0x1234));
|
|
28
28
|
tier1Configs[0].reserveFrequency = 5;
|
|
29
29
|
tier1Configs[0].reserveBeneficiary = alice;
|
|
30
|
-
tier1Configs[0].useReserveBeneficiaryAsDefault = true;
|
|
30
|
+
tier1Configs[0].flags.useReserveBeneficiaryAsDefault = true;
|
|
31
31
|
|
|
32
32
|
vm.prank(address(testHook));
|
|
33
33
|
uint256[] memory tier1Ids = hookStore.recordAddTiers(tier1Configs);
|
|
@@ -46,7 +46,7 @@ contract Test_L34_ReserveBeneficiaryOverwrite is UnitTestSetup {
|
|
|
46
46
|
tier2Configs[0].encodedIPFSUri = bytes32(uint256(0x5678));
|
|
47
47
|
tier2Configs[0].reserveFrequency = 5;
|
|
48
48
|
tier2Configs[0].reserveBeneficiary = bob;
|
|
49
|
-
tier2Configs[0].useReserveBeneficiaryAsDefault = false;
|
|
49
|
+
tier2Configs[0].flags.useReserveBeneficiaryAsDefault = false;
|
|
50
50
|
|
|
51
51
|
vm.prank(address(testHook));
|
|
52
52
|
uint256[] memory tier2Ids = hookStore.recordAddTiers(tier2Configs);
|
|
@@ -66,7 +66,7 @@ contract Test_L34_ReserveBeneficiaryOverwrite is UnitTestSetup {
|
|
|
66
66
|
tier3Configs[0].encodedIPFSUri = bytes32(uint256(0x9ABC));
|
|
67
67
|
tier3Configs[0].reserveFrequency = 5;
|
|
68
68
|
tier3Configs[0].reserveBeneficiary = bob;
|
|
69
|
-
tier3Configs[0].useReserveBeneficiaryAsDefault = true;
|
|
69
|
+
tier3Configs[0].flags.useReserveBeneficiaryAsDefault = true;
|
|
70
70
|
|
|
71
71
|
vm.prank(address(testHook));
|
|
72
72
|
uint256[] memory tier3Ids = hookStore.recordAddTiers(tier3Configs);
|
|
@@ -97,7 +97,7 @@ contract Test_L34_ReserveBeneficiaryOverwrite is UnitTestSetup {
|
|
|
97
97
|
tierConfigs[0].encodedIPFSUri = bytes32(uint256(0x1234));
|
|
98
98
|
tierConfigs[0].reserveFrequency = 5;
|
|
99
99
|
tierConfigs[0].reserveBeneficiary = alice;
|
|
100
|
-
tierConfigs[0].useReserveBeneficiaryAsDefault = true;
|
|
100
|
+
tierConfigs[0].flags.useReserveBeneficiaryAsDefault = true;
|
|
101
101
|
|
|
102
102
|
// Expect the SetDefaultReserveBeneficiary event.
|
|
103
103
|
vm.expectEmit(true, true, false, true, address(hookStore));
|
|
@@ -122,7 +122,7 @@ contract Test_L34_ReserveBeneficiaryOverwrite is UnitTestSetup {
|
|
|
122
122
|
tier1Configs[0].encodedIPFSUri = bytes32(uint256(0x1234));
|
|
123
123
|
tier1Configs[0].reserveFrequency = 5;
|
|
124
124
|
tier1Configs[0].reserveBeneficiary = alice;
|
|
125
|
-
tier1Configs[0].useReserveBeneficiaryAsDefault = true;
|
|
125
|
+
tier1Configs[0].flags.useReserveBeneficiaryAsDefault = true;
|
|
126
126
|
|
|
127
127
|
vm.prank(address(testHook));
|
|
128
128
|
hookStore.recordAddTiers(tier1Configs);
|
|
@@ -135,7 +135,7 @@ contract Test_L34_ReserveBeneficiaryOverwrite is UnitTestSetup {
|
|
|
135
135
|
tier2Configs[0].encodedIPFSUri = bytes32(uint256(0x5678));
|
|
136
136
|
tier2Configs[0].reserveFrequency = 5;
|
|
137
137
|
tier2Configs[0].reserveBeneficiary = alice;
|
|
138
|
-
tier2Configs[0].useReserveBeneficiaryAsDefault = true;
|
|
138
|
+
tier2Configs[0].flags.useReserveBeneficiaryAsDefault = true;
|
|
139
139
|
|
|
140
140
|
// Record the logs to verify no SetDefaultReserveBeneficiary event is emitted.
|
|
141
141
|
vm.recordLogs();
|
|
@@ -4,6 +4,7 @@ pragma solidity 0.8.28;
|
|
|
4
4
|
// forge-lint: disable-next-line(unaliased-plain-import)
|
|
5
5
|
import "../utils/UnitTestSetup.sol";
|
|
6
6
|
import {IJB721TiersHookStore} from "../../src/interfaces/IJB721TiersHookStore.sol";
|
|
7
|
+
import {JB721TierConfigFlags} from "../../src/structs/JB721TierConfigFlags.sol";
|
|
7
8
|
import {JBSplit} from "@bananapus/core-v6/src/structs/JBSplit.sol";
|
|
8
9
|
import {IJBSplitHook} from "@bananapus/core-v6/src/interfaces/IJBSplitHook.sol";
|
|
9
10
|
import {IJBSplits} from "@bananapus/core-v6/src/interfaces/IJBSplits.sol";
|
|
@@ -469,13 +470,15 @@ contract Test_AuditFixes_Unit is UnitTestSetup {
|
|
|
469
470
|
encodedIPFSUri: tokenUris[0],
|
|
470
471
|
category: uint24(5),
|
|
471
472
|
discountPercent: uint8(0),
|
|
472
|
-
|
|
473
|
-
|
|
474
|
-
|
|
475
|
-
|
|
476
|
-
|
|
477
|
-
|
|
478
|
-
|
|
473
|
+
flags: JB721TierConfigFlags({
|
|
474
|
+
allowOwnerMint: false,
|
|
475
|
+
useReserveBeneficiaryAsDefault: false,
|
|
476
|
+
transfersPausable: false,
|
|
477
|
+
useVotingUnits: false,
|
|
478
|
+
cantBeRemoved: false,
|
|
479
|
+
cantIncreaseDiscountPercent: false,
|
|
480
|
+
cantBuyWithCredits: false
|
|
481
|
+
}),
|
|
479
482
|
splitPercent: 0,
|
|
480
483
|
splits: new JBSplit[](0)
|
|
481
484
|
});
|
|
@@ -488,13 +491,15 @@ contract Test_AuditFixes_Unit is UnitTestSetup {
|
|
|
488
491
|
encodedIPFSUri: tokenUris[1],
|
|
489
492
|
category: uint24(5),
|
|
490
493
|
discountPercent: uint8(0),
|
|
491
|
-
|
|
492
|
-
|
|
493
|
-
|
|
494
|
-
|
|
495
|
-
|
|
496
|
-
|
|
497
|
-
|
|
494
|
+
flags: JB721TierConfigFlags({
|
|
495
|
+
allowOwnerMint: false,
|
|
496
|
+
useReserveBeneficiaryAsDefault: false,
|
|
497
|
+
transfersPausable: false,
|
|
498
|
+
useVotingUnits: false,
|
|
499
|
+
cantBeRemoved: false,
|
|
500
|
+
cantIncreaseDiscountPercent: false,
|
|
501
|
+
cantBuyWithCredits: false
|
|
502
|
+
}),
|
|
498
503
|
splitPercent: 0,
|
|
499
504
|
splits: new JBSplit[](0)
|
|
500
505
|
});
|
|
@@ -507,13 +512,15 @@ contract Test_AuditFixes_Unit is UnitTestSetup {
|
|
|
507
512
|
encodedIPFSUri: tokenUris[2],
|
|
508
513
|
category: uint24(5),
|
|
509
514
|
discountPercent: uint8(0),
|
|
510
|
-
|
|
511
|
-
|
|
512
|
-
|
|
513
|
-
|
|
514
|
-
|
|
515
|
-
|
|
516
|
-
|
|
515
|
+
flags: JB721TierConfigFlags({
|
|
516
|
+
allowOwnerMint: false,
|
|
517
|
+
useReserveBeneficiaryAsDefault: false,
|
|
518
|
+
transfersPausable: false,
|
|
519
|
+
useVotingUnits: false,
|
|
520
|
+
cantBeRemoved: false,
|
|
521
|
+
cantIncreaseDiscountPercent: false,
|
|
522
|
+
cantBuyWithCredits: false
|
|
523
|
+
}),
|
|
517
524
|
splitPercent: 0,
|
|
518
525
|
splits: new JBSplit[](0)
|
|
519
526
|
});
|
|
@@ -576,13 +583,15 @@ contract Test_AuditFixes_Unit is UnitTestSetup {
|
|
|
576
583
|
encodedIPFSUri: tokenUris[i],
|
|
577
584
|
category: uint24(5),
|
|
578
585
|
discountPercent: uint8(0),
|
|
579
|
-
|
|
580
|
-
|
|
581
|
-
|
|
582
|
-
|
|
583
|
-
|
|
584
|
-
|
|
585
|
-
|
|
586
|
+
flags: JB721TierConfigFlags({
|
|
587
|
+
allowOwnerMint: false,
|
|
588
|
+
useReserveBeneficiaryAsDefault: false,
|
|
589
|
+
transfersPausable: false,
|
|
590
|
+
useVotingUnits: false,
|
|
591
|
+
cantBeRemoved: false,
|
|
592
|
+
cantIncreaseDiscountPercent: false,
|
|
593
|
+
cantBuyWithCredits: false
|
|
594
|
+
}),
|
|
586
595
|
splitPercent: 0,
|
|
587
596
|
splits: new JBSplit[](0)
|
|
588
597
|
});
|