Description
After attempting to use the library function scriptpubkey_to_address
from the Python distribution, I got the error message ValueError: Invalid argument
This was the line I used to invoke the function:
wallycore.scriptpubkey_to_address(bytes([0x6a]), wallycore.WALLY_NETWORK_LIQUID)
I tried looking through the repo to see if there's any examples of scriptpubkey_to_address and didn't find much in the code aside from this (which linked the python call to 'wally_scriptpubkey_to_address'):
libwally-core/include/wally.hpp
Line 1360 in 38b85bf
I did find an example in one of the commits matching the search result:
399906a#diff-a1dde0a251f92d169d953a7e3b12d4f97d98a5985abf5b1a0e48075c062e708c
The standalone example file in that commit can be found here (although it's not in master anymore):
https://github.com/ElementsProject/libwally-core/blob/399906aba358a16f05b233f619fa08aec6bfe116/src/swig_python/contrib/address.py
When I tried running this line using data from the test case it worked:
wallycore.scriptpubkey_to_address(wallycore.hex_to_bytes("76a914bef5a2f9a56a94aab12459f72ad9cf8cf19c7bbe88ac"), wallycore.WALLY_NETWORK_LIQUID)
So then I decided to look into the implementation for 'wally_scriptpubkey_to_address':
Line 154 in e1fc3cd
There's a line that tries to determine the script 'type':
Line 160 in e1fc3cd
And then only processes the types WALLY_SCRIPT_TYPE_P2PKH
and WALLY_SCRIPT_TYPE_P2SH
The function that gets the types ('wally_scriptpubkey_get_type') can be found here:
Line 369 in 38b85bf
Although a type is returned for OP_RETURN
, it doesn't accept it in 'wally_scriptpubkey_to_address'
The error I get from the call could tell me it wasn't supported instead of the generic 'WALLY_EINVAL' that's returned as the default catch-all:
Line 209 in e1fc3cd