Zum Inhalt springen
ecdsa.com
Bitcoin Core RPCWeb3-Wallets und -Signaturen

Fehlermeldung

Address does not refer to key

Auch ausgegeben als

  • error code: -3 error message: Address does not refer to key

`bitcoin-cli` gibt in den Zeilen vor dem Text „error code: -3“ und „error message:“ aus. JSON-RPC-Clients sehen `{"code": -3, "message": "Address does not refer to key"}`.

Bitcoin Core RPC — verifymessage / signmessage with a non-P2PKH address

Was der Fehler bedeutet

Das Signieren von Nachrichten in Bitcoin Core (`signmessage`/`verifymessage`) implementiert das ursprüngliche Verfahren „Bitcoin Signed Message“, das nur mit Legacy-P2PKH-Adressen funktioniert: Aus der Signatur wird ein öffentlicher Schlüssel wiederhergestellt, und Core vergleicht dessen Hash mit der Adresse. Adressen vom Typ Native SegWit (`bc1q…`), Taproot (`bc1p…`) und P2SH (`3…`) sind in diesem Sinne keine „Schlüssel“-Adressen, deshalb lehnt Core sie mit dem RPC-Fehler -3 ab, statt true oder false zurückzugeben.

Warum der Fehler auftritt

So behebst du den Fehler

  1. 1.

    In Core mit einer Legacy-Adresse signieren

    Wenn die Gegenseite nur einen Nachweis braucht, dass du über einen Schlüssel in deiner Wallet verfügst, erstelle für diesen Nachweis eine Legacy-Adresse.

    bash
    # Bitcoin Core signs and verifies messages only for legacy P2PKH addresses (1... / m... / n...)
    addr=$(bitcoin-cli getnewaddress "proof" legacy)
    sig=$(bitcoin-cli signmessage "$addr" "I own this address")
    bitcoin-cli verifymessage "$addr" "$sig" "I own this address"
  2. 2.

    BIP-322 für SegWit und Taproot verwenden

    BIP-322 definiert Nachrichtensignaturen für jeden Adresstyp. Verwende eine Bibliothek oder Wallet, die es implementiert, und vereinbare es mit der prüfenden Seite.

    js
    // SegWit / Taproot addresses: BIP-322 "simple" signatures, e.g. with the bip322-js library
    import { Verifier } from "bip322-js";
    
    const ok = Verifier.verifySignature("bc1q...", "I own this address", signatureBase64);

Verwandte Fehler

Gesamte Signaturfehler-Datenbank durchsuchen