Le message est précédé du préfixe « Bitcoin Signed Message » avec des octets de longueur, haché en double SHA-256 et signé avec secp256k1 ; le vérificateur récupère la clé publique à partir de la signature, dérive l’adresse du type indiqué par l’en-tête et la compare à l’adresse annoncée. Les signatures sont échangées en base64.
Il dérive de signmessage de Bitcoin Core, qui ne prend en charge que P2PKH, et les plages d’en-tête SegWit n’ont jamais été implémentées de façon cohérente : certains portefeuilles, dont Electrum et Trezor, utilisaient les plages P2PKH pour les adresses SegWit. BIP-137 ne peut pas du tout exprimer les adresses Taproot, multisig ou de script, et c’est pourquoi BIP-322 le remplace. Le vérificateur de messages Bitcoin accepte les deux formats.