Skip to content

fix(backport): do not process btc outbound as inbound transaction#3953

Merged
ws4charlie merged 3 commits intodevelopfrom
backport-fix-dont-process-btc-outbound-as-inbound
Jun 4, 2025
Merged

fix(backport): do not process btc outbound as inbound transaction#3953
ws4charlie merged 3 commits intodevelopfrom
backport-fix-dont-process-btc-outbound-as-inbound

Conversation

@ws4charlie
Copy link
Contributor

@ws4charlie ws4charlie commented Jun 4, 2025

Description

This PR is to backport 3951 to develop

How Has This Been Tested?

  • Tested CCTX in localnet
  • Tested in development environment
  • Go unit tests
  • Go integration tests
  • Tested via GitHub Actions

Summary by CodeRabbit

  • Bug Fixes

    • Improved Bitcoin transaction processing by skipping outbound transactions during inbound scanning.
    • Enhanced validation to ensure only valid inbound transactions are processed, including checks for sender address and depositor fee requirements.
  • Tests

    • Expanded and updated test coverage for Bitcoin event processing, including additional edge cases and improved test clarity.
    • Removed outdated tests related to deprecated functions.
  • Chores

    • Updated environment variable names and documentation for Bitcoin and TON RPC network configuration.
    • Improved changelog documentation to reflect recent fixes.

@coderabbitai
Copy link
Contributor

coderabbitai bot commented Jun 4, 2025

Important

Review skipped

Auto incremental reviews are disabled on this repository.

Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

📝 Walkthrough

Walkthrough

The changes update Bitcoin inbound transaction processing to use GetBtcEventWithWitness directly, removing the redundant GetBtcEvent wrapper and its associated tests. Additional validation ensures outbound transactions are skipped. Environment variable constants for Bitcoin RPC networks are revised, and related tests are updated and expanded for improved coverage.

Changes

File(s) Change Summary
changelog.md Added a "Fixes" section under "UNRELEASED" noting the skip of Bitcoin outbound processing when scanning inbound transactions.
cmd/zetatool/chains/bitcoin.go Switched event retrieval from GetBtcEvent to GetBtcEventWithWitness in BitcoinBallotIdentifier.
zetaclient/chains/bitcoin/client/client_test.go Updated testnet RPC host environment variable from EnvBtcRPCTestnet to EnvBtcRPCTestnet4.
zetaclient/chains/bitcoin/observer/inbound.go Replaced GetBtcEvent calls with GetBtcEventWithWitness; removed the GetBtcEvent function.
zetaclient/chains/bitcoin/observer/inbound_test.go Removed all tests for GetBtcEvent and related imports.
zetaclient/chains/bitcoin/observer/inbound_tracker.go Updated to use GetBtcEventWithWitness for event retrieval.
zetaclient/chains/bitcoin/observer/witness.go Refactored GetBtcEventWithWitness to improve sender address validation and outbound transaction skipping; updated function comment.
zetaclient/chains/bitcoin/observer/witness_test.go Added and clarified tests for output script validation, sender address checks, and depositor fee logic.
zetaclient/common/env.go Replaced EnvBtcRPCTestnet with EnvBtcRPCSignet and EnvBtcRPCTestnet4; added EnvTONRPC.

Sequence Diagram(s)

sequenceDiagram
    participant Observer
    participant BitcoinRPC
    participant FeeCalculator

    Observer->>BitcoinRPC: Fetch raw Bitcoin transaction
    Observer->>BitcoinRPC: Fetch previous transaction for sender address
    BitcoinRPC-->>Observer: Return transaction data
    Observer->>Observer: Validate recipient and sender addresses
    alt Sender is empty or matches TSS address
        Observer-->>Observer: Skip transaction (outbound or invalid)
    else
        Observer->>FeeCalculator: Calculate depositor fee
        FeeCalculator-->>Observer: Return fee
        alt Output value < fee
            Observer-->>Observer: Mark event as INSUFFICIENT_DEPOSITOR_FEE
        else
            Observer-->>Observer: Parse memo and create inbound event
        end
    end
Loading

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share
🪧 Tips

Chat

