package common import ( "github.com/vapor/common" "github.com/vapor/consensus" "github.com/vapor/consensus/segwit" ) func GetAddressFromControlProgram(prog []byte) string { if segwit.IsP2WPKHScript(prog) { if pubHash, err := segwit.GetHashFromStandardProg(prog); err == nil { return buildP2PKHAddress(pubHash) } } else if segwit.IsP2WSHScript(prog) { if scriptHash, err := segwit.GetHashFromStandardProg(prog); err == nil { return buildP2SHAddress(scriptHash) } } return "" } func buildP2PKHAddress(pubHash []byte) string { address, err := common.NewAddressWitnessPubKeyHash(pubHash, &consensus.ActiveNetParams) if err != nil { return "" } return address.EncodeAddress() } func buildP2SHAddress(scriptHash []byte) string { address, err := common.NewAddressWitnessScriptHash(scriptHash, &consensus.ActiveNetParams) if err != nil { return "" } return address.EncodeAddress() }