Skip to main content
The Wallet Gateway does not have to hold private keys. Signing is delegated to a signing provider chosen per wallet, so you decide where each wallet’s keys live and who performs the cryptographic signing. Different wallets in the same Wallet Gateway can use different providers, and you select the provider per party when you create a wallet. When a wallet submits a transaction, the Wallet Gateway hands the prepared transaction to that wallet’s signing provider, which signs it with the party’s key and returns it for the Wallet Gateway to submit.

Configuration

List each provider you want to use under signingProviders. Presence of the key opts the provider in. Non-secret settings come from the config object. Secret values stay in the environment, *Env fields name those variables (each defaults to the name in the environment-variable tables below).
Omit a provider to leave it unregistered. An empty "signingProviders": {} registers none.
If signingProviders is omitted entirely, the Wallet Gateway uses a legacy discovery mode (every provider is available when its required environment variables are set). That mode is deprecated and will be removed.

Available providers

The internal provider stores private keys in the Wallet Gateway’s signing store database. Do not use it for wallets holding valuable assets. Prefer a participant node or an external custody provider in production.

Internal

Stores private keys directly in the Wallet Gateway’s signing store database and signs transactions itself. Suitable for development and testing only. See Configure the Wallet Gateway.
Private keys are stored in the signing store database. If it is compromised, all keys are at risk; if it is lost, they are unrecoverable. Protect the database file with strict filesystem permissions and never commit it to version control.

Participant

Uses a Canton participant node to sign. The participant holds the key material and performs all cryptographic operations, so keys never live in the Wallet Gateway. When a transaction is submitted, the Wallet Gateway forwards the command to the participant node, which signs it using the party’s key from the participant’s keystore.

Fireblocks

Enterprise-grade, HSM-backed key management and signing from Fireblocks. Keys stay in Fireblocks’ secure infrastructure. Complete steps 1-3 from the Fireblocks signing documentation. The API key is the value in the API User (ID) column in the Fireblocks API users table, then set the following config fields and environment variables:

Blockdaemon

Managed signing from Blockdaemon’s infrastructure. Complete the setup from the Blockdaemon signing documentation, then set the following config fields and environment variables:

DFNS

Programmable, MPC-based key management and signing from DFNS. Keys are managed in DFNS’ secure infrastructure. Complete the setup from the DFNS signing documentation. Set up a service account with appropriate permissions and download its credentials, then set the following config fields and environment variables:

Securosys

HSM-backed key management and signing through Securosys TSB (Transaction Security Broker). See the Securosys signing documentation for authentication modes (API keys, bearer token, and/or mTLS).

BitGo

MPC custodial signing through BitGo. See the BitGo signing documentation.