This guide explains Bitcoin Core verifymessage RPC in plain English. It shows what the command does, what its result means and what it cannot prove.
TL;DR
- What it is: Bitcoin Core 0.16.0 verifymessage accepted an address, a base64 signature and the exact message, then returned true or false. It verified a narrow cryptographic relationship: the signature matched that address and those bytes under the historical signed-message scheme.
- Why it matters: verifymessage is useful for a narrow, exact-byte key-control challenge. Authentication remains safe only when the challenge is readable, fresh, single-use and tied to an independently authenticated business context.
- Current position: Require a second reviewer and explicit rollback or expiry, and pause payments, signing or network-dependent services until post-change evidence is complete.
Bitcoin Core verifymessage RPC in simple English
Bitcoin Core verifymessage RPC: Treat address, signature and message as one immutable challenge record. Validate lengths and encoding before calling the RPC, but preserve exact bytes.
Simple example
A node operator is checking Bitcoin Core verifymessage RPC. Canonicalise the challenge before it reaches the signer, not during verification. Specify UTF-8, line endings and visible whitespace.
Key terms in plain English
- Bitcoin Core:
- Widely used software that validates Bitcoin and can provide wallet, network and operator tools.
- RPC:
- A command that software sends to a node to request information or a local action.
- Node:
- A computer running Bitcoin software that checks data and communicates with other peers.
Three bound inputs
Treat address, signature and message as one immutable challenge record. Validate lengths and encoding before calling the RPC, but preserve exact bytes. Substituting a normalised message, another address presentation or a repaired base64 string changes the evidence and must fail rather than silently continue.
Exact message review
Canonicalise the challenge before it reaches the signer, not during verification. Specify UTF-8, line endings and visible whitespace. Include the relying service, account, requested action and human-readable consequence so the signer can understand what possession of the final signature will authorise.
Replay resistance
Include a cryptographically random nonce, issuance time and short expiry and mark each challenge consumed after one successful decision. Bind it to the authenticated session and relying party. A valid signature over a generic phrase remains replayable anywhere that accepts the same phrase.
Boolean and errors
False is a normal verification failure and should not reveal which internal check was closest to passing. Distinguish malformed input or RPC error from a valid false response in protected logs, while presenting a uniform failure to callers to reduce probing and information leakage.
Address-method scope
The historical method is address-message verification, not a general proof for arbitrary descriptors, scripts or multisignature policies. Confirm compatibility with the signer method and deployed node version. Do not reinterpret unsupported script forms as negative identity evidence.
Identity boundary
A true result proves control of a signing key for this challenge. It does not establish who the controller is, whether they may represent a company or whether funds are currently controlled. Combine it with authenticated account and contractual checks where those claims matter.
How specialists test it
Operators test the command on a non-production node first. They check a normal reply, an invalid request, a timeout and a restart. This shows what the response means and prevents one local result from being mistaken for a network-wide outcome.
Frequently asked questions
What is the main point of Bitcoin Core verifymessage RPC?
Bitcoin Core verifymessage RPC: Treat address, signature and message as one immutable challenge record. Validate lengths and encoding before calling the RPC, but preserve exact bytes.
For Bitcoin Core verifymessage RPC, what should a beginner know about three bound inputs?
Treat address, signature and message as one immutable challenge record. Validate lengths and encoding before calling the RPC, but preserve exact bytes.
For Bitcoin Core verifymessage RPC, what should a beginner know about exact message review?
Canonicalise the challenge before it reaches the signer, not during verification. Specify UTF-8, line endings and visible whitespace.
For Bitcoin Core verifymessage RPC, what should a beginner know about replay resistance?
Include a cryptographically random nonce, issuance time and short expiry and mark each challenge consumed after one successful decision.
Conclusion
verifymessage is useful for a narrow, exact-byte key-control challenge. Authentication remains safe only when the challenge is readable, fresh, single-use and tied to an independently authenticated business context.
Primary sources
Check the current specification status and the documentation for the exact implementation you operate before moving production funds or changing a mining node.
Join the ASIC Mining Discussion
Members can read and join the discussion
Log in to read comments from other miners. Create a free account if you would like to ask a question or share your experience.
Membership helps us protect the discussion from spam and keep answers useful.