Auf dieser Seite
EthSignRequest
Die Klasse EthSignRequest verarbeitet Ethereum-Signieranfragen.
Kodiert Signierdaten zum Scannen durch das Gerät. Erstellt oder überträgt die Transaktion nicht.
DataType-Enum
enum DataType {
transaction = 1, // Legacy transaction (RLP encoded unsigned data)
typedData = 2, // EIP-712 typed data (JSON string as bytes)
personalMessage = 3, // Personal message signing
typedTransaction = 4 // Typed transaction (EIP-1559)
}Parameter
| Parameter | Typ | Beschreibung |
|---|---|---|
requestId | Buffer | Optionales Konstruktorfeld: UUID-Bytes; die übergeordnete Hilfsfunktion unten akzeptiert eine UUID-Zeichenfolge |
signData | Buffer | Zu signierende Daten |
dataType | DataType | Typ der Signierdaten |
chainId | number | Chain-ID (optional) |
derivationPath | CryptoKeypath | Ableitungspfad |
address | Buffer | Adressbytes des Signierenden (optional) |
origin | string | Anfragequelle (optional) |
UR-Beispiel
UR:ETH-SIGN-REQUEST/ONADTPDAGDSWNNYAHGTOKPFPIAPANNROLNSAVYDTHHAOHDECAOWFLYLDLFAAUELPATAEGWSOLALPBAVYGUYTHNLFGMAYMWSGBYZOIYHTRDCFBANBFPBNDSPRJPNSDLGLBYIMJELTCNLNWZJLSEAEAELARTAXAAAACSLDAHTAADDYOEADLECSDWYKCSFNYKAEYKAEWKADWKAOCYTIZSYLCNSSDKGOCABeispiele
Diese Beispiele verwenden KeystoneEthereumSDK.generateSignRequest, das Hex-Zeichenfolgen und eine UUID-Zeichenfolge akzeptiert. Seine Parameternamen unterscheiden sich von denen des Registry-Konstruktors oben. unsignedTxHex und unsignedLegacyHex sind die unsignierten Signierbytes aus Ihrer Transaktionsbibliothek, ohne 0x-Präfix. Bei EIP-1559 muss das Typbyte 02 enthalten sein. typedDataJson muss das vollständige EIP-712-Objekt enthalten.
Verwenden Sie den tatsächlichen Pfad und Master-Fingerabdruck, die vom Gerät exportiert wurden. Bewahren Sie die Anfrage-ID und die ursprüngliche unsignierte Transaktion auf, bis die Antwort überprüft wurde.
EIP-1559-Transaktion
import { KeystoneEthereumSDK } from '@keystonehq/keystone-sdk';
const eth = new KeystoneEthereumSDK();
const requestId = globalThis.crypto.randomUUID();
const ur = eth.generateSignRequest({
requestId, // uuid string
signData: unsignedTxHex, // hex without 0x
dataType: 4, // typedTransaction
path: "m/44'/60'/0'/0/0",
xfp: '12345678',
chainId: 1,
origin: 'your-app',
});
// Encode UR into animated QR frames and displayLegacy-Transaktion
const ur = eth.generateSignRequest({
requestId,
signData: unsignedLegacyHex,
dataType: 1, // transaction
path: "m/44'/60'/0'/0/0",
xfp: '12345678',
chainId: 1,
origin: 'your-app',
});EIP-712-TypedData
const dataHex = Buffer.from(typedDataJson, 'utf8').toString('hex');
const ur = eth.generateSignRequest({
requestId,
signData: dataHex,
dataType: 2, // typedData
path: "m/44'/60'/0'/0/0",
xfp: '12345678',
origin: 'your-app',
});Persönliche Nachricht
const dataHex = Buffer.from(message, 'utf8').toString('hex');
const ur = eth.generateSignRequest({
requestId,
signData: dataHex,
dataType: 3, // personalMessage
path: "m/44'/60'/0'/0/0",
xfp: '12345678',
origin: 'your-app',
});Nächster Schritt
Nachdem das Gerät signiert hat, dekodieren Sie die Antwort mit EthSignature.