@@ -1105,13 +1105,15 @@ struct Node {
1105
1105
}
1106
1106
1107
1107
internal::WitnessSize CalcWitnessSize () const {
1108
+ const uint32_t sig_size = IsTapscript (m_script_ctx) ? 1 + 65 : 1 + 72 ;
1109
+ const uint32_t pubkey_size = IsTapscript (m_script_ctx) ? 1 + 32 : 1 + 33 ;
1108
1110
switch (fragment) {
1109
1111
case Fragment::JUST_0: return {{}, 0 };
1110
1112
case Fragment::JUST_1:
1111
1113
case Fragment::OLDER:
1112
1114
case Fragment::AFTER: return {0 , {}};
1113
- case Fragment::PK_K: return {1 + 72 , 1 };
1114
- case Fragment::PK_H: return {1 + 72 + 1 + 33 , 1 + 1 + 33 };
1115
+ case Fragment::PK_K: return {sig_size , 1 };
1116
+ case Fragment::PK_H: return {sig_size + pubkey_size , 1 + pubkey_size };
1115
1117
case Fragment::SHA256:
1116
1118
case Fragment::RIPEMD160:
1117
1119
case Fragment::HASH256:
@@ -1131,8 +1133,8 @@ struct Node {
1131
1133
case Fragment::OR_C: return {subs[0 ]->ws .sat | (subs[0 ]->ws .dsat + subs[1 ]->ws .sat ), {}};
1132
1134
case Fragment::OR_D: return {subs[0 ]->ws .sat | (subs[0 ]->ws .dsat + subs[1 ]->ws .sat ), subs[0 ]->ws .dsat + subs[1 ]->ws .dsat };
1133
1135
case Fragment::OR_I: return {(subs[0 ]->ws .sat + 1 + 1 ) | (subs[1 ]->ws .sat + 1 ), (subs[0 ]->ws .dsat + 1 + 1 ) | (subs[1 ]->ws .dsat + 1 )};
1134
- case Fragment::MULTI: return {k * ( 1 + 72 ) + 1 , k + 1 };
1135
- case Fragment::MULTI_A: return {k * ( 1 + 65 ) + static_cast <uint32_t >(keys.size ()) - k, static_cast <uint32_t >(keys.size ())};
1136
+ case Fragment::MULTI: return {k * sig_size + 1 , k + 1 };
1137
+ case Fragment::MULTI_A: return {k * sig_size + static_cast <uint32_t >(keys.size ()) - k, static_cast <uint32_t >(keys.size ())};
1136
1138
case Fragment::WRAP_A:
1137
1139
case Fragment::WRAP_N:
1138
1140
case Fragment::WRAP_S:
0 commit comments