libsecp disables paging for you, python doesn't, so holding the privkey in python increases the chance that you'll write the key to disk accidentally (bad)
instead store references to libsecp objects
the raw bytes should only be available by serializing
instead of assert use raise ValueError('error message'), or raise some other type of Exception
I would move constants and network information into another file
xpubs should most likely be serialization functions, not properties
I believe hashlib uses the C buffer API, so you can likely pass many of the secp256k1 references directly to it. this is better than converting to bytes first
11 #12