@@ -10,7 +10,6 @@ import "../extension/interface/IPrimarySale.sol";
1010
1111// Token
1212import "@openzeppelin/contracts-upgradeable/token/ERC20/extensions/ERC20BurnableUpgradeable.sol " ;
13- import "@openzeppelin/contracts-upgradeable/token/ERC20/extensions/ERC20PausableUpgradeable.sol " ;
1413import "@openzeppelin/contracts-upgradeable/token/ERC20/extensions/ERC20VotesUpgradeable.sol " ;
1514
1615// Security
@@ -38,7 +37,6 @@ contract TokenERC20 is
3837 ERC2771ContextUpgradeable ,
3938 MulticallUpgradeable ,
4039 ERC20BurnableUpgradeable ,
41- ERC20PausableUpgradeable ,
4240 ERC20VotesUpgradeable ,
4341 ITokenERC20 ,
4442 AccessControlEnumerableUpgradeable
@@ -54,7 +52,6 @@ contract TokenERC20 is
5452 );
5553
5654 bytes32 internal constant MINTER_ROLE = keccak256 ("MINTER_ROLE " );
57- bytes32 internal constant PAUSER_ROLE = keccak256 ("PAUSER_ROLE " );
5855 bytes32 internal constant TRANSFER_ROLE = keccak256 ("TRANSFER_ROLE " );
5956
6057 /// @dev Returns the URI for the storefront-level metadata of the contract.
@@ -64,7 +61,7 @@ contract TokenERC20 is
6461 uint128 internal constant MAX_BPS = 10_000 ;
6562
6663 /// @dev The % of primary sales collected by the contract as fees.
67- uint128 internal platformFeeBps;
64+ uint128 private platformFeeBps;
6865
6966 /// @dev The adress that receives all primary sales value.
7067 address internal platformFeeRecipient;
@@ -88,19 +85,21 @@ contract TokenERC20 is
8885 address _platformFeeRecipient ,
8986 uint256 _platformFeeBps
9087 ) external initializer {
88+ __ReentrancyGuard_init ();
9189 __ERC2771Context_init_unchained (_trustedForwarders);
9290 __ERC20Permit_init (_name);
9391 __ERC20_init_unchained (_name, _symbol);
9492
9593 contractURI = _contractURI;
9694 primarySaleRecipient = _primarySaleRecipient;
9795 platformFeeRecipient = _platformFeeRecipient;
96+
97+ require (_platformFeeBps <= MAX_BPS, "exceeds MAX_BPS " );
9898 platformFeeBps = uint128 (_platformFeeBps);
9999
100100 _setupRole (DEFAULT_ADMIN_ROLE, _defaultAdmin);
101101 _setupRole (TRANSFER_ROLE, _defaultAdmin);
102102 _setupRole (MINTER_ROLE, _defaultAdmin);
103- _setupRole (PAUSER_ROLE, _defaultAdmin);
104103 _setupRole (TRANSFER_ROLE, address (0 ));
105104 }
106105
@@ -127,7 +126,7 @@ contract TokenERC20 is
127126 address from ,
128127 address to ,
129128 uint256 amount
130- ) internal override ( ERC20Upgradeable , ERC20PausableUpgradeable ) {
129+ ) internal override {
131130 super ._beforeTokenTransfer (from, to, amount);
132131
133132 if (! hasRole (TRANSFER_ROLE, address (0 )) && from != address (0 ) && to != address (0 )) {
@@ -166,12 +165,9 @@ contract TokenERC20 is
166165 /// @dev Mints tokens according to the provided mint request.
167166 function mintWithSignature (MintRequest calldata _req , bytes calldata _signature ) external payable nonReentrant {
168167 address signer = verifyRequest (_req, _signature);
169- address receiver = _req.to == address (0 ) ? _msgSender () : _req.to;
170- address saleRecipient = _req.primarySaleRecipient == address (0 )
171- ? primarySaleRecipient
172- : _req.primarySaleRecipient;
168+ address receiver = _req.to;
173169
174- collectPrice (saleRecipient, _req.currency, _req.price );
170+ collectPrice (_req);
175171
176172 _mintTo (receiver, _req.quantity);
177173
@@ -189,7 +185,7 @@ contract TokenERC20 is
189185 external
190186 onlyRole (DEFAULT_ADMIN_ROLE)
191187 {
192- require (_platformFeeBps <= MAX_BPS, "bps <= 10000. " );
188+ require (_platformFeeBps <= MAX_BPS, "exceeds MAX_BPS " );
193189
194190 platformFeeBps = uint64 (_platformFeeBps);
195191 platformFeeRecipient = _platformFeeRecipient;
@@ -203,23 +199,25 @@ contract TokenERC20 is
203199 }
204200
205201 /// @dev Collects and distributes the primary sale value of tokens being claimed.
206- function collectPrice (
207- address _primarySaleRecipient ,
208- address _currency ,
209- uint256 _price
210- ) internal {
211- if (_price == 0 ) {
202+ function collectPrice (MintRequest calldata _req ) internal {
203+ if (_req.price == 0 ) {
212204 return ;
213205 }
214206
215- uint256 platformFees = (_price * platformFeeBps) / MAX_BPS;
207+ uint256 platformFees = (_req.price * platformFeeBps) / MAX_BPS;
216208
217- if (_currency == CurrencyTransferLib.NATIVE_TOKEN) {
218- require (msg .value == _price, "must send total price. " );
209+ if (_req.currency == CurrencyTransferLib.NATIVE_TOKEN) {
210+ require (msg .value == _req.price, "must send total price. " );
211+ } else {
212+ require (msg .value == 0 , "msg value not zero " );
219213 }
220214
221- CurrencyTransferLib.transferCurrency (_currency, _msgSender (), platformFeeRecipient, platformFees);
222- CurrencyTransferLib.transferCurrency (_currency, _msgSender (), _primarySaleRecipient, _price - platformFees);
215+ address saleRecipient = _req.primarySaleRecipient == address (0 )
216+ ? primarySaleRecipient
217+ : _req.primarySaleRecipient;
218+
219+ CurrencyTransferLib.transferCurrency (_req.currency, _msgSender (), platformFeeRecipient, platformFees);
220+ CurrencyTransferLib.transferCurrency (_req.currency, _msgSender (), saleRecipient, _req.price - platformFees);
223221 }
224222
225223 /// @dev Mints `amount` of tokens to `to`
@@ -237,6 +235,8 @@ contract TokenERC20 is
237235 _req.validityStartTimestamp <= block .timestamp && _req.validityEndTimestamp >= block .timestamp ,
238236 "request expired "
239237 );
238+ require (_req.to != address (0 ), "recipient undefined " );
239+ require (_req.quantity > 0 , "zero quantity " );
240240
241241 minted[_req.uid] = true ;
242242
@@ -264,34 +264,6 @@ contract TokenERC20 is
264264 );
265265 }
266266
267- /**
268- * @dev Pauses all token transfers.
269- *
270- * See {ERC20Pausable} and {Pausable-_pause}.
271- *
272- * Requirements:
273- *
274- * - the caller must have the `PAUSER_ROLE`.
275- */
276- function pause () public virtual {
277- require (hasRole (PAUSER_ROLE, _msgSender ()), "not pauser. " );
278- _pause ();
279- }
280-
281- /**
282- * @dev Unpauses all token transfers.
283- *
284- * See {ERC20Pausable} and {Pausable-_unpause}.
285- *
286- * Requirements:
287- *
288- * - the caller must have the `PAUSER_ROLE`.
289- */
290- function unpause () public virtual {
291- require (hasRole (PAUSER_ROLE, _msgSender ()), "not pauser. " );
292- _unpause ();
293- }
294-
295267 /// @dev Sets contract URI for the storefront-level metadata of the contract.
296268 function setContractURI (string calldata _uri ) external onlyRole (DEFAULT_ADMIN_ROLE) {
297269 contractURI = _uri;
0 commit comments