Skip to content

Redemption transaction cannot be proven in Bridge on Testnet #874

@tomaszslabon

Description

@tomaszslabon

One of wallets Bitcoin transactions (tx) cannot be proven in the Bridge in Ethereum Sepolia testnet.

Proving transactions in the Bridge requires calling functions like submitRedemptionProof. One of the checks performed during the call evaluates difficulty in a series of headers from the proof.

The transaction entered the Bitcoin blockchain in a block (height 4300125) with a very high difficulty (67108864) which was followed by a long series of low difficulty blocks:

difficulty for block at hight  4300125 :  67108864 <- block containing the transaction; beginning of the headers chain we need for a proof
difficulty for block at hight  4300126 :  1  <- other blocks with low difficulties
difficulty for block at hight  4300127 :  1 
difficulty for block at hight  4300128 :  3 
difficulty for block at hight  4300129 :  3 
difficulty for block at hight  4300130 :  3
etc

The txProofDifficultyFactor in the Bridge on Sepolia Testnet is 6. So to prove the transaction above we need 6 * 67108864 of total difficulty in the headers chain. The total difficulty in the chain will be the sum of all difficulties ( 67108864 + 1 + 1 +3 + 3 +3, etc). Since the difficulties following the first block are very low, even a very long headers chain is not enough.

The transaction cannot be proven automatically (by the maintainer bot) or manually (by running a custom CLI command).
When we try to prove the transaction manually by calling:

KEEP_ETHEREUM_PASSWORD=<hidden-password> ./keep-client maintainer-cli submit-redemption-proof --transaction-hash 66d1d97644866f43abbd44808acf582450b630d4a8cd5dced9d5b3b87006f1dd --confirmations 100 --config /Users/tslabon/projekt/keep-core/configs/maintainer.toml --testnet

we get an error:

2025-06-27T18:31:10.672+0200    FATAL   keep-main       keep-core/main.go:26    failed to submit redemption proof [failed to submit redemption proof with reimbursement: [execution reverted: Insufficient accumulated difficulty in header chain]]

One idea for a fix is to upgrade the Bridge contract with txProofDifficultyFactor set to 1. This way we can prove any transactions with just a single block header.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions