For the complete documentation index, see llms.txt. This page is also available as Markdown.

Signer Configuration

The Stacks node will not boot if it sees config values it does not recognise. If your node is not booting, check its logs for messages naming an unknown or unused configuration field.

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

Name
Description

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

Name
Default
Units
Description

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.

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

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?