Skip to Content

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

ParameterTypBeschreibung
requestIdBufferOptionales Konstruktorfeld: UUID-Bytes; die übergeordnete Hilfsfunktion unten akzeptiert eine UUID-Zeichenfolge
signDataBufferZu signierende Daten
dataTypeDataTypeTyp der Signierdaten
chainIdnumberChain-ID (optional)
derivationPathCryptoKeypathAbleitungspfad
addressBufferAdressbytes des Signierenden (optional)
originstringAnfragequelle (optional)

UR-Beispiel

UR:ETH-SIGN-REQUEST/ONADTPDAGDSWNNYAHGTOKPFPIAPANNROLNSAVYDTHHAOHDECAOWFLYLDLFAAUELPATAEGWSOLALPBAVYGUYTHNLFGMAYMWSGBYZOIYHTRDCFBANBFPBNDSPRJPNSDLGLBYIMJELTCNLNWZJLSEAEAELARTAXAAAACSLDAHTAADDYOEADLECSDWYKCSFNYKAEYKAEWKADWKAOCYTIZSYLCNSSDKGOCA

Beispiele

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 display

Legacy-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.

Zuletzt aktualisiert am