К сообщению добавляются префикс «Bitcoin Signed Message» и байты длины, затем оно хешируется двойным SHA-256 и подписывается ключом secp256k1; проверяющая сторона восстанавливает из подписи открытый ключ, выводит из него адрес того типа, который указан в заголовке, и сравнивает полученный адрес с заявленным. Подписи передают в base64.
Формат происходит от команды signmessage из Bitcoin Core, которая поддерживает только P2PKH, а диапазоны заголовков для SegWit так и не были реализованы единообразно: некоторые кошельки, в том числе Electrum и Trezor, использовали для адресов SegWit диапазоны P2PKH. BIP-137 вообще не может выразить адреса Taproot, адреса с мультиподписью и скриптовые адреса, поэтому его и заменяет BIP-322. Проверка сообщений Bitcoin принимает оба формата.