I have picked up Pieter Wuille's proposal
from 2017 to use a rolling hash for the UTXO set hash. It deals with the problem of
a long computation time of the UTXO set hash which results in a slow RPC call
gettxoutsetinfo
(can take several minutes depending on hardware). I investigated
three hash functions: MuHash, ECMH and LtHash and started implementing them
in Bitcoin Core for comparison. However only MuHash has a rolling hash implementation
Status: Discussion
Co-Authors: Elichai Turkel (elichai.turkel@gmail.com), James Chiang (james.chiang@protonmail.com)
Output descriptor support in Bitcoin Core provides an intuitive language which simplifies how wallets determine which UTXOs they can sign and spend. A descriptor expression today expands to a single output script of a given output.
However, with the introduction of Taproot, a given output can now have multiple spending paths at different heights of the taproot tree. We wish to propose a taproot output descriptor which encapsulates both individual tapscripts and mid-level tapscript descriptors while encoding the intended taptree structure.
Moved to https://github.com/fjahr/debugging_bitcoin to allow for better collaboration.
This document is currently optimized for MacOS. If you would like to help me add Linux equivalent commands, please let me know.
This guide is designed to give beginners of C++ development and/or people new to the bitcoin core code base an overview of the tools available for debugging issues as well as giving hints where issues may trip you up.
P' = P + H(P||S)G
d' = d + H(P||S)
Examples:
-
P
is a public key,S
is a bitcoin script with a locktime for a different Key(Q
).
The owner ofP
can sign forP'
and spend the output regularly(by signing withd'
).
OR the owner ofQ
can provideP
andS
and then get evaluated by S as a regular script. (and if the script evaluates to true he can get the money) -
S
is a hash of a document and this is used to timestamp data, not the best way since you need this to be able to sign on the transaction later and this isn't saved anywhere.