Uniswap

檢測目的地是否是 Uniswap V3 池

  • November 2, 2021

合約有沒有辦法檢查目標地址以查看它是否是 Uniswap V3 池?

所有有效的 Uniswap V3 池都必須實現視圖函式token0token1.

在有問題的地址上呼叫這些函式,並使用這些函式返回的地址來呼叫getPoolcanonical UniswapV3Factory。返回的地址UniswapV3Factory.getPool應與相關合約的地址匹配。如果不是,您可以確定合約地址不是使用規範部署的UniswapV3Factory,因此不是有效的池。

最簡單的實現是簡單地檢查目標合約的工廠參數,因為所有 Uniswap V3 池的唯一共同點是它們都具有相同的 Uniswap V3 工廠地址,如下所示:

assert(UniswapV3Pool(destination).factory == 0x1F98431c8aD98523631AE4a59f267346ea31F984);

但是,任何人都可以部署包含該數據的模擬合約。就像任何人都可以部署實現 Uniswap V3 對介面的合約一樣。

引用自:https://ethereum.stackexchange.com/questions/102597