Skip to content

Commit

Permalink
Update v4 initialize (#415)
Browse files Browse the repository at this point in the history
* update periphery

* update initialize ABI

* temporary position descriptor constructor arg

* lint

* updated snap
  • Loading branch information
saucepoint authored Oct 15, 2024
1 parent 5e9f4c9 commit 1889511
Show file tree
Hide file tree
Showing 7 changed files with 23 additions and 16 deletions.
2 changes: 1 addition & 1 deletion lib/v4-periphery
Submodule v4-periphery updated 97 files
+1 −1 .forge-snapshots/PositionManager_burn_empty.snap
+1 −1 .forge-snapshots/PositionManager_burn_empty_native.snap
+1 −1 .forge-snapshots/PositionManager_burn_nonEmpty_native_withClose.snap
+1 −1 .forge-snapshots/PositionManager_burn_nonEmpty_native_withTakePair.snap
+1 −1 .forge-snapshots/PositionManager_burn_nonEmpty_withClose.snap
+1 −1 .forge-snapshots/PositionManager_burn_nonEmpty_withTakePair.snap
+1 −1 .forge-snapshots/PositionManager_collect_native.snap
+1 −1 .forge-snapshots/PositionManager_collect_sameRange.snap
+1 −1 .forge-snapshots/PositionManager_collect_withClose.snap
+1 −1 .forge-snapshots/PositionManager_collect_withTakePair.snap
+1 −1 .forge-snapshots/PositionManager_decreaseLiquidity_native.snap
+1 −1 .forge-snapshots/PositionManager_decreaseLiquidity_withClose.snap
+1 −1 .forge-snapshots/PositionManager_decreaseLiquidity_withTakePair.snap
+1 −1 .forge-snapshots/PositionManager_decrease_burnEmpty.snap
+1 −1 .forge-snapshots/PositionManager_decrease_burnEmpty_native.snap
+1 −1 .forge-snapshots/PositionManager_decrease_sameRange_allLiquidity.snap
+1 −1 .forge-snapshots/PositionManager_decrease_take_take.snap
+1 −1 .forge-snapshots/PositionManager_increaseLiquidity_erc20_withClose.snap
+1 −1 .forge-snapshots/PositionManager_increaseLiquidity_erc20_withSettlePair.snap
+1 −1 .forge-snapshots/PositionManager_increaseLiquidity_native.snap
+1 −1 .forge-snapshots/PositionManager_increase_autocompoundExactUnclaimedFees.snap
+1 −1 .forge-snapshots/PositionManager_increase_autocompoundExcessFeesCredit.snap
+1 −1 .forge-snapshots/PositionManager_increase_autocompound_clearExcess.snap
+1 −1 .forge-snapshots/PositionManager_mint_native.snap
+1 −1 .forge-snapshots/PositionManager_mint_nativeWithSweep_withClose.snap
+1 −1 .forge-snapshots/PositionManager_mint_nativeWithSweep_withSettlePair.snap
+1 −1 .forge-snapshots/PositionManager_mint_onSameTickLower.snap
+1 −1 .forge-snapshots/PositionManager_mint_onSameTickUpper.snap
+1 −1 .forge-snapshots/PositionManager_mint_sameRange.snap
+1 −1 .forge-snapshots/PositionManager_mint_settleWithBalance_sweep.snap
+1 −1 .forge-snapshots/PositionManager_mint_warmedPool_differentRange.snap
+1 −1 .forge-snapshots/PositionManager_mint_withClose.snap
+1 −1 .forge-snapshots/PositionManager_mint_withSettlePair.snap
+1 −1 .forge-snapshots/PositionManager_multicall_initialize_mint.snap
+1 −0 .forge-snapshots/Quoter_exactInputSingle_oneForZero_multiplePositions.snap
+1 −0 .forge-snapshots/Quoter_exactInputSingle_zeroForOne_multiplePositions.snap
+1 −0 .forge-snapshots/Quoter_exactOutputSingle_oneForZero.snap
+1 −0 .forge-snapshots/Quoter_exactOutputSingle_zeroForOne.snap
+1 −0 .forge-snapshots/Quoter_quoteExactInput_oneHop_1TickLoaded.snap
+1 −0 .forge-snapshots/Quoter_quoteExactInput_oneHop_initializedAfter.snap
+1 −0 .forge-snapshots/Quoter_quoteExactInput_oneHop_startingInitialized.snap
+1 −0 .forge-snapshots/Quoter_quoteExactInput_twoHops.snap
+1 −0 .forge-snapshots/Quoter_quoteExactOutput_oneHop_1TickLoaded.snap
+1 −0 .forge-snapshots/Quoter_quoteExactOutput_oneHop_2TicksLoaded.snap
+1 −0 .forge-snapshots/Quoter_quoteExactOutput_oneHop_initializedAfter.snap
+1 −0 .forge-snapshots/Quoter_quoteExactOutput_oneHop_startingInitialized.snap
+1 −0 .forge-snapshots/Quoter_quoteExactOutput_twoHops.snap
+1 −1 .forge-snapshots/V4Router_ExactIn2Hops.snap
+1 −1 .forge-snapshots/V4Router_ExactIn3Hops.snap
+1 −1 .forge-snapshots/V4Router_ExactIn3Hops_nativeIn.snap
+1 −1 .forge-snapshots/V4Router_ExactOut2Hops.snap
+1 −1 .forge-snapshots/V4Router_ExactOut3Hops.snap
+1 −1 .forge-snapshots/V4Router_ExactOut3Hops_nativeIn.snap
+1 −1 .forge-snapshots/V4Router_ExactOut3Hops_nativeOut.snap
+1 −0 .forge-snapshots/positionDescriptor bytecode size.snap
+ audits/DRAFT_ABDK_audit_periphery_universal_router.pdf
+ audits/DRAFT_Spearbit_audit_UR.pdf
+1 −1 foundry.toml
+1 −1 lib/v4-core
+16 −5 script/DeployPosm.s.sol
+124 −0 src/PositionDescriptor.sol
+17 −3 src/PositionManager.sol
+1 −1 src/V4Router.sol
+58 −0 src/base/BaseV4Quoter.sol
+0 −5 src/base/ERC721Permit_v4.sol
+2 −7 src/base/PoolInitializer.sol
+2 −6 src/base/hooks/BaseHook.sol
+14 −0 src/interfaces/IPositionDescriptor.sol
+13 −40 src/interfaces/IQuoter.sol
+69 −254 src/lens/Quoter.sol
+46 −0 src/libraries/AddressStringUtil.sol
+16 −0 src/libraries/CurrencyRatioSortOrder.sol
+525 −0 src/libraries/Descriptor.sol
+22 −0 src/libraries/HexStrings.sol
+0 −115 src/libraries/PoolTicksCounter.sol
+49 −0 src/libraries/QuoterRevert.sol
+470 −0 src/libraries/SVG.sol
+92 −0 src/libraries/SafeCurrencyMetadata.sol
+150 −0 test/PositionDescriptor.t.sol
+132 −222 test/Quoter.t.sol
+1 −1 test/StateViewTest.t.sol
+74 −0 test/base64.sol
+150 −0 test/libraries/Descriptor.t.sol
+50 −0 test/libraries/SVG.t.sol
+4 −0 test/mocks/MockERC721Permit.sol
+1 −1 test/position-managers/Execute.t.sol
+1 −1 test/position-managers/FeeCollection.t.sol
+1 −1 test/position-managers/IncreaseLiquidity.t.sol
+1 −1 test/position-managers/NativeToken.t.sol
+2 −2 test/position-managers/Permit.t.sol
+3 −3 test/position-managers/PositionManager.gas.t.sol
+1 −1 test/position-managers/PositionManager.modifyLiquidities.t.sol
+4 −4 test/position-managers/PositionManager.multicall.t.sol
+1 −1 test/position-managers/PositionManager.notifier.t.sol
+6 −5 test/position-managers/PositionManager.t.sol
+4 −1 test/shared/PosmTestSetup.sol
+2 −2 test/shared/RoutingTestHelpers.sol
7 changes: 3 additions & 4 deletions test/integration-tests/V3ToV4Migration.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -969,7 +969,7 @@ describe('V3 to V4 Migration Tests:', () => {
describe('V4 Commands', () => {
beforeEach(async () => {
// initialize new pool on v4
await v4PositionManager.connect(bob).initializePool(USDC_WETH.poolKey, USDC_WETH.price, '0x')
await v4PositionManager.connect(bob).initializePool(USDC_WETH.poolKey, USDC_WETH.price)
})

it('mint v4 succeeds', async () => {
Expand Down Expand Up @@ -1658,11 +1658,10 @@ describe('V3 to V4 Migration Tests:', () => {
tickSpacing: 10,
hooks: '0x0000000000000000000000000000000000000000',
},
'79228162514264337593543950336',
'0x'
'79228162514264337593543950336'
)

await v4PositionManager.connect(bob).initializePool(ETH_USDC.poolKey, ETH_USDC.price, '0x')
await v4PositionManager.connect(bob).initializePool(ETH_USDC.poolKey, ETH_USDC.price)
})
it('migrate with minting succeeds', async () => {
// Bob max-approves the v3PM to access his USDC and WETH
Expand Down
4 changes: 2 additions & 2 deletions test/integration-tests/gas-tests/V3ToV4Migration.gas.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -260,8 +260,8 @@ describe('V3 to V4 Migration Gas Tests', () => {
describe('V4 Commands', () => {
beforeEach(async () => {
// initialize new pool on v4
await v4PositionManager.connect(bob).initializePool(USDC_WETH.poolKey, USDC_WETH.price, '0x')
await v4PositionManager.connect(bob).initializePool(ETH_USDC.poolKey, ETH_USDC.price, '0x')
await v4PositionManager.connect(bob).initializePool(USDC_WETH.poolKey, USDC_WETH.price)
await v4PositionManager.connect(bob).initializePool(ETH_USDC.poolKey, ETH_USDC.price)
})

describe('mint', () => {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -31,34 +31,34 @@ Object {
exports[`V3 to V4 Migration Gas Tests V4 Commands increase gas: increase 1`] = `
Object {
"calldataByteLength": 2084,
"gasUsed": 228044,
"gasUsed": 228073,
}
`;

exports[`V3 to V4 Migration Gas Tests V4 Commands increase gas: migrate and increase 1`] = `
Object {
"calldataByteLength": 2980,
"gasUsed": 452893,
"gasUsed": 452916,
}
`;

exports[`V3 to V4 Migration Gas Tests V4 Commands mint gas: migrate and mint 1`] = `
Object {
"calldataByteLength": 2500,
"gasUsed": 591127,
"gasUsed": 591168,
}
`;

exports[`V3 to V4 Migration Gas Tests V4 Commands mint gas: migrate weth position into eth position with forwarding 1`] = `
Object {
"calldataByteLength": 2788,
"gasUsed": 595274,
"gasUsed": 595307,
}
`;

exports[`V3 to V4 Migration Gas Tests V4 Commands mint gas: mint 1`] = `
Object {
"calldataByteLength": 1604,
"gasUsed": 437555,
"gasUsed": 437596,
}
`;
1 change: 1 addition & 0 deletions test/integration-tests/shared/constants.ts
Original file line number Diff line number Diff line change
Expand Up @@ -25,3 +25,4 @@ export const V3_FACTORY_MAINNET = '0x1F98431c8aD98523631AE4a59f267346ea31F984'
export const V3_INIT_CODE_HASH_MAINNET = '0xe34f199b19b2b4f47f68442619d555527d244f78a3297ea89325f843f87b8b54'
export const V2_INIT_CODE_HASH_MAINNET = '0x96e8ac4277198ff8b6f785478aa9a39f403cb768dd02cbee326c3e7da348845f'
export const V3_NFT_POSITION_MANAGER_MAINNET = '0xC36442b4a4522E871399CD717aBDD847Ab11FE88'
export const V4_POSITION_DESCRIPTOR_ADDRESS = '0x0000000000000000000000000000000000000000' // TODO, deploy this in-line and use the proper address in posm's constructor
4 changes: 3 additions & 1 deletion test/integration-tests/shared/deployUniversalRouter.ts
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@ import {
V3_INIT_CODE_HASH_MAINNET,
PERMIT2_ADDRESS,
V3_NFT_POSITION_MANAGER_MAINNET,
V4_POSITION_DESCRIPTOR_ADDRESS,
} from './constants'
import { deployV4PoolManager, deployV4PositionManager } from './v4Helpers'

Expand All @@ -22,7 +23,8 @@ export async function deployRouter(v4PoolManager?: string, mockReentrantWETH?: s
poolInitCodeHash: V3_INIT_CODE_HASH_MAINNET,
v4PoolManager: poolManager,
v3NFTPositionManager: V3_NFT_POSITION_MANAGER_MAINNET,
v4PositionManager: (await deployV4PositionManager(poolManager, PERMIT2_ADDRESS)).address,
v4PositionManager: (await deployV4PositionManager(poolManager, PERMIT2_ADDRESS, V4_POSITION_DESCRIPTOR_ADDRESS))
.address,
}

const routerFactory = await ethers.getContractFactory('UniversalRouter')
Expand Down
11 changes: 8 additions & 3 deletions test/integration-tests/shared/v4Helpers.ts
Original file line number Diff line number Diff line change
Expand Up @@ -58,12 +58,17 @@ export const ETH_USDC = {
tickUpper: ETH_USDC_TICK_UPPER,
}

export async function deployV4PositionManager(v4PoolManager: string, permit2: string): Promise<PositionManager> {
export async function deployV4PositionManager(
v4PoolManager: string,
permit2: string,
v4PositionDescriptor: string
): Promise<PositionManager> {
const positionManagerFactory = await ethers.getContractFactory('PositionManager')
const positionManager = (await positionManagerFactory.deploy(
v4PoolManager,
permit2,
50000
50000,
v4PositionDescriptor
)) as unknown as PositionManager
return positionManager
}
Expand All @@ -75,7 +80,7 @@ export async function deployV4PoolManager(): Promise<PoolManager> {
}

export async function initializeV4Pool(poolManager: PoolManager, poolKey: any, sqrtPrice: BigNumber) {
await poolManager.initialize(poolKey, sqrtPrice.toString(), '0x')
await poolManager.initialize(poolKey, sqrtPrice.toString())
}

export async function addLiquidityToV4Pool(
Expand Down

0 comments on commit 1889511

Please sign in to comment.