Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions .gitmodules
Original file line number Diff line number Diff line change
Expand Up @@ -61,3 +61,6 @@
[submodule "src/pkgs/universal-router-2_0"]
path = src/pkgs/universal-router-2_0
url = https://github.com/Uniswap/universal-router
[submodule "src/pkgs/v4-hooks-public"]
path = src/pkgs/v4-hooks-public
url = https://github.com/Uniswap/v4-hooks-public
15 changes: 10 additions & 5 deletions foundry.toml
Original file line number Diff line number Diff line change
Expand Up @@ -23,14 +23,16 @@ skip = [
"src/pkgs/universal-router/solmate/**",
"src/pkgs/universal-router-2_0/permit2/**",
"src/pkgs/universal-router-2_0/solmate/**",
"src/pkgs/v4-hooks-public/src/aggregator-hooks/**",
"src/pkgs/**/*.s.sol",
"*.t.sol",
]

additional_compiler_profiles = [
{ name = "v4", optimizer_runs = 44444444, via_ir = true, evm_version = "cancun" },
{ name = "v4-posm", optimizer_runs = 30000, via_ir = true, evm_version = "cancun" },
{ name = "v4-posm", optimizer_runs = 500, via_ir = true, evm_version = "cancun" },
{ name = "v4-descriptor", optimizer_runs = 1, via_ir = true, evm_version = "cancun" },
{ name = "v4-hooks-public", optimizer_runs = 44444444, via_ir = false, evm_version = "cancun" },
{ name = "v2", optimizer_runs = 999999 },
{ name = "v3-core", optimizer_runs = 800, evm_version = "istanbul", via_ir = false },
{ name = "v3-periphery-lowest", optimizer_runs = 1000, evm_version = "istanbul", via_ir = false },
Expand All @@ -41,7 +43,7 @@ additional_compiler_profiles = [
{ name = "calibur", optimizer_runs = 10000, via_ir = true },
{ name = "util-contracts", optimizer_runs = 200, via_ir = false, evm_version = "paris" },
{ name = "mixed-quoter", optimizer_runs = 200, via_ir = true, evm_version = "cancun" },
{ name = "universal-router", optimizer_runs = 4444, via_ir = true, evm_version = "cancun" },
{ name = "universal-router", optimizer_runs = 1, via_ir = true, evm_version = "cancun" },
{ name = "unsupported-protocol", optimizer_runs = 200, via_ir = false, evm_version = "cancun" },
]

Expand Down Expand Up @@ -71,11 +73,14 @@ compilation_restrictions = [
# v4
{ paths = "src/pkgs/v4-core/src/PoolManager.sol", optimizer_runs = 44444444 },
{ paths = "src/pkgs/v4-periphery/src/PositionDescriptor.sol", version = "=0.8.26", optimizer_runs = 1 },
{ paths = "src/pkgs/v4-periphery/src/PositionManager.sol", version = "=0.8.26", optimizer_runs = 30000 },
{ paths = "src/pkgs/v4-periphery/src/PositionManager.sol", version = "=0.8.26", optimizer_runs = 500 },
{ paths = "src/pkgs/v4-periphery/src/hooks/permissionedPools/PermissionedPositionManager.sol", version = "=0.8.26", optimizer_runs = 500 },
{ paths = "src/pkgs/v4-periphery/src/hooks/permissionedPools/PermissionsAdapterFactory.sol", version = "=0.8.26", optimizer_runs = 44444444, via_ir = true, evm_version = "cancun" },
{ paths = "src/pkgs/v4-periphery/src/lens/**", version = "=0.8.26", optimizer_runs = 44444444 },
{ paths = "src/pkgs/v4-periphery/src/hooks/**", version = "=0.8.26", optimizer_runs = 44444444 },
# v4-hooks-public (only permissioned-pools is in scope; aggregator-hooks are 0.8.29 and out of scope)
{ paths = "src/pkgs/v4-hooks-public/src/permissioned-pools/**", version = "=0.8.26", optimizer_runs = 44444444, via_ir = false, evm_version = "cancun" },
# router
{ paths = "src/pkgs/universal-router/contracts/UniversalRouter.sol", optimizer_runs = 4444 },
{ paths = "src/pkgs/universal-router/contracts/UniversalRouter.sol", optimizer_runs = 1 },
{ paths = "src/pkgs/universal-router-2_0/contracts/UniversalRouter.sol", version = "=0.8.26", optimizer_runs = 44444444 },
{ paths = "src/pkgs/swap-router-contracts/contracts/**", version = "=0.7.6", via_ir = false, optimizer_runs = 1000000 },
{ paths = "src/pkgs/universal-router/contracts/deploy/UnsupportedProtocol.sol", version = "=0.8.30", optimizer_runs = 200, via_ir = false, evm_version = "cancun" },
Expand Down
6 changes: 6 additions & 0 deletions remappings.txt
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,12 @@ src/pkgs/v4-periphery:solmate/src=src/pkgs/v4-periphery/lib/v4-core/lib/solmate/
src/pkgs/v4-periphery:@uniswap/v4-core=src/pkgs/v4-periphery/lib/v4-core
src/pkgs/v4-periphery/src:openzeppelin-contracts=src/pkgs/v4-periphery/lib/v4-core/lib/openzeppelin-contracts
src/pkgs/v4-periphery/src:@openzeppelin=src/pkgs/v4-periphery/lib/v4-core/lib/openzeppelin-contracts
src/pkgs/v4-hooks-public:solmate/src=src/pkgs/v4-hooks-public/lib/v4-periphery/lib/v4-core/lib/solmate/src
src/pkgs/v4-hooks-public:@uniswap/v4-core=src/pkgs/v4-hooks-public/lib/v4-periphery/lib/v4-core
src/pkgs/v4-hooks-public:@uniswap/v4-periphery=src/pkgs/v4-hooks-public/lib/v4-periphery
src/pkgs/v4-hooks-public/src:openzeppelin-contracts=src/pkgs/v4-hooks-public/lib/v4-periphery/lib/v4-core/lib/openzeppelin-contracts
src/pkgs/v4-hooks-public/src:@openzeppelin=src/pkgs/v4-hooks-public/lib/v4-periphery/lib/v4-core/lib/openzeppelin-contracts
src/pkgs/v4-hooks-public/lib/v4-periphery:@openzeppelin=src/pkgs/v4-hooks-public/lib/v4-periphery/lib/v4-core/lib/openzeppelin-contracts
src/pkgs/permit2:solmate=src/pkgs/permit2/lib/solmate
src/pkgs/universal-router/lib/v3-periphery:@openzeppelin=lib/oz-v4.7.0
src/pkgs/universal-router/lib/v4-periphery:@openzeppelin=src/pkgs/universal-router/lib/v4-periphery/lib/v4-core/lib/openzeppelin-contracts
Expand Down
2 changes: 1 addition & 1 deletion script/MineWETHHookSalt.s.sol
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ pragma solidity ^0.8.0;

import {WETHHookDeployer} from '../src/briefcase/deployers/v4-periphery/WETHHookDeployer.sol';
import {Hooks} from '../src/briefcase/protocols/v4-core/libraries/Hooks.sol';
import {HookMiner} from '../src/briefcase/protocols/v4-periphery/utils/HookMiner.sol';
import {HookMiner} from '../src/briefcase/protocols/v4-hooks-public/utils/HookMiner.sol';
import {Script} from 'forge-std/Script.sol';
import {stdJson} from 'forge-std/StdJson.sol';
import {console} from 'forge-std/console.sol';
Expand Down
68 changes: 67 additions & 1 deletion script/deploy/Deploy-all.s.sol
Original file line number Diff line number Diff line change
Expand Up @@ -42,8 +42,17 @@ import {

import {PoolManagerDeployer} from '../../src/briefcase/deployers/v4-core/PoolManagerDeployer.sol';

import {PermissionedHooksDeployer} from '../../src/briefcase/deployers/v4-hooks-public/PermissionedHooksDeployer.sol';
import {
PermissionedPositionManagerDeployer
} from '../../src/briefcase/deployers/v4-periphery/PermissionedPositionManagerDeployer.sol';
import {
PermissionsAdapterFactoryDeployer
} from '../../src/briefcase/deployers/v4-periphery/PermissionsAdapterFactoryDeployer.sol';
import {PositionDescriptorDeployer} from '../../src/briefcase/deployers/v4-periphery/PositionDescriptorDeployer.sol';
import {PositionManagerDeployer} from '../../src/briefcase/deployers/v4-periphery/PositionManagerDeployer.sol';
import {Hooks} from '../../src/briefcase/protocols/v4-core/libraries/Hooks.sol';
import {HookMiner} from '../../src/briefcase/protocols/v4-hooks-public/utils/HookMiner.sol';

import {CaliburEntryDeployer} from '../../src/briefcase/deployers/calibur/CaliburEntryDeployer.sol';
import {
Expand All @@ -70,6 +79,8 @@ contract Deploy is Script {
address nonfungiblePositionManager;
address poolManager;
address positionManager;
address permissionsAdapterFactory;
address permissionedPositionManager;
address universalRouter;
address universalRouter2_0;
address calibur;
Expand Down Expand Up @@ -250,6 +261,10 @@ contract Deploy is Script {
bool deployPositionManager = config.readBoolOr('.protocols.v4.contracts.PositionManager.deploy', false);
bool deployV4Quoter = config.readBoolOr('.protocols.v4.contracts.V4Quoter.deploy', false);
bool deployStateView = config.readBoolOr('.protocols.v4.contracts.StateView.deploy', false);
bool deployPermissionsAdapterFactory =
config.readBoolOr('.protocols.v4.contracts.PermissionsAdapterFactory.deploy', false);
bool deployPermissionedPositionManager =
config.readBoolOr('.protocols.v4.contracts.PermissionedPositionManager.deploy', false);

address positionDescriptor;

Expand Down Expand Up @@ -312,13 +327,44 @@ contract Deploy is Script {
console.log('deploying State View');
StateViewDeployer.deploy(poolManager);
}

if (deployPermissionsAdapterFactory) {
if (!deployPoolManager) {
poolManager = config.readAddress('.protocols.v4.contracts.PoolManager.address');
}
console.log('deploying Permissions Adapter Factory');
permissionsAdapterFactory = PermissionsAdapterFactoryDeployer.deploy(poolManager);
}

if (deployPermissionedPositionManager) {
if (!deployPoolManager) {
poolManager = config.readAddress('.protocols.v4.contracts.PoolManager.address');
}
if (permit2 == address(0)) {
permit2 = config.readAddress('.protocols.permit2.contracts.Permit2.address');
}
uint256 unsubscribeGasLimit =
config.readUint('.protocols.v4.contracts.PermissionedPositionManager.params.unsubscribeGasLimit.value');
if (!deployPositionDescriptor) {
positionDescriptor = config.readAddress('.protocols.v4.contracts.PositionDescriptor.address');
}
if (!deployPermissionsAdapterFactory) {
permissionsAdapterFactory =
config.readAddress('.protocols.v4.contracts.PermissionsAdapterFactory.address');
}
console.log('deploying Permissioned Position Manager');
permissionedPositionManager = PermissionedPositionManagerDeployer.deploy(
poolManager, permit2, unsubscribeGasLimit, positionDescriptor, weth(), permissionsAdapterFactory
);
}
}

function deployV4Hooks() private {
if (!config.readBoolOr('.protocols.hooks.deploy', false)) return;
bool deployWETHHook = config.readBoolOr('.protocols.hooks.contracts.WETHHook.deploy', false);
bool deployWstETHHook = config.readBoolOr('.protocols.hooks.contracts.WstETHHook.deploy', false);
bool deployWstETHRoutingHook = config.readBoolOr('.protocols.hooks.contracts.WstETHRoutingHook.deploy', false);
bool deployPermissionedHooks = config.readBoolOr('.protocols.hooks.contracts.PermissionedHooks.deploy', false);

if (poolManager == address(0)) {
poolManager = config.readAddress('.protocols.v4.contracts.PoolManager.address');
Expand All @@ -338,6 +384,22 @@ contract Deploy is Script {
address wsteth = config.readAddress('.protocols.hooks.contracts.WstETHRoutingHook.params.wstETH.value');
WstETHRoutingHookDeployer.deploy(poolManager, wsteth, salt);
}
if (deployPermissionedHooks) {
if (permissionsAdapterFactory == address(0)) {
permissionsAdapterFactory =
config.readAddress('.protocols.v4.contracts.PermissionsAdapterFactory.address');
}
uint160 flags =
uint160(Hooks.BEFORE_INITIALIZE_FLAG | Hooks.BEFORE_ADD_LIQUIDITY_FLAG | Hooks.BEFORE_SWAP_FLAG);
(, bytes32 salt) = HookMiner.find(
0x4e59b44847b379578588920cA78FbF26c0B4956C,
flags,
PermissionedHooksDeployer.initcode(),
abi.encode(poolManager, permissionsAdapterFactory)
);
console.log('deploying Permissioned Hooks');
PermissionedHooksDeployer.deploy(poolManager, permissionsAdapterFactory, salt);
}
}

function deployPermit2() private {
Expand Down Expand Up @@ -481,6 +543,9 @@ contract Deploy is Script {
}
address acrossSpokePool =
config.readAddress('.protocols.universal-router.contracts.UniversalRouter.params.acrossSpokePool.value');
address permissionsAdapterFactory = config.readAddress(
'.protocols.universal-router.contracts.UniversalRouter.params.permissionsAdapterFactory.value'
);
console.log('deploying Universal Router');
universalRouter = address(
UniversalRouterDeployer.deploy(
Expand All @@ -493,7 +558,8 @@ contract Deploy is Script {
poolManager,
nonfungiblePositionManager,
positionManager,
acrossSpokePool
acrossSpokePool,
permissionsAdapterFactory
)
);
}
Expand Down
Loading
Loading