@sequence0/sdk 1.1.0 → 1.1.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/chains/bitcoin-taproot.d.ts +77 -14
- package/dist/chains/bitcoin-taproot.d.ts.map +1 -1
- package/dist/chains/bitcoin-taproot.js +324 -65
- package/dist/chains/bitcoin-taproot.js.map +1 -1
- package/dist/chains/bitcoin.d.ts +12 -7
- package/dist/chains/bitcoin.d.ts.map +1 -1
- package/dist/chains/bitcoin.js +14 -9
- package/dist/chains/bitcoin.js.map +1 -1
- package/dist/core/client.d.ts +4 -5
- package/dist/core/client.d.ts.map +1 -1
- package/dist/core/client.js +54 -29
- package/dist/core/client.js.map +1 -1
- package/dist/erc4337/types.js +2 -2
- package/dist/index.d.ts +2 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +8 -2
- package/dist/index.js.map +1 -1
- package/dist/utils/discovery.d.ts.map +1 -1
- package/dist/utils/discovery.js +56 -1
- package/dist/utils/discovery.js.map +1 -1
- package/dist/utils/eip712.d.ts +36 -0
- package/dist/utils/eip712.d.ts.map +1 -0
- package/dist/utils/eip712.js +80 -0
- package/dist/utils/eip712.js.map +1 -0
- package/dist/utils/fee.d.ts +2 -2
- package/dist/utils/fee.js +2 -2
- package/dist/utils/validation.d.ts +8 -0
- package/dist/utils/validation.d.ts.map +1 -1
- package/dist/utils/validation.js +18 -0
- package/dist/utils/validation.js.map +1 -1
- package/dist/utils/websocket.js +1 -1
- package/dist/utils/websocket.js.map +1 -1
- package/dist/wallet/wallet.d.ts +16 -2
- package/dist/wallet/wallet.d.ts.map +1 -1
- package/dist/wallet/wallet.js +73 -28
- package/dist/wallet/wallet.js.map +1 -1
- package/package.json +1 -1
package/dist/wallet/wallet.js
CHANGED
|
@@ -25,12 +25,13 @@
|
|
|
25
25
|
*/
|
|
26
26
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
27
27
|
exports.Wallet = void 0;
|
|
28
|
-
const ethers_1 = require("ethers");
|
|
29
28
|
// ethers v6 ships without .d.ts — TypedDataEncoder is exported but not typed
|
|
30
29
|
const { TypedDataEncoder } = require('ethers');
|
|
31
30
|
const http_1 = require("../utils/http");
|
|
32
31
|
const websocket_1 = require("../utils/websocket");
|
|
33
32
|
const errors_1 = require("../utils/errors");
|
|
33
|
+
const eip712_1 = require("../utils/eip712");
|
|
34
|
+
const validation_1 = require("../utils/validation");
|
|
34
35
|
const ethereum_1 = require("../chains/ethereum");
|
|
35
36
|
const bitcoin_1 = require("../chains/bitcoin");
|
|
36
37
|
const bitcoin_taproot_1 = require("../chains/bitcoin-taproot");
|
|
@@ -70,11 +71,23 @@ class Wallet {
|
|
|
70
71
|
async sign(transaction) {
|
|
71
72
|
// 1. Build the unsigned transaction using the chain adapter
|
|
72
73
|
const unsignedTx = await this.adapter.buildTransaction(transaction, this.address);
|
|
73
|
-
// 2.
|
|
74
|
-
|
|
75
|
-
//
|
|
74
|
+
// 2. Extract the signing message.
|
|
75
|
+
// For Bitcoin Taproot: the adapter returns hex-encoded JSON containing
|
|
76
|
+
// a `sighash` field. The FROST agent must sign only the sighash (32 bytes),
|
|
77
|
+
// not the entire transaction blob.
|
|
78
|
+
// For EVM/Solana: the unsignedTx IS the signing message (RLP/message bytes).
|
|
79
|
+
let signingMessage;
|
|
80
|
+
if (this.chain === 'bitcoin') {
|
|
81
|
+
signingMessage = this.extractBitcoinSighash(unsignedTx);
|
|
82
|
+
}
|
|
83
|
+
else {
|
|
84
|
+
signingMessage = unsignedTx;
|
|
85
|
+
}
|
|
86
|
+
// 3. Submit to agent network for FROST signing
|
|
87
|
+
const signature = await this.requestAndWaitSignature(signingMessage);
|
|
88
|
+
// 4. Attach signature to the transaction
|
|
76
89
|
const rawTransaction = await this.adapter.attachSignature(unsignedTx, signature);
|
|
77
|
-
//
|
|
90
|
+
// 5. Parse signature components
|
|
78
91
|
const sig = signature.startsWith('0x') ? signature.slice(2) : signature;
|
|
79
92
|
return {
|
|
80
93
|
rawTransaction,
|
|
@@ -150,11 +163,16 @@ class Wallet {
|
|
|
150
163
|
const isEvm = this.isEvmChain();
|
|
151
164
|
let messageToSign;
|
|
152
165
|
if (isEvm) {
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
//
|
|
166
|
+
// EIP-191 requires the byte length of the message, not the character
|
|
167
|
+
// count. For multi-byte UTF-8 characters (emoji, CJK, etc.) these
|
|
168
|
+
// differ, so we encode the message first and use the byte length.
|
|
156
169
|
const encoder = new TextEncoder();
|
|
157
|
-
const
|
|
170
|
+
const messageBytes = encoder.encode(message);
|
|
171
|
+
const prefix = `\x19Ethereum Signed Message:\n${messageBytes.length}`;
|
|
172
|
+
const prefixBytes = encoder.encode(prefix);
|
|
173
|
+
const bytes = new Uint8Array(prefixBytes.length + messageBytes.length);
|
|
174
|
+
bytes.set(prefixBytes, 0);
|
|
175
|
+
bytes.set(messageBytes, prefixBytes.length);
|
|
158
176
|
messageToSign = Buffer.from(bytes).toString('hex');
|
|
159
177
|
}
|
|
160
178
|
else {
|
|
@@ -228,8 +246,9 @@ class Wallet {
|
|
|
228
246
|
body.owner_signature = proof.owner_signature;
|
|
229
247
|
body.timestamp = proof.timestamp;
|
|
230
248
|
}
|
|
231
|
-
// Submit signing request
|
|
232
|
-
const
|
|
249
|
+
// Submit signing request — validate the agent response
|
|
250
|
+
const rawResponse = await this.http.post('/sign', body);
|
|
251
|
+
const response = (0, validation_1.validateSignResponse)(rawResponse, '/sign');
|
|
233
252
|
const requestId = response.request_id;
|
|
234
253
|
// Try WebSocket first for instant notification
|
|
235
254
|
try {
|
|
@@ -242,15 +261,23 @@ class Wallet {
|
|
|
242
261
|
await ws.connect();
|
|
243
262
|
const result = await ws.waitFor('SigningComplete', (e) => e.request_id === requestId, timeoutMs);
|
|
244
263
|
ws.disconnect();
|
|
245
|
-
|
|
264
|
+
// Validate the WebSocket signing result before using
|
|
265
|
+
const validated = (0, validation_1.validateSignResultResponse)({ ...result, status: 'complete' }, 'ws:SigningComplete');
|
|
266
|
+
return validated.signature;
|
|
246
267
|
}
|
|
247
|
-
catch {
|
|
268
|
+
catch (e) {
|
|
269
|
+
// If validation failed, propagate it — only swallow connection errors
|
|
270
|
+
if (e instanceof errors_1.Sequence0Error && e.code === 'INVALID_RESPONSE') {
|
|
271
|
+
throw e;
|
|
272
|
+
}
|
|
248
273
|
// WebSocket failed, fall back to polling
|
|
249
274
|
}
|
|
250
|
-
// Polling fallback
|
|
275
|
+
// Polling fallback — validate each polling response
|
|
251
276
|
const deadline = Date.now() + timeoutMs;
|
|
252
277
|
while (Date.now() < deadline) {
|
|
253
|
-
const
|
|
278
|
+
const endpoint = `/sign/${requestId}`;
|
|
279
|
+
const rawResult = await this.http.get(endpoint);
|
|
280
|
+
const result = (0, validation_1.validateSignResultResponse)(rawResult, endpoint);
|
|
254
281
|
if (result.status === 'complete' && result.signature) {
|
|
255
282
|
return result.signature;
|
|
256
283
|
}
|
|
@@ -259,9 +286,12 @@ class Wallet {
|
|
|
259
286
|
throw new errors_1.TimeoutError(`Signing timed out after ${timeoutMs}ms (request: ${requestId})`);
|
|
260
287
|
}
|
|
261
288
|
/**
|
|
262
|
-
* Build an ownership proof for a sign request.
|
|
289
|
+
* Build an ownership proof for a sign request using EIP-712 typed structured data.
|
|
290
|
+
*
|
|
291
|
+
* EIP-712 domain: { name: "Sequence0", version: "1", chainId, verifyingContract: WalletFactory }
|
|
292
|
+
* EIP-712 type: Sequence0Auth(string walletId, string action, uint256 timestamp)
|
|
263
293
|
*
|
|
264
|
-
*
|
|
294
|
+
* For sign requests, the "action" is the message hex being signed.
|
|
265
295
|
*
|
|
266
296
|
* Returns null when no ownerSigner is configured (backwards compatible).
|
|
267
297
|
*/
|
|
@@ -269,17 +299,9 @@ class Wallet {
|
|
|
269
299
|
if (!this.ownerSigner)
|
|
270
300
|
return null;
|
|
271
301
|
const timestamp = Math.floor(Date.now() / 1000);
|
|
272
|
-
|
|
273
|
-
const
|
|
274
|
-
|
|
275
|
-
const messageBytes = new TextEncoder().encode(messageHex);
|
|
276
|
-
// timestamp as 8-byte big-endian
|
|
277
|
-
const timestampBytes = new Uint8Array(8);
|
|
278
|
-
const view = new DataView(timestampBytes.buffer);
|
|
279
|
-
view.setBigUint64(0, BigInt(timestamp), false);
|
|
280
|
-
// Concatenate and hash: keccak256(walletId + message + timestamp)
|
|
281
|
-
const payload = (0, ethers_1.concat)([walletIdBytes, messageBytes, timestampBytes]);
|
|
282
|
-
const digest = (0, ethers_1.getBytes)((0, ethers_1.keccak256)(payload));
|
|
302
|
+
const chainId = eip712_1.SEQUENCE0_CHAIN_IDS[this.network] || eip712_1.SEQUENCE0_CHAIN_IDS.mainnet;
|
|
303
|
+
const walletFactory = eip712_1.WALLET_FACTORY_ADDRESSES[this.network] || eip712_1.WALLET_FACTORY_ADDRESSES.mainnet;
|
|
304
|
+
const digest = (0, eip712_1.computeEip712Digest)(this.walletId, messageHex, timestamp, chainId, walletFactory);
|
|
283
305
|
// Sign the digest
|
|
284
306
|
const signature = await this.ownerSigner(digest);
|
|
285
307
|
return {
|
|
@@ -316,6 +338,29 @@ class Wallet {
|
|
|
316
338
|
isEvmChain() {
|
|
317
339
|
return Wallet.EVM_CHAINS.includes(this.chain);
|
|
318
340
|
}
|
|
341
|
+
/**
|
|
342
|
+
* Extract the BIP-341 sighash from a Taproot adapter's buildTransaction output.
|
|
343
|
+
*
|
|
344
|
+
* The Taproot adapter returns hex-encoded JSON containing a `sighash` field.
|
|
345
|
+
* The FROST agent must sign ONLY this 32-byte sighash (not the entire blob).
|
|
346
|
+
*
|
|
347
|
+
* For multi-input transactions, this returns the first input's sighash.
|
|
348
|
+
* Multi-input support (signing each input separately) is handled at a
|
|
349
|
+
* higher level via the BitcoinTaprootAdapter's direct API.
|
|
350
|
+
*/
|
|
351
|
+
extractBitcoinSighash(unsignedTxHex) {
|
|
352
|
+
try {
|
|
353
|
+
const decoded = Buffer.from(unsignedTxHex, 'hex').toString();
|
|
354
|
+
const parsed = JSON.parse(decoded);
|
|
355
|
+
if (parsed.sighash && typeof parsed.sighash === 'string') {
|
|
356
|
+
return parsed.sighash;
|
|
357
|
+
}
|
|
358
|
+
}
|
|
359
|
+
catch {
|
|
360
|
+
// Not JSON — could be a raw hex message, pass through
|
|
361
|
+
}
|
|
362
|
+
return unsignedTxHex;
|
|
363
|
+
}
|
|
319
364
|
}
|
|
320
365
|
exports.Wallet = Wallet;
|
|
321
366
|
Wallet.EVM_CHAINS = [
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"wallet.js","sourceRoot":"","sources":["../../src/wallet/wallet.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;;;AAcH,
|
|
1
|
+
{"version":3,"file":"wallet.js","sourceRoot":"","sources":["../../src/wallet/wallet.ts"],"names":[],"mappings":"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"}
|