Zum Inhalt springen
ecdsa.com

EIP-191 (Standard für signierte Daten)

Die Ethereum-Konvention, nach der signierte Nachrichten mit dem Byte 0x19 und einem Versionsbyte beginnen, sodass sie nie gültige Transaktionen sein können; Version 0x45 ist das Format von personal_sign, das die meisten Wallets nutzen.
Auch geschrieben alsEIP-191ERC-191Ethereum signed message\x19Ethereum Signed Message

Die signierten Daten lauten 0x19 ‖ version ‖ version-specific data ‖ data. Versionen: 0x00 (Daten mit einer vorgesehenen Validator-Adresse), 0x01 (strukturierte Daten, also EIP-712) und 0x45, der Buchstabe E, für personal_sign: 0x19, gefolgt von Ethereum Signed Message: und einem Zeilenumbruch, der Länge der Nachricht als Dezimalzahl in ASCII und der Nachricht. RLP-kodierte Transaktionen können nicht mit 0x19 beginnen – genau darum geht es bei dem Präfix.

Die Wallet hasht das Ergebnis mit Keccak-256 und signiert mit secp256k1; die Signatur umfasst 65 Byte r ‖ s ‖ v mit v 27 oder 28. Für die Nachricht hello lautet der Digest 0x50b2c43fd39106bafbba0da34fc430e1f91e3c96ea2acee2bc34119f92b37750. Verifizierer stellen die Adresse mit ecrecover (oder mit verifyMessage einer Bibliothek) wieder her und vergleichen sie; Smart Accounts brauchen stattdessen ERC-1271.

personal_sign zeigt undurchsichtigen Text an und bietet keine Bindung an Domain oder Chain; Anwendungen sollten beides deshalb in die Nachricht aufnehmen (wie Sign-In with Ethereum) oder für alles mit Struktur oder Wert EIP-712 bevorzugen.

Standards und Quellen

Alle Begriffe