Solidity

在不進行任何外部呼叫的情況下計算一對的 CREATE2 地址

  • April 22, 2022

我有來自 PancakeRouter 程式碼的以下程式碼:

function pairFor(address factory, address tokenA, address tokenB) internal pure returns (address pair) {
   (address token0, address token1) = sortTokens(tokenA, tokenB);
   pair = address(uint256(keccak256(abi.encodePacked(
           hex'ff',
           factory,
           keccak256(abi.encodePacked(token0, token1)),
           hex'00fb7f630766e6a796048ea87d01acd3068e8ff67d078148a3fa3f4a84f69bd5' // init code hash
       ))));
}

我正在嘗試使用 Ganache 在本地部署它,但由於我的其他程式碼使用更高版本(0.8.0)並且 PancakeRouter 使用版本 0.6.6 編譯,我無法讓它工作,我如何將此程式碼移植到兼容 0.8.0

最後,我剛剛使用 DEX 所需的版本創建了一個新的 truffle 項目,並部署到同一個 ganache 實例。

https://github.com/redigaffi/simple-dex

初始化程式碼雜湊是硬編碼的 ot pairFor 函式。你需要

  1. 重新編譯並重新部署 Uniswap 工廠
  2. 使用https://github.com/sushiswap/sushiswap/blob/canary/contracts/uniswapv2/UniswapV2Factory.sol#L26獲取其初始化程式碼雜湊或配對創建程式碼pairCodeHash()
  3. 編輯pairFor函式以使其使用此雜湊
  4. 使用修補的 Uniswapv2Library 部署路由器

這裡有一些基於 Python 的實用程序來處理這個不完全線性的過程

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