Golang
如何在golang中計算CREATE2地址?
我有一個工廠模式智能合約,它通過最小代理合約和 CREATE2 操作碼複製主智能合約來創建其他智能合約。在 golang 中計算 CREATE2 最終地址的正確方法是什麼?
go-ethereum
有這個功能https://pkg.go.dev/github.com/ethereum/go-ethereum/crypto?tab=doc#CreateAddress2func CreateAddress2(b common.Address, salt [32]byte, inithash []byte) common.Address
b
工廠在哪裡,salt
使用的鹽,inithash
是你的初始化數據雜湊。你可以
inithash
這樣計算func getInithash(contractABI, contractBin string, params ...interface{}) []byte { parsed, _ := abi.JSON(strings.NewReader(contractABI)) packedArguments, _ := parsed.Pack("", params...) // constructor params initData := append(common.FromHex(contractBin), packedArguments...) return crypto.Keccak256(initData) }