我有一个工厂模式智能契约,它通过通过最小代理契约和CREATE2操作码克隆主智能契约来创建其他智能契约。什么是计算CREATE2最终地址的正确方法?
发布于 2020-07-22 12:43:27
go-ethereum
为这个https://pkg.go.dev/github.com/ethereum/go-ethereum/crypto?tab=doc#CreateAddress2提供了一个函数
func CreateAddress2(b common.Address, salt [32]byte, inithash []byte) common.Address
其中b
是工厂,salt
是使用的盐分,inithash
是init数据哈希。
你可以这样计算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)
}
https://ethereum.stackexchange.com/questions/85187
复制相似问题