Skip to content

Commit d4cab23

Browse files
authored
Make all base contract functions virtual (#347)
* Make all top level functions virtual on ContractKit bases * pkg update
1 parent b50742d commit d4cab23

36 files changed

+194
-469
lines changed

contracts/base/ERC1155Base.sol

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -246,6 +246,7 @@ contract ERC1155Base is
246246
/// @dev See {ERC1155-setApprovalForAll}
247247
function setApprovalForAll(address operator, bool approved)
248248
public
249+
virtual
249250
override(ERC1155)
250251
onlyAllowedOperatorApproval(operator)
251252
{
@@ -261,7 +262,7 @@ contract ERC1155Base is
261262
uint256 id,
262263
uint256 amount,
263264
bytes memory data
264-
) public override(ERC1155) onlyAllowedOperator(from) {
265+
) public virtual override(ERC1155) onlyAllowedOperator(from) {
265266
super.safeTransferFrom(from, to, id, amount, data);
266267
}
267268

@@ -274,7 +275,7 @@ contract ERC1155Base is
274275
uint256[] memory ids,
275276
uint256[] memory amounts,
276277
bytes memory data
277-
) public override(ERC1155) onlyAllowedOperator(from) {
278+
) public virtual override(ERC1155) onlyAllowedOperator(from) {
278279
super.safeBatchTransferFrom(from, to, ids, amounts, data);
279280
}
280281

contracts/base/ERC1155DelayedReveal.sol

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,7 @@ contract ERC1155DelayedReveal is ERC1155LazyMint, DelayedReveal {
4848
*
4949
* @param _tokenId The tokenId of an NFT.
5050
*/
51-
function uri(uint256 _tokenId) public view override returns (string memory) {
51+
function uri(uint256 _tokenId) public view virtual override returns (string memory) {
5252
(uint256 batchId, ) = _getBatchId(_tokenId);
5353
string memory batchUri = _getBaseURI(_tokenId);
5454

contracts/base/ERC1155Drop.sol

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -228,6 +228,7 @@ contract ERC1155Drop is
228228
/// @dev See {ERC1155-setApprovalForAll}
229229
function setApprovalForAll(address operator, bool approved)
230230
public
231+
virtual
231232
override(ERC1155)
232233
onlyAllowedOperatorApproval(operator)
233234
{
@@ -243,7 +244,7 @@ contract ERC1155Drop is
243244
uint256 id,
244245
uint256 amount,
245246
bytes memory data
246-
) public override(ERC1155) onlyAllowedOperator(from) {
247+
) public virtual override(ERC1155) onlyAllowedOperator(from) {
247248
super.safeTransferFrom(from, to, id, amount, data);
248249
}
249250

@@ -256,7 +257,7 @@ contract ERC1155Drop is
256257
uint256[] memory ids,
257258
uint256[] memory amounts,
258259
bytes memory data
259-
) public override(ERC1155) onlyAllowedOperator(from) {
260+
) public virtual override(ERC1155) onlyAllowedOperator(from) {
260261
super.safeBatchTransferFrom(from, to, ids, amounts, data);
261262
}
262263

contracts/base/ERC1155LazyMint.sol

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -122,7 +122,7 @@ contract ERC1155LazyMint is
122122
address _receiver,
123123
uint256 _tokenId,
124124
uint256 _quantity
125-
) public payable nonReentrant {
125+
) public payable virtual nonReentrant {
126126
require(_tokenId < nextTokenIdToMint(), "invalid id");
127127
verifyClaim(msg.sender, _tokenId, _quantity); // Add your claim verification logic by overriding this function.
128128

@@ -219,6 +219,7 @@ contract ERC1155LazyMint is
219219
/// @dev See {ERC1155-setApprovalForAll}
220220
function setApprovalForAll(address operator, bool approved)
221221
public
222+
virtual
222223
override(ERC1155)
223224
onlyAllowedOperatorApproval(operator)
224225
{
@@ -234,7 +235,7 @@ contract ERC1155LazyMint is
234235
uint256 id,
235236
uint256 amount,
236237
bytes memory data
237-
) public override(ERC1155) onlyAllowedOperator(from) {
238+
) public virtual override(ERC1155) onlyAllowedOperator(from) {
238239
super.safeTransferFrom(from, to, id, amount, data);
239240
}
240241

@@ -247,7 +248,7 @@ contract ERC1155LazyMint is
247248
uint256[] memory ids,
248249
uint256[] memory amounts,
249250
bytes memory data
250-
) public override(ERC1155) onlyAllowedOperator(from) {
251+
) public virtual override(ERC1155) onlyAllowedOperator(from) {
251252
super.safeBatchTransferFrom(from, to, ids, amounts, data);
252253
}
253254

contracts/base/ERC721Base.sol

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -172,14 +172,20 @@ contract ERC721Base is
172172
/// @dev See {ERC721-setApprovalForAll}.
173173
function setApprovalForAll(address operator, bool approved)
174174
public
175+
virtual
175176
override(ERC721A)
176177
onlyAllowedOperatorApproval(operator)
177178
{
178179
super.setApprovalForAll(operator, approved);
179180
}
180181

181182
/// @dev See {ERC721-approve}.
182-
function approve(address operator, uint256 tokenId) public override(ERC721A) onlyAllowedOperatorApproval(operator) {
183+
function approve(address operator, uint256 tokenId)
184+
public
185+
virtual
186+
override(ERC721A)
187+
onlyAllowedOperatorApproval(operator)
188+
{
183189
super.approve(operator, tokenId);
184190
}
185191

@@ -188,7 +194,7 @@ contract ERC721Base is
188194
address from,
189195
address to,
190196
uint256 tokenId
191-
) public override(ERC721A) onlyAllowedOperator(from) {
197+
) public virtual override(ERC721A) onlyAllowedOperator(from) {
192198
super.transferFrom(from, to, tokenId);
193199
}
194200

@@ -197,7 +203,7 @@ contract ERC721Base is
197203
address from,
198204
address to,
199205
uint256 tokenId
200-
) public override(ERC721A) onlyAllowedOperator(from) {
206+
) public virtual override(ERC721A) onlyAllowedOperator(from) {
201207
super.safeTransferFrom(from, to, tokenId);
202208
}
203209

