Rust bindings for Pieter Wuille’s secp256k1 library, which is used for
fast and accurate manipulation of ECDSA and Schnorr signatures on the secp256k1
curve. Such signatures are used extensively by the Bitcoin network
and its derivatives.
Value for a transaction nTimeLock field which is guaranteed to represent a
UNIX timestamp which is always either 0 or a greater than or equal to
500000000.
Output taproot key - an InternalPk tweaked with merkle root of the
script tree - or its own hash. Used only inside addresses and raw taproot
descriptors.
A compact size unsigned integer representing the number of leaf hashes, followed by a list
of leaf hashes, followed by the 4 byte master key fingerprint concatenated with the
derivation path of the public key. The derivation path is represented as 32-bit little
endian unsigned integer indexes concatenated with each other. Public keys are those needed
to spend this output. The leaf hashes are of the leaves which involve this public key. The
internal key does not have leaf hashes, so can be indicated with a hashes len of 0.
Finalizers should remove this field after PSBT_IN_FINAL_SCRIPTWITNESS is constructed.
Generic taproot x-only (BIP-340) public key - a wrapper around
XOnlyPublicKey providing APIs compatible with the rest of the library.
Should be used everywhere when InternalPk and OutputPk do not apply:
as an output of BIP32 key derivation functions, inside tapscripts/
leafscripts etc.
Bitcoin consensus allows arrays which length is encoded as VarInt to grow up
to 64-bit values. However, at the same time no consensus rule allows any
block data structure to exceed 2^32 bytes (4GB), and any change to that rule
will be a hardfork. So for practical reasons we are safe to restrict the
maximum size here with just 32 bits.