Skip to content

Commit 86cd91c

Browse files
authored
Use latest dynamic contracts deps (#475)
* Use latest version of dynamic-contracts * add dynamic-contracts deps in node modules and add foundry remapping * Update dynamic-contracts version
1 parent 2108627 commit 86cd91c

23 files changed

+63
-60
lines changed

.gitmodules

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,9 +4,6 @@
44
[submodule "lib/ds-test"]
55
path = lib/ds-test
66
url = https://github.com/dapphub/ds-test
7-
[submodule "lib/dynamic-contracts"]
8-
path = lib/dynamic-contracts
9-
url = https://github.com/thirdweb-dev/dynamic-contracts
107
[submodule "lib/openzeppelin-contracts"]
118
path = lib/openzeppelin-contracts
129
url = https://github.com/openzeppelin/openzeppelin-contracts
@@ -24,3 +21,6 @@
2421
path = lib/ERC721A
2522
url = https://github.com/chiru-labs/ERC721A
2623
branch = v3.3.0
24+
[submodule "lib/dynamic-contracts"]
25+
path = lib/dynamic-contracts
26+
url = https://github.com/thirdweb-dev/dynamic-contracts

contracts/dynamic-contracts/ExtensionRegistry.sol

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,8 @@ import "./interface/IExtensionRegistry.sol";
66

77
// Extensions
88
import "../extension/PermissionsEnumerable.sol";
9-
import "lib/dynamic-contracts/src/presets/utils/ExtensionState.sol";
10-
import "lib/dynamic-contracts/src/presets/utils/StringSet.sol";
9+
import "@thirdweb-dev/dynamic-contracts/src/presets/utils/ExtensionState.sol";
10+
import "@thirdweb-dev/dynamic-contracts/src/presets/utils/StringSet.sol";
1111

1212
contract ExtensionRegistry is IExtensionRegistry, ExtensionState, PermissionsEnumerable {
1313
using StringSet for StringSet.Set;
@@ -45,7 +45,7 @@ contract ExtensionRegistry is IExtensionRegistry, ExtensionState, PermissionsEnu
4545

4646
/// @notice Returns all extensions stored.
4747
function getAllExtensions() external view returns (Extension[] memory allExtensions) {
48-
ExtensionStateStorage.Data storage data = ExtensionStateStorage.extensionStateStorage();
48+
ExtensionStateStorage.Data storage data = _extensionStateStorage();
4949

5050
string[] memory names = data.extensionNames.values();
5151
uint256 len = names.length;
@@ -59,7 +59,7 @@ contract ExtensionRegistry is IExtensionRegistry, ExtensionState, PermissionsEnu
5959

6060
/// @notice Returns the extension metadata and functions for a given extension.
6161
function getExtension(string memory _extensionName) public view returns (Extension memory) {
62-
ExtensionStateStorage.Data storage data = ExtensionStateStorage.extensionStateStorage();
62+
ExtensionStateStorage.Data storage data = _extensionStateStorage();
6363
require(data.extensionNames.contains(_extensionName), "ExtensionRegistry: extension does not exist.");
6464
return data.extensions[_extensionName];
6565
}
@@ -80,7 +80,7 @@ contract ExtensionRegistry is IExtensionRegistry, ExtensionState, PermissionsEnu
8080

8181
/// @notice Returns the extension metadata for a given function.
8282
function getExtensionForFunction(bytes4 _functionSelector) external view returns (ExtensionMetadata memory) {
83-
ExtensionStateStorage.Data storage data = ExtensionStateStorage.extensionStateStorage();
83+
ExtensionStateStorage.Data storage data = _extensionStateStorage();
8484
ExtensionMetadata memory metadata = data.extensionMetadata[_functionSelector];
8585
require(metadata.implementation != address(0), "ExtensionRegistry: no extension for function.");
8686
return metadata;

contracts/dynamic-contracts/TWRouter.sol

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -9,10 +9,10 @@ import "./interface/IExtensionRegistry.sol";
99
import "../extension/Multicall.sol";
1010

1111
// Extension pattern imports
12-
import "lib/dynamic-contracts/src/presets/utils/StringSet.sol";
13-
import "lib/dynamic-contracts/src/core/Router.sol";
14-
import "lib/dynamic-contracts/src/presets/utils/DefaultExtensionSet.sol";
15-
import "lib/dynamic-contracts/src/presets/utils/ExtensionState.sol";
12+
import "@thirdweb-dev/dynamic-contracts/src/presets/utils/StringSet.sol";
13+
import "@thirdweb-dev/dynamic-contracts/src/core/Router.sol";
14+
import "@thirdweb-dev/dynamic-contracts/src/presets/utils/DefaultExtensionSet.sol";
15+
import "@thirdweb-dev/dynamic-contracts/src/presets/utils/ExtensionState.sol";
1616

1717
abstract contract TWRouter is ITWRouter, Multicall, ExtensionState, Router {
1818
using StringSet for StringSet.Set;
@@ -86,7 +86,7 @@ abstract contract TWRouter is ITWRouter, Multicall, ExtensionState, Router {
8686
Extension[] memory mapExtensions = IDefaultExtensionSet(defaultExtensionSet).getAllExtensions();
8787
uint256 mapExtensionsLen = mapExtensions.length;
8888

89-
ExtensionStateStorage.Data storage data = ExtensionStateStorage.extensionStateStorage();
89+
ExtensionStateStorage.Data storage data = _extensionStateStorage();
9090
string[] memory names = data.extensionNames.values();
9191
uint256 namesLen = names.length;
9292

@@ -118,7 +118,7 @@ abstract contract TWRouter is ITWRouter, Multicall, ExtensionState, Router {
118118

119119
/// @dev Returns the extension metadata and functions for a given extension.
120120
function getExtension(string memory _extensionName) public view returns (Extension memory) {
121-
ExtensionStateStorage.Data storage data = ExtensionStateStorage.extensionStateStorage();
121+
ExtensionStateStorage.Data storage data = _extensionStateStorage();
122122
bool isLocalExtension = data.extensionNames.contains(_extensionName);
123123

124124
return
@@ -143,7 +143,7 @@ abstract contract TWRouter is ITWRouter, Multicall, ExtensionState, Router {
143143

144144
/// @dev Returns the Extension metadata for a given function.
145145
function getExtensionForFunction(bytes4 _functionSelector) public view returns (ExtensionMetadata memory) {
146-
ExtensionStateStorage.Data storage data = ExtensionStateStorage.extensionStateStorage();
146+
ExtensionStateStorage.Data storage data = _extensionStateStorage();
147147
ExtensionMetadata memory metadata = data.extensionMetadata[_functionSelector];
148148

149149
bool isLocalExtension = metadata.implementation != address(0);

contracts/dynamic-contracts/interface/IExtensionRegistry.sol

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
// SPDX-License-Identifier: Apache-2.0
22
pragma solidity ^0.8.0;
33

4-
import "lib/dynamic-contracts/src/interface/IDefaultExtensionSet.sol";
4+
import "@thirdweb-dev/dynamic-contracts/src/interface/IDefaultExtensionSet.sol";
55

66
interface IExtensionRegistry is IDefaultExtensionSet {
77
/*///////////////////////////////////////////////////////////////

contracts/dynamic-contracts/interface/ITWRouter.sol

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
// SPDX-License-Identifier: Apache-2.0
22
pragma solidity ^0.8.0;
33

4-
import "lib/dynamic-contracts/src/interface/IDefaultExtensionSet.sol";
4+
import "@thirdweb-dev/dynamic-contracts/src/interface/IDefaultExtensionSet.sol";
55

66
interface ITWRouter is IDefaultExtensionSet {
77
/*///////////////////////////////////////////////////////////////

contracts/smart-wallet/dynamic/DynamicAccount.sol

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ pragma solidity ^0.8.11;
77

88
import "../utils/AccountCore.sol";
99

10-
import "lib/dynamic-contracts/src/presets/BaseRouter.sol";
10+
import "@thirdweb-dev/dynamic-contracts/src/presets/BaseRouterWithDefaults.sol";
1111

1212
// $$\ $$\ $$\ $$\ $$\
1313
// $$ | $$ | \__| $$ | $$ |
@@ -18,16 +18,14 @@ import "lib/dynamic-contracts/src/presets/BaseRouter.sol";
1818
// \$$$$ |$$ | $$ |$$ |$$ | \$$$$$$$ |\$$$$$\$$$$ |\$$$$$$$\ $$$$$$$ |
1919
// \____/ \__| \__|\__|\__| \_______| \_____\____/ \_______|\_______/
2020

21-
contract DynamicAccount is AccountCore, BaseRouter {
21+
contract DynamicAccount is AccountCore, BaseRouterWithDefaults {
2222
/*///////////////////////////////////////////////////////////////
2323
Constructor
2424
//////////////////////////////////////////////////////////////*/
2525

26-
receive() external payable override(Router, AccountCore) {}
27-
2826
constructor(IEntryPoint _entrypoint, Extension[] memory _defaultExtensions)
2927
AccountCore(_entrypoint, msg.sender)
30-
BaseRouter(_defaultExtensions)
28+
BaseRouterWithDefaults(_defaultExtensions)
3129
{
3230
_disableInitializers();
3331
}
@@ -37,7 +35,7 @@ contract DynamicAccount is AccountCore, BaseRouter {
3735
//////////////////////////////////////////////////////////////*/
3836

3937
/// @dev Returns whether a extension can be set in the given execution context.
40-
function _canSetExtension() internal view virtual override returns (bool) {
38+
function _canSetExtension(Extension memory) internal view virtual override returns (bool) {
4139
return isAdmin(msg.sender);
4240
}
4341
}

contracts/smart-wallet/dynamic/DynamicAccountFactory.sol

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ pragma solidity ^0.8.12;
33

44
// Utils
55
import "../utils/BaseAccountFactory.sol";
6-
import "lib/dynamic-contracts/src/interface/IExtension.sol";
6+
import "@thirdweb-dev/dynamic-contracts/src/interface/IExtension.sol";
77

88
// Extensions
99
import "../../dynamic-contracts/extension/PermissionsEnumerable.sol";

contracts/smart-wallet/managed/ManagedAccount.sol

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -15,14 +15,11 @@ pragma solidity ^0.8.11;
1515
// \____/ \__| \__|\__|\__| \_______| \_____\____/ \_______|\_______/
1616

1717
import "../utils/AccountCore.sol";
18-
import "lib/dynamic-contracts/src/core/Router.sol";
18+
import "@thirdweb-dev/dynamic-contracts/src/core/Router.sol";
1919

2020
contract ManagedAccount is AccountCore, Router {
2121
constructor(IEntryPoint _entrypoint, address _factory) AccountCore(_entrypoint, _factory) {}
2222

23-
// solhint-disable-next-line no-empty-blocks
24-
receive() external payable virtual override(Router, AccountCore) {}
25-
2623
/// @notice Returns the implementation contract address for a given function signature.
2724
function getImplementationForFunction(bytes4 _functionSelector) public view virtual override returns (address) {
2825
return Router(payable(factory)).getImplementationForFunction(_functionSelector);

contracts/smart-wallet/managed/ManagedAccountFactory.sol

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
pragma solidity ^0.8.12;
33

44
// Utils
5-
import "lib/dynamic-contracts/src/presets/BaseRouter.sol";
5+
import "@thirdweb-dev/dynamic-contracts/src/presets/BaseRouterWithDefaults.sol";
66
import "../utils/BaseAccountFactory.sol";
77

88
// Extensions
@@ -21,19 +21,19 @@ import { ManagedAccount, IEntryPoint } from "./ManagedAccount.sol";
2121
// \$$$$ |$$ | $$ |$$ |$$ | \$$$$$$$ |\$$$$$\$$$$ |\$$$$$$$\ $$$$$$$ |
2222
// \____/ \__| \__|\__|\__| \_______| \_____\____/ \_______|\_______/
2323

24-
contract ManagedAccountFactory is BaseAccountFactory, ContractMetadata, PermissionsEnumerable, BaseRouter {
24+
contract ManagedAccountFactory is BaseAccountFactory, ContractMetadata, PermissionsEnumerable, BaseRouterWithDefaults {
2525
/*///////////////////////////////////////////////////////////////
2626
Constructor
2727
//////////////////////////////////////////////////////////////*/
2828

2929
constructor(IEntryPoint _entrypoint, Extension[] memory _defaultExtensions)
30-
BaseRouter(_defaultExtensions)
30+
BaseRouterWithDefaults(_defaultExtensions)
3131
BaseAccountFactory(payable(address(new ManagedAccount(_entrypoint, address(this)))), address(_entrypoint))
3232
{
3333
_setupRole(DEFAULT_ADMIN_ROLE, msg.sender);
3434
}
3535

36-
receive() external payable override {
36+
receive() external payable {
3737
revert("Cannot accept ether.");
3838
}
3939

@@ -51,7 +51,7 @@ contract ManagedAccountFactory is BaseAccountFactory, ContractMetadata, Permissi
5151
}
5252

5353
/// @dev Returns whether an extension can be set in the given execution context.
54-
function _canSetExtension() internal view virtual override returns (bool) {
54+
function _canSetExtension(Extension memory) internal view virtual override returns (bool) {
5555
return hasRole(DEFAULT_ADMIN_ROLE, msg.sender);
5656
}
5757

contracts/smart-wallet/utils/BaseRouter.sol

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -4,14 +4,14 @@
44
pragma solidity ^0.8.0;
55

66
// Interface
7-
import "lib/dynamic-contracts/src/interface/IBaseRouter.sol";
7+
import "@thirdweb-dev/dynamic-contracts/src/interface/IBaseRouter.sol";
88

99
// Core
10-
import "lib/dynamic-contracts/src/core/Router.sol";
10+
import "@thirdweb-dev/dynamic-contracts/src/core/Router.sol";
1111

1212
// Utils
13-
import "lib/dynamic-contracts/src/presets/utils/StringSet.sol";
14-
import "lib/dynamic-contracts/src/presets/utils/ExtensionState.sol";
13+
import "@thirdweb-dev/dynamic-contracts/src/presets/utils/StringSet.sol";
14+
import "@thirdweb-dev/dynamic-contracts/src/presets/utils/ExtensionState.sol";
1515

1616
abstract contract BaseRouter is IBaseRouter, Router, ExtensionState {
1717
using StringSet for StringSet.Set;
@@ -27,7 +27,7 @@ abstract contract BaseRouter is IBaseRouter, Router, ExtensionState {
2727
//////////////////////////////////////////////////////////////*/
2828

2929
/// @dev See {IERC165-supportsInterface}.
30-
function supportsInterface(bytes4 interfaceId) public view virtual returns (bool) {
30+
function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {
3131
return interfaceId == type(IBaseRouter).interfaceId;
3232
}
3333

@@ -65,7 +65,7 @@ abstract contract BaseRouter is IBaseRouter, Router, ExtensionState {
6565
* given precedence over default extensions in DefaultExtensionSet.
6666
*/
6767
function getAllExtensions() external view returns (Extension[] memory allExtensions) {
68-
ExtensionStateStorage.Data storage data = ExtensionStateStorage.extensionStateStorage();
68+
ExtensionStateStorage.Data storage data = _extensionStateStorage();
6969

7070
string[] memory names = data.extensionNames.values();
7171
uint256 len = names.length;
@@ -79,7 +79,7 @@ abstract contract BaseRouter is IBaseRouter, Router, ExtensionState {
7979

8080
/// @dev Returns the extension metadata and functions for a given extension.
8181
function getExtension(string memory _extensionName) public view returns (Extension memory) {
82-
ExtensionStateStorage.Data storage data = ExtensionStateStorage.extensionStateStorage();
82+
ExtensionStateStorage.Data storage data = _extensionStateStorage();
8383
return data.extensions[_extensionName];
8484
}
8585

@@ -99,7 +99,7 @@ abstract contract BaseRouter is IBaseRouter, Router, ExtensionState {
9999

100100
/// @dev Returns the extension metadata for a given function.
101101
function getExtensionForFunction(bytes4 _functionSelector) public view returns (ExtensionMetadata memory) {
102-
ExtensionStateStorage.Data storage data = ExtensionStateStorage.extensionStateStorage();
102+
ExtensionStateStorage.Data storage data = _extensionStateStorage();
103103
return data.extensionMetadata[_functionSelector];
104104
}
105105

contracts/unaudited/burn-to-claim-drop/BurnToClaimDropERC721.sol

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ pragma solidity ^0.8.11;
1212
// \$$$$ |$$ | $$ |$$ |$$ | \$$$$$$$ |\$$$$$\$$$$ |\$$$$$$$\ $$$$$$$ |
1313
// \____/ \__| \__|\__|\__| \_______| \_____\____/ \_______|\_______/
1414

15-
import "lib/dynamic-contracts/src/presets/BaseRouter.sol";
15+
import "@thirdweb-dev/dynamic-contracts/src/presets/BaseRouterWithDefaults.sol";
1616

1717
import "../../extension/Multicall.sol";
1818

@@ -34,7 +34,7 @@ contract BurnToClaimDropERC721 is
3434
Initializable,
3535
Multicall,
3636
ERC2771ContextUpgradeable,
37-
BaseRouter,
37+
BaseRouterWithDefaults,
3838
DefaultOperatorFiltererInit,
3939
ContractMetadataInit,
4040
PlatformFeeInit,
@@ -48,7 +48,7 @@ contract BurnToClaimDropERC721 is
4848
Constructor + initializer logic
4949
//////////////////////////////////////////////////////////////*/
5050

51-
constructor(Extension[] memory _extensions) BaseRouter(_extensions) {}
51+
constructor(Extension[] memory _extensions) BaseRouterWithDefaults(_extensions) {}
5252

5353
/// @dev Initiliazes the contract, like a constructor.
5454
function initialize(
@@ -128,7 +128,7 @@ contract BurnToClaimDropERC721 is
128128
//////////////////////////////////////////////////////////////*/
129129

130130
/// @dev Returns whether an extension can be set in the given execution context.
131-
function _canSetExtension() internal view virtual override returns (bool) {
131+
function _canSetExtension(Extension memory) internal view virtual override returns (bool) {
132132
return _hasRole(keccak256("EXTENSION_ROLE"), msg.sender);
133133
}
134134

contracts/unaudited/evolving-nfts/EvolvingNFT.sol

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ pragma solidity ^0.8.11;
1212
// \$$$$ |$$ | $$ |$$ |$$ | \$$$$$$$ |\$$$$$\$$$$ |\$$$$$$$\ $$$$$$$ |
1313
// \____/ \__| \__|\__|\__| \_______| \_____\____/ \_______|\_______/
1414

15-
import "lib/dynamic-contracts/src/presets/BaseRouter.sol";
15+
import "@thirdweb-dev/dynamic-contracts/src/presets/BaseRouterWithDefaults.sol";
1616

1717
import "../../extension/Multicall.sol";
1818
import "../../dynamic-contracts/extension/Initializable.sol";
@@ -27,7 +27,7 @@ import "../../dynamic-contracts/init/DefaultOperatorFiltererInit.sol";
2727

2828
contract EvolvingNFT is
2929
Initializable,
30-
BaseRouter,
30+
BaseRouterWithDefaults,
3131
Multicall,
3232
ERC721AQueryableInit,
3333
ERC2771ContextInit,
@@ -41,7 +41,7 @@ contract EvolvingNFT is
4141
/// @dev Only MINTER_ROLE holders can sign off on `MintRequest`s.
4242
bytes32 private constant EXTENSION_ROLE = keccak256("EXTENSION_ROLE");
4343

44-
constructor(Extension[] memory _extensions) BaseRouter(_extensions) {}
44+
constructor(Extension[] memory _extensions) BaseRouterWithDefaults(_extensions) {}
4545

4646
/// @dev Initiliazes the contract, like a constructor.
4747
function initialize(
@@ -65,6 +65,7 @@ contract EvolvingNFT is
6565
_setupOperatorFilterer();
6666

6767
_setupRole(DEFAULT_ADMIN_ROLE, _defaultAdmin);
68+
_setupRole(EXTENSION_ROLE, _defaultAdmin);
6869
_setupRole(keccak256("MINTER_ROLE"), _defaultAdmin);
6970
_setupRole(_transferRole, _defaultAdmin);
7071
_setupRole(_transferRole, address(0));
@@ -83,7 +84,7 @@ contract EvolvingNFT is
8384
}
8485

8586
/// @dev Returns whether a extension can be set in the given execution context.
86-
function _canSetExtension() internal view virtual override returns (bool) {
87+
function _canSetExtension(Extension memory) internal view virtual override returns (bool) {
8788
return _hasRole(EXTENSION_ROLE, msg.sender);
8889
}
8990

foundry.toml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,7 @@ remappings = [
3636
'contracts/=contracts/',
3737
'erc721a-upgradeable/=lib/ERC721A-Upgradeable/',
3838
'erc721a/=lib/ERC721A/',
39+
'@thirdweb-dev/dynamic-contracts/=lib/dynamic-contracts/',
3940
]
4041
src = 'contracts'
4142
test = 'src/test'

package.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515
"@openzeppelin/contracts": "4.7.3",
1616
"@openzeppelin/contracts-upgradeable": "4.7.3",
1717
"@primitivefi/hardhat-dodoc": "^0.2.0",
18+
"@thirdweb-dev/dynamic-contracts": "^1.1.2",
1819
"@thirdweb-dev/sdk": "3.10.33",
1920
"@typechain/ethers-v5": "^10.0.0",
2021
"@typechain/hardhat": "^4.0.0",

src/test/EvolvingNFT.t.sol

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
// SPDX-License-Identifier: Apache-2.0
22
pragma solidity ^0.8.0;
33

4-
import { IExtension } from "lib/dynamic-contracts/src/interface/IExtension.sol";
4+
import { IExtension } from "@thirdweb-dev/dynamic-contracts/src/interface/IExtension.sol";
55

66
import { EvolvingNFT } from "contracts/unaudited/evolving-nfts/EvolvingNFT.sol";
77
import { EvolvingNFTLogic } from "contracts/unaudited/evolving-nfts/EvolvingNFTLogic.sol";

0 commit comments

Comments
 (0)