@@ -207,7 +213,7 @@ contract ERC721Base is
207213
address to,
208214
uint256 tokenId,
209215
bytes memory data
210-
) public override(ERC721A) onlyAllowedOperator(from) {
216+
) public virtual override(ERC721A) onlyAllowedOperator(from) {
211217
super.safeTransferFrom(from, to, tokenId, data);
212218
}
213219

contracts/base/ERC721DelayedReveal.sol

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,7 @@ contract ERC721DelayedReveal is ERC721LazyMint, DelayedReveal {
4949
*
5050
* @param _tokenId The tokenId of an NFT.
5151
*/
52-
function tokenURI(uint256 _tokenId) public view override returns (string memory) {
52+
function tokenURI(uint256 _tokenId) public view virtual override returns (string memory) {
5353
(uint256 batchId, ) = _getBatchId(_tokenId);
5454
string memory batchUri = _getBaseURI(_tokenId);
5555

@@ -77,7 +77,7 @@ contract ERC721DelayedReveal is ERC721LazyMint, DelayedReveal {
7777
uint256 _amount,
7878
string calldata _baseURIForTokens,
7979
bytes calldata _data
80-
) public override returns (uint256 batchId) {
80+
) public virtual override returns (uint256 batchId) {
8181
if (_data.length > 0) {
8282
(bytes memory encryptedURI, bytes32 provenanceHash) = abi.decode(_data, (bytes, bytes32));
8383
if (encryptedURI.length != 0 && provenanceHash != "") {

contracts/base/ERC721Drop.sol

Lines changed: 11 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -125,7 +125,7 @@ contract ERC721Drop is
125125
uint256 _amount,
126126
string calldata _baseURIForTokens,
127127
bytes calldata _data
128-
) public override returns (uint256 batchId) {
128+
) public virtual override returns (uint256 batchId) {
129129
if (_data.length > 0) {
130130
(bytes memory encryptedURI, bytes32 provenanceHash) = abi.decode(_data, (bytes, bytes32));
131131
if (encryptedURI.length != 0 && provenanceHash != "") {
@@ -189,14 +189,20 @@ contract ERC721Drop is
189189
/// @dev See {ERC721-setApprovalForAll}.
190190
function setApprovalForAll(address operator, bool approved)
191191
public
192+
virtual
192193
override(ERC721A)
193194
onlyAllowedOperatorApproval(operator)
194195
{
195196
super.setApprovalForAll(operator, approved);
196197
}
197198

198199
/// @dev See {ERC721-approve}.
199-
function approve(address operator, uint256 tokenId) public override(ERC721A) onlyAllowedOperatorApproval(operator) {
200+
function approve(address operator, uint256 tokenId)
201+
public
202+
virtual
203+
override(ERC721A)
204+
onlyAllowedOperatorApproval(operator)
205+
{
200206
super.approve(operator, tokenId);
201207
}
202208

@@ -205,7 +211,7 @@ contract ERC721Drop is
205211
address from,
206212
address to,
207213
uint256 tokenId
208-
) public override(ERC721A) onlyAllowedOperator(from) {
214+
) public virtual override(ERC721A) onlyAllowedOperator(from) {
209215
super.transferFrom(from, to, tokenId);
210216
}
211217

@@ -214,7 +220,7 @@ contract ERC721Drop is
214220
address from,
215221
address to,
216222
uint256 tokenId
217-
) public override(ERC721A) onlyAllowedOperator(from) {
223+
) public virtual override(ERC721A) onlyAllowedOperator(from) {
218224
super.safeTransferFrom(from, to, tokenId);
219225
}
220226

@@ -224,7 +230,7 @@ contract ERC721Drop is
224230
address to,
225231
uint256 tokenId,
226232
bytes memory data
227-
) public override(ERC721A) onlyAllowedOperator(from) {
233+
) public virtual override(ERC721A) onlyAllowedOperator(from) {
228234
super.safeTransferFrom(from, to, tokenId, data);
229235
}
230236

contracts/base/ERC721LazyMint.sol

Lines changed: 11 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -119,7 +119,7 @@ contract ERC721LazyMint is
119119
* @param _receiver The recipient of the NFT to mint.
120120
* @param _quantity The number of NFTs to mint.
121121
*/
122-
function claim(address _receiver, uint256 _quantity) public payable nonReentrant {
122+
function claim(address _receiver, uint256 _quantity) public payable virtual nonReentrant {
123123
require(_currentIndex + _quantity <= nextTokenIdToLazyMint, "Not enough lazy minted tokens.");
124124
verifyClaim(msg.sender, _quantity); // Add your claim verification logic by overriding this function.
125125

@@ -165,14 +165,20 @@ contract ERC721LazyMint is
165165
/// @dev See {ERC721-setApprovalForAll}.
166166
function setApprovalForAll(address operator, bool approved)
167167
public
168+
virtual
168169
override(ERC721A)
169170
onlyAllowedOperatorApproval(operator)
170171
{
171172
super.setApprovalForAll(operator, approved);
172173
}
173174

174175
/// @dev See {ERC721-approve}.
175-
function approve(address operator, uint256 tokenId) public override(ERC721A) onlyAllowedOperatorApproval(operator) {
176+
function approve(address operator, uint256 tokenId)
177+
public
178+
virtual
179+
override(ERC721A)
180+
onlyAllowedOperatorApproval(operator)
181+
{
176182
super.approve(operator, tokenId);
177183
}
178184

@@ -181,7 +187,7 @@ contract ERC721LazyMint is
181187
address from,
182188
address to,
183189
uint256 tokenId
184-
) public override(ERC721A) onlyAllowedOperator(from) {
190+
) public virtual override(ERC721A) onlyAllowedOperator(from) {
185191
super.transferFrom(from, to, tokenId);
186192
}
187193

@@ -190,7 +196,7 @@ contract ERC721LazyMint is
190196
address from,
191197
address to,
192198
uint256 tokenId
193-
) public override(ERC721A) onlyAllowedOperator(from) {
199+
) public virtual override(ERC721A) onlyAllowedOperator(from) {
194200
super.safeTransferFrom(from, to, tokenId);
195201
}
196202

@@ -200,7 +206,7 @@ contract ERC721LazyMint is
200206
address to,
201207
uint256 tokenId,
202208
bytes memory data
203-
) public override(ERC721A) onlyAllowedOperator(from) {
209+
) public virtual override(ERC721A) onlyAllowedOperator(from) {
204210
super.safeTransferFrom(from, to, tokenId, data);
205211
}
206212

contracts/base/ERC721Multiwrap.sol

Lines changed: 11 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -128,7 +128,7 @@ contract ERC721Multiwrap is
128128
//////////////////////////////////////////////////////////////*/
129129

130130
/// @dev Returns the URI for a given tokenId.
131-
function tokenURI(uint256 _tokenId) public view override returns (string memory) {
131+
function tokenURI(uint256 _tokenId) public view virtual override returns (string memory) {
132132
return getUriOfBundle(_tokenId);
133133
}
134134

@@ -210,14 +210,20 @@ contract ERC721Multiwrap is
210210
/// @dev See {ERC721-setApprovalForAll}.
211211
function setApprovalForAll(address operator, bool approved)
212212
public
213+
virtual
213214
override(ERC721A)
214215
onlyAllowedOperatorApproval(operator)
215216
{
216217
super.setApprovalForAll(operator, approved);
217218
}
218219

219220
/// @dev See {ERC721-approve}.
220-
function approve(address operator, uint256 tokenId) public override(ERC721A) onlyAllowedOperatorApproval(operator) {
221+
function approve(address operator, uint256 tokenId)
222+
public
223+
virtual
224+
override(ERC721A)
225+
onlyAllowedOperatorApproval(operator)
226+
{
221227
super.approve(operator, tokenId);
222228
}
223229

@@ -226,7 +232,7 @@ contract ERC721Multiwrap is
226232
address from,
227233
address to,
228234
uint256 tokenId
229-
) public override(ERC721A) onlyAllowedOperator(from) {
235+
) public virtual override(ERC721A) onlyAllowedOperator(from) {
230236
super.transferFrom(from, to, tokenId);
231237
}
232238

@@ -235,7 +241,7 @@ contract ERC721Multiwrap is
235241
address from,
236242
address to,
237243
uint256 tokenId
238-
) public override(ERC721A) onlyAllowedOperator(from) {
244+
) public virtual override(ERC721A) onlyAllowedOperator(from) {
239245
super.safeTransferFrom(from, to, tokenId);
240246
}
241247

@@ -245,7 +251,7 @@ contract ERC721Multiwrap is
245251
address to,
246252
uint256 tokenId,
247253
bytes memory data
248-
) public override(ERC721A) onlyAllowedOperator(from) {
254+
) public virtual override(ERC721A) onlyAllowedOperator(from) {
249255
super.safeTransferFrom(from, to, tokenId, data);
250256
}
251257

contracts/base/Staking1155Base.sol

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -74,12 +74,12 @@ contract Staking1155Base is ContractMetadata, Multicall, Ownable, Staking1155, E
7474
}
7575

7676
/// @dev Admin deposits reward tokens.
77-
function depositRewardTokens(uint256 _amount) external payable nonReentrant {
77+
function depositRewardTokens(uint256 _amount) external payable virtual nonReentrant {
7878
_depositRewardTokens(_amount); // override this for custom logic.
7979
}
8080

8181
/// @dev Admin can withdraw excess reward tokens.
82-
function withdrawRewardTokens(uint256 _amount) external nonReentrant {
82+
function withdrawRewardTokens(uint256 _amount) external virtual nonReentrant {
8383
_withdrawRewardTokens(_amount); // override this for custom logic.
8484
}
8585

@@ -98,7 +98,7 @@ contract Staking1155Base is ContractMetadata, Multicall, Ownable, Staking1155, E
9898
uint256,
9999
uint256,
100100
bytes calldata
101-
) external returns (bytes4) {
101+
) external view returns (bytes4) {
102102
require(isStaking == 2, "Direct transfer");
103103
return this.onERC1155Received.selector;
104104
}
@@ -109,7 +109,7 @@ contract Staking1155Base is ContractMetadata, Multicall, Ownable, Staking1155, E
109109
uint256[] calldata ids,
110110
uint256[] calldata values,
111111
bytes calldata data
112-
) external returns (bytes4) {}
112+
) external virtual returns (bytes4) {}
113113

114114
function supportsInterface(bytes4 interfaceId) public view override(ERC165, IERC165) returns (bool) {
115115
return interfaceId == type(IERC1155Receiver).interfaceId || super.supportsInterface(interfaceId);

contracts/base/Staking20Base.sol

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -78,12 +78,12 @@ contract Staking20Base is ContractMetadata, Multicall, Ownable, Staking20 {
7878
}
7979

8080
/// @dev Admin deposits reward tokens.
81-
function depositRewardTokens(uint256 _amount) external payable nonReentrant {
81+
function depositRewardTokens(uint256 _amount) external payable virtual nonReentrant {
8282
_depositRewardTokens(_amount); // override this for custom logic.
8383
}
8484

8585
/// @dev Admin can withdraw excess reward tokens.
86-
function withdrawRewardTokens(uint256 _amount) external nonReentrant {
86+
function withdrawRewardTokens(uint256 _amount) external virtual nonReentrant {
8787
_withdrawRewardTokens(_amount); // override this for custom logic.
8888
}
8989

contracts/base/Staking721Base.sol

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -74,12 +74,12 @@ contract Staking721Base is ContractMetadata, Multicall, Ownable, Staking721, ERC
7474
}
7575

7676
/// @dev Admin deposits reward tokens.
77-
function depositRewardTokens(uint256 _amount) external payable nonReentrant {
77+
function depositRewardTokens(uint256 _amount) external payable virtual nonReentrant {
7878
_depositRewardTokens(_amount); // override this for custom logic.
7979
}
8080

8181
/// @dev Admin can withdraw excess reward tokens.
82-
function withdrawRewardTokens(uint256 _amount) external nonReentrant {
82+
function withdrawRewardTokens(uint256 _amount) external virtual nonReentrant {
8383
_withdrawRewardTokens(_amount); // override this for custom logic.
8484
}
8585

0 commit comments

Comments
 (0)