There are 3 ways to chat with CodeRabbit:

  • Review comments: Directly reply to a review comment made by CodeRabbit. Example:
    • I pushed a fix in commit <commit_id>, please review it.
    • Explain this complex logic.
    • Open a follow-up GitHub issue for this discussion.
  • Files and specific lines of code (under the "Files changed" tab): Tag @coderabbitai in a new review comment at the desired location with your query. Examples:
    • @coderabbitai explain this code block.
    • @coderabbitai modularize this function.
  • PR comments: Tag @coderabbitai in a new PR comment to ask questions about the PR branch. For the best results, please provide a very specific query, as very limited context is provided in this mode. Examples:
    • @coderabbitai gather interesting stats about this repository and render them as a table. Additionally, render a pie chart showing the language distribution in the codebase.
    • @coderabbitai read src/utils.ts and explain its main purpose.
    • @coderabbitai read the files in the src/scheduler package and generate a class diagram using mermaid and a README in the markdown format.
    • @coderabbitai help me debug CodeRabbit configuration file.

Support

Need help? Create a ticket on our support page for assistance with any issues or questions.

Note: Be mindful of the bot's finite context window. It's strongly recommended to break down tasks such as reading entire modules into smaller chunks. For a focused discussion, use review comments to chat about specific files and their changes, instead of using the PR comments.

CodeRabbit Commands (Invoked using PR comments)

  • @coderabbitai pause to pause the reviews on a PR.
  • @coderabbitai resume to resume the paused reviews.
  • @coderabbitai review to trigger an incremental review. This is useful when automatic reviews are disabled for the repository.
  • @coderabbitai full review to do a full review from scratch and review all the files again.
  • @coderabbitai summary to regenerate the summary of the PR.
  • @coderabbitai generate docstrings to generate docstrings for this PR.
  • @coderabbitai generate sequence diagram to generate a sequence diagram of the changes in this PR.
  • @coderabbitai resolve resolve all the CodeRabbit review comments.
  • @coderabbitai configuration to show the current CodeRabbit configuration for the repository.
  • @coderabbitai help to get help.

Other keywords and placeholders

  • Add @coderabbitai ignore anywhere in the PR description to prevent this PR from being reviewed.
  • Add @coderabbitai summary to generate the high-level summary at a specific location in the PR description.
  • Add @coderabbitai anywhere in the PR title to generate the title automatically.

Documentation and Community

  • Visit our Documentation for detailed information on how to use CodeRabbit.
  • Join our Discord Community to get help, request features, and share feedback.
  • Follow us on X/Twitter for updates and announcements.

@ws4charlie ws4charlie marked this pull request as ready for review June 4, 2025 04:06
@ws4charlie ws4charlie requested a review from a team as a code owner June 4, 2025 04:06
@ws4charlie ws4charlie added the chain:bitcoin Bitcoin chain related label Jun 4, 2025
@codecov
Copy link

codecov bot commented Jun 4, 2025

Codecov Report

Attention: Patch coverage is 42.10526% with 11 lines in your changes missing coverage. Please review.

Project coverage is 64.18%. Comparing base (1cb0ef8) to head (ab3d986).
Report is 1 commits behind head on develop.

Files with missing lines Patch % Lines
zetaclient/chains/bitcoin/observer/inbound.go 0.00% 10 Missing ⚠️
...aclient/chains/bitcoin/observer/inbound_tracker.go 0.00% 1 Missing ⚠️
Additional details and impacted files

Impacted file tree graph

@@             Coverage Diff             @@
##           develop    #3953      +/-   ##
===========================================
- Coverage    64.21%   64.18%   -0.03%     
===========================================
  Files          474      474              
  Lines        34796    34804       +8     
===========================================
- Hits         22343    22338       -5     
- Misses       11425    11437      +12     
- Partials      1028     1029       +1     
Files with missing lines Coverage Δ
zetaclient/chains/bitcoin/observer/witness.go 80.64% <100.00%> (-3.10%) ⬇️
zetaclient/common/env.go 88.88% <ø> (ø)
...aclient/chains/bitcoin/observer/inbound_tracker.go 0.00% <0.00%> (ø)
zetaclient/chains/bitcoin/observer/inbound.go 49.54% <0.00%> (-2.57%) ⬇️
🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

Copy link
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 2

