Skip to Content
Hardware
Auf dieser Seite
HARDWARE SDK / BITCOIN / BABYLON

btcDeriveContextHash

Leiten Sie auf dem Gerät einen 32-Byte-Babylon-Kontexthash für den ausgewählten Bitcoin-Schlüssel, die Anwendung, den Kontext und das Netzwerk ab. Die Antwort enthält einen sensiblen secret-Wert zur Verwendung in Ihrer Anwendung.

Verfügbar im SDK 1.2.8-alpha.6. Erfordert Classic 1s oder Classic 1s Pure mit Firmware 3.21.0 oder neuer und Protocol V1. Andere Gerätefamilien und Protocol V2 werden nicht unterstützt.

const result = await HardwareSDK.btcDeriveContextHash(connectId, deviceId, params);
01 Kontext vorbereiten02 Auf dem Gerät bestätigen03 Secret verwenden

Vor dem Aufruf

Parameter

connectIdstringerforderlich

Die bei der Gerätesuche zurückgegebene Verbindungskennung.

deviceIdstringerforderlich

Die von getDeviceState oder openWalletSession zurückgegebene Wallet-Identität.

params.pathstring | number[]erforderlich

BIP32-Pfad des verbundenen Bitcoin-Schlüssels mit mindestens 3 Komponenten. Der Skripttyp wird aus dem Pfad abgeleitet. Verwenden Sie den Pfad des verbundenen Schlüssels, nicht den internen IKM-Ableitungspfad.

params.appNamestringerforderlich

1–64 ASCII-Zeichen, die [a-z0-9-] entsprechen.

params.contextstringerforderlich

Hexadezimalzeichenfolge in Kleinbuchstaben mit gerader Länge und ohne 0x-Präfix, die 1–1024 Bytes darstellt. Ein leerer Kontext ist ungültig. Das SDK sendet die dekodierten Bytes an das Gerät.

params.networkstringerforderlich

Genau bitcoin-mainnet, bitcoin-testnet, bitcoin-signet oder bitcoin-regtest. Testnet3 und testnet4 verwenden beide bitcoin-testnet. Das Netzwerk wird nicht aus dem Pfad abgeleitet.

Optionale gemeinsame Parameter

Beispiel

Dieses Fragment setzt ein initialisiertes SDK und eine ausgewählte Standard-Wallet voraus. Ersetzen Sie die Beispielwerte path, appName, context und network durch die vom Benutzer genehmigten Werte. Der folgende Kontext ist ein Beispiel für hexadezimal kodierte Daten.

const result = await HardwareSDK.btcDeriveContextHash(connectId, deviceId, { path: "m/84'/0'/0'/0/0", appName: 'babylon-example', context: '48656c6c6f', network: 'bitcoin-mainnet', useEmptyPassphrase: true, }); if (result.success === false) throw new Error(result.payload.error); const secret = result.payload.secret; // Use only for the approved application and context. Do not log or persist it.

Das Beispiel wählt mit useEmptyPassphrase: true ausdrücklich die Standard-Wallet aus. Übergeben Sie für eine versteckte Wallet denselben passphraseState, der bei der Bestätigung des verbundenen Bitcoin-Kontos verwendet wurde. Der normale Ablauf für PIN, Passphrase und Gerätebestätigung gilt weiterhin.

Antwort

Prüfen Sie success, bevor Sie den Inhalt der Antwort lesen. Bei Erfolg ist payload.secret eine Hexadezimalzeichenfolge aus 64 Kleinbuchstaben und Ziffern (32 Bytes). Die folgenden Tabs zeigen Antworttypen, keine echten geheimen Werte.

type SuccessResponse = { success: true; payload: { secret: string; // 64 lowercase hexadecimal characters (32 bytes) }; };

Fehler und Umgang mit dem Secret

Ein ungültiger Wert für path, appName, context oder network führt vor dem Senden des Ableitungsbefehls zu CallMethodInvalidParameter (405). Nicht unterstützte Gerätefamilien oder Protocol V2 führen zu DeviceNotSupportMethod (415); Firmware unter 3.21.0 muss aktualisiert werden.

Ein Abbruch am Gerät liefert die Standardantwort success: false. Beenden Sie die Anfrage und behandeln Sie payload.error und payload.code, bevor Sie einen weiteren Aufruf versuchen.

Das SDK gibt den tatsächlichen secret-Wert an Ihre Anwendung zurück. Behandeln Sie ihn als sensibel: Halten Sie ihn aus Protokollen, Telemetrie, Zwischenablage und dauerhaftem Speicher fern. Die Ableitung läuft auf dem Gerät; der interne Wallet-Schlüssel wird nicht exportiert.

Nächste Schritte

Zuletzt aktualisiert am