Skip to Content

EthSignRequest

この EthSignRequest クラスは Ethereum の署名リクエストを処理します。

デバイスがスキャンする署名データをエンコードします。トランザクションの作成やブロードキャストは行いません。

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

パラメーター

パラメーター型説明
requestIdBuffer任意のコンストラクターフィールド: UUID のバイト列。以下の高レベルヘルパーは UUID 文字列を受け取ります
signDataBuffer署名対象のデータ
dataTypeDataType署名データの種類
chainIdnumberチェーン ID (任意)
derivationPathCryptoKeypath導出パス
addressBuffer署名者アドレスのバイト列 (任意)
originstringリクエスト元 (任意)

UR の例

UR:ETH-SIGN-REQUEST/ONADTPDAGDSWNNYAHGTOKPFPIAPANNROLNSAVYDTHHAOHDECAOWFLYLDLFAAUELPATAEGWSOLALPBAVYGUYTHNLFGMAYMWSGBYZOIYHTRDCFBANBFPBNDSPRJPNSDLGLBYIMJELTCNLNWZJLSEAEAELARTAXAAAACSLDAHTAADDYOEADLECSDWYKCSFNYKAEYKAEWKADWKAOCYTIZSYLCNSSDKGOCA

例

これらの例では、16 進数文字列と UUID 文字列を受け取る KeystoneEthereumSDK.generateSignRequest を使用します。パラメーター名は、上記のレジストリコンストラクターとは異なります。unsignedTxHex および unsignedLegacyHex はトランザクションライブラリから得られる未署名の署名対象バイト列で、0x プレフィックスは含めません。EIP-1559 の場合は、02 タイプバイトを含めてください。typedDataJson には完全な EIP-712 オブジェクトを含める必要があります。

デバイスからエクスポートした実際のパスとマスターフィンガープリントを使用してください。レスポンスの検証が完了するまで、リクエスト ID と元の未署名トランザクションを保持してください。

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

レガシートランザクション

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 型付きデータ

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

個人メッセージ

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

次の手順

デバイスで署名した後、EthSignature を使ってレスポンスをデコードします。

最終更新日