Skip to content

Commit a636185

Browse files
authored
Correct versions for DropERC20, SignatureDrop (#226)
* bump versions DropERC20, SignatureDrop * add test for SignatureDrop - UpdateRoyaltyAndSaleInfo * run prettier
1 parent b05963e commit a636185

File tree

3 files changed

+79
-6
lines changed

3 files changed

+79
-6
lines changed

contracts/drop/DropERC20.sol

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,7 @@ contract DropERC20 is
5050
//////////////////////////////////////////////////////////////*/
5151

5252
bytes32 private constant MODULE_TYPE = bytes32("DropERC20");
53-
uint128 private constant VERSION = 1;
53+
uint128 private constant VERSION = 2;
5454

5555
/// @dev Only transfers to or from TRANSFER_ROLE holders are valid, when transfers are restricted.
5656
bytes32 private constant TRANSFER_ROLE = keccak256("TRANSFER_ROLE");

contracts/signature-drop/SignatureDrop.sol

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -127,7 +127,7 @@ contract SignatureDrop is
127127
}
128128

129129
function contractVersion() external pure returns (uint8) {
130-
return uint8(3);
130+
return uint8(4);
131131
}
132132

133133
/*///////////////////////////////////////////////////////////////

src/test/SignatureDrop.t.sol

Lines changed: 77 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -34,8 +34,8 @@ contract SignatureDropBenchmarkTest is BaseTest {
3434
deployerSigner = signer;
3535
sigdrop = SignatureDrop(getContract("SignatureDrop"));
3636

37-
erc20.mint(deployerSigner, 1_000_000);
38-
vm.deal(deployerSigner, 1_000);
37+
erc20.mint(deployerSigner, 1_000 ether);
38+
vm.deal(deployerSigner, 1_000 ether);
3939

4040
typehashMintRequest = keccak256(
4141
"MintRequest(address to,address royaltyRecipient,uint256 royaltyBps,address primarySaleRecipient,string uri,uint256 quantity,uint256 pricePerToken,address currency,uint128 validityStartTimestamp,uint128 validityEndTimestamp,bytes32 uid)"
@@ -147,8 +147,8 @@ contract SignatureDropTest is BaseTest {
147147
deployerSigner = signer;
148148
sigdrop = SignatureDrop(getContract("SignatureDrop"));
149149

150-
erc20.mint(deployerSigner, 1_000_000);
151-
vm.deal(deployerSigner, 1_000);
150+
erc20.mint(deployerSigner, 1_000 ether);
151+
vm.deal(deployerSigner, 1_000 ether);
152152

153153
typehashMintRequest = keccak256(
154154
"MintRequest(address to,address royaltyRecipient,uint256 royaltyBps,address primarySaleRecipient,string uri,uint256 quantity,uint256 pricePerToken,address currency,uint128 validityStartTimestamp,uint128 validityEndTimestamp,bytes32 uid)"
@@ -810,6 +810,79 @@ contract SignatureDropTest is BaseTest {
810810
}
811811
}
812812

813+
/*
814+
* note: Testing state changes; minting with signature, for a given price and currency.
815+
*/
816+
function test_state_mintWithSignature_UpdateRoyaltyAndSaleInfo() public {
817+
vm.prank(deployerSigner);
818+
sigdrop.lazyMint(100, "ipfs://", emptyEncodedBytes);
819+
uint256 id = 0;
820+
SignatureDrop.MintRequest memory mintrequest;
821+
822+
mintrequest.to = address(0);
823+
mintrequest.royaltyRecipient = address(0x567);
824+
mintrequest.royaltyBps = 100;
825+
mintrequest.primarySaleRecipient = address(0x567);
826+
mintrequest.uri = "ipfs://";
827+
mintrequest.quantity = 1;
828+
mintrequest.pricePerToken = 1 ether;
829+
mintrequest.currency = address(erc20);
830+
mintrequest.validityStartTimestamp = 1000;
831+
mintrequest.validityEndTimestamp = 2000;
832+
mintrequest.uid = bytes32(id);
833+
834+
// Test with ERC20 currency
835+
{
836+
erc20.mint(address(0x345), 1 ether);
837+
uint256 totalSupplyBefore = sigdrop.totalSupply();
838+
839+
bytes memory signature = signMintRequest(mintrequest, privateKey);
840+
vm.startPrank(address(0x345));
841+
vm.warp(1000);
842+
erc20.approve(address(sigdrop), 1 ether);
843+
vm.expectEmit(true, true, true, true);
844+
emit TokensMintedWithSignature(deployerSigner, address(0x345), 0, mintrequest);
845+
sigdrop.mintWithSignature(mintrequest, signature);
846+
vm.stopPrank();
847+
848+
assertEq(totalSupplyBefore + mintrequest.quantity, sigdrop.totalSupply());
849+
850+
(address _royaltyRecipient, uint16 _royaltyBps) = sigdrop.getRoyaltyInfoForToken(0);
851+
assertEq(_royaltyRecipient, address(0x567));
852+
assertEq(_royaltyBps, 100);
853+
854+
uint256 totalPrice = 1 * 1 ether;
855+
uint256 platformFees = (totalPrice * platformFeeBps) / MAX_BPS;
856+
assertEq(erc20.balanceOf(address(0x567)), totalPrice - platformFees);
857+
}
858+
859+
// Test with native token currency
860+
{
861+
vm.deal(address(0x345), 1 ether);
862+
uint256 totalSupplyBefore = sigdrop.totalSupply();
863+
864+
mintrequest.currency = address(NATIVE_TOKEN);
865+
id = 1;
866+
mintrequest.uid = bytes32(id);
867+
868+
bytes memory signature = signMintRequest(mintrequest, privateKey);
869+
vm.startPrank(address(0x345));
870+
vm.warp(1000);
871+
sigdrop.mintWithSignature{ value: mintrequest.pricePerToken }(mintrequest, signature);
872+
vm.stopPrank();
873+
874+
assertEq(totalSupplyBefore + mintrequest.quantity, sigdrop.totalSupply());
875+
876+
(address _royaltyRecipient, uint16 _royaltyBps) = sigdrop.getRoyaltyInfoForToken(0);
877+
assertEq(_royaltyRecipient, address(0x567));
878+
assertEq(_royaltyBps, 100);
879+
880+
uint256 totalPrice = 1 * 1 ether;
881+
uint256 platformFees = (totalPrice * platformFeeBps) / MAX_BPS;
882+
assertEq(address(0x567).balance, totalPrice - platformFees);
883+
}
884+
}
885+
813886
/**
814887
* note: Testing revert condition; invalid signature.
815888
*/

0 commit comments

Comments
 (0)