Skip to content

Commit 7a213a5

Browse files
committed
chore: add require check for fromSupply + quantity <= type(uint32).max
1 parent 885ccfe commit 7a213a5

File tree

2 files changed

+14
-8
lines changed

2 files changed

+14
-8
lines changed

contracts/core/SharesFactoryV1.sol

+1
Original file line numberDiff line numberDiff line change
@@ -309,6 +309,7 @@ contract SharesFactoryV1 is Ownable2Step, ReentrancyGuard {
309309
(, uint8 curveType) = getShare(shareId);
310310
uint256 fromSupply = IShare(ERC1155).shareFromSupply(shareId);
311311
uint256 actualReferralFeePercent = referral != address(0) ? referralFeePercent : 0;
312+
require(fromSupply + quantity <= type(uint32).max, "Exceeds max supply");
312313

313314
buyPrice = getSubTotal(SafeCastLib.toUint32(fromSupply), quantity, curveType);
314315
referralFee = (buyPrice * actualReferralFeePercent) / 1 ether;

test/unit/SharesFactory.t.sol

+13-8
Original file line numberDiff line numberDiff line change
@@ -78,16 +78,17 @@ contract SharesFactoryTests is BaseTest {
7878
uint256 creatorFee
7979
) = sharesFactory.getBuyPriceAfterFee(0, 1, referralReceiver);
8080
_buyShare(addrBob, 0, 1, referralReceiver);
81+
console.log(buyPriceAfterFee, buyPrice, referralFee, creatorFee);
8182

8283
uint256 aliceBalAfter = addrAlice.balance;
8384
uint256 bobBalAfter = addrBob.balance;
8485
uint256 referrerBalAfter = referralReceiver.balance;
8586
uint256 depositedETHAmountAfter = sharesFactory.depositedETHAmount();
8687

87-
assertEq(bobBalBefore - bobBalAfter, buyPriceAfterFee); // Bob buy 1 share
88-
assertEq(aliceBalAfter - aliceBalBefore, creatorFee); // Alice receive creator fee
89-
assertEq(referrerBalAfter - referrerBalBefore, referralFee); // referral receive fee
90-
assertEq(depositedETHAmountAfter - depositedETHAmountBefore, buyPrice); // Factory records ETH Amount
88+
assertEq(bobBalBefore - bobBalAfter, 5350438699999993); // Bob buy 1 share
89+
assertEq(aliceBalAfter - aliceBalBefore, 250020499999999); // Alice receive creator fee
90+
assertEq(referrerBalAfter - referrerBalBefore, 100008199999999); // referral receive fee
91+
assertEq(depositedETHAmountAfter - depositedETHAmountBefore, 5000409999999995); // Factory records ETH Amount
9192

9293
uint256 bobShareBal = sharesNFT.balanceOf(addrBob, 0);
9394
assertEq(bobShareBal, 2);
@@ -106,16 +107,17 @@ contract SharesFactoryTests is BaseTest {
106107
uint256 creatorFee
107108
) = sharesFactory.getSellPriceAfterFee(1, 1, referralReceiver);
108109
_sellShare(addrAlice, 1, 1, referralReceiver);
110+
console.log(sellPriceAfterFee, sellPrice, referralFee, creatorFee);
109111

110112
uint256 aliceBalAfter = addrAlice.balance;
111113
uint256 bobBalAfter = addrBob.balance;
112114
uint256 referrerBalAfter = referralReceiver.balance;
113115
uint256 depositedETHAmountAfter = sharesFactory.depositedETHAmount();
114116

115-
assertEq(aliceBalAfter - aliceBalBefore, sellPriceAfterFee); // Alice sell 1 share
116-
assertEq(bobBalAfter - bobBalBefore, creatorFee); // Bob receive creator fee
117-
assertEq(referrerBalAfter - referrerBalBefore, referralFee); // Referral receive fee
118-
assertEq(depositedETHAmountBefore - depositedETHAmountAfter, sellPrice); // Factory records ETH Amount
117+
assertEq(aliceBalAfter - aliceBalBefore, 4650169466666665); // Alice sell 1 share
118+
assertEq(bobBalAfter - bobBalBefore, 250009111111111); // Bob receive creator fee
119+
assertEq(referrerBalAfter - referrerBalBefore, 100003644444444); // Referral receive fee
120+
assertEq(depositedETHAmountBefore - depositedETHAmountAfter, 5000182222222220); // Factory records ETH Amount
119121

120122
uint256 aliceShareBal = sharesNFT.balanceOf(addrAlice, 1);
121123
assertEq(aliceShareBal, 0);
@@ -387,6 +389,9 @@ contract SharesFactoryTests is BaseTest {
387389
uint256 gasAfter = gasleft();
388390
console.log("gas usage", gasBefore - gasAfter);
389391

392+
vm.expectRevert(bytes("Exceeds max supply"));
393+
sharesFactory.getBuyPriceAfterFee(0, type(uint32).max, referralReceiver);
394+
390395
// Expect revert if supply is over `2**32 -1` (uint32)
391396
vm.expectRevert();
392397
sharesFactory.getSubTotal(SafeCastLib.toUint32(2**32), 1, 0);

0 commit comments

Comments
 (0)