Skip to content

multi: refuse to dispatch need schnorr/taproot/musig2 features if the target backend isn't upgraded  #6773

@Roasbeef

Description

@Roasbeef

With 0.15 we released all the new taproot hotness. However, the full node backends of all nodes might not actually be updated. In this case, if they're running an old enough version, they may not be able to broadcast transactions with taproot outputs. This can cause protocols to enter a weird intermediate state since everything worked, but we weren't able to broadcast our transactions.

To remedy this, we should add a basic check to see if the backend even understands the soft fork. For btcd, we can use getblockchaininfo, and for bitcoind we can use either getdeploymentinfo or getblockchaininfo.

A nice way to implement this would be as an in-memory RPC interceptor. We'd only need the unary version likely. When a call comes across and we see our backend doesn't know of taproot, we'll return a nice error. This should also likely be cached to avoid hammering the RPC interface each time a call comes across.

Metadata

Metadata

Assignees

No one assigned

    Labels

    beginnerIssues suitable for new developersrpcRelated to the RPC interfacesafetyGeneral label for issues/PRs related to the safety of using the softwaretaproot

    Type

    No type

    Projects

    No projects

    Milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions