Skip to Content

EthSignRequest

La clase EthSignRequest gestiona solicitudes de firma de Ethereum.

Codifica los datos que se van a firmar para que el dispositivo los escanee. No crea ni difunde la transacción.

Enumeración 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) }

Parámetros

ParámetroTipoDescripción
requestIdBufferCampo opcional del constructor: bytes de UUID; la función auxiliar de alto nivel que aparece a continuación recibe una cadena UUID
signDataBufferDatos que se van a firmar
dataTypeDataTypeTipo de datos de firma
chainIdnumberID de cadena (opcional)
derivationPathCryptoKeypathRuta de derivación
addressBufferBytes de la dirección del firmante (opcional)
originstringOrigen de la solicitud (opcional)

Ejemplo de UR

UR:ETH-SIGN-REQUEST/ONADTPDAGDSWNNYAHGTOKPFPIAPANNROLNSAVYDTHHAOHDECAOWFLYLDLFAAUELPATAEGWSOLALPBAVYGUYTHNLFGMAYMWSGBYZOIYHTRDCFBANBFPBNDSPRJPNSDLGLBYIMJELTCNLNWZJLSEAEAELARTAXAAAACSLDAHTAADDYOEADLECSDWYKCSFNYKAEYKAEWKADWKAOCYTIZSYLCNSSDKGOCA

Ejemplos

Estos ejemplos usan KeystoneEthereumSDK.generateSignRequest, que recibe cadenas hexadecimales y una cadena UUID. Sus nombres de parámetros difieren de los del constructor de registro anterior. unsignedTxHex y unsignedLegacyHex son los bytes sin firmar de tu biblioteca de transacciones, sin el prefijo 0x. Para EIP-1559, incluye el byte de tipo 02. typedDataJson debe contener el objeto EIP-712 completo.

Usa la ruta real y la huella digital maestra exportadas por el dispositivo. Conserva el identificador de la solicitud y la transacción original sin firmar hasta haber verificado la respuesta.

Transacción 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

Transacción heredada

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

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

Mensaje personal

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

Siguiente paso

Después de que el dispositivo firme, decodifica la respuesta con EthSignature.

Última actualización el