如何使用Golang计算UniswapV2协议的Pair合约地址,大佬附上一下实现,感谢

image.png 这样计算不正确, 求大佬附上实现,我等学习一下 上图是我的实现,但是司机计算的地址并不正确

请先 登录 后评论

最佳答案 2021-12-31 22:00

func pairAddr() {
    factory := "0xca143ce32fe78f1f7019d7d551a6402fc5350c73"
    initCode := "00fb7f630766e6a796048ea87d01acd3068e8ff67d078148a3fa3f4a84f69bd5"
    wbnb := "0xbb4CdB9CBd36B01bD1cBaEBF2De08d9173bc095c"
    usdt := "0x55d398326f99059fF775485246999027B3197955"
    pair := "0x16b9a82891338f9bA80E2D6970FddA79D1eb0daE"
    cr := common.HexToAddress(factory)
    ihash := common.Hex2Bytes(initCode)

    bn_bnb, _ := big.NewInt(0).SetString(wbnb, 0)
    bn_usdt, _ := big.NewInt(0).SetString(usdt, 0)

    var salt common.Hash
    if bn_bnb.Cmp(bn_usdt) >= 0 {
        salt = crypto.Keccak256Hash(
            common.HexToAddress(usdt).Bytes(),
            common.HexToAddress(wbnb).Bytes(),
        )
    } else {
        salt = crypto.Keccak256Hash(
            common.HexToAddress(wbnb).Bytes(),
            common.HexToAddress(usdt).Bytes(),
        )
    }
    contractAddr := crypto.CreateAddress2(cr, salt, ihash)
    fmt.Println(contractAddr, pair)

}
请先 登录 后评论

其它 0 个回答

  • 0 关注
  • 3 收藏,3326 浏览
  • CoinGEO 提出于 2021-12-31 17:33