Signer Configuration
Signer configuration file options
The signer configuration file is a TOML file with no sections. Every option below is set at the top level. Fields marked required have no default, and omitting any optional field applies the default shown.
This table is generated from RawConfigFile in stacks-signer/src/config.rs at stacks-core 4.0.1. Options not listed here are not recognised by the 4.0.1 signer.
Required
node_host
host:port where your Stacks node can be reached. Must point to the node's rpc_bind address.
endpoint
host:port the signer listens on for events from your Stacks node. Must match the endpoint in the node's [[events_observer]] section.
stacks_private_key
Hex representation of the signer's Stacks private key. 64 or 66 characters, the latter with a trailing 01 compression suffix. This key determines the signer's on-chain identity and address.
network
One of "mainnet", "testnet", or "mocknet". Determines address and transaction version.
auth_password
Authorization token for HTTP requests from the signer to your node. Must match the auth_token in the node's [connection_options] section, or the signer cannot talk to the node.
db_path
Path to the signer's database file. Use an absolute path in production. :memory: is for testing only.
Optional
event_timeout_ms
5_000
ms
Time to wait for a response from the StackerDB instance.
metrics_endpoint
disabled
host:port for Prometheus metrics collection.
first_proposal_burn_block_timing_secs
60
s
Reorg protection window. Measures the time between a tenure's first block being signed and the next burn block arriving. Below this, a new miner may reorg the tenure; above it, the tenure is established and the reorg is denied. Setting it too low allows reorgs of established tenures; too high blocks legitimate miner handoffs.
block_proposal_timeout_ms
120_000
ms
How long to wait for the current sortition winner to propose a block before the signer treats that miner as inactive.
chain_id
0x00000001 mainnet, 0x80000000 testnet
Custom chain ID. Only set this for custom or private networks.
tenure_last_block_proposal_timeout_secs
30
s
Time to wait for the last block of a tenure to be globally accepted or rejected before treating a new miner's block at the same height as potentially valid.
block_proposal_validation_timeout_ms
120_000
ms
How long to wait for a block proposal validation response from the node before marking the block invalid and rejecting it.
tenure_idle_timeout_secs
30
s
How much time since the last block in a tenure must pass before the signer allows a tenure extend. See the warning below before changing it.
read_count_idle_timeout_secs
15
s
Idle time before allowing a read-count tenure extend, triggered when the read count budget is nearly exhausted.
tenure_idle_timeout_buffer_secs
2
s
Buffer added to the tenure extend time sent to miners, to absorb clock skew between signer and miner. Increase if the two clocks are poorly synchronised.
block_proposal_max_age_secs
600
s
Maximum age of a block proposal the signer will process. Older proposals are ignored.
reorg_attempts_activity_timeout_ms
200_000
ms
Window after a block's global acceptance during which a miner's attempt to reorg it still counts as valid miner activity.
proposal_wait_for_parent_time_secs
15
s
Time to wait before submitting a block proposal if the signer cannot confirm the node has processed the parent block.
dry_run
false
Run without submitting StackerDB messages or participating in signing. The signer logs what it would have done.
validate_with_replay_tx
false
Validate blocks by replaying transactions. Experimental. Adds validation at the cost of higher resource use.
reset_replay_set_after_fork_blocks
2
blocks
Blocks after a fork before the replay set is reset, as a failsafe.
capitulate_miner_view_timeout_secs
20
s
Time between updating the local state machine view and capitulating to other signers' tenure view. Controls how quickly a signer adopts the consensus view when its own differs.
stackerdb_timeout_secs
120
s
HTTP timeout for read and write operations against StackerDB.
tenure_idle_timeout_secs must be coordinated with the miner. The signer computes extend_timestamp = last_block_time + tenure_idle_timeout_secs + tenure_idle_timeout_buffer_secs and the miner cannot extend before it. The miner's tenure_timeout (default 180s) must be greater than that sum, and its tenure_extend_wait_timeout_ms (default 120_000ms) should be greater than or equal to it. Raising tenure_idle_timeout_secs past roughly 118 breaks the second relationship at the miner's default and tenure extends stop being accepted. The default of 30 is the safe value. Leave it unset unless you have a specific reason.
Example configs
Sample configuration files for running a Stacks node and signer. Change the values marked in the comments, following the How to Run a Signer doc.
Testnet signer
Stacks node testnet config
Note that the block_proposal_token field has changed to auth_token in the Stacks node configuration file.
This is the configuration for a Stacks follower node attached to a signer. Change the commented lines to match your setup. If you have not set up a signer before, follow the How to Run a Signer guide.
An overview of all Stacks node configuration options can be found in the Stacks Node Configuration doc.
The [connection_options] and [[events_observer]] sections and the stacker = true line are the additions needed to run a signer. Comments in the block mark the other lines you need to change.
Mainnet signer
This matches the testnet config except for the network field.
Mainnet Stacks node
For mainnet, change the bootstrap node field and the burnchain fields. The ustx_balance fields are not needed.
Last updated
Was this helpful?