The message is hashed with the BIP-340 tagged hash BIP0322-signed-message; a virtual to_spend transaction commits to that hash and pays to the address's script, and a virtual to_sign transaction spends it. The signature is the witness (simple format, prefix smp), the whole to_sign transaction (full, ful) or a proof-of-funds PSBT (pof); the legacy BIP-137 format remains accepted for P2PKH. The empty message hashes to c90c269c4f8fcbe6880f72a721ddfbf1914268a794cbb21cfafee13770ae19f1.
Verification reuses ordinary script validation, so any script a wallet can spend from can be signed for. The specification is marked Complete in the BIPs repository; wallet and service support grew with Taproot and Ordinals use, but check each counterparty, as some still verify only BIP-137.