My Bitcoin wallet ID
Before sending someone a large sum of money on the internet via a irreversible transaction you better make sure you are sending the funds to the right address.
There are a few ways to go about doing this and depending on who you are sending funds to, how accessible their keys are and what the capabilities and behavior of their wallet software is you may need to choose different solutions.
Have the recipient sign a message using their wallet key
If we assume the recipient has the key associated with the target wallet online (aka not in cold storage) and that that the software they use for that wallet supports message signing with wallet keys this can be a viable option.
Unfortunately there is not currently a standard for the format of signatures using bitcoin keys with that said thankfully there appear to only be two common formats in-use today.
The first format being in-essence no formatting; client simply present you the three values you will need to verify a message and you do with them as you see fit, for example:
- Wallet Address: 18neTpQ5MWnXg4n4rpoK5TgxXjEVcg2MYR
- Message: [email protected] – my voice is my passphrase authenticate me
- Signature: G0d6BnQem1gT4nd9esfsEyn1k/GfYAxDkNJmkNvmz8wCOI2Ncw9DvIcyP7OJcEvWbUHQNIBFK3V8wYdnhEFhYHI=
This format leaves a little be desired. For one you have to pass these values independently and then you also have issues around introduction of white-space which can invalidate signatures.
There is another increasingly common format that leverages ASCII armor and some codified rules to address these issues. This style of formatting originated in a project called Privacy Enhanced Mail (PEM), it was one of the first proposals for how to sign and encrypt mail on the Internet and was later adopted by PGP (RFC
But don’t confuse this format with these other formats they follow some different rules when it comes to encoding.
What this means is that depending on the implementation of the wallet software the recipient uses you may not be able to validate the signature they produce without some manipulation of the text.
As for what this format looks like, its fairly straight forward:
-----BEGIN BITCOIN SIGNED MESSAGE----- [email protected] - my voice is my passphrase authenticate me -----BEGIN SIGNATURE----- 18neTpQ5MWnXg4n4rpoK5TgxXjEVcg2MYR G0d6BnQem1gT4nd9esfsEyn1k/GfYAxDkNJmkNvmz8wCOI2Ncw9DvIcyP7OJcEvWbUHQNIBFK3V8wYdnhEFhYHI= -----END BITCOIN SIGNED MESSAGE----- The core differences with this format (as specified in and the PGP rule-set are:
- No “empty-line” delineator between the headers and message;
- Beginning and end whitespace / newlines ignored excluded when verifying the signature;
- Length of rows are not limited to 80 characters;
- No concept of header values (like versions).