このページの内容
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)
}パラメーター
| パラメーター | 型 | 説明 |
|---|---|---|
requestId | Buffer | 任意のコンストラクターフィールド: UUID のバイト列。以下の高レベルヘルパーは UUID 文字列を受け取ります |
signData | Buffer | 署名対象のデータ |
dataType | DataType | 署名データの種類 |
chainId | number | チェーン ID (任意) |
derivationPath | CryptoKeypath | 導出パス |
address | Buffer | 署名者アドレスのバイト列 (任意) |
origin | string | リクエスト元 (任意) |
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 を使ってレスポンスをデコードします。
最終更新日