Skip to main content

Configuration

Hashi maintains a set of onchain configuration parameters stored in the Config object. These parameters control protocol behavior for deposits, withdrawals, fee estimation, and system operations.

You can update all configurable parameters through the UpdateConfig governance proposal, which requires 2/3 of committee weight (see Governance Actions). Each key is validated against its expected type on update.

Parameters

bitcoin_deposit_minimum

Typeu64
Default30000
Unitsatoshis
Floor546 (dust relay minimum)

The minimum deposit amount in satoshis. Deposits below this value are rejected onchain. The effective value is always at least 546 sats to prevent creating unspendable UTXOs.

bitcoin_deposit_time_delay_ms

Typeu64
Default600000 (10 minutes)
Unitmilliseconds

The minimum time that must elapse between a deposit being approved by the committee (approve_deposit) and being confirmed (confirm_deposit). Provides a window in which a fraudulent or erroneous approval can be detected and the service paused before any hBTC is minted. See the deposit flow for how this delay fits into the overall process.

bitcoin_withdrawal_minimum

Typeu64
Default30000
Unitsatoshis
Floor547 (dust relay minimum + 1)

The minimum total withdrawal amount in satoshis. The worst_case_network_fee is derived as bitcoin_withdrawal_minimum - 546, which caps the per-user miner fee deduction. The floor ensures the worst-case network fee is always at least 1 sat.

bitcoin_confirmation_threshold

Typeu64
Default6
Unitblocks

The number of Bitcoin block confirmations required before a deposit is considered final. Guards against chain reorganizations.

paused

Typebool
Defaultfalse

When true, the protocol pauses processing of deposits and withdrawals. Requests already in the queue remain queued and resume processing when the system is unpaused. Reconfiguration and governance actions are not affected.

withdrawal_cancellation_cooldown_ms

Typeu64
Default3600000 (1 hour)
Unitmilliseconds

The minimum time a withdrawal request must remain in the queue before the user can cancel it. Prevents users from using rapid submit-cancel cycles to interfere with processing.

governance_emergency_pause_threshold_bps

Typeu64
Default500 (5%)
Unitbasis points of committee voting weight

The vote threshold for an emergency pause proposal. Deliberately low so a small fraction of the committee can quickly halt deposit and withdrawal processing when something looks wrong.

governance_emergency_unpause_threshold_bps

Typeu64
Default6667 (two thirds)
Unitbasis points of committee voting weight

The vote threshold for the unpause variant of the same proposal. Resuming operation requires a supermajority.

MPC parameters

The MPC parameters are snapshotted (pinned) onto each committee at reconfiguration. An UpdateConfig that changes them mid-epoch never affects the active committee; new values take effect when the next committee forms.

mpc_threshold_in_basis_points

Typeu64
Default3334
Valid range1 to 10000
Unitbasis points of committee voting weight

The MPC signing threshold: the minimum fraction of total committee voting weight whose shares are required to produce a threshold signature.

mpc_max_faulty_in_basis_points

Typeu64
Default3333
Valid range0 to 10000
Unitbasis points of committee voting weight

The assumed upper bound on faulty (offline or adversarial) committee weight. MPC protocol parameters are derived under the assumption that at most this fraction of weight misbehaves.

mpc_weight_reduction_allowed_delta

Typeu64
Default800
Valid range0 to 10000
Unitbasis points

Committee voting weights are proportionally reduced (compressed) before the MPC protocol runs, because each unit of weight corresponds to a share and protocol cost scales with total shares. Reduction necessarily distorts relative voting power; this parameter bounds the distortion, allowing the effective fault-tolerance assumption to shift by at most this many basis points relative to the unreduced committee. 0 disables weight reduction, so parties keep their full committee weights.

mpc_nonce_generation_protocol

Typeu64
Default0
Valid values0 (vanilla), 1 (AVID)

Selects the protocol the committee uses to generate signing nonces (presignatures): 0 is the original protocol, 1 enables AVID-based nonce generation.

Read-only or genesis-only parameters

bitcoin_chain_id

Typeaddress

The 32-byte Bitcoin chain identifier as defined by BIP-122 (the genesis block hash). Set at genesis and not updatable through the UpdateConfig proposal.

Derived values

Several values are computed from the configurable parameters above rather than stored directly.

deposit_minimum

deposit_minimum = bitcoin_deposit_minimum

The minimum deposit amount. With defaults: 30,000 sats.

worst_case_network_fee

worst_case_network_fee = bitcoin_withdrawal_minimum - 546

The maximum miner fee the contract accepts for a withdrawal transaction, derived from bitcoin_withdrawal_minimum minus the dust threshold. With defaults: 30,000 - 546 = 29,454 sats.