Stacks Blockchain Signers
secret_key
The stacks::secret_key signer can be used to synchronously sign a transaction.
Inputs
- Name
 secret_key- Description
 The secret key used to sign messages and transactions.
- Name
 mnemonic- Description
 The mnemonic phrase used to generate the secret key. This input will not be used if the
secret_keyinput is provided.
- Name
 derivation_path- Description
 The derivation path used to generate the secret key. This input will not be used if the
secret_keyinput is provided.
- Name
 is_encrypted- Description
 Coming soon
- Name
 password- Description
 Coming soon
Outputs
When the secret_key action is successfully executed, the following outputs are attached to the action
- Name
 public_key- Description
 The public key of the account generated from the secret key.
Example using secret_key
// we can create a secret key signer by providing a mnemonic and computing the secret key
signer "bob" "stacks::secret_key" {
    mnemonic = "board list obtain sugar hour worth raven scout denial thunder horse logic fury scorpion fold genuine phrase wealth news aim below celery when cabin"
    derivation_path = "m/44'/5757'/0'/0/0"
}
// or we can create one by providing the secret key directly
signer "bob_again" "stacks::secret_key" {
    secret_key = "03b3e0a76b292b2c83fc0ac14ae6160d0438ebe94e14bbb5b7755153628886e08e"
}
web_wallet
The stacks::web_wallet signer will route the transaction signing process through Stacks.js connect.
This allows a Runbook operator to sign the transaction with the browser signer of their choice.
Inputs
- Name
 expected_address- Description
 The Stacks address that is expected to connect to the Runbook execution. Omitting this field will allow any address to be used for this signer.
Outputs
When the web_wallet action is successfully executed, the following outputs are attached to the action
- Name
 address- Description
 The address of the account generated from the public key.
Example using web_wallet
signer "alice" "stacks::web_wallet" {
    expected_address = "ST12886CEM87N4TP9CGV91VWJ8FXVX57R6AG1AXS4"
}
multisig
The multisig signer creates an ordered, n of n multisig.
Each of the specified signers can be any other supported signer type, and will be prompted to sign in the appropriate order.
Inputs
- Name
 signers- Description
 A list of signers that make up the multisig.
- Name
 expected_address- Description
 The multisig address that is expected to be created from combining the public keys of all parties. Omitting this field will allow any address to be used for this signer.
- Name
 required_signatures- Description
 The number of signatures required. This value must be between 1 and the number of signers. If this value is equal to the number of signers, an
nofnmultisig address is generated. If this value is less than the number of signers, anmofnmultisig address is generated. If omitted, the number of signers will be used.
Outputs
When the multisig action is successfully executed, the following outputs are attached to the action
- Name
 signers- Description
 The list of signers that make up the multisig.
- Name
 address- Description
 The address of the account generated from the public key.
Example using multisig
signer "alice" "stacks::web_wallet" {
    expected_address = "ST2JHG361ZXG51QTKY2NQCVBPPRRE2KZB1HR05NNC"
}
signer "bob" "stacks::web_wallet" {
    expected_address = "ST2NEB84ASENDXKYGJPQW86YXQCEFEX2ZQPG87ND"
}
signer "alice_and_bob" "stacks::multisig" {
    signers = [signer.alice, signer.bob]
}