PayToAddrScript creates a new script to pay a transaction output to a the specified address.
(addr address.Address)
| 929 | // PayToAddrScript creates a new script to pay a transaction output to a the |
| 930 | // specified address. |
| 931 | func PayToAddrScript(addr address.Address) ([]byte, error) { |
| 932 | const nilAddrErrStr = "unable to generate payment script for nil address" |
| 933 | |
| 934 | switch addr := addr.(type) { |
| 935 | case *address.AddressPubKeyHash: |
| 936 | if addr == nil { |
| 937 | return nil, scriptError(ErrUnsupportedAddress, |
| 938 | nilAddrErrStr) |
| 939 | } |
| 940 | return payToPubKeyHashScript(addr.ScriptAddress()) |
| 941 | |
| 942 | case *address.AddressScriptHash: |
| 943 | if addr == nil { |
| 944 | return nil, scriptError(ErrUnsupportedAddress, |
| 945 | nilAddrErrStr) |
| 946 | } |
| 947 | return payToScriptHashScript(addr.ScriptAddress()) |
| 948 | |
| 949 | case *address.AddressPubKey: |
| 950 | if addr == nil { |
| 951 | return nil, scriptError(ErrUnsupportedAddress, |
| 952 | nilAddrErrStr) |
| 953 | } |
| 954 | return payToPubKeyScript(addr.ScriptAddress()) |
| 955 | |
| 956 | case *address.AddressWitnessPubKeyHash: |
| 957 | if addr == nil { |
| 958 | return nil, scriptError(ErrUnsupportedAddress, |
| 959 | nilAddrErrStr) |
| 960 | } |
| 961 | return payToWitnessPubKeyHashScript(addr.ScriptAddress()) |
| 962 | case *address.AddressWitnessScriptHash: |
| 963 | if addr == nil { |
| 964 | return nil, scriptError(ErrUnsupportedAddress, |
| 965 | nilAddrErrStr) |
| 966 | } |
| 967 | return payToWitnessScriptHashScript(addr.ScriptAddress()) |
| 968 | case *address.AddressTaproot: |
| 969 | if addr == nil { |
| 970 | return nil, scriptError(ErrUnsupportedAddress, |
| 971 | nilAddrErrStr) |
| 972 | } |
| 973 | return payToWitnessTaprootScript(addr.ScriptAddress()) |
| 974 | case *address.AddressPayToAnchor: |
| 975 | if addr == nil { |
| 976 | return nil, scriptError(ErrUnsupportedAddress, |
| 977 | nilAddrErrStr) |
| 978 | } |
| 979 | return payToAnchorScript(addr.ScriptAddress()) |
| 980 | } |
| 981 | |
| 982 | str := fmt.Sprintf("unable to generate payment script for unsupported "+ |
| 983 | "address type %T", addr) |
| 984 | return nil, scriptError(ErrUnsupportedAddress, str) |
| 985 | } |
| 986 | |
| 987 | // NullDataScript creates a provably-prunable script containing OP_RETURN |
| 988 | // followed by the passed data. An Error with the error code ErrTooMuchNullData |
searching dependent graphs…