Solidity
在不進行任何外部呼叫的情況下計算一對的 CREATE2 地址
我有來自 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 實例。
初始化程式碼雜湊是硬編碼的 ot pairFor 函式。你需要
- 重新編譯並重新部署 Uniswap 工廠
- 使用https://github.com/sushiswap/sushiswap/blob/canary/contracts/uniswapv2/UniswapV2Factory.sol#L26獲取其初始化程式碼雜湊或配對創建程式碼
pairCodeHash()
- 編輯
pairFor
函式以使其使用此雜湊- 使用修補的 Uniswapv2Library 部署路由器