ox 1.7.5 → 1.8.1
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/CHANGELOG.md +16 -0
- package/dist/core/Frame.d.ts +290 -0
- package/dist/core/Frame.d.ts.map +1 -0
- package/dist/core/Frame.js +306 -0
- package/dist/core/Frame.js.map +1 -0
- package/dist/core/FrameReceipt.d.ts +92 -0
- package/dist/core/FrameReceipt.d.ts.map +1 -0
- package/dist/core/FrameReceipt.js +72 -0
- package/dist/core/FrameReceipt.js.map +1 -0
- package/dist/core/FrameSignature.d.ts +357 -0
- package/dist/core/FrameSignature.d.ts.map +1 -0
- package/dist/core/FrameSignature.js +411 -0
- package/dist/core/FrameSignature.js.map +1 -0
- package/dist/core/Transaction.d.ts +29 -4
- package/dist/core/Transaction.d.ts.map +1 -1
- package/dist/core/Transaction.js +25 -4
- package/dist/core/Transaction.js.map +1 -1
- package/dist/core/TransactionReceipt.d.ts +13 -4
- package/dist/core/TransactionReceipt.d.ts.map +1 -1
- package/dist/core/TransactionReceipt.js +14 -0
- package/dist/core/TransactionReceipt.js.map +1 -1
- package/dist/core/TransactionRequest.d.ts +15 -7
- package/dist/core/TransactionRequest.d.ts.map +1 -1
- package/dist/core/TransactionRequest.js +47 -1
- package/dist/core/TransactionRequest.js.map +1 -1
- package/dist/core/TxEnvelope.d.ts +35 -21
- package/dist/core/TxEnvelope.d.ts.map +1 -1
- package/dist/core/TxEnvelope.js +46 -6
- package/dist/core/TxEnvelope.js.map +1 -1
- package/dist/core/TxEnvelopeEip8141.d.ts +341 -0
- package/dist/core/TxEnvelopeEip8141.d.ts.map +1 -0
- package/dist/core/TxEnvelopeEip8141.js +484 -0
- package/dist/core/TxEnvelopeEip8141.js.map +1 -0
- package/dist/core/internal/curves.d.ts +2 -0
- package/dist/core/internal/curves.d.ts.map +1 -1
- package/dist/core/internal/curves.js +2 -0
- package/dist/core/internal/curves.js.map +1 -1
- package/dist/index.d.ts +73 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +73 -0
- package/dist/index.js.map +1 -1
- package/dist/tempo/Transaction.d.ts +2 -0
- package/dist/tempo/Transaction.d.ts.map +1 -1
- package/dist/tempo/TransactionReceipt.d.ts +2 -0
- package/dist/tempo/TransactionReceipt.d.ts.map +1 -1
- package/dist/zod/Block.d.ts +123 -0
- package/dist/zod/Block.d.ts.map +1 -1
- package/dist/zod/Frame.d.ts +73 -0
- package/dist/zod/Frame.d.ts.map +1 -0
- package/dist/zod/Frame.js +74 -0
- package/dist/zod/Frame.js.map +1 -0
- package/dist/zod/FrameReceipt.d.ts +50 -0
- package/dist/zod/FrameReceipt.d.ts.map +1 -0
- package/dist/zod/FrameReceipt.js +37 -0
- package/dist/zod/FrameReceipt.js.map +1 -0
- package/dist/zod/FrameSignature.d.ts +63 -0
- package/dist/zod/FrameSignature.d.ts.map +1 -0
- package/dist/zod/FrameSignature.js +66 -0
- package/dist/zod/FrameSignature.js.map +1 -0
- package/dist/zod/RpcSchema.d.ts +806 -11
- package/dist/zod/RpcSchema.d.ts.map +1 -1
- package/dist/zod/Transaction.d.ts +252 -0
- package/dist/zod/Transaction.d.ts.map +1 -1
- package/dist/zod/Transaction.js +54 -0
- package/dist/zod/Transaction.js.map +1 -1
- package/dist/zod/TransactionEnvelope.d.ts +233 -4
- package/dist/zod/TransactionEnvelope.d.ts.map +1 -1
- package/dist/zod/TransactionEnvelope.js +9 -0
- package/dist/zod/TransactionEnvelope.js.map +1 -1
- package/dist/zod/TransactionReceipt.d.ts +48 -0
- package/dist/zod/TransactionReceipt.d.ts.map +1 -1
- package/dist/zod/TransactionReceipt.js +8 -3
- package/dist/zod/TransactionReceipt.js.map +1 -1
- package/dist/zod/TransactionRequest.d.ts +50 -2
- package/dist/zod/TransactionRequest.d.ts.map +1 -1
- package/dist/zod/TransactionRequest.js +10 -4
- package/dist/zod/TransactionRequest.js.map +1 -1
- package/dist/zod/TxEnvelopeEip8141.d.ts +166 -0
- package/dist/zod/TxEnvelopeEip8141.d.ts.map +1 -0
- package/dist/zod/TxEnvelopeEip8141.js +76 -0
- package/dist/zod/TxEnvelopeEip8141.js.map +1 -0
- package/dist/zod/internal/Frame.d.ts +4 -0
- package/dist/zod/internal/Frame.d.ts.map +1 -0
- package/dist/zod/internal/Frame.js +17 -0
- package/dist/zod/internal/Frame.js.map +1 -0
- package/dist/zod/internal/rpcSchemas/Eth.d.ts +842 -11
- package/dist/zod/internal/rpcSchemas/Eth.d.ts.map +1 -1
- package/dist/zod/internal/rpcSchemas/Wallet.d.ts +56 -2
- package/dist/zod/internal/rpcSchemas/Wallet.d.ts.map +1 -1
- package/dist/zod/tempo/RpcSchemaTempo.d.ts +140 -0
- package/dist/zod/tempo/RpcSchemaTempo.d.ts.map +1 -1
- package/dist/zod/tempo/Transaction.d.ts +123 -0
- package/dist/zod/tempo/Transaction.d.ts.map +1 -1
- package/dist/zod/z.d.ts +4 -0
- package/dist/zod/z.d.ts.map +1 -1
- package/dist/zod/z.js +4 -0
- package/dist/zod/z.js.map +1 -1
- package/package.json +41 -1
- package/src/core/Frame.ts +442 -0
- package/src/core/FrameReceipt.ts +117 -0
- package/src/core/FrameSignature.ts +593 -0
- package/src/core/Transaction.ts +82 -5
- package/src/core/TransactionReceipt.ts +41 -3
- package/src/core/TransactionRequest.ts +71 -4
- package/src/core/TxEnvelope.ts +159 -90
- package/src/core/TxEnvelopeEip8141.ts +714 -0
- package/src/core/_test/Frame.test-d.ts +108 -0
- package/src/core/_test/Frame.test.ts +280 -0
- package/src/core/_test/FrameReceipt.test.ts +86 -0
- package/src/core/_test/FrameSignature.test-d.ts +93 -0
- package/src/core/_test/FrameSignature.test.ts +554 -0
- package/src/core/_test/Transaction.test.ts +33 -0
- package/src/core/_test/TransactionEnvelope.test-d.ts +74 -0
- package/src/core/_test/TransactionEnvelope.test.ts +107 -0
- package/src/core/_test/TransactionReceipt.test.ts +59 -0
- package/src/core/_test/TransactionRequest.test-d.ts +50 -0
- package/src/core/_test/TransactionRequest.test.ts +88 -1
- package/src/core/_test/TxEnvelopeEip8141.test-d.ts +44 -0
- package/src/core/_test/TxEnvelopeEip8141.test.ts +1775 -0
- package/src/core/_test/curves.test.ts +6 -1
- package/src/core/_test/index.test.ts +4 -0
- package/src/core/internal/curves.ts +4 -0
- package/src/index.ts +77 -0
- package/src/version.ts +1 -1
- package/src/zod/Frame.ts +82 -0
- package/src/zod/FrameReceipt.ts +48 -0
- package/src/zod/FrameSignature.ts +78 -0
- package/src/zod/Transaction.ts +63 -0
- package/src/zod/TransactionEnvelope.ts +33 -0
- package/src/zod/TransactionReceipt.ts +14 -3
- package/src/zod/TransactionRequest.ts +18 -3
- package/src/zod/TxEnvelopeEip8141.ts +102 -0
- package/src/zod/_test/Frame.test-d.ts +41 -0
- package/src/zod/_test/Frame.test.ts +57 -0
- package/src/zod/_test/FrameReceipt.test.ts +75 -0
- package/src/zod/_test/FrameSignature.test.ts +94 -0
- package/src/zod/_test/TxEnvelopeEip8141.test.ts +116 -0
- package/src/zod/internal/Frame.ts +26 -0
- package/src/zod/z.ts +4 -0
|
@@ -0,0 +1,411 @@
|
|
|
1
|
+
import * as Address from './Address.js';
|
|
2
|
+
import * as Errors from './Errors.js';
|
|
3
|
+
import * as Hex from './Hex.js';
|
|
4
|
+
import { p256N, secp256k1N } from './internal/curves.js';
|
|
5
|
+
import * as PublicKey from './PublicKey.js';
|
|
6
|
+
import * as Signature from './Signature.js';
|
|
7
|
+
/** Signature schemes supported by EIP-8141. */
|
|
8
|
+
export const schemes = { arbitrary: 0, p256: 2, secp256k1: 1 };
|
|
9
|
+
/**
|
|
10
|
+
* Asserts that a {@link ox#FrameSignature.FrameSignature} is structurally valid.
|
|
11
|
+
*
|
|
12
|
+
* Checks metadata, signature scalars, and public key shape without verifying
|
|
13
|
+
* authorization.
|
|
14
|
+
*
|
|
15
|
+
* @example
|
|
16
|
+
* ### Basic Usage
|
|
17
|
+
*
|
|
18
|
+
* Unsigned protocol entries are accepted by default.
|
|
19
|
+
*
|
|
20
|
+
* ```ts twoslash
|
|
21
|
+
* import { FrameSignature } from 'ox'
|
|
22
|
+
*
|
|
23
|
+
* FrameSignature.assert({
|
|
24
|
+
* payload: '0x',
|
|
25
|
+
* scheme: 'secp256k1'
|
|
26
|
+
* })
|
|
27
|
+
* ```
|
|
28
|
+
*
|
|
29
|
+
* @example
|
|
30
|
+
* ### Requiring a Signature
|
|
31
|
+
*
|
|
32
|
+
* Set `signed` to require a protocol signature.
|
|
33
|
+
*
|
|
34
|
+
* ```ts twoslash
|
|
35
|
+
* import { FrameSignature, Hash, Secp256k1 } from 'ox'
|
|
36
|
+
*
|
|
37
|
+
* const payload = Hash.keccak256('0xdeadbeef')
|
|
38
|
+
* const privateKey = Secp256k1.randomPrivateKey()
|
|
39
|
+
* const signature = Secp256k1.sign({ payload, privateKey })
|
|
40
|
+
*
|
|
41
|
+
* const entry = FrameSignature.from({
|
|
42
|
+
* payload,
|
|
43
|
+
* scheme: 'secp256k1',
|
|
44
|
+
* signature
|
|
45
|
+
* })
|
|
46
|
+
*
|
|
47
|
+
* FrameSignature.assert(entry, { signed: true })
|
|
48
|
+
* ```
|
|
49
|
+
*
|
|
50
|
+
* @param entry - The signature entry to assert.
|
|
51
|
+
* @param options - Validation options.
|
|
52
|
+
*/
|
|
53
|
+
export function assert(entry, options = {}) {
|
|
54
|
+
const scheme = typeof entry.scheme === 'string' ? schemes[entry.scheme] : entry.scheme;
|
|
55
|
+
if (!Number.isInteger(scheme) || scheme < 0 || scheme > 2)
|
|
56
|
+
throw new InvalidError('Unsupported signature scheme.');
|
|
57
|
+
if (scheme === 0 && entry.signer !== undefined)
|
|
58
|
+
throw new InvalidError('Arbitrary signatures cannot specify a signer.');
|
|
59
|
+
if (entry.signer !== undefined)
|
|
60
|
+
Address.assert(entry.signer, { strict: false });
|
|
61
|
+
const payload = entry.payload ?? '0x';
|
|
62
|
+
Hex.assert(payload, { strict: true });
|
|
63
|
+
if (payload !== '0x' &&
|
|
64
|
+
(payload.length !== 66 || Hex.toBigInt(payload) === 0n))
|
|
65
|
+
throw new InvalidError('payload must be empty or a nonzero 32-byte digest.');
|
|
66
|
+
switch (entry.scheme) {
|
|
67
|
+
case 0:
|
|
68
|
+
case 'arbitrary':
|
|
69
|
+
Hex.assert(entry.signature, { strict: true });
|
|
70
|
+
if (entry.signature.length % 2 !== 0)
|
|
71
|
+
throw new InvalidError('signature must contain whole bytes.');
|
|
72
|
+
return;
|
|
73
|
+
}
|
|
74
|
+
if (entry.scheme === 2 || entry.scheme === 'p256') {
|
|
75
|
+
if (entry.publicKey !== undefined) {
|
|
76
|
+
PublicKey.assert(entry.publicKey, { compressed: false });
|
|
77
|
+
for (const coordinate of [entry.publicKey.x, entry.publicKey.y]) {
|
|
78
|
+
Hex.assert(coordinate, { strict: true });
|
|
79
|
+
if (coordinate === '0x' || coordinate.length > 66)
|
|
80
|
+
throw new InvalidError('Public key coordinates must fit in 32 bytes.');
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
if (entry.signature !== undefined && entry.publicKey === undefined)
|
|
84
|
+
throw new InvalidError('P-256 signatures require a public key.');
|
|
85
|
+
}
|
|
86
|
+
if (entry.signature === undefined) {
|
|
87
|
+
if (options.signed)
|
|
88
|
+
throw new InvalidError('Signature is required.');
|
|
89
|
+
return;
|
|
90
|
+
}
|
|
91
|
+
Hex.assert(entry.signature.r, { strict: true });
|
|
92
|
+
Hex.assert(entry.signature.s, { strict: true });
|
|
93
|
+
if ((scheme === 1 || entry.signature.yParity !== undefined) &&
|
|
94
|
+
entry.signature.yParity !== 0 &&
|
|
95
|
+
entry.signature.yParity !== 1)
|
|
96
|
+
throw new InvalidError('Signature parity must be 0 or 1.');
|
|
97
|
+
Signature.assert(entry.signature, { recovered: scheme === 1 });
|
|
98
|
+
const r = Hex.toBigInt(entry.signature.r);
|
|
99
|
+
const s = Hex.toBigInt(entry.signature.s);
|
|
100
|
+
const order = scheme === 1 ? secp256k1N : p256N;
|
|
101
|
+
if (r === 0n ||
|
|
102
|
+
r >= order ||
|
|
103
|
+
s === 0n ||
|
|
104
|
+
s >= order ||
|
|
105
|
+
(scheme === 1 && s > order / 2n))
|
|
106
|
+
throw new InvalidError('Signature scalars must be in range; secp256k1 requires low-s.');
|
|
107
|
+
}
|
|
108
|
+
/**
|
|
109
|
+
* Coerces a value into a {@link ox#FrameSignature.FrameSignature}.
|
|
110
|
+
*
|
|
111
|
+
* Accepts arbitrary signature bytes or a structured signature entry. Omitted
|
|
112
|
+
* `scheme` and `payload` default to `'arbitrary'` and `'0x'`, respectively.
|
|
113
|
+
* An empty payload selects the canonical transaction signing hash; an explicit
|
|
114
|
+
* payload must be a nonzero 32-byte digest.
|
|
115
|
+
*
|
|
116
|
+
* @example
|
|
117
|
+
* ### From Hex
|
|
118
|
+
*
|
|
119
|
+
* Wrap arbitrary witness bytes for contract-defined verification.
|
|
120
|
+
*
|
|
121
|
+
* ```ts twoslash
|
|
122
|
+
* import { FrameSignature } from 'ox'
|
|
123
|
+
*
|
|
124
|
+
* const entry = FrameSignature.from('0xaabb')
|
|
125
|
+
* // @log: { payload: '0x', scheme: 'arbitrary', signature: '0xaabb' }
|
|
126
|
+
* ```
|
|
127
|
+
*
|
|
128
|
+
* @example
|
|
129
|
+
* ### Secp256k1
|
|
130
|
+
*
|
|
131
|
+
* Wrap a signature over an explicit digest, retaining the same payload in the entry.
|
|
132
|
+
*
|
|
133
|
+
* ```ts twoslash
|
|
134
|
+
* import { FrameSignature, Hash, Secp256k1 } from 'ox'
|
|
135
|
+
*
|
|
136
|
+
* const payload = Hash.keccak256('0xdeadbeef')
|
|
137
|
+
* const privateKey = Secp256k1.randomPrivateKey()
|
|
138
|
+
* const signature = Secp256k1.sign({ payload, privateKey })
|
|
139
|
+
*
|
|
140
|
+
* const entry = FrameSignature.from({
|
|
141
|
+
* payload,
|
|
142
|
+
* scheme: 'secp256k1',
|
|
143
|
+
* signature
|
|
144
|
+
* })
|
|
145
|
+
* ```
|
|
146
|
+
*
|
|
147
|
+
* @example
|
|
148
|
+
* ### P256
|
|
149
|
+
*
|
|
150
|
+
* Include the public key with a P-256 signature over an explicit digest.
|
|
151
|
+
*
|
|
152
|
+
* ```ts twoslash
|
|
153
|
+
* import { FrameSignature, Hash, P256 } from 'ox'
|
|
154
|
+
*
|
|
155
|
+
* const { privateKey, publicKey } = P256.createKeyPair()
|
|
156
|
+
* const payload = Hash.keccak256('0xdeadbeef')
|
|
157
|
+
* const signature = P256.sign({ payload, privateKey })
|
|
158
|
+
*
|
|
159
|
+
* const entry = FrameSignature.from({
|
|
160
|
+
* payload,
|
|
161
|
+
* publicKey,
|
|
162
|
+
* scheme: 'p256',
|
|
163
|
+
* signature
|
|
164
|
+
* })
|
|
165
|
+
* ```
|
|
166
|
+
*
|
|
167
|
+
* @example
|
|
168
|
+
* ### Unsigned Entries
|
|
169
|
+
*
|
|
170
|
+
* Omit the signature to prepare a protocol entry before signing the transaction.
|
|
171
|
+
*
|
|
172
|
+
* ```ts twoslash
|
|
173
|
+
* import { FrameSignature } from 'ox'
|
|
174
|
+
*
|
|
175
|
+
* const entry = FrameSignature.from({ scheme: 'secp256k1' })
|
|
176
|
+
* // @log: { payload: '0x', scheme: 'secp256k1' }
|
|
177
|
+
* ```
|
|
178
|
+
*
|
|
179
|
+
* @param entry - Arbitrary signature bytes or a structured signature entry.
|
|
180
|
+
* @returns The validated entry, preserving supplied signature and scheme types.
|
|
181
|
+
*/
|
|
182
|
+
export function from(entry) {
|
|
183
|
+
const result = (typeof entry === 'string'
|
|
184
|
+
? { payload: '0x', scheme: 'arbitrary', signature: entry }
|
|
185
|
+
: {
|
|
186
|
+
...entry,
|
|
187
|
+
payload: entry.payload ?? '0x',
|
|
188
|
+
scheme: entry.scheme ?? 'arbitrary',
|
|
189
|
+
});
|
|
190
|
+
assert(result);
|
|
191
|
+
return result;
|
|
192
|
+
}
|
|
193
|
+
/**
|
|
194
|
+
* Converts an RPC signature entry to a structured frame signature.
|
|
195
|
+
*
|
|
196
|
+
* @example
|
|
197
|
+
* ### Basic Usage
|
|
198
|
+
*
|
|
199
|
+
* ```ts twoslash
|
|
200
|
+
* import { FrameSignature } from 'ox'
|
|
201
|
+
*
|
|
202
|
+
* const entry = FrameSignature.fromRpc({
|
|
203
|
+
* msg: '0x',
|
|
204
|
+
* scheme: 0,
|
|
205
|
+
* signature: '0xdeadbeef'
|
|
206
|
+
* })
|
|
207
|
+
* ```
|
|
208
|
+
*
|
|
209
|
+
* @param entry - The value to convert.
|
|
210
|
+
* @returns The converted value.
|
|
211
|
+
*/
|
|
212
|
+
export function fromRpc(entry) {
|
|
213
|
+
return fromTuple([
|
|
214
|
+
entry.scheme === 0 ? '0x' : Hex.fromNumber(entry.scheme, { size: 1 }),
|
|
215
|
+
entry.signer ?? '0x',
|
|
216
|
+
entry.msg,
|
|
217
|
+
entry.signature,
|
|
218
|
+
]);
|
|
219
|
+
}
|
|
220
|
+
/**
|
|
221
|
+
* Converts a structured frame signature to its RPC representation.
|
|
222
|
+
*
|
|
223
|
+
* @example
|
|
224
|
+
* ### Basic Usage
|
|
225
|
+
*
|
|
226
|
+
* ```ts twoslash
|
|
227
|
+
* import { FrameSignature } from 'ox'
|
|
228
|
+
*
|
|
229
|
+
* const entry = FrameSignature.from('0xdeadbeef')
|
|
230
|
+
* const rpc = FrameSignature.toRpc(entry)
|
|
231
|
+
* ```
|
|
232
|
+
*
|
|
233
|
+
* @param entry - The value to convert.
|
|
234
|
+
* @returns The converted value.
|
|
235
|
+
*/
|
|
236
|
+
export function toRpc(entry) {
|
|
237
|
+
const [scheme, signer, msg, signature] = toTuple(entry);
|
|
238
|
+
return {
|
|
239
|
+
msg,
|
|
240
|
+
scheme: (scheme === '0x' ? 0 : Hex.toNumber(scheme)),
|
|
241
|
+
signature,
|
|
242
|
+
...(signer === '0x' ? {} : { signer }),
|
|
243
|
+
};
|
|
244
|
+
}
|
|
245
|
+
/**
|
|
246
|
+
* Converts a {@link ox#FrameSignature.Tuple} to a structured
|
|
247
|
+
* {@link ox#FrameSignature.FrameSignature}.
|
|
248
|
+
*
|
|
249
|
+
* Returns a named scheme and unpacks protocol signatures. Empty protocol signatures
|
|
250
|
+
* become unsigned entries. Rejects noncanonical encodings.
|
|
251
|
+
*
|
|
252
|
+
* @example
|
|
253
|
+
* ### Basic Usage
|
|
254
|
+
*
|
|
255
|
+
* Decode an arbitrary signature tuple.
|
|
256
|
+
*
|
|
257
|
+
* ```ts twoslash
|
|
258
|
+
* import { FrameSignature } from 'ox'
|
|
259
|
+
*
|
|
260
|
+
* const entry = FrameSignature.fromTuple([
|
|
261
|
+
* '0x',
|
|
262
|
+
* '0x',
|
|
263
|
+
* '0x',
|
|
264
|
+
* '0xaabb'
|
|
265
|
+
* ])
|
|
266
|
+
* // @log: { payload: '0x', scheme: 'arbitrary', signature: '0xaabb' }
|
|
267
|
+
* ```
|
|
268
|
+
*
|
|
269
|
+
* @param tuple - The signature tuple to convert.
|
|
270
|
+
* @returns The decoded signature entry.
|
|
271
|
+
*/
|
|
272
|
+
export function fromTuple(tuple) {
|
|
273
|
+
if (!Array.isArray(tuple) || tuple.length !== 4)
|
|
274
|
+
throw new InvalidError('Expected [scheme, signer, payload, signature].');
|
|
275
|
+
const [scheme, signer, payload, signature] = tuple;
|
|
276
|
+
Hex.assert(signer, { strict: true });
|
|
277
|
+
Hex.assert(signature, { strict: true });
|
|
278
|
+
if (signature.length % 2 !== 0)
|
|
279
|
+
throw new InvalidError('signature must contain whole bytes.');
|
|
280
|
+
if (scheme !== '0x' && scheme !== '0x01' && scheme !== '0x02')
|
|
281
|
+
throw new InvalidError('Expected a canonical scheme encoding: empty bytes, 0x01, or 0x02.');
|
|
282
|
+
const metadata = { ...(signer === '0x' ? {} : { signer }), payload };
|
|
283
|
+
if (scheme === '0x') {
|
|
284
|
+
if (signer !== '0x')
|
|
285
|
+
throw new InvalidError('Arbitrary signatures cannot specify a signer.');
|
|
286
|
+
return from({ payload, scheme: 'arbitrary', signature });
|
|
287
|
+
}
|
|
288
|
+
if (signature === '0x')
|
|
289
|
+
return scheme === '0x01'
|
|
290
|
+
? from({ ...metadata, scheme: 'secp256k1' })
|
|
291
|
+
: from({ ...metadata, scheme: 'p256' });
|
|
292
|
+
if (Hex.size(signature) !== (scheme === '0x01' ? 65 : 128))
|
|
293
|
+
throw new InvalidError('Invalid protocol signature length.');
|
|
294
|
+
if (scheme === '0x01') {
|
|
295
|
+
if (Hex.toNumber(Hex.slice(signature, 0, 1)) > 1)
|
|
296
|
+
throw new InvalidError('Recovery parity must be 0 or 1.');
|
|
297
|
+
return from({
|
|
298
|
+
...metadata,
|
|
299
|
+
scheme: 'secp256k1',
|
|
300
|
+
signature: Signature.fromRecoveredBytes(Hex.toBytes(signature)),
|
|
301
|
+
});
|
|
302
|
+
}
|
|
303
|
+
const s = Hex.slice(signature, 32, 64);
|
|
304
|
+
if (Hex.toBigInt(s) > p256N / 2n)
|
|
305
|
+
throw new InvalidError('P-256 wire signatures require low-s.');
|
|
306
|
+
return from({
|
|
307
|
+
...metadata,
|
|
308
|
+
publicKey: {
|
|
309
|
+
prefix: 4,
|
|
310
|
+
x: Hex.slice(signature, 64, 96),
|
|
311
|
+
y: Hex.slice(signature, 96, 128),
|
|
312
|
+
},
|
|
313
|
+
scheme: 'p256',
|
|
314
|
+
signature: { r: Hex.slice(signature, 0, 32), s },
|
|
315
|
+
});
|
|
316
|
+
}
|
|
317
|
+
/**
|
|
318
|
+
* Converts a {@link ox#FrameSignature.FrameSignature} to its RLP-ready
|
|
319
|
+
* {@link ox#FrameSignature.Tuple}.
|
|
320
|
+
*
|
|
321
|
+
* Encodes numeric scheme identifiers and packs protocol signatures without mutating
|
|
322
|
+
* the entry. Omitted protocol signatures become empty bytes.
|
|
323
|
+
*
|
|
324
|
+
* @example
|
|
325
|
+
* ### Basic Usage
|
|
326
|
+
*
|
|
327
|
+
* Encode arbitrary witness bytes with the default scheme and payload.
|
|
328
|
+
*
|
|
329
|
+
* ```ts twoslash
|
|
330
|
+
* import { FrameSignature } from 'ox'
|
|
331
|
+
*
|
|
332
|
+
* const entry = FrameSignature.from('0xaabb')
|
|
333
|
+
* const tuple = FrameSignature.toTuple(entry)
|
|
334
|
+
* // @log: ['0x', '0x', '0x', '0xaabb']
|
|
335
|
+
* ```
|
|
336
|
+
*
|
|
337
|
+
* @param entry - The signature entry to convert.
|
|
338
|
+
* @returns The encoded signature tuple.
|
|
339
|
+
*/
|
|
340
|
+
export function toTuple(entry) {
|
|
341
|
+
assert(entry);
|
|
342
|
+
const scheme = typeof entry.scheme === 'string' ? schemes[entry.scheme] : entry.scheme;
|
|
343
|
+
const signature = (() => {
|
|
344
|
+
switch (entry.scheme) {
|
|
345
|
+
case 0:
|
|
346
|
+
case 'arbitrary':
|
|
347
|
+
return entry.signature;
|
|
348
|
+
case 1:
|
|
349
|
+
case 'secp256k1':
|
|
350
|
+
return entry.signature === undefined
|
|
351
|
+
? '0x'
|
|
352
|
+
: Hex.fromBytes(Signature.toRecoveredBytes(entry.signature));
|
|
353
|
+
case 2:
|
|
354
|
+
case 'p256': {
|
|
355
|
+
if (entry.signature === undefined)
|
|
356
|
+
return '0x';
|
|
357
|
+
const { publicKey, signature } = entry;
|
|
358
|
+
const s = Hex.toBigInt(signature.s);
|
|
359
|
+
return Hex.concat(Hex.fromNumber(Hex.toBigInt(signature.r), { size: 32 }), Hex.fromNumber(s > p256N / 2n ? p256N - s : s, { size: 32 }), Hex.fromNumber(Hex.toBigInt(publicKey.x), { size: 32 }), Hex.fromNumber(Hex.toBigInt(publicKey.y), { size: 32 }));
|
|
360
|
+
}
|
|
361
|
+
}
|
|
362
|
+
})();
|
|
363
|
+
return [
|
|
364
|
+
scheme ? Hex.fromNumber(scheme, { size: 1 }) : '0x',
|
|
365
|
+
entry.signer ?? '0x',
|
|
366
|
+
entry.payload ?? '0x',
|
|
367
|
+
signature,
|
|
368
|
+
];
|
|
369
|
+
}
|
|
370
|
+
/**
|
|
371
|
+
* Returns whether a {@link ox#FrameSignature.FrameSignature} is structurally valid.
|
|
372
|
+
*
|
|
373
|
+
* Performs the same checks as {@link ox#FrameSignature.(assert:function)}, returning
|
|
374
|
+
* `false` instead of throwing. Does not verify that the signature authorizes a payload.
|
|
375
|
+
*
|
|
376
|
+
* @example
|
|
377
|
+
* ### Basic Usage
|
|
378
|
+
*
|
|
379
|
+
* Require a signature when checking a protocol entry.
|
|
380
|
+
*
|
|
381
|
+
* ```ts twoslash
|
|
382
|
+
* import { FrameSignature } from 'ox'
|
|
383
|
+
*
|
|
384
|
+
* const entry = FrameSignature.from({ scheme: 'secp256k1' })
|
|
385
|
+
* const valid = FrameSignature.validate(entry, {
|
|
386
|
+
* signed: true
|
|
387
|
+
* })
|
|
388
|
+
* // @log: false
|
|
389
|
+
* ```
|
|
390
|
+
*
|
|
391
|
+
* @param entry - The signature entry to validate.
|
|
392
|
+
* @param options - Validation options.
|
|
393
|
+
* @returns Whether the entry is structurally valid.
|
|
394
|
+
*/
|
|
395
|
+
export function validate(entry, options = {}) {
|
|
396
|
+
try {
|
|
397
|
+
assert(entry, options);
|
|
398
|
+
return true;
|
|
399
|
+
}
|
|
400
|
+
catch {
|
|
401
|
+
return false;
|
|
402
|
+
}
|
|
403
|
+
}
|
|
404
|
+
/** Thrown when frame signature metadata or encoding is invalid. */
|
|
405
|
+
export class InvalidError extends Errors.BaseError {
|
|
406
|
+
name = 'FrameSignature.InvalidError';
|
|
407
|
+
constructor(details) {
|
|
408
|
+
super('Invalid frame signature.', { details });
|
|
409
|
+
}
|
|
410
|
+
}
|
|
411
|
+
//# sourceMappingURL=FrameSignature.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"FrameSignature.js","sourceRoot":"","sources":["../../src/core/FrameSignature.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,OAAO,MAAM,cAAc,CAAA;AACvC,OAAO,KAAK,MAAM,MAAM,aAAa,CAAA;AACrC,OAAO,KAAK,GAAG,MAAM,UAAU,CAAA;AAC/B,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAA;AAExD,OAAO,KAAK,SAAS,MAAM,gBAAgB,CAAA;AAC3C,OAAO,KAAK,SAAS,MAAM,gBAAgB,CAAA;AAE3C,+CAA+C;AAC/C,MAAM,CAAC,MAAM,OAAO,GAAG,EAAE,SAAS,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,SAAS,EAAE,CAAC,EAAW,CAAA;AA6EvE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2CG;AACH,MAAM,UAAU,MAAM,CACpB,KAAqB,EACrB,UAA0B,EAAE;IAE5B,MAAM,MAAM,GACV,OAAO,KAAK,CAAC,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAA;IACzE,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,MAAM,GAAG,CAAC,IAAI,MAAM,GAAG,CAAC;QACvD,MAAM,IAAI,YAAY,CAAC,+BAA+B,CAAC,CAAA;IACzD,IAAI,MAAM,KAAK,CAAC,IAAI,KAAK,CAAC,MAAM,KAAK,SAAS;QAC5C,MAAM,IAAI,YAAY,CAAC,+CAA+C,CAAC,CAAA;IACzE,IAAI,KAAK,CAAC,MAAM,KAAK,SAAS;QAC5B,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,CAAA;IACjD,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,IAAI,IAAI,CAAA;IACrC,GAAG,CAAC,MAAM,CAAC,OAAO,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAA;IACrC,IACE,OAAO,KAAK,IAAI;QAChB,CAAC,OAAO,CAAC,MAAM,KAAK,EAAE,IAAI,GAAG,CAAC,QAAQ,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;QAEvD,MAAM,IAAI,YAAY,CAAC,oDAAoD,CAAC,CAAA;IAC9E,QAAQ,KAAK,CAAC,MAAM,EAAE,CAAC;QACrB,KAAK,CAAC,CAAC;QACP,KAAK,WAAW;YACd,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,SAAS,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAA;YAC7C,IAAI,KAAK,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,KAAK,CAAC;gBAClC,MAAM,IAAI,YAAY,CAAC,qCAAqC,CAAC,CAAA;YAC/D,OAAM;IACV,CAAC;IACD,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,IAAI,KAAK,CAAC,MAAM,KAAK,MAAM,EAAE,CAAC;QAClD,IAAI,KAAK,CAAC,SAAS,KAAK,SAAS,EAAE,CAAC;YAClC,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC,SAAS,EAAE,EAAE,UAAU,EAAE,KAAK,EAAE,CAAC,CAAA;YACxD,KAAK,MAAM,UAAU,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC;gBAChE,GAAG,CAAC,MAAM,CAAC,UAAU,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAA;gBACxC,IAAI,UAAU,KAAK,IAAI,IAAI,UAAU,CAAC,MAAM,GAAG,EAAE;oBAC/C,MAAM,IAAI,YAAY,CAAC,8CAA8C,CAAC,CAAA;YAC1E,CAAC;QACH,CAAC;QACD,IAAI,KAAK,CAAC,SAAS,KAAK,SAAS,IAAI,KAAK,CAAC,SAAS,KAAK,SAAS;YAChE,MAAM,IAAI,YAAY,CAAC,wCAAwC,CAAC,CAAA;IACpE,CAAC;IACD,IAAI,KAAK,CAAC,SAAS,KAAK,SAAS,EAAE,CAAC;QAClC,IAAI,OAAO,CAAC,MAAM;YAAE,MAAM,IAAI,YAAY,CAAC,wBAAwB,CAAC,CAAA;QACpE,OAAM;IACR,CAAC;IACD,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAA;IAC/C,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAA;IAC/C,IACE,CAAC,MAAM,KAAK,CAAC,IAAI,KAAK,CAAC,SAAS,CAAC,OAAO,KAAK,SAAS,CAAC;QACvD,KAAK,CAAC,SAAS,CAAC,OAAO,KAAK,CAAC;QAC7B,KAAK,CAAC,SAAS,CAAC,OAAO,KAAK,CAAC;QAE7B,MAAM,IAAI,YAAY,CAAC,kCAAkC,CAAC,CAAA;IAC5D,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC,SAAS,EAAE,EAAE,SAAS,EAAE,MAAM,KAAK,CAAC,EAAE,CAAC,CAAA;IAC9D,MAAM,CAAC,GAAG,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,CAAA;IACzC,MAAM,CAAC,GAAG,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,CAAA;IACzC,MAAM,KAAK,GAAG,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,KAAK,CAAA;IAC/C,IACE,CAAC,KAAK,EAAE;QACR,CAAC,IAAI,KAAK;QACV,CAAC,KAAK,EAAE;QACR,CAAC,IAAI,KAAK;QACV,CAAC,MAAM,KAAK,CAAC,IAAI,CAAC,GAAG,KAAK,GAAG,EAAE,CAAC;QAEhC,MAAM,IAAI,YAAY,CACpB,+DAA+D,CAChE,CAAA;AACL,CAAC;AAoBD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAyEG;AACH,MAAM,UAAU,IAAI,CAClB,KAAyB;IAEzB,MAAM,MAAM,GAAG,CACb,OAAO,KAAK,KAAK,QAAQ;QACvB,CAAC,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,WAAW,EAAE,SAAS,EAAE,KAAK,EAAE;QAC1D,CAAC,CAAC;YACE,GAAG,KAAK;YACR,OAAO,EAAE,KAAK,CAAC,OAAO,IAAI,IAAI;YAC9B,MAAM,EAAE,KAAK,CAAC,MAAM,IAAI,WAAW;SACpC,CACY,CAAA;IACnB,MAAM,CAAC,MAAM,CAAC,CAAA;IACd,OAAO,MAAgC,CAAA;AACzC,CAAC;AA4BD;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAM,UAAU,OAAO,CAAC,KAAU;IAChC,OAAO,SAAS,CAAC;QACf,KAAK,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,UAAU,CAAC,KAAK,CAAC,MAAM,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC;QACrE,KAAK,CAAC,MAAM,IAAI,IAAI;QACpB,KAAK,CAAC,GAAG;QACT,KAAK,CAAC,SAAS;KAChB,CAAC,CAAA;AACJ,CAAC;AAMD;;;;;;;;;;;;;;;GAeG;AACH,MAAM,UAAU,KAAK,CAAC,KAAqB;IACzC,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,SAAS,CAAC,GAAG,OAAO,CAAC,KAAK,CAAC,CAAA;IACvD,OAAO;QACL,GAAG;QACH,MAAM,EAAE,CAAC,MAAM,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAkB;QACrE,SAAS;QACT,GAAG,CAAC,MAAM,KAAK,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC;KACvC,CAAA;AACH,CAAC;AAMD;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,MAAM,UAAU,SAAS,CAAC,KAAY;IACpC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;QAC7C,MAAM,IAAI,YAAY,CAAC,gDAAgD,CAAC,CAAA;IAC1E,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,SAAS,CAAC,GAAG,KAAK,CAAA;IAClD,GAAG,CAAC,MAAM,CAAC,MAAM,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAA;IACpC,GAAG,CAAC,MAAM,CAAC,SAAS,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAA;IACvC,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,KAAK,CAAC;QAC5B,MAAM,IAAI,YAAY,CAAC,qCAAqC,CAAC,CAAA;IAC/D,IAAI,MAAM,KAAK,IAAI,IAAI,MAAM,KAAK,MAAM,IAAI,MAAM,KAAK,MAAM;QAC3D,MAAM,IAAI,YAAY,CACpB,mEAAmE,CACpE,CAAA;IACH,MAAM,QAAQ,GAAG,EAAE,GAAG,CAAC,MAAM,KAAK,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,OAAO,EAAE,CAAA;IACpE,IAAI,MAAM,KAAK,IAAI,EAAE,CAAC;QACpB,IAAI,MAAM,KAAK,IAAI;YACjB,MAAM,IAAI,YAAY,CAAC,+CAA+C,CAAC,CAAA;QACzE,OAAO,IAAI,CAAC,EAAE,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,SAAS,EAAE,CAAC,CAAA;IAC1D,CAAC;IACD,IAAI,SAAS,KAAK,IAAI;QACpB,OAAO,MAAM,KAAK,MAAM;YACtB,CAAC,CAAC,IAAI,CAAC,EAAE,GAAG,QAAQ,EAAE,MAAM,EAAE,WAAW,EAAE,CAAC;YAC5C,CAAC,CAAC,IAAI,CAAC,EAAE,GAAG,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CAAA;IAC3C,IAAI,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,MAAM,KAAK,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC;QACxD,MAAM,IAAI,YAAY,CAAC,oCAAoC,CAAC,CAAA;IAC9D,IAAI,MAAM,KAAK,MAAM,EAAE,CAAC;QACtB,IAAI,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,SAAS,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC;YAC9C,MAAM,IAAI,YAAY,CAAC,iCAAiC,CAAC,CAAA;QAC3D,OAAO,IAAI,CAAC;YACV,GAAG,QAAQ;YACX,MAAM,EAAE,WAAW;YACnB,SAAS,EAAE,SAAS,CAAC,kBAAkB,CAAC,GAAG,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;SAChE,CAAC,CAAA;IACJ,CAAC;IACD,MAAM,CAAC,GAAG,GAAG,CAAC,KAAK,CAAC,SAAS,EAAE,EAAE,EAAE,EAAE,CAAC,CAAA;IACtC,IAAI,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,KAAK,GAAG,EAAE;QAC9B,MAAM,IAAI,YAAY,CAAC,sCAAsC,CAAC,CAAA;IAChE,OAAO,IAAI,CAAC;QACV,GAAG,QAAQ;QACX,SAAS,EAAE;YACT,MAAM,EAAE,CAAC;YACT,CAAC,EAAE,GAAG,CAAC,KAAK,CAAC,SAAS,EAAE,EAAE,EAAE,EAAE,CAAC;YAC/B,CAAC,EAAE,GAAG,CAAC,KAAK,CAAC,SAAS,EAAE,EAAE,EAAE,GAAG,CAAC;SACjC;QACD,MAAM,EAAE,MAAM;QACd,SAAS,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,KAAK,CAAC,SAAS,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE;KACjD,CAAC,CAAA;AACJ,CAAC;AAWD;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,MAAM,UAAU,OAAO,CAAC,KAAqB;IAC3C,MAAM,CAAC,KAAK,CAAC,CAAA;IACb,MAAM,MAAM,GACV,OAAO,KAAK,CAAC,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAA;IACzE,MAAM,SAAS,GAAG,CAAC,GAAG,EAAE;QACtB,QAAQ,KAAK,CAAC,MAAM,EAAE,CAAC;YACrB,KAAK,CAAC,CAAC;YACP,KAAK,WAAW;gBACd,OAAO,KAAK,CAAC,SAAS,CAAA;YACxB,KAAK,CAAC,CAAC;YACP,KAAK,WAAW;gBACd,OAAO,KAAK,CAAC,SAAS,KAAK,SAAS;oBAClC,CAAC,CAAC,IAAI;oBACN,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,SAAS,CAAC,gBAAgB,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAA;YAChE,KAAK,CAAC,CAAC;YACP,KAAK,MAAM,CAAC,CAAC,CAAC;gBACZ,IAAI,KAAK,CAAC,SAAS,KAAK,SAAS;oBAAE,OAAO,IAAI,CAAA;gBAC9C,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,GAAG,KAAK,CAAA;gBACtC,MAAM,CAAC,GAAG,GAAG,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,CAAA;gBACnC,OAAO,GAAG,CAAC,MAAM,CACf,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,EACvD,GAAG,CAAC,UAAU,CAAC,CAAC,GAAG,KAAK,GAAG,EAAE,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,EAC5D,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,EACvD,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,CACxD,CAAA;YACH,CAAC;QACH,CAAC;IACH,CAAC,CAAC,EAAE,CAAA;IACJ,OAAO;QACL,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,UAAU,CAAC,MAAM,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI;QACnD,KAAK,CAAC,MAAM,IAAI,IAAI;QACpB,KAAK,CAAC,OAAO,IAAI,IAAI;QACrB,SAAS;KACV,CAAA;AACH,CAAC;AAWD;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,MAAM,UAAU,QAAQ,CACtB,KAAqB,EACrB,UAA0B,EAAE;IAE5B,IAAI,CAAC;QACH,MAAM,CAAC,KAAK,EAAE,OAAO,CAAC,CAAA;QACtB,OAAO,IAAI,CAAA;IACb,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAA;IACd,CAAC;AACH,CAAC;AAMD,mEAAmE;AACnE,MAAM,OAAO,YAAa,SAAQ,MAAM,CAAC,SAAS;IAC9B,IAAI,GAAG,6BAA6B,CAAA;IACtD,YAAY,OAAe;QACzB,KAAK,CAAC,0BAA0B,EAAE,EAAE,OAAO,EAAE,CAAC,CAAA;IAChD,CAAC;CACF"}
|
|
@@ -2,19 +2,21 @@ import type * as AccessList from './AccessList.js';
|
|
|
2
2
|
import type * as Address from './Address.js';
|
|
3
3
|
import * as Authorization from './Authorization.js';
|
|
4
4
|
import type * as Errors from './Errors.js';
|
|
5
|
+
import * as Frame from './Frame.js';
|
|
6
|
+
import * as FrameSignature from './FrameSignature.js';
|
|
5
7
|
import * as Hex from './Hex.js';
|
|
6
8
|
import type { Compute, OneOf, UnionCompute } from './internal/types.js';
|
|
7
9
|
import * as Signature from './Signature.js';
|
|
8
10
|
/**
|
|
9
11
|
* A Transaction as defined in the [Execution API specification](https://github.com/ethereum/execution-apis/blob/main/src/schemas/transaction.yaml).
|
|
10
12
|
*/
|
|
11
|
-
export type Transaction<pending extends boolean = false, bigintType = bigint, numberType = number> = UnionCompute<OneOf<Legacy<pending, bigintType, numberType> | Eip1559<pending, bigintType, numberType> | Eip2930<pending, bigintType, numberType> | Eip4844<pending, bigintType, numberType> | Eip7702<pending, bigintType, numberType> | (Base & {
|
|
13
|
+
export type Transaction<pending extends boolean = false, bigintType = bigint, numberType = number> = UnionCompute<OneOf<Legacy<pending, bigintType, numberType> | Eip1559<pending, bigintType, numberType> | Eip2930<pending, bigintType, numberType> | Eip4844<pending, bigintType, numberType> | Eip7702<pending, bigintType, numberType> | Eip8141<pending, bigintType, numberType> | (Base & {
|
|
12
14
|
type: Hex.Hex;
|
|
13
15
|
})>>;
|
|
14
16
|
/**
|
|
15
17
|
* An RPC Transaction as defined in the [Execution API specification](https://github.com/ethereum/execution-apis/blob/main/src/schemas/transaction.yaml).
|
|
16
18
|
*/
|
|
17
|
-
export type Rpc<pending extends boolean = false> = UnionCompute<OneOf<LegacyRpc<pending> | Eip1559Rpc<pending> | Eip2930Rpc<pending> | Eip4844Rpc<pending> | Eip7702Rpc<pending> | (BaseRpc & {
|
|
19
|
+
export type Rpc<pending extends boolean = false> = UnionCompute<OneOf<LegacyRpc<pending> | Eip1559Rpc<pending> | Eip2930Rpc<pending> | Eip4844Rpc<pending> | Eip7702Rpc<pending> | Eip8141Rpc<pending> | (BaseRpc & {
|
|
18
20
|
type: Hex.Hex;
|
|
19
21
|
})>>;
|
|
20
22
|
/** Base properties of a Transaction as defined in the [Execution API specification](https://github.com/ethereum/execution-apis/blob/main/src/schemas/transaction.yaml). */
|
|
@@ -108,6 +110,27 @@ export type Eip7702<pending extends boolean = false, bigintType = bigint, number
|
|
|
108
110
|
}>;
|
|
109
111
|
/** An RPC [EIP-7702](https://eips.ethereum.org/EIPS/eip-7702) Transaction as defined in the [Execution API specification](https://github.com/ethereum/execution-apis/blob/main/src/schemas/transaction.yaml). */
|
|
110
112
|
export type Eip7702Rpc<pending extends boolean = false> = Compute<Eip7702<pending, Hex.Hex, Hex.Hex, ToRpcType['eip7702']>>;
|
|
113
|
+
/** An EIP-8141 frame transaction. */
|
|
114
|
+
export type Eip8141<pending extends boolean = false, bigintType = bigint, numberType = number, type extends string = 'eip8141'> = Compute<Omit<Base<type, pending, bigintType, numberType>, 'chainId' | 'r' | 's' | 'v' | 'yParity'> & {
|
|
115
|
+
/** Versioned blob hashes. */
|
|
116
|
+
blobVersionedHashes: readonly Hex.Hex[];
|
|
117
|
+
/** Chain ID, retaining bigint precision when needed. */
|
|
118
|
+
chainId: numberType | bigintType;
|
|
119
|
+
/** Frames in execution order. */
|
|
120
|
+
frames: readonly ([bigintType] extends [Hex.Hex] ? Frame.Rpc : Frame.Frame<bigintType>)[];
|
|
121
|
+
/** Effective gas price. */
|
|
122
|
+
gasPrice?: bigintType | undefined;
|
|
123
|
+
/** Maximum fee per blob gas. */
|
|
124
|
+
maxFeePerBlobGas: bigintType;
|
|
125
|
+
/** Maximum fee per gas. */
|
|
126
|
+
maxFeePerGas: bigintType;
|
|
127
|
+
/** Maximum priority fee per gas. */
|
|
128
|
+
maxPriorityFeePerGas: bigintType;
|
|
129
|
+
/** Frame signature entries. */
|
|
130
|
+
signatures: readonly ([bigintType] extends [Hex.Hex] ? FrameSignature.Rpc : FrameSignature.FrameSignature)[];
|
|
131
|
+
}>;
|
|
132
|
+
/** An EIP-8141 RPC transaction. */
|
|
133
|
+
export type Eip8141Rpc<pending extends boolean = false> = Eip8141<pending, Hex.Hex, Hex.Hex, '0x6'>;
|
|
111
134
|
/** An legacy Transaction as defined in the [Execution API specification](https://github.com/ethereum/execution-apis/blob/main/src/schemas/transaction.yaml). */
|
|
112
135
|
export type Legacy<pending extends boolean = false, bigintType = bigint, numberType = number, type extends string = 'legacy'> = Compute<Omit<Base<type, pending, bigintType, numberType>, 'chainId' | 'v' | 'yParity'> & {
|
|
113
136
|
chainId?: numberType | undefined;
|
|
@@ -127,6 +150,7 @@ export declare const toRpcType: {
|
|
|
127
150
|
readonly eip1559: "0x2";
|
|
128
151
|
readonly eip4844: "0x3";
|
|
129
152
|
readonly eip7702: "0x4";
|
|
153
|
+
readonly eip8141: "0x6";
|
|
130
154
|
};
|
|
131
155
|
/** Type to RPC Type mapping. */
|
|
132
156
|
export type ToRpcType = typeof toRpcType & {
|
|
@@ -139,6 +163,7 @@ export declare const fromRpcType: {
|
|
|
139
163
|
readonly '0x2': "eip1559";
|
|
140
164
|
readonly '0x3': "eip4844";
|
|
141
165
|
readonly '0x4': "eip7702";
|
|
166
|
+
readonly '0x6': "eip8141";
|
|
142
167
|
};
|
|
143
168
|
/** RPC Type to Type mapping. */
|
|
144
169
|
export type FromRpcType = typeof fromRpcType & {
|
|
@@ -183,7 +208,7 @@ export declare namespace fromRpc {
|
|
|
183
208
|
type Options<pending extends boolean = false> = {
|
|
184
209
|
pending?: pending | boolean | undefined;
|
|
185
210
|
};
|
|
186
|
-
type ErrorType = Signature.extract.ErrorType | Errors.GlobalErrorType;
|
|
211
|
+
type ErrorType = Signature.extract.ErrorType | Frame.fromRpc.ErrorType | FrameSignature.fromRpc.ErrorType | Errors.GlobalErrorType;
|
|
187
212
|
}
|
|
188
213
|
/**
|
|
189
214
|
* Converts an {@link ox#Transaction.Transaction} to an {@link ox#Transaction.Rpc}.
|
|
@@ -227,6 +252,6 @@ export declare namespace toRpc {
|
|
|
227
252
|
type Options<pending extends boolean = false> = {
|
|
228
253
|
pending?: pending | boolean | undefined;
|
|
229
254
|
};
|
|
230
|
-
type ErrorType = Signature.extract.ErrorType | Errors.GlobalErrorType;
|
|
255
|
+
type ErrorType = Signature.extract.ErrorType | Frame.toRpc.ErrorType | FrameSignature.toRpc.ErrorType | Errors.GlobalErrorType;
|
|
231
256
|
}
|
|
232
257
|
//# sourceMappingURL=Transaction.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Transaction.d.ts","sourceRoot":"","sources":["../../src/core/Transaction.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"Transaction.d.ts","sourceRoot":"","sources":["../../src/core/Transaction.ts"],"names":[],"mappings":"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"}
|
package/dist/core/Transaction.js
CHANGED
|
@@ -1,4 +1,6 @@
|
|
|
1
1
|
import * as Authorization from './Authorization.js';
|
|
2
|
+
import * as Frame from './Frame.js';
|
|
3
|
+
import * as FrameSignature from './FrameSignature.js';
|
|
2
4
|
import * as Quantity from './internal/quantity.js';
|
|
3
5
|
import * as Signature from './Signature.js';
|
|
4
6
|
/** Type to RPC Type mapping. */
|
|
@@ -8,6 +10,7 @@ export const toRpcType = {
|
|
|
8
10
|
eip1559: '0x2',
|
|
9
11
|
eip4844: '0x3',
|
|
10
12
|
eip7702: '0x4',
|
|
13
|
+
eip8141: '0x6',
|
|
11
14
|
};
|
|
12
15
|
/** RPC Type to Type mapping. */
|
|
13
16
|
export const fromRpcType = {
|
|
@@ -16,6 +19,7 @@ export const fromRpcType = {
|
|
|
16
19
|
'0x2': 'eip1559',
|
|
17
20
|
'0x3': 'eip4844',
|
|
18
21
|
'0x4': 'eip7702',
|
|
22
|
+
'0x6': 'eip8141',
|
|
19
23
|
};
|
|
20
24
|
/**
|
|
21
25
|
* Converts an {@link ox#Transaction.Rpc} to an {@link ox#Transaction.Transaction}.
|
|
@@ -54,7 +58,7 @@ export const fromRpcType = {
|
|
|
54
58
|
export function fromRpc(transaction, _options = {}) {
|
|
55
59
|
if (!transaction)
|
|
56
60
|
return null;
|
|
57
|
-
const signature = Signature.extract(transaction);
|
|
61
|
+
const signature = transaction.type === '0x6' ? undefined : Signature.extract(transaction);
|
|
58
62
|
const transaction_ = {
|
|
59
63
|
...transaction,
|
|
60
64
|
...signature,
|
|
@@ -77,8 +81,21 @@ export function fromRpc(transaction, _options = {}) {
|
|
|
77
81
|
transaction_.value = BigInt(transaction.value ?? 0n);
|
|
78
82
|
if (transaction.authorizationList)
|
|
79
83
|
transaction_.authorizationList = Authorization.fromRpcList(transaction.authorizationList);
|
|
80
|
-
if (transaction.chainId)
|
|
81
|
-
|
|
84
|
+
if (transaction.chainId) {
|
|
85
|
+
const chainId = BigInt(transaction.chainId);
|
|
86
|
+
transaction_.chainId =
|
|
87
|
+
transaction.type === '0x6' && chainId > BigInt(Number.MAX_SAFE_INTEGER)
|
|
88
|
+
? chainId
|
|
89
|
+
: Number(chainId);
|
|
90
|
+
}
|
|
91
|
+
if (transaction.type === '0x6' && transaction.frames) {
|
|
92
|
+
transaction_.frames = transaction.frames.map(Frame.fromRpc);
|
|
93
|
+
transaction_.signatures = (transaction.signatures ?? []).map(FrameSignature.fromRpc);
|
|
94
|
+
delete transaction_.r;
|
|
95
|
+
delete transaction_.s;
|
|
96
|
+
delete transaction_.v;
|
|
97
|
+
delete transaction_.yParity;
|
|
98
|
+
}
|
|
82
99
|
if (transaction.gasPrice)
|
|
83
100
|
transaction_.gasPrice = BigInt(transaction.gasPrice);
|
|
84
101
|
if (transaction.maxFeePerBlobGas)
|
|
@@ -155,13 +172,17 @@ export function toRpc(transaction, _options) {
|
|
|
155
172
|
: Quantity.fromNumberish(transaction.transactionIndex);
|
|
156
173
|
rpc.type = toRpcType[transaction.type] ?? transaction.type;
|
|
157
174
|
rpc.value = Quantity.fromNumberish(transaction.value ?? 0n);
|
|
175
|
+
if (transaction.type === 'eip8141' && transaction.frames) {
|
|
176
|
+
rpc.frames = transaction.frames.map(Frame.toRpc);
|
|
177
|
+
rpc.signatures = transaction.signatures.map(FrameSignature.toRpc);
|
|
178
|
+
}
|
|
158
179
|
if (transaction.accessList)
|
|
159
180
|
rpc.accessList = transaction.accessList;
|
|
160
181
|
if (transaction.authorizationList)
|
|
161
182
|
rpc.authorizationList = Authorization.toRpcList(transaction.authorizationList);
|
|
162
183
|
if (transaction.blobVersionedHashes)
|
|
163
184
|
rpc.blobVersionedHashes = transaction.blobVersionedHashes;
|
|
164
|
-
if (transaction.chainId)
|
|
185
|
+
if (transaction.chainId !== undefined)
|
|
165
186
|
rpc.chainId = Quantity.fromNumberish(transaction.chainId);
|
|
166
187
|
if (transaction.gasPrice !== undefined)
|
|
167
188
|
rpc.gasPrice = Quantity.fromNumberish(transaction.gasPrice);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Transaction.js","sourceRoot":"","sources":["../../src/core/Transaction.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,aAAa,MAAM,oBAAoB,CAAA;
|
|
1
|
+
{"version":3,"file":"Transaction.js","sourceRoot":"","sources":["../../src/core/Transaction.ts"],"names":[],"mappings":"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"}
|