Skip to Content

EthSignRequest

La classe EthSignRequest gère les demandes de signature Ethereum.

Encode les données à signer pour que l’appareil les scanne. Ne crée ni ne diffuse la transaction.

Énumération DataType

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) }

Paramètres

ParamètreTypeDescription
requestIdBufferChamp facultatif du constructeur : octets UUID ; l’utilitaire de haut niveau ci-dessous accepte une chaîne UUID
signDataBufferDonnées à signer
dataTypeDataTypeType des données à signer
chainIdnumberID de chaîne (facultatif)
derivationPathCryptoKeypathChemin de dérivation
addressBufferOctets de l’adresse du signataire (facultatif)
originstringSource de la demande (facultative)

Exemple UR

UR:ETH-SIGN-REQUEST/ONADTPDAGDSWNNYAHGTOKPFPIAPANNROLNSAVYDTHHAOHDECAOWFLYLDLFAAUELPATAEGWSOLALPBAVYGUYTHNLFGMAYMWSGBYZOIYHTRDCFBANBFPBNDSPRJPNSDLGLBYIMJELTCNLNWZJLSEAEAELARTAXAAAACSLDAHTAADDYOEADLECSDWYKCSFNYKAEYKAEWKADWKAOCYTIZSYLCNSSDKGOCA

Exemples

Ces exemples utilisent KeystoneEthereumSDK.generateSignRequest, qui accepte des chaînes hexadécimales et une chaîne UUID. Ses noms de paramètres diffèrent de ceux du constructeur de registre ci-dessus. unsignedTxHex et unsignedLegacyHex sont les octets de signature non signés issus de votre bibliothèque de transactions, sans préfixe 0x. Pour EIP-1559, incluez l’octet de type 02. typedDataJson doit contenir l’objet EIP-712 complet.

Utilisez le chemin réel et l’empreinte maîtresse exportés par l’appareil. Conservez l’identifiant de la demande et la transaction non signée d’origine jusqu’à la vérification de la réponse.

Transaction EIP-1559

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

Transaction historique

const ur = eth.generateSignRequest({ requestId, signData: unsignedLegacyHex, dataType: 1, // transaction path: "m/44'/60'/0'/0/0", xfp: '12345678', chainId: 1, origin: 'your-app', });

TypedData EIP-712

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', });

Message personnel

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', });

Étape suivante

Après la signature par l’appareil, décodez la réponse avec EthSignature.

Dernière mise à jour le