The Bitcoin core wallet selection algorithms, particularly coin-grinder use a weight metric for each output. My understanding is that an output's weight is composed of the base_weight which is a constant amount plus a satisfaction_weight which is variable depending on the type of output and script/arguments needed to unlock it. My question is, how does bitcoin core know the weight during coin-selection before it's actually spent? Is this weight an estimate based on the type or is it accurately computed?
1 Answer
The coin selection algorithms all use an estimated weight. It is not a metric but rather the estimated weight that the resulting input will have.
The estimate is based on the type of the output script. For some script types, it will be accurate, for others, it is an upper bound. Bitcoin Core can only make these weight estimates for script types that it knows, it cannot do this for arbitrary scripts.