Skip to Content
HardwareConceptosProtocol V1 y V2
En esta página

Protocol V1 y V2

Hardware SDK 1.2.0 admite dos protocolos de comunicación. Las integraciones usan una única API de JavaScript. No diferencies los casos según el PID de USB, el nombre BLE ni la cadena de producto.

Protocol V1Protocol V2
Dispositivos actualesClassic, Mini, Touch, ProPro 2, Neo
Cómo lo detecta el SDKRespuesta en tiempo real tras la conexiónPing / consulta del protocolo en tiempo real tras la conexión
Métodos públicosMétodos existentes de Hardware SDKLos mismos métodos, adaptados dentro de Core
Regla para las llamadasEn la práctica, serializa las llamadas por dispositivoSerializa las llamadas por dispositivo; obligatorio
Actualización del firmwarefirmwareUpdateV2 / firmwareUpdateV3firmwareUpdateV4
Métodos de cadenasFamilias V1+V2 y familias exclusivas de V1Solo familias V1+V2
Instantánea del dispositivogetDeviceState (getFeatures está obsoleto)Igual

Stellar, Alephium, Nexa, Dynex, Nervos, SCDO, Benfen y la cadena Neo son exclusivos de V1. No son compatibles con Pro 2 / Neo. Matriz completa: Compatibilidad de cadenas. USB / BLE / Air-Gap del dispositivo: Dispositivos.

Detección

El SDK confirma el protocolo a partir de la conexión activa. No deduzcas V1/V2 a partir de:

  • PID / VID de USB
  • Nombre anunciado por BLE
  • Cadena de producto o carcasa

Si guardas un resultado anterior, asócialo por connectId (USB y BLE del mismo dispositivo son endpoints distintos). El campo público es connectProtocol en el objeto del dispositivo.

Pasar connectProtocol en una llamada establece un requisito estricto: el SDK no recurrirá silenciosamente al otro protocolo.

Lo que no cambia

  • HardwareSDK.init({ env }) sigue seleccionando el transporte (USB / BLE / bajo nivel), no Protocol V1 o V2.
  • searchDevices → connectId → getDeviceState → métodos de cadenas.
  • El PIN, la passphrase y la confirmación mediante botón siguen llegando como UI_EVENT. Responde únicamente con uiResponse en las solicitudes de entrada. Consulta la Guía de la API Core.

Lo que debes evitar

  • No ejecutes simultáneamente dos llamadas de negocio en el mismo dispositivo.
  • No repitas automáticamente operaciones de firma, borrado ni actualización del firmware tras una desconexión o un tiempo de espera agotado.
  • No leas el valor de firmware session_id de las respuestas para almacenarlo. La identidad de la cartera es deviceId + passphraseState. Consulta Sesiones de cartera.
  • No llames a las funciones internas de Protocol V2 (DeviceSessionGet, DeviceInfoGet, …). No forman parte de la API pública CoreApi.

Estado del dispositivo

Usa getDeviceState. getFeatures es exclusivo de Protocol V1 (Classic / Mini / Touch / Pro); Pro 2 y Neo lo rechazan antes de aplicar cualquier proyección de compatibilidad. getDeviceState sigue incluyendo una instantánea con la estructura de Features para V1 y V2.

const state = await HardwareSDK.getDeviceState(connectId); if (!state.success) throw new Error(state.payload.error);

Usa scope: 'settings' o scope: 'firmware' solo cuando necesites actualizar esas particiones. El valor devuelto sigue siendo una instantánea completa.

Siguiente

Última actualización el