11import { bitgo , crypto , ECPair , networks , address as zcashAddress } from "@bitgo/utxo-lib" ;
2- import type { ZcashPsbt } from "@bitgo/utxo-lib/dist/src/bitgo" ;
2+ import { type ZcashPsbt , ZcashTransaction } from "@bitgo/utxo-lib/dist/src/bitgo" ;
33import { HDKey } from "@scure/bip32" ;
44import { mnemonicToSeedSync } from "@scure/bip39" ;
55import {
@@ -143,17 +143,10 @@ async function createTransaction(buildTxParams: UTXOBuildTxParams) {
143143 throw new SwapKitError ( "toolbox_utxo_insufficient_balance" , { assetValue, sender } ) ;
144144 }
145145
146- const psbt = bitgo . createPsbtForNetwork ( { network : getZcashNetwork ( ) } , { version : 455 } ) as ZcashPsbt ;
147-
148- const branchId = 0x4dec4df0 ;
149-
150- const CONSENSUS_BRANCH_ID_KEY = Buffer . concat ( [ Buffer . of ( 0xfc ) , Buffer . of ( 0x05 ) , Buffer . from ( "BITGO" ) , Buffer . of ( 0 ) ] ) ;
151-
152- // PSBT value must be 4-byte little-endian
153- const value = Buffer . allocUnsafe ( 4 ) ;
154- value . writeUInt32LE ( branchId >>> 0 , 0 ) ;
155-
156- psbt . addUnknownKeyValToGlobal ( { key : CONSENSUS_BRANCH_ID_KEY , value } ) ;
146+ const psbt = bitgo . createPsbtForNetwork (
147+ { network : getZcashNetwork ( ) } ,
148+ { version : ZcashTransaction . VERSION4_BRANCH_NU6_1 } ,
149+ ) as ZcashPsbt ;
157150
158151 const { psbt : mappedPsbt , inputs : mappedInputs } = await addInputsAndOutputs ( {
159152 compiledMemo,
@@ -163,6 +156,8 @@ async function createTransaction(buildTxParams: UTXOBuildTxParams) {
163156 sender,
164157 } ) ;
165158
159+ mappedPsbt . setDefaultsForVersion ( getZcashNetwork ( ) , ZcashTransaction . VERSION4_BRANCH_NU6_1 ) ;
160+
166161 return { inputs : mappedInputs , outputs, psbt : mappedPsbt } ;
167162}
168163
@@ -194,9 +189,14 @@ export async function createZcashToolbox(
194189
195190 const signedPsbt = await signer . signTransaction ( psbt ) ;
196191
192+ signedPsbt . validateSignaturesOfAllInputs ( ) ;
193+
197194 signedPsbt . finalizeAllInputs ( ) ;
198195
199- return baseToolbox . broadcastTx ( signedPsbt . extractTransaction ( ) . toHex ( ) ) ;
196+ const finalTx = signedPsbt . extractTransaction ( ) ;
197+ const txHex = finalTx . toHex ( ) ;
198+
199+ return baseToolbox . broadcastTx ( txHex ) ;
200200 }
201201
202202 function createKeysForPath ( {
0 commit comments