@@ -1105,13 +1105,15 @@ struct Node {
11051105 }
11061106
11071107 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 ;
11081110 switch (fragment) {
11091111 case Fragment::JUST_0: return {{}, 0 };
11101112 case Fragment::JUST_1:
11111113 case Fragment::OLDER:
11121114 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 };
11151117 case Fragment::SHA256:
11161118 case Fragment::RIPEMD160:
11171119 case Fragment::HASH256:
@@ -1131,8 +1133,8 @@ struct Node {
11311133 case Fragment::OR_C: return {subs[0 ]->ws .sat | (subs[0 ]->ws .dsat + subs[1 ]->ws .sat ), {}};
11321134 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 };
11331135 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 ())};
11361138 case Fragment::WRAP_A:
11371139 case Fragment::WRAP_N:
11381140 case Fragment::WRAP_S:
0 commit comments