GOAT Network

GOAT BitVM2 Testnet User Guide

GOAT BitVM2 Testnet enables trust-minimized BTC interoperability between Bitcoin and GOAT Network. Access the current testnet UI at bitvm2-testnet4.goat.network.

BitVM2 is a permissionless bridge design that combines presigned transactions, one-time signatures, and SNARK-based dispute resolution. GOAT BitVM2 extends the base model with faster reimbursement and stronger operator-accountability mechanisms.

This page documents the active GOAT BitVM2 testnet flows. References to GOAT testnet iterations such as "Testnet V3" refer to the testnet release cycle, not to BitVM3 as the active bridge version.

What This Guide Covers

AreaAudience
Bridge in / bridge outEnd users moving BTC between Bitcoin and GOAT Network
Peg-outOperators participating in the protocol
Graph statesUsers or operators monitoring dispute paths
Node setupOperators, challengers, and watchtowers

BitVM2 Bridge Guide

BitVM2 Bridge is the user-facing entry point for moving BTC through the BitVM2 flow.

Bridge In

BitVM2 bridge-in screen

Connect both wallets

Connect your BTC wallet and your EVM wallet first.

Choose the amount and Bitcoin fee rate

The Bitcoin fee rate affects how quickly the source transaction confirms.

Wait for committee verification

Move to the next step, then refresh the status until the transaction becomes ready to submit.

Submit and sign

Click Submit, confirm the transaction in your wallet, and pay the required base fee.

Track confirmation

The transfer typically arrives in about 60 minutes, but Bitcoin congestion can extend the timeline.

Bridge Out

BitVM2 bridge-out screen

Connect the EVM and BTC wallets

Make sure the receiving BTC wallet is the one you intend to use for withdrawal.

Enter the amount

Confirm that it satisfies the minimum amount shown in the UI.

Review the transfer details

Double-check the amount, exchange rate, and bridge fee before continuing.

Submit within the valid window

Confirm the transaction in the wallet and pay the GOAT Network gas fee.

Monitor the arrival

Use the history page to follow progress until the BTC lands in the receiving wallet.

History

Every bridge-in and bridge-out transfer appears in the history view for status tracking.

BitVM2 bridge history screen

BitVM2 Peg-out Guide

Peg-out is an operator-oriented flow that redeems PegBTC back to native BTC.

BitVM2 peg-out screen

Connect the EVM wallet

The UI automatically shows the peg-out instances available to the connected operator.

Approve PegBTC

Click Approve and approve the maximum amount you intend to use for the operation.

Submit the peg-out

Return to the UI, click Submit, sign the transaction, and pay the gas fee.

Track the graph

Use BitVM2 Graph and peg-out history to follow reimbursement progress and dispute state.

Verify settlement

When the peg-out completes successfully, the BTC appears in the destination wallet.

BitVM2 Graph States

The BitVM2 graph explains how deposits, challenges, and reimbursements evolve on-chain.

BitVM2 graph overview

CaseStatusMeaning
Initial statePending peg-out / active depositsFunds are locked and no operator has started reimbursement yet
Standard pathWithdrawal completed (Take-1)No valid challenge was raised during the first time-lock
Challenge succeedsWithdrawal intercepted (Disprove)Operator misconduct was proven and collateral was slashed
Challenge failsWithdrawal finalized (Take-2)Operator defended the withdrawal and completed reimbursement

Join GOAT BitVM2 Testnet

Role Requirements

RoleRequirements
WatchtowerCommittee-approved role, enough L1 balance for roughly 4,000 sats per challenge
ChallengerPermissionless role, enough balance for bond and transaction fees
OperatorPermissionless role, must prepay graph fees on L1 and stake PBTC on L2

Operator funding and staking requirements

LayerRequirement
Bitcoin L1Prepay roughly 10,000 sats per graph and keep at least 50,000 sats available at startup
GOAT Network L2Stake PBTC; the effective minimum locked stake is 0.06 PBTC

Staking flow

Operator staking flow
stakeManagement.registerPubkey(xonlyPubkey);
PegBTC.approve(stakeManagementAddress, amount);
stakeManagement.stake(amount);
stakeManagement.lockStake(amount);

A compressed public key is 33 bytes and usually starts with 02 or 03. The x-only public key is the 32-byte suffix after removing that prefix.

Run a BitVM2 Node

Install from source
cargo install --git https://github.com/GOATNetwork/bitvm2-node bitvm2-noded

Download a release from bitvm2-noded releases and verify the version after installation.

Check the installed version
bitvm2-noded --version

Minimal setup checklist

  1. Prepare a .env file from the testnet template.
  2. Generate the peer key:
Generate peer credentials
bitvm2-noded key peer
  1. Prepare BITVM_SECRET, which is the private key used for challenge-related signing.
  2. Generate the funding address:
Generate the funding address
bitvm2-noded key funding-address
  1. Fund the address with Bitcoin Testnet4 BTC and run the node with the project run.sh.

Operate with Agent Skills

If you prefer an agent-driven workflow, the BitVM2 node repository also publishes operation documents for common tasks.

Agent skillPurposeCommand document
/run-operator-nodeStart an operator noderun-operator-node.md
/run-challenger-nodeStart a challenger noderun-challenger-node.md
/pegin-requestRequest, prepare, or cancel a peg-inpegin-request.md
/pegoutInitiate peg-out as an operatorpegout.md
/bridge-outInitiate bridge-out flowbridge-out.md
/challengeBroadcast a challenge transactionchallenge.md

On this page