🔭 Outside diff range comments (1)
zetaclient/chains/bitcoin/observer/inbound_tracker.go (1)

72-81: 💡 Verification agent

🧩 Analysis chain

Critical fix correctly implemented, but missing test coverage.

The function call change from GetBtcEvent to GetBtcEventWithWitness properly addresses the PR objective. Based on the implementation in zetaclient/chains/bitcoin/observer/witness.go (lines 66-69), GetBtcEventWithWitness includes logic to skip processing when fromAddress equals tssAddress, preventing Bitcoin outbound transactions from being processed as inbound.

However, static analysis indicates this line lacks test coverage, which is concerning for such a critical fix.


🏁 Script executed:

#!/bin/bash
# Description: Verify test coverage exists for GetBtcEventWithWitness function calls
# Expected: Find test cases that cover the new function call path

# Search for tests covering GetBtcEventWithWitness usage in inbound tracker context
rg -A 10 -B 5 "GetBtcEventWithWitness.*inbound_tracker|inbound_tracker.*GetBtcEventWithWitness" --type go

# Search for tests of CheckReceiptForBtcTxHash function which contains the changed line
rg -A 15 -B 5 "CheckReceiptForBtcTxHash" --type go --glob="*test*"

Length of output: 174


🏁 Script executed:

#!/bin/bash
# Search for any test files referencing GetBtcEventWithWitness
rg 'GetBtcEventWithWitness' --glob='*_test.go' -A5 -B5

# Search for any test files referencing inbound_tracker
rg 'inbound_tracker' --glob='*_test.go' -A5 -B5

Length of output: 11082


Missing integration tests for inbound tracker logic

While GetBtcEventWithWitness is well-covered in witness_test.go, there are no tests exercising its invocation in inbound_tracker.go. The critical path added at lines 72–81 is untested.

Please add tests in a new or existing inbound_tracker_test.go to cover:

  • Successful event extraction via inbound_tracker.go using GetBtcEventWithWitness.
  • Skipping when fromAddress == tssAddress.
  • Error propagation when the RPC client fails.
🧰 Tools
🪛 GitHub Check: codecov/patch

[warning] 72-72: zetaclient/chains/bitcoin/observer/inbound_tracker.go#L72
Added line #L72 was not covered by tests

📜 Review details

Configuration used: .coderabbit.yaml
Review profile: CHILL
Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 1cb0ef8 and 74a5931.

📒 Files selected for processing (9)
  • changelog.md (1 hunks)
  • cmd/zetatool/chains/bitcoin.go (1 hunks)
  • zetaclient/chains/bitcoin/client/client_test.go (1 hunks)
  • zetaclient/chains/bitcoin/observer/inbound.go (1 hunks)
  • zetaclient/chains/bitcoin/observer/inbound_test.go (0 hunks)
  • zetaclient/chains/bitcoin/observer/inbound_tracker.go (1 hunks)
  • zetaclient/chains/bitcoin/observer/witness.go (3 hunks)
  • zetaclient/chains/bitcoin/observer/witness_test.go (6 hunks)
  • zetaclient/common/env.go (1 hunks)
💤 Files with no reviewable changes (1)
  • zetaclient/chains/bitcoin/observer/inbound_test.go
🧰 Additional context used
📓 Path-based instructions (1)
`**/*.go`: Review the Go code, point out issues relative to principles of clean code, expressiveness, and performance.

