@@ -47,11 +47,16 @@ type SwapKit struct {
4747 // AddressParams is the chain parameters of the chain the deposit is
4848 // being created on.
4949 AddressParams * address.ChainParams
50+
51+ // CheckCSV indicates whether the success path script should include a
52+ // CHECKSEQUENCEVERIFY check. This is used to prevent potential pinning
53+ // attacks when the HTLC is not part of a package relay.
54+ CheckCSV bool
5055}
5156
5257// GetSuccessScript returns the success path script of the swap HTLC.
5358func (s * SwapKit ) GetSuccessScript () ([]byte , error ) {
54- return GenSuccessPathScript (s .ReceiverPubKey , s .SwapHash )
59+ return GenSuccessPathScript (s .ReceiverPubKey , s .SwapHash , s . CheckCSV )
5560}
5661
5762// GetTimeoutScript returns the timeout path script of the swap HTLC.
@@ -158,10 +163,8 @@ func (s *SwapKit) CreateHtlcVpkt() (*tappsbt.VPacket, error) {
158163 ScriptKey : asset .NUMSScriptKey ,
159164 })
160165 pkt .Outputs = append (pkt .Outputs , & tappsbt.VOutput {
161- // todo(sputn1ck) assetversion
162- AssetVersion : asset .Version (1 ),
166+ AssetVersion : asset .V1 ,
163167 Amount : uint64 (s .Amount ),
164- Interactive : true ,
165168 AnchorOutputIndex : 1 ,
166169 ScriptKey : asset .NewScriptKey (
167170 tapScriptKey .PubKey ,
@@ -194,7 +197,7 @@ func (s *SwapKit) GenTimeoutBtcControlBlock(taprootAssetRoot []byte) (
194197 InternalKey : internalKey ,
195198 LeafVersion : txscript .BaseLeafVersion ,
196199 InclusionProof : append (
197- successLeafHash [:], taprootAssetRoot [:] ... ,
200+ successLeafHash [:], taprootAssetRoot ... ,
198201 ),
199202 }
200203
@@ -235,7 +238,7 @@ func (s *SwapKit) GenSuccessBtcControlBlock(taprootAssetRoot []byte) (
235238 InternalKey : internalKey ,
236239 LeafVersion : txscript .BaseLeafVersion ,
237240 InclusionProof : append (
238- timeOutLeafHash [:], taprootAssetRoot [:] ... ,
241+ timeOutLeafHash [:], taprootAssetRoot ... ,
239242 ),
240243 }
241244
@@ -324,7 +327,9 @@ func (s *SwapKit) CreatePreimageWitness(ctx context.Context,
324327 Value : sweepBtcPacket .Inputs [1 ].WitnessUtxo .Value ,
325328 }
326329
327- //sweepBtcPacket.UnsignedTx.TxIn[0].Sequence = 1
330+ if s .CheckCSV {
331+ sweepBtcPacket .UnsignedTx .TxIn [0 ].Sequence = 1
332+ }
328333
329334 successScript , err := s .GetSuccessScript ()
330335 if err != nil {
0 commit comments