diff --git a/contracts/modules/SuperMinterV1_1.sol b/contracts/modules/SuperMinterV1_1.sol index 172e6179..7362e775 100644 --- a/contracts/modules/SuperMinterV1_1.sol +++ b/contracts/modules/SuperMinterV1_1.sol @@ -263,7 +263,7 @@ contract SuperMinterV1_1 is ISuperMinterV1_1, EIP712 { c.merkleRoot = bytes32(0); c.maxMintablePerAccount = type(uint32).max; } else if (mode == PLATFORM_AIRDROP) { - _validateSigner(c.signer); + c.signer = address(1); // We will just use the `platformSigner`. c.merkleRoot = bytes32(0); c.maxMintablePerAccount = type(uint32).max; c.price = 0; // Platform airdrop mode doesn't have a price. @@ -619,6 +619,7 @@ contract SuperMinterV1_1 is ISuperMinterV1_1, EIP712 { ) public onlyEditionOwnerOrAdmin(edition) { uint256 mintId = LibOps.packId(edition, tier, scheduleNum); MintData storage d = _getMintData(mintId); + // Note that `PLATFORM_AIRDROP` does not allow for configuration of the signer. if (d.mode != VERIFY_SIGNATURE) revert NotConfigurable(); _validateSigner(signer); bool usePlatformSigner = signer == address(1); diff --git a/tests/modules/SuperMinterV1_1.t.sol b/tests/modules/SuperMinterV1_1.t.sol index c5df5634..59189256 100644 --- a/tests/modules/SuperMinterV1_1.t.sol +++ b/tests/modules/SuperMinterV1_1.t.sol @@ -268,9 +268,11 @@ contract SuperMinterV1_1Tests is TestConfigV2_1 { c.endTime = uint32(block.timestamp + 1000); c.maxMintablePerAccount = uint32(_random()); // Doesn't matter, will be auto set to max. c.mode = sm.PLATFORM_AIRDROP(); - c.signer = signer; assertEq(sm.createEditionMint(c), 0); + vm.prank(c.platform); + sm.setPlatformSigner(signer); + unchecked { ISuperMinterV1_1.PlatformAirdrop memory p; p.edition = address(edition);