Skip to content

Commit ea60a1e

Browse files
committed
Fixes & Lint
1 parent 5c6e002 commit ea60a1e

File tree

2 files changed

+44
-16
lines changed

2 files changed

+44
-16
lines changed

pkg/client-sdk/covenantless_client.go

+41-15
Original file line numberDiff line numberDiff line change
@@ -336,7 +336,12 @@ func (a *covenantlessArkClient) listenForBoardingTxs(ctx context.Context) {
336336
for {
337337
select {
338338
case <-ticker.C:
339-
txsToAdd, txsToConfirm, rbfTxs, err := a.getBoardingTransactions(ctx)
339+
_, boardingAddrs, _, err := a.wallet.GetAddresses(ctx)
340+
if err != nil {
341+
log.WithError(err).Error("failed to get all boarding addresses")
342+
continue
343+
}
344+
txsToAdd, txsToConfirm, rbfTxs, err := a.getBoardingTransactions(ctx, boardingAddrs)
340345
if err != nil {
341346
log.WithError(err).Error("failed to get pending transactions")
342347
continue
@@ -379,7 +384,7 @@ func (a *covenantlessArkClient) listenForBoardingTxs(ctx context.Context) {
379384
}
380385

381386
func (a *covenantlessArkClient) getBoardingTransactions(
382-
ctx context.Context,
387+
ctx context.Context, boardingAddrs []wallet.TapscriptsAddress,
383388
) ([]types.Transaction, []string, map[string]types.Transaction, error) {
384389
oldTxs, err := a.store.TransactionStore().GetAllTransactions(ctx)
385390
if err != nil {
@@ -390,30 +395,54 @@ func (a *covenantlessArkClient) getBoardingTransactions(
390395
replacements := make(map[string]struct{}, 0)
391396
for _, tx := range oldTxs {
392397
if tx.IsBoarding() && tx.CreatedAt.IsZero() {
393-
fmt.Printf("CHECK IF %s IS RBF\n", tx.BoardingTxid)
394398
isRbf, replacedBy, timestamp, err := a.explorer.IsRBFTx(tx.BoardingTxid, tx.Hex)
395399
if err != nil {
396400
return nil, nil, nil, err
397401
}
398-
fmt.Println(isRbf, replacedBy, timestamp)
399402
if isRbf {
400403
txHex, err := a.explorer.GetTxHex(replacedBy)
401404
if err != nil {
402405
return nil, nil, nil, err
403406
}
407+
rawTx := &wire.MsgTx{}
408+
if err := rawTx.Deserialize(strings.NewReader(txHex)); err != nil {
409+
return nil, nil, nil, err
410+
}
411+
amount := uint64(0)
412+
netParams := utils.ToBitcoinNetwork(a.Network)
413+
for _, addr := range boardingAddrs {
414+
decoded, err := btcutil.DecodeAddress(addr.Address, &netParams)
415+
if err != nil {
416+
return nil, nil, nil, err
417+
}
418+
pkScript, err := txscript.PayToAddrScript(decoded)
419+
if err != nil {
420+
return nil, nil, nil, err
421+
}
422+
for _, out := range rawTx.TxOut {
423+
if bytes.Equal(out.PkScript, pkScript) {
424+
amount = uint64(out.Value)
425+
break
426+
}
427+
}
428+
if amount > 0 {
429+
break
430+
}
431+
}
404432
rbfTxs[tx.BoardingTxid] = types.Transaction{
405433
TransactionKey: types.TransactionKey{
406434
BoardingTxid: replacedBy,
407435
},
408436
CreatedAt: time.Unix(timestamp, 0),
409437
Hex: txHex,
438+
Amount: amount,
410439
}
411440
replacements[replacedBy] = struct{}{}
412441
}
413442
}
414443
}
415444

416-
boardingUtxos, err := a.getClaimableBoardingUtxos(ctx, nil)
445+
boardingUtxos, err := a.getClaimableBoardingUtxos(ctx, boardingAddrs, nil)
417446
if err != nil {
418447
return nil, nil, nil, err
419448
}
@@ -917,7 +946,7 @@ func (a *covenantlessArkClient) CollaborativeExit(
917946
return "", fmt.Errorf("invalid onchain address")
918947
}
919948

920-
offchainAddrs, _, _, err := a.wallet.GetAddresses(ctx)
949+
offchainAddrs, boardingAddrs, _, err := a.wallet.GetAddresses(ctx)
921950
if err != nil {
922951
return "", err
923952
}
@@ -951,7 +980,7 @@ func (a *covenantlessArkClient) CollaborativeExit(
951980
}
952981
}
953982

954-
boardingUtxos, err := a.getClaimableBoardingUtxos(ctx, nil)
983+
boardingUtxos, err := a.getClaimableBoardingUtxos(ctx, boardingAddrs, nil)
955984
if err != nil {
956985
return "", err
957986
}
@@ -1375,7 +1404,7 @@ func (a *covenantlessArkClient) sendOffchain(
13751404
sumOfReceivers += receiver.Amount()
13761405
}
13771406

1378-
offchainAddrs, _, _, err := a.wallet.GetAddresses(ctx)
1407+
offchainAddrs, boardingAddrs, _, err := a.wallet.GetAddresses(ctx)
13791408
if err != nil {
13801409
return "", err
13811410
}
@@ -1407,7 +1436,7 @@ func (a *covenantlessArkClient) sendOffchain(
14071436
}
14081437
}
14091438

1410-
boardingUtxos, err := a.getClaimableBoardingUtxos(ctx, nil)
1439+
boardingUtxos, err := a.getClaimableBoardingUtxos(ctx, boardingAddrs, nil)
14111440
if err != nil {
14121441
return "", err
14131442
}
@@ -2411,12 +2440,9 @@ func (a *covenantlessArkClient) getAllBoardingUtxos(ctx context.Context) ([]type
24112440
return utxos, ignoreVtxos, nil
24122441
}
24132442

2414-
func (a *covenantlessArkClient) getClaimableBoardingUtxos(ctx context.Context, opts *CoinSelectOptions) ([]types.Utxo, error) {
2415-
_, boardingAddrs, _, err := a.wallet.GetAddresses(ctx)
2416-
if err != nil {
2417-
return nil, err
2418-
}
2419-
2443+
func (a *covenantlessArkClient) getClaimableBoardingUtxos(
2444+
_ context.Context, boardingAddrs []wallet.TapscriptsAddress, opts *CoinSelectOptions,
2445+
) ([]types.Utxo, error) {
24202446
claimable := make([]types.Utxo, 0)
24212447
for _, addr := range boardingAddrs {
24222448
boardingScript, err := bitcointree.ParseVtxoScript(addr.Tapscripts)

pkg/client-sdk/explorer/explorer.go

+3-1
Original file line numberDiff line numberDiff line change
@@ -391,7 +391,9 @@ func (e *explorerSvc) esploraIsRBFTx(txid, txHex string) (bool, string, int64, e
391391
if resp.StatusCode == http.StatusNotFound {
392392
var tx wire.MsgTx
393393

394-
tx.Deserialize(hex.NewDecoder(strings.NewReader(txHex)))
394+
if err := tx.Deserialize(hex.NewDecoder(strings.NewReader(txHex))); err != nil {
395+
return false, "", -1, err
396+
}
395397
spentBy, err := e.GetTxOutspends(tx.TxIn[0].PreviousOutPoint.Hash.String())
396398
if err != nil {
397399
return false, "", -1, err

0 commit comments

Comments
 (0)