如何使用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 收藏,5506 浏览
  • CoinGEO 提出于 2021-12-31 17:33