Wallet Operations
resource: wallet — key-derived addresses and BIP-137 message signing/verification
deriveAddress
Derives a Bitcoin address either from a vault-resolved signing credential (mnemonic), or from a
watch-only extended public key (xpub) with no credential at all.
| Field | Type | Required | Description |
|---|---|---|---|
network | select | ✓ Yes | Determines the SLIP-44 coin_type used in the default derivation path — see Networks. |
walletType | select | No (default readOnly) | readOnly (requires xpub) or mnemonic (requires credentialID). |
xpub | text | Conditional | Extended public key — required when walletType is readOnly. |
credentialID | number | Conditional | Vault reference to a mnemonic credential — required when walletType is mnemonic. |
addressType | select | No (default p2wpkh) | p2wpkh (BIP-84) or p2tr (BIP-86). |
derivationPath | text | No | Overrides the default SLIP-44 path. |
Example response:
{
"address": "bc1q...",
"addressType": "p2wpkh",
"derivationPath": "m/84'/0'/0'/0/0",
"publicKeyHex": "03a1b2..."
}
Watch-only mode needs no credential. Supplying just
xpub with
walletType: readOnly derives an address without ever touching a private key or vault
secret — useful for monitoring-only workflows.
signMessage
Signs an arbitrary text message with a P2WPKH-derived private key using BIP-137 — the standard "sign this message to prove address ownership" scheme most wallets support. Implemented directly against NBitcoin's low-level primitives, since NBitcoin ships no built-in message-signing helper.
| Field | Type | Required | Description |
|---|---|---|---|
network | select | ✓ Yes | Fund-adjacent — key derivation depends on it. |
message | text | ✓ Yes | The message to sign. |
walletType | select | ✓ Yes | wif or mnemonic — readOnly cannot sign. |
credentialID | number | ✓ Yes | Vault reference to the signing key/mnemonic. |
addressType | select | No (default p2wpkh) | Must be p2wpkh — see warning below. |
derivationPath | text | No | Overrides the default SLIP-44 path when walletType is mnemonic. |
P2WPKH only — no Taproot support. BIP-137 has no defined encoding for Taproot (P2TR)
addresses. Requesting
addressType: p2tr fails with
WALLET_MESSAGE_SIGNING_UNSUPPORTED_FOR_ADDRESS_TYPE — resolve a P2WPKH wallet for this
operation instead.
Example response:
{
"address": "bc1q...",
"message": "Proving ownership of this address for order #4471",
"signature": "H6ZW...base64..."
}
verifySignature
Verifies a BIP-137 signature against a message and address — pure computation, no network call and no credential required.
| Field | Type | Required | Description |
|---|---|---|---|
network | select | ✓ Yes | Selects address-decoding rules. |
address | text | ✓ Yes | The claimed signing address. |
message | text | ✓ Yes | The original message. |
signature | text | ✓ Yes | The base64 BIP-137 signature to verify. |
Example response:
{ "matches": true }
No credential, no network call: Verification recovers the public key from the signature
itself and checks it against the claimed address — it never touches the vault or Esplora. Safe to run
freely, including against untrusted/external signatures.