// PayToAddrScript creates a new script to pay a transaction output to a the // specified address. func PayToAddrScript(addr coinutil.Address) ([]byte, error) { switch addr := addr.(type) { case *coinutil.AddressPubKeyHash: if addr == nil { return nil, ErrUnsupportedAddress } return payToPubKeyHashScript(addr.ScriptAddress()) case *coinutil.AddressScriptHash: if addr == nil { return nil, ErrUnsupportedAddress } return payToScriptHashScript(addr.ScriptAddress()) case *coinutil.AddressPubKey: if addr == nil { return nil, ErrUnsupportedAddress } return payToPubKeyScript(addr.ScriptAddress()) } return nil, ErrUnsupportedAddress }