Layered Settlement and Bridges
BTX bridge protocol: BridgeBatchStatement v5, BridgeBatchCommitment v3, authenticated roots, and current recovery/exit commitment surfaces.
Start from the workflow that matches why you are here.
The docs are broad. These two paths jump straight into the operator and builder material behind the new microsites.
Operators, miners, and power sites
Go to the Mine microsite for the operator thesis, fleet playbook, and mining-focused doc bundles.
Open Path DevelopAPI teams, agent runtimes, and gateways
Go to the Develop microsite for service challenges, PQ identity framing, and builder launch kits.
Open PathOverview
BTX implements a layered settlement system that enables cross-domain value transfers between the base chain and external domains (L2s, sidechains, application-specific rollups). The bridge protocol exposes batch-oriented commitments and authenticated roots on the base chain. In current production policy, bridge shield ingress is not supported; bridge structures should be read as committed/authenticated surfaces, not as a blanket guarantee that every recovery or exit path is live finality.
BridgeBatchStatement (v5)
A BridgeBatchStatement is the top-level settlement request that encodes
a batch of cross-domain transfers. Each statement carries:
| Field | Type | Description |
|---|---|---|
version | uint8 | Statement version (current consensus structure: v5) |
direction | BridgeDirection | BRIDGE_IN (committed ingress) or BRIDGE_OUT (withdrawal) |
ids | BridgePlanIds | Plan and batch identifiers for cross-referencing |
entry_count | uint32 | Number of individual transfers in the batch |
total_amount | CAmount | Sum of all transfer amounts (consensus-verified) |
batch_root | uint256 | Merkle root of individual transfer entries |
domain_id | uint256 | Identifier of the external domain |
source_epoch | uint32 | Source-domain epoch for ordering guarantees |
data_root | uint256 | Root of associated data availability blob |
verifier_set | BridgeVerifierSetCommitment | Commitment to the verifier set authorized to attest |
proof_policy | BridgeProofPolicyCommitment | Descriptor root for the proof acceptance policy |
aggregate_commitment | BridgeBatchAggregateCommitment | Five authenticated roots (see below) |
The statement hash (ComputeBridgeBatchStatementHash) is the canonical
identifier used to bind settlement proofs, receipts, and committed ingress or
exit metadata to a specific batch.
BridgeBatchCommitment (v3)
The v3 bridge batch commitment contains five authenticated roots that bind the batch to specific state transitions and policies:
| Root | Purpose |
|---|---|
action_root | Merkle root of the ordered list of settlement actions (transfers, mints, burns). Validators verify that all claimed actions are included and correctly ordered. |
data_availability_root | Commitment to the full data availability blob for the batch. Ensures that all data needed to independently verify and reconstruct transfers is published and retrievable. |
recovery_or_exit_root | Merkle root of recovery paths and exit claims. This authenticates committed recovery/exit data for inclusion proofs; production activation depends on the corresponding exit rules and wallet support. |
policy_commitment | Descriptor root of the proof acceptance policy. Defines which proof types, verifier thresholds, and attestation schemes are accepted for this batch. |
extension_digest | Forward-compatible extension field for additional commitments. Set to null in current deployments; future versions can bind additional state without breaking existing verification logic. |
Extension flags (FLAG_HAS_RECOVERY_OR_EXIT_ROOT,
FLAG_HAS_POLICY_COMMITMENT, FLAG_CUSTOM_ACTION_ROOT,
FLAG_CUSTOM_DATA_AVAILABILITY_ROOT) indicate which optional roots
are populated, enabling compact serialization when fields are unused.
Verification Model
Bridge batches can carry two verification paths, both of which produce cryptographically bound receipts where that bridge surface is active:
Signed Receipt Path
An authorized verifier set attests to batch validity by producing signed receipts.
The BridgeVerificationBundle contains a signed_receipt_root
(Merkle root of all signed attestations) and a proof_receipt_root
(for proof-based attestations). Verification checks:
- Each receipt's statement hash matches the batch statement hash.
- Signatures are valid under the committed verifier set.
- The verifier threshold defined by the proof policy is met.
Proof Receipt Path
Alternatively, a cryptographic proof (ZK or otherwise) can attest to batch validity without requiring a trusted verifier set. The proof is verified against the proof policy descriptor, and the result is encoded as a proof receipt.
Inclusion Verification
Verification receipts and commitments are checked at inclusion time for the active bridge surface. Inclusion authenticates the statement and committed roots on-chain, but committed recovery_or_exit data should not be described as a fully active finality guarantee unless the corresponding exit path is enabled.
Settlement Binding
Bridge settlement integrates with the SMILE v2 proof system through settlement binding digests. Current production support is strict shielded-to-transparent exits and recovery, not bridge shield ingress:
- Ingress batches (BRIDGE_IN) remain consensus-visible commitment surfaces, but shielded pool credits and new appends are disabled at height 125000. They are not an active production shield ingress path.
- Egress batches (BRIDGE_OUT) consume shielded notes and produce transparent outputs or cross-domain transfer claims.
- The
settlement_binding_digestin each proof envelope binds the shielded proof to the specific bridge batch statement.
Egress and Recovery Surfaces
| Surface | Description | Current Status |
|---|---|---|
| Standard Egress | Batch-processed withdrawal through the normal bridge settlement path. Creates transparent outputs on the base chain. | Current production direction for shielded-to-transparent exits where the bridge-out path is used. |
| Direct Unshield | Proves ownership of shielded notes and produces transparent outputs without going through the batch mechanism. Uses the SMILE v2 unshield path. | Supported strict exit path for existing shielded notes. |
| Recovery / Exit Commitment | Committed surface using the recovery_or_exit_root. Users and
wallets can authenticate entries with Merkle proofs. | Committed/authenticated data surface; do not present as a blanket active finality guarantee. |
Recovery / Exit Commitment Surface
The recovery_or_exit_root commits to recovery and exit entries that
can be authenticated against the batch commitment. This preserves a verifiable
surface for recovery tooling without implying that every committed entry is an
immediately spendable production exit. Key properties:
- Recovery and exit claims can reference the
recovery_or_exit_rootfrom a valid batch commitment. - Each committed claim is authenticated by a Merkle inclusion proof and the required user authorization.
- Spendability depends on the active consensus and wallet rules for that exit surface.
- The root is a committed data surface, not a standalone guarantee that all exits bypass external-domain coordination.
Batch Leaf Structure
Individual transfers within a batch are encoded as BatchLeaf entries:
| Field | Type | Description |
|---|---|---|
version | uint8 | Wire version |
family_id | TransactionFamily | V2_INGRESS_BATCH or V2_EGRESS_BATCH |
l2_id | uint256 | Source-domain transaction identifier |
destination_commitment | uint256 | Commitment to the destination address/key |
amount_commitment | uint256 | Committed transfer amount |
fee_commitment | uint256 | Committed fee amount |
position | uint32 | Ordered position within the batch |
nonce | uint256 | Replay protection nonce |
settlement_domain | uint256 | Target settlement domain identifier |
The batch Merkle root is computed over the ordered set of leaf hashes, binding every individual transfer to the batch statement.
Transaction Families
Bridge operations map to specific SMILE v2 transaction families:
V2_INGRESS_BATCH— inbound commitment surface; production shielded credits and new appends are disabled at height 125000V2_EGRESS_BATCH— outbound batch settlement for shielded-to-transparent exit flowsBATCH_SMILE— direct shielded-pool deposit family retained as a consensus-visible compatibility surface, not active production shield ingress
Each family has its own proof envelope requirements and settlement binding rules, ensuring that cross-family replay is impossible.
Security Properties
- Authenticated inclusion: Active bridge surfaces verify their statements, commitments, and receipts at inclusion time.
- Replay protection: Per-entry nonces and per-batch epoch ordering prevent replay of settlement claims across batches or domains.
- Domain isolation: The
domain_idfield ensures that batches from different external domains cannot interfere with each other. - Binding integrity: The statement hash cryptographically binds all components (entries, proofs, receipts, and committed ingress/exit metadata) to a single batch.
- Recovery visibility: The recovery/exit root authenticates committed recovery data, while actual spendability depends on the active exit rules.