**/*.go: Review the Go code, point out issues relative to principles of clean code, expressiveness, and performance.

  • cmd/zetatool/chains/bitcoin.go
  • zetaclient/chains/bitcoin/observer/inbound_tracker.go
  • zetaclient/chains/bitcoin/client/client_test.go
  • zetaclient/common/env.go
  • zetaclient/chains/bitcoin/observer/inbound.go
  • zetaclient/chains/bitcoin/observer/witness.go
  • zetaclient/chains/bitcoin/observer/witness_test.go
🧬 Code Graph Analysis (4)
cmd/zetatool/chains/bitcoin.go (1)
zetaclient/chains/bitcoin/observer/witness.go (1)
  • GetBtcEventWithWitness (35-118)
zetaclient/chains/bitcoin/observer/inbound_tracker.go (1)
zetaclient/chains/bitcoin/observer/witness.go (1)
  • GetBtcEventWithWitness (35-118)
zetaclient/chains/bitcoin/client/client_test.go (1)
zetaclient/common/env.go (1)
  • EnvBtcRPCTestnet4 (19-19)
zetaclient/chains/bitcoin/observer/witness.go (1)
zetaclient/chains/bitcoin/observer/inbound.go (1)
  • GetSenderAddressByVin (229-256)
🪛 GitHub Check: codecov/patch
zetaclient/chains/bitcoin/observer/inbound_tracker.go

[warning] 72-72: zetaclient/chains/bitcoin/observer/inbound_tracker.go#L72
Added line #L72 was not covered by tests

zetaclient/chains/bitcoin/observer/inbound.go

[warning] 162-171: zetaclient/chains/bitcoin/observer/inbound.go#L162-L171
Added lines #L162 - L171 were not covered by tests

⏰ Context from checks skipped due to timeout of 90000ms (1)
  • GitHub Check: start-e2e-test / e2e
🔇 Additional comments (10)
zetaclient/common/env.go (1)

15-22: LGTM: Environment variable constants properly defined.

The addition of new Bitcoin network constants (EnvBtcRPCSignet, EnvBtcRPCTestnet4) and TON RPC constant (EnvTONRPC) follows proper naming conventions and includes appropriate documentation.

zetaclient/chains/bitcoin/client/client_test.go (1)

46-46: LGTM: Test configuration properly updated.

The environment variable reference correctly updated from EnvBtcRPCTestnet to EnvBtcRPCTestnet4, maintaining consistency with the environment variable changes in zetaclient/common/env.go.

changelog.md (1)

9-12: LGTM: Changelog entry accurately documents the fix.

The addition of the "Fixes" section with PR #3953 reference appropriately documents the Bitcoin outbound transaction processing fix.

cmd/zetatool/chains/bitcoin.go (1)

59-68: LGTM! Clean refactoring to use witness-aware event processing.

The replacement of GetBtcEvent with GetBtcEventWithWitness aligns perfectly with the codebase refactoring objectives and maintains consistent Bitcoin transaction processing.

zetaclient/chains/bitcoin/observer/witness.go (3)

7-7: Appropriate import addition for case-insensitive address comparison.

The strings package import is correctly added to support the case-insensitive comparison of Bitcoin addresses in the filtering logic.


26-34: Excellent documentation enhancement for memo type support.

The expanded function documentation clearly explains the two supported memo types (OP_RETURN and Tapscript) and their prioritization, improving code maintainability.


64-75: Critical improvement: Early outbound transaction filtering implemented correctly.

This change successfully addresses the PR objective by moving sender address retrieval and filtering logic earlier in the function flow. The implementation correctly:

  1. Retrieves the sender address immediately after recipient validation
  2. Uses case-insensitive comparison with strings.EqualFold for address matching
  3. Filters out transactions with empty senders or TSS address senders before expensive operations

This optimization prevents outbound transactions from being processed as inbound and avoids unnecessary fee calculations for filtered transactions.

zetaclient/chains/bitcoin/observer/witness_test.go (3)

66-68: Good test setup improvement with TSS pkScript variable.

The addition of tssPkScript variable with proper hex decoding provides reusable test infrastructure for TSS address-related test scenarios.


276-295: Excellent test coverage for P2WPKH output validation.

This test case properly validates the function's ability to skip transactions with invalid P2WPKH outputs by modifying the script prefix from "0014" to "a914", ensuring robust input validation.


404-438: Comprehensive test for TSS address filtering logic.

This test case effectively validates the core PR objective by ensuring transactions where the sender is the TSS address are properly filtered out. The test correctly mocks the previous transaction output with TSS pkScript and verifies the function returns nil.

Copy link
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

📜 Review details

Configuration used: .coderabbit.yaml
Review profile: CHILL
Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 1cb0ef8 and 74a5931.

📒 Files selected for processing (9)
  • changelog.md (1 hunks)
  • cmd/zetatool/chains/bitcoin.go (1 hunks)
  • zetaclient/chains/bitcoin/client/client_test.go (1 hunks)
  • zetaclient/chains/bitcoin/observer/inbound.go (1 hunks)
  • zetaclient/chains/bitcoin/observer/inbound_test.go (0 hunks)
  • zetaclient/chains/bitcoin/observer/inbound_tracker.go (1 hunks)
  • zetaclient/chains/bitcoin/observer/witness.go (3 hunks)
  • zetaclient/chains/bitcoin/observer/witness_test.go (6 hunks)
  • zetaclient/common/env.go (1 hunks)
💤 Files with no reviewable changes (1)
  • zetaclient/chains/bitcoin/observer/inbound_test.go
🧰 Additional context used
📓 Path-based instructions (1)
`**/*.go`: Review the Go code, point out issues relative to principles of clean code, expressiveness, and performance.

**/*.go: Review the Go code, point out issues relative to principles of clean code, expressiveness, and performance.

  • zetaclient/common/env.go
  • cmd/zetatool/chains/bitcoin.go
  • zetaclient/chains/bitcoin/observer/inbound_tracker.go
  • zetaclient/chains/bitcoin/client/client_test.go
  • zetaclient/chains/bitcoin/observer/inbound.go
  • zetaclient/chains/bitcoin/observer/witness.go
  • zetaclient/chains/bitcoin/observer/witness_test.go
🧬 Code Graph Analysis (4)
cmd/zetatool/chains/bitcoin.go (1)
zetaclient/chains/bitcoin/observer/witness.go (1)
  • GetBtcEventWithWitness (35-118)
zetaclient/chains/bitcoin/observer/inbound_tracker.go (1)
zetaclient/chains/bitcoin/observer/witness.go (1)
  • GetBtcEventWithWitness (35-118)
zetaclient/chains/bitcoin/client/client_test.go (1)
zetaclient/common/env.go (1)
  • EnvBtcRPCTestnet4 (19-19)
zetaclient/chains/bitcoin/observer/witness.go (1)
zetaclient/chains/bitcoin/observer/inbound.go (1)
  • GetSenderAddressByVin (229-256)
🪛 GitHub Check: codecov/patch
zetaclient/chains/bitcoin/observer/inbound_tracker.go

[warning] 72-72: zetaclient/chains/bitcoin/observer/inbound_tracker.go#L72
Added line #L72 was not covered by tests

zetaclient/chains/bitcoin/observer/inbound.go

[warning] 162-171: zetaclient/chains/bitcoin/observer/inbound.go#L162-L171
Added lines #L162 - L171 were not covered by tests

🔇 Additional comments (14)
zetaclient/common/env.go (1)

15-19: LGTM: Environment variable constants properly updated for Bitcoin network support.

The refactoring from a single testnet to specific signet and testnet4 constants provides better clarity and supports multiple Bitcoin test networks. The naming convention follows established patterns and maintains consistency.

changelog.md (1)

9-11: Proper changelog documentation for the Bitcoin transaction filtering fix.

The changelog entry accurately captures the core purpose of this PR and follows the established format conventions.

zetaclient/chains/bitcoin/client/client_test.go (1)

46-46: Consistent environment variable reference update.

The update to use EnvBtcRPCTestnet4 aligns properly with the environment variable constant changes in zetaclient/common/env.go.

cmd/zetatool/chains/bitcoin.go (1)

59-68: Improved Bitcoin event processing with enhanced transaction filtering.

The replacement of GetBtcEvent with GetBtcEventWithWitness aligns with the PR objective. The updated function includes logic to skip outbound transactions by comparing sender addresses to the TSS address, preventing incorrect processing of BTC outbound as inbound transactions.

zetaclient/chains/bitcoin/observer/inbound_tracker.go (1)

72-81:

Details

✅ Verification successful

Function call updated consistently with enhanced filtering logic.

The replacement with GetBtcEventWithWitness provides the same transaction filtering improvements as implemented elsewhere in the codebase.

Address test coverage gap for the updated function call.

The static analysis correctly identifies that line 72 lacks test coverage. Consider adding test cases that exercise this code path to ensure the function call change is properly validated.


🏁 Script executed:

#!/bin/bash
# Search for existing test coverage of CheckReceiptForBtcTxHash function
rg -A 10 -B 5 "CheckReceiptForBtcTxHash|GetBtcEventWithWitness" --type go --glob "*test*"

Length of output: 15459


Approve inbound_tracker.go changes; test coverage already exists

The call to GetBtcEventWithWitness in inbound_tracker.go is fully exercised by the comprehensive tests in zetaclient/chains/bitcoin/observer/witness_test.go, covering both success and error scenarios. No additional unit tests are required for this call site.

🧰 Tools
🪛 GitHub Check: codecov/patch

[warning] 72-72: zetaclient/chains/bitcoin/observer/inbound_tracker.go#L72
Added line #L72 was not covered by tests

zetaclient/chains/bitcoin/observer/inbound.go (1)

162-171:

Details

✅ Verification successful

LGTM: Direct call to witness-aware function eliminates unnecessary indirection.

The replacement of GetBtcEvent with GetBtcEventWithWitness is correct and removes redundant wrapper logic. However, the static analysis indicates these lines lack test coverage.


🏁 Script executed:

#!/bin/bash
# Verify test coverage for FilterAndParseIncomingTx function
rg -A 10 -B 5 "FilterAndParseIncomingTx" --type go

Length of output: 7538


🏁 Script executed:

#!/bin/bash
# Display lines around the change in inbound.go to inspect context for GetBtcEventWithWitness
sed -n '130,200p' zetaclient/chains/bitcoin/observer/inbound.go

Length of output: 2124


LGTM: Direct call to GetBtcEventWithWitness is correct and test coverage exists.

The replacement of GetBtcEvent with GetBtcEventWithWitness in
zetaclient/chains/bitcoin/observer/inbound.go (lines 162–171) is valid and removes unnecessary indirection. Coverage for FilterAndParseIncomingTx (which invokes this code) is already provided by:

  • Unit tests in zetaclient/chains/bitcoin/client/client_test.go
  • E2E tests in e2e/runner/bitcoin.go

No further changes or additional tests are required.

🧰 Tools
🪛 GitHub Check: codecov/patch

[warning] 162-171: zetaclient/chains/bitcoin/observer/inbound.go#L162-L171
Added lines #L162 - L171 were not covered by tests

zetaclient/chains/bitcoin/observer/witness.go (3)

7-7: Appropriate import addition for case-insensitive address comparison.

The strings package import supports the new case-insensitive TSS address comparison logic.


26-34: Excellent documentation enhancement clarifying memo type support.

The expanded comments clearly explain the two memo types (OP_RETURN and tapscript) and their prioritization, improving code maintainability.


64-75: Critical fix: Early sender validation prevents outbound transactions from being processed as inbound.

This change correctly addresses the PR objective by:

  1. Moving sender address retrieval earlier in the processing flow
  2. Adding explicit checks to skip transactions where sender is empty or equals TSS address
  3. Using case-insensitive comparison for address matching

The logic effectively prevents Bitcoin outbound transactions from being incorrectly processed as inbound transactions.

zetaclient/chains/bitcoin/observer/witness_test.go (5)

6-6: Appropriate import for test string operations.


66-69: Good test setup: Pre-computed TSS pkScript enables mock transaction creation.

The hex-decoded TSS pkScript setup supports the new test scenarios for outbound transaction filtering.


276-295: Comprehensive test coverage for invalid P2WPKH output validation.

This test correctly verifies that transactions with non-P2WPKH outputs (modified from 0014 to a914 for P2SH) are properly skipped.


346-346: Improved test function naming for clarity.

The renamed function better describes its purpose regarding sender address retrieval errors.


404-438: Excellent test coverage for TSS sender address filtering.

This test validates the critical fix by mocking a transaction where the sender address matches the TSS address, ensuring such outbound transactions are correctly skipped.

Copy link
Contributor

@lumtis lumtis left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Can we maybe keep a debug log?

@ws4charlie
Copy link
Contributor Author

Can we maybe keep a debug log?

Good idea though, commit ab3d986

@ws4charlie ws4charlie enabled auto-merge June 4, 2025 15:40
@ws4charlie ws4charlie added this pull request to the merge queue Jun 4, 2025
Merged via the queue into develop with commit 99a50da Jun 4, 2025
46 of 47 checks passed
@ws4charlie ws4charlie deleted the backport-fix-dont-process-btc-outbound-as-inbound branch June 4, 2025 16:13
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

breaking:cli chain:bitcoin Bitcoin chain related

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants