Signer Setup

My signer says it is uninitialized or not registered

If you get a message like the following saying your signer is uninitialized, that means that it has not registered for the current or upcoming reward cycle (or the burnchain block height is not yet at the second block in the prepare phase) for the signer to know if it is registered.

Signer spawned successfully. Waiting for messages to process... INFO [1711088054.872542] [stacks-signer/src/runloop.rs:278] [signer_runloop] Running one pass for signer ID# 0. Current state: Uninitialized

This warning may also look like this:

WARN [1712003997.160121] [stacks-signer/src/runloop.rs:247] [signer_runloop] Signer is not registered for reward cycle 556. Waiting for confirmed registration...

At this point if you want your signer to do something you need someone to either delegate to you or you need to stack on your own for an upcoming reward cycle.

For more on this, be sure to check out the How to Stack doc.

I am trying to run my signer using Docker and it is not working correctly

Currently, for PRs, we only build for glibc x64 images. If you want to test on another architecture, you'll need to build the Docker image locally or build the binary from source as described in the How to Run a Signer doc.

I'm getting an error about a missing variable

There aren't yet properly tagged releases for Nakamoto, so you'll need to make sure that you are building from the next branch of building from source or using the next tag if using the Docker image.

Stacks Nodes

Do I need to run a Stacks node alongside a signer?

Yes, you'll need to run both a Stacks node and a signer. Set up the signer first and then set up your Stacks node following the instructions in the How to Run a SIgner doc. Specifically, you'll want to run a testnet follower node.

If the instructions in the above linked guide for setting up a Stacks node are not suitable, you can follow one of the guides found in the Nodes and Miners section.

When trying to run the node I am getting a connection error

First, be sure that you have the proper entry point specified in your node-config.toml file as specified in the How to Run a Signer doc.

If you are getting an error like the following:

And you are inside a Docker container with default bridging mode, then localhost is not available, and you'll need to point to the Docker host.

I'm getting an error a peer not connecting

If you get an error about a peer not connecting that looks like the following:

INFO [1711988555.021567] [stackslib/src/net/neighbors/walk.rs:1015] [p2p-(,] local.80000000://(bind= Failed to connect to facade0b+80000000:// PeerNotConnected

That means that your node is trying to connect to some external node on the network, but is unable to. This is common and can happen for a variety of reasons.

It is not a cause for concern and doesn't impact whether or not your signer is running correctly.


Why did my Stacking transaction fail?

There are several reasons why your Stacking transaction might fail.

The first step is to check your failed transaction and see if an error code was provided. You can check what specific error you are getting by looking directly at the pox-4 contract code, but here are some common ones.

  • 24 : the start-burn-height param was invalid

  • 35: the signer key signature is invalid. This usually means the fields from the stacks-signer generate-stacking-signature command and stack-aggregation-commit contract call don't match.

  • 4: The stacking contract looks up partially stacked stx with the lookup key (pox-addr, stx-address, reward-cycle. This error means that either when you generated your signature or called the agg-commit function, you passed in the wrong parameter for one of these. More information in the stacking guide.

Most of the time, failed transactions are caused by incorrect data being passed into your Stacking transactions.

Usually this is caused by passing an invalid signature or some other invalid parameter.

Be sure to follow the instructions in the How to Stack guide and ensure that all of the parameters you are passing are correct.

What is stacking?

Stacking is the act of locking your STX tokens in order to help secure the network. In Nakamoto, stackers take on the additional responsibility of validating new Stacks blocks as miners propose them.

If you aren't familiar with stacking as a concept you can take a look at the Stacking doc.

As a signer, what exactly do I need to do in regards to stacking?

Because stackers also function as signers in Nakamoto, signers must either solo stack or delegate their STX tokens to a delegate.

These options and the processes for doing so are outlined in the How to Stack doc, but you must do one of the two in order to operate as a signer.

How can I delegate my STX as a signer?

In order to delegate your STX tokens, you'll need to call the delegate-stack-stx function in the pox-4 contract. The process for doing this can be found in the How to Stack doc.

Signer public keys need to be provided when calling delegate and solo stacking functions, does this correspond to the same public key used when generating the signer signature?

Yes, the signer pubkey field always corresponds with the signer signature.

What is the .stackers boot contract?

This tracks the signers that are registered in a given reward-cycle.

Are there any changes to the overall stacking flow minus the inclusion of the signer pubkey?

No, the latest changes revolved around the signature, then about including a max-amount & auth-id with the signature.

Is there a list of 3rd party signers available?

We have publicly announced many signers joining the network including: Blockdaemon, Figment, Kiln, Chorus One, Luganodes and more.

Signers change every reward cycle, so do we need a way to get the new signers at each reward cycle?

That's correct, the PoX contract does a DKG event every cycle (every ~2 weeks). This is detailed in the Nakamoto SIP where signers must register their keys.

Last updated