Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
83 commits
Select commit Hold shift + click to select a range
79d6dab
wip: v1
jxom May 7, 2026
e3a8c0f
chore: format exports:update.ts
jxom May 7, 2026
be3841e
chore: upgrade noble and scure deps to v2
jxom May 8, 2026
cfe4811
chore: changeset for noble v2 upgrade
jxom May 8, 2026
ad13d33
chore: upgrade noble and scure deps to v2
jxom May 8, 2026
47b1346
fix: include blockTimestamp on transactions
jxom May 8, 2026
395180f
chore: switch to zile publish helpers and ignore tasks/
jxom May 11, 2026
bad595c
fix(mnemonic): return Bytes by default from toPrivateKey to match dec…
jxom May 12, 2026
8c0ea67
fix(keystore): use pbkdf2Async in toKeyAsync to avoid blocking the ma…
jxom May 12, 2026
bc09464
fix(tempo): make PoolId.from order-independent
jxom May 12, 2026
2b04814
fix(tempo): generate 192-bit nonceKey when 'random' is requested
jxom May 12, 2026
b38dbd4
fix(keystore): honor caller-provided p and r in scryptAsync
jxom May 12, 2026
c624ede
fix(abi): honor anonymous flag in AbiEvent encode/decode
jxom May 12, 2026
f8d4595
fix(crypto): pad WebCryptoP256.verify r/s to 32 bytes
jxom May 12, 2026
2b32e0c
fix(tempo): normalize AuthorizationTempo.from signature option throug…
jxom May 12, 2026
51c0cc8
fix(publickey): reject malformed shape when compressed option is set
jxom May 12, 2026
08dae9a
fix(tempo): apply AuthorizationTempo.from signature normalization
jxom May 12, 2026
f05efd2
fix(publickey): validate SEC1 prefix in fromHex/fromBytes
jxom May 12, 2026
feb35d9
fix(value): validate decimals and use string-carry rounding in from()
jxom May 12, 2026
8b50bd3
fix(abi): assert AbiConstructor.decode bytecode prefix
jxom May 12, 2026
14af5bc
fix(bls): validate input shape in Bls.aggregate
jxom May 12, 2026
1bd3e52
fix(tempo): validate envelope-type prefix in TxEnvelopeTempo.deserialize
jxom May 12, 2026
302110c
fix(webauthn): decode clientDataJSON as UTF-8 in Authentication.sign
jxom May 12, 2026
d00fdaf
fix(transactions): remove duplicate maxPriorityFeePerGas assignment i…
jxom May 12, 2026
9c6707d
fix(blspoint): honor group argument and assert byte length in fromBytes
jxom May 12, 2026
726d02f
fix(keystore): reject trivially weak PBKDF2 and scrypt parameters
jxom May 12, 2026
e94c7ed
fix(webauthn): honor hash option in Authentication.getSignPayload
jxom May 12, 2026
62233c4
fix(tempo): emit `calls[].input` from Transaction.toRpc to match Temp…
jxom May 12, 2026
c5c6a20
fix(webauthn): document Registration.verify attestation default as 'n…
jxom May 12, 2026
ded65ec
test(abi): update AbiConstructor snapshots for BytecodeMismatchError
jxom May 12, 2026
58f78e8
fix(keystore): apply KDF parameter validation to pbkdf2/scrypt entry …
jxom May 12, 2026
4b587b1
fix(transactions): clone caller input in TransactionRequest.fromRpc t…
jxom May 12, 2026
952a176
fix(tempo): apply AuthorizationTempo.from signature normalization (re…
jxom May 12, 2026
b896c48
fix(abi): wrap PositionOutOfBoundsError as DataSizeTooSmallError in A…
jxom May 12, 2026
135469c
fix(authorization): return List instead of TupleList from fromTupleLi…
jxom May 12, 2026
4e0d154
fix(webauthn): reject invalid AT/ED flag structures in Authentication…
jxom May 12, 2026
a67a329
fix(transactions): validate storage keys strictly in AccessList.fromT…
jxom May 12, 2026
62a09af
fix(webauthn): reject invalid AT/ED flag structures in Authentication…
jxom May 12, 2026
2043ea0
fix(abi): validate fixed-array length and pad string[]/bytes[] in Abi…
jxom May 12, 2026
708e094
fix(transactions): preserve transactionIndex 0 in Transaction.toRpc
jxom May 12, 2026
f2daa75
fix(abi): always hash indexed string/bytes topics to hex in AbiEvent
jxom May 12, 2026
9fdaeee
fix(block): throw MissingFieldError on required fields in fromRpc and…
jxom May 12, 2026
c2d1848
fix(kzg): preserve receiver semantics in Kzg.from
jxom May 12, 2026
362490b
fix(abi): throw on selector-only calldata, fast event partition, reje…
jxom May 12, 2026
c2ed87d
fix(abi): hoist normalizeSignature loop counter to allow trailing-gar…
jxom May 12, 2026
742fbc9
fix(crypto): typed getSharedSecret error and JSDoc corrections
jxom May 12, 2026
6f98540
fix(abi): drop string[]/bytes[] padding change to keep parity with viem
jxom May 12, 2026
8ce5e7b
fix(filter): preserve explicit address: null and topics: null in toRpc
jxom May 12, 2026
fd27456
fix(validator-data): assert validator address in encode
jxom May 12, 2026
916fd9c
fix(bloom): validate bloom length in contains
jxom May 12, 2026
028c57b
fix(abi): revert normalizeSignature trailing-garbage check (clashes w…
jxom May 12, 2026
8426949
fix(types): satisfy strict types in block-state regression tests
jxom May 12, 2026
65141bb
test(abi): update decode snapshots after wrapping PositionOutOfBounds…
jxom May 12, 2026
b010f64
revert(block): drop MissingFieldError throw from fromRpc, keep totalD…
jxom May 12, 2026
88fa2d0
revert(tempo): keep `data` (not `input`) on calls[] in Transaction.toRpc
jxom May 12, 2026
b122165
fix(bytes,rlp): even-pad odd-nibble hex from `Hex.fromNumber` before …
jxom May 12, 2026
642423c
fix(transactions): preserve legacy `v` from RPC in `Transaction.fromRpc`
jxom May 12, 2026
f646084
chore(tests): refresh Bytes, Base58, PublicKey snapshots after error …
jxom May 12, 2026
0ea1057
fix(transactions): preserve or derive EIP-155 `v` in `TxEnvelopeLegac…
jxom May 12, 2026
ef8a468
fix(transactions): honor `input` alias in `TxEnvelopeEip4844.serialize`
jxom May 12, 2026
f1a5769
fix(transactions): tighten EIP-4844 blob/sidecar validation and deser…
jxom May 12, 2026
c09b14e
fix(transactions): add missing `TxEnvelopeEip7702.toRpc`
jxom May 12, 2026
c242993
feat(account-proof): add `fromRpc`/`toRpc` converters
jxom May 12, 2026
f53c67d
feat(typed-data,bloom): per-call type-hash memoization and prepared-b…
jxom May 12, 2026
64e18e3
feat(fee,solidity,personal-message): add converters/helpers and hoist…
jxom May 12, 2026
04683c8
perf(erc4337): hoist `UserOperation.hash` ABI descriptors and share `…
jxom May 12, 2026
ed3980e
perf(erc6492): cache `address, bytes, bytes` ABI parameters at module…
jxom May 12, 2026
e8d9231
perf(erc7821): cache `Calls` and `Execute` ABI parameters at module s…
jxom May 12, 2026
bc9c64e
refactor(erc8021): share schema-0/1 codes-tail decode in `Attribution…
jxom May 12, 2026
e9c59bd
test: refresh export snapshots and add EIP-4844 envelope snapshot
jxom May 12, 2026
377784f
test: align fixtures and snapshots with wave-0 correctness fixes
jxom May 12, 2026
326adfc
chore: drop wave prefix from changeset filenames
jxom May 12, 2026
5620bd4
Merge branch 'v1-0' into v1
jxom May 12, 2026
2b97654
refactor(internal): rename quantity helpers to `toBigInt` / `fromBigI…
jxom May 12, 2026
0077cba
fix(ci): repair prerelease prepublish order and silence false-positiv…
jxom May 12, 2026
76b9145
ci(prerelease): match zile template (`pnpm run build` + `pkg-pr-new p…
jxom May 12, 2026
94d3e4b
fix(tsdoc): mark internal helpers `packUint128Pair` and `decodeCodesT…
jxom May 12, 2026
fe923fd
feat: v1-1 (#233)
jxom May 13, 2026
2715379
fix(cursor): correct `_touch` accounting for non-monotonic reads
jxom May 13, 2026
215ca61
fix(ci): restore `zile publish:prepare` step in prerelease workflow
jxom May 13, 2026
62263b8
fix(rlp): mark internal helpers with `@internal` to satisfy `jsdoc/re…
jxom May 13, 2026
3ad7b2d
test: add fuzz testing foundation with `fast-check`
jxom May 13, 2026
1376e0b
feat(v1): `Parts` codecs and serialized-input `as` option for crypto …
jxom May 13, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
5 changes: 5 additions & 0 deletions .changeset/abi-anonymous-events.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
"ox": patch
---

Fixed `AbiEvent.encode` and `AbiEvent.decode` to honor the `anonymous` flag -- anonymous events no longer prepend or expect a selector topic.
5 changes: 5 additions & 0 deletions .changeset/abi-constructor-bytecode-prefix.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
"ox": patch
---

Fixed `AbiConstructor.decode` to assert that `data` begins with the provided `bytecode` and throw a new `BytecodeMismatchError` instead of silently returning garbage when the prefix does not match.
5 changes: 5 additions & 0 deletions .changeset/abi-event-hex-topic-normalization.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
"ox": patch
---

Fixed `AbiEvent.assertArgs` and `AbiEvent.encode` to always hash `string`/`bytes` indexed inputs to hex via `Hash.keccak256(value, { as: 'Hex' })`, so topic comparisons and emitted topics are reliably hex regardless of whether the input is a `Hex.Hex` or a `Bytes.Bytes`.
5 changes: 5 additions & 0 deletions .changeset/abi-function-selector-only-calldata.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
"ox": patch
---

Fixed `AbiFunction.decodeData` to throw `AbiParameters.DataSizeTooSmallError` when the calldata is exactly the 4-byte selector but the function declares inputs, instead of silently returning `undefined`.
5 changes: 5 additions & 0 deletions .changeset/abi-parameters-data-size-bound.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
"ox": patch
---

Fixed `AbiParameters.decode` to surface a `DataSizeTooSmallError` (with parameter context) instead of leaking a `Cursor.PositionOutOfBoundsError` when the encoded payload is shorter than the parameter list requires.
5 changes: 5 additions & 0 deletions .changeset/abi-parameters-encode-packed.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
"ox": patch
---

Fixed `AbiParameters.encodePacked` to validate that fixed-array lengths match the supplied value, throwing `ArrayLengthMismatchError` (e.g. for `uint256[2]` with three elements) instead of silently encoding the wrong arity.
5 changes: 5 additions & 0 deletions .changeset/account-proof-converters.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
"ox": minor
---

Added `AccountProof.fromRpc` and `AccountProof.toRpc` for converting between RPC and instantiated `AccountProof` shapes returned by `eth_getProof`.
5 changes: 5 additions & 0 deletions .changeset/address-keys-keystore-async-pbkdf2.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
"ox": patch
---

Fixed `Keystore.toKeyAsync` to use the async PBKDF2 implementation -- previously it called the synchronous `pbkdf2` helper and blocked the main thread when decrypting PBKDF2-backed keystores.
5 changes: 5 additions & 0 deletions .changeset/address-keys-keystore-kdf-validation.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
"ox": patch
---

Added validation of KDF parameters in `Keystore.pbkdf2`, `Keystore.pbkdf2Async`, `Keystore.scrypt`, and `Keystore.scryptAsync` -- PBKDF2 now requires `iterations` to be an integer `>= 1000`, and scrypt now requires `n` to be a power of two `>= 1024` with positive integer `r` and `p`, rejecting trivially weak parameters that previously produced formally valid but cryptographically insecure keystores.
5 changes: 5 additions & 0 deletions .changeset/address-keys-keystore-scrypt-async-pr.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
"ox": patch
---

Fixed `Keystore.scryptAsync` to honor caller-provided `p` and `r` options -- previously they were silently overridden with `p=8` and `r=1`, producing keystores that disagreed with the synchronous `Keystore.scrypt` for the same inputs.
5 changes: 5 additions & 0 deletions .changeset/address-keys-mnemonic-default.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
"ox": patch
---

Fixed `Mnemonic.toPrivateKey` to return `Bytes` by default to match its declared return type -- previously it returned a `Hex` string at runtime even though the default `as` was `'Bytes'`.
5 changes: 5 additions & 0 deletions .changeset/anchor-crypto-webcrypto-verify-padding.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
"ox": patch
---

Fixed `WebCryptoP256.verify` rejecting valid signatures whose `r` or `s` value has a leading zero byte by padding both components to 32 bytes.
5 changes: 5 additions & 0 deletions .changeset/anchor-publickey-assert-shape.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
"ox": patch
---

Fixed `PublicKey.assert` so it rejects objects missing `x`/`y` when the `compressed` option is set explicitly.
5 changes: 5 additions & 0 deletions .changeset/anchor-publickey-fromhex-validate.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
"ox": patch
---

Fixed `PublicKey.fromHex` and `PublicKey.fromBytes` so they reject deserialized public keys with an invalid SEC1 prefix.
5 changes: 5 additions & 0 deletions .changeset/block-state-block-fromrpc-required-fields.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
"ox": patch
---

Preserved `Block.fromRpc().totalDifficulty` as `undefined` instead of silently coercing missing values to `0n`.
5 changes: 5 additions & 0 deletions .changeset/block-state-bloom-contains-validate-length.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
"ox": patch
---

Made `Bloom.contains` validate the bloom argument length and throw `Bloom.InvalidBloomError` instead of silently returning `false` for malformed bloom inputs.
5 changes: 5 additions & 0 deletions .changeset/block-state-filter-torpc-address-null.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
"ox": patch
---

Made `Filter.toRpc` preserve explicit `address: null` (and `topics: null`) instead of stripping it via truthy checks.
5 changes: 5 additions & 0 deletions .changeset/block-state-quantity-converters.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
"ox": patch
---

Unified the RPC-quantity conversion blocks across `Block`, `BlockOverrides`, and `StateOverrides` behind an internal helper so optional bigint fields with explicit `'0x0'` (e.g. `baseFeePerGas: '0x0'` on a post-merge block) round-trip as `0n` instead of being silently dropped by the previous truthy checks.
5 changes: 5 additions & 0 deletions .changeset/block-state-typed-data-array-validation.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
"ox": patch
---

Validated array element types and fixed-array lengths in `TypedData.assert` and `TypedData.encodeField`, throwing `InvalidArrayError`/`InvalidArrayLengthError` instead of silently passing malformed input through to the encoder.
5 changes: 5 additions & 0 deletions .changeset/block-state-validator-data-validate-address.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
"ox": patch
---

Made `ValidatorData.encode` call `Address.assert` on the validator argument so malformed validator addresses are rejected instead of producing invalid ERC-191 payloads.
5 changes: 5 additions & 0 deletions .changeset/block-state-value-validation.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
"ox": patch
---

Tightened `Value.from` input validation to reject malformed numeric strings (`''`, `'.'`, `'-'`, `'-.'`) and to reject non-integer or negative `decimals`, and replaced `Number`/`Math.round` rounding with string-carry rounding so very long fractions no longer lose precision.
5 changes: 5 additions & 0 deletions .changeset/bloom-prepared.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
"ox": minor
---

Added `Bloom.prepare`, `Bloom.containsPrepared`, and `Bloom.containsHash` for membership checks against a precomputed bloom filter. Use `Bloom.prepare(bloom)` once and `Bloom.containsPrepared(prepared, input)` (or `Bloom.containsHash(prepared, hash)` when the caller already has the keccak hash) inside hot loops to avoid the per-call `Bytes.fromHex` allocation that `Bloom.contains` pays.
5 changes: 5 additions & 0 deletions .changeset/bytes-rlp-odd-length-pad.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
"ox": patch
---

Fixed `Bytes.fromNumber` and `Rlp.fromHex` rejecting valid odd-nibble hex output produced by `Hex.fromNumber` (e.g. `0x7`, `0x311`); both now even-pad before handing the value to the strict `Bytes.fromHex` parser.
5 changes: 5 additions & 0 deletions .changeset/cosekey-topublickey-bytes-options.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
"ox": minor
---

Added `returnByteLength` and `returnDecoded` options to `CoseKey.toPublicKey` and accepted `Uint8Array` input in addition to `Hex`.
5 changes: 5 additions & 0 deletions .changeset/crypto-bls-aggregate-validate.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
"ox": patch
---

Fixed `Bls.aggregate` to reject empty arrays and mixed G1/G2 input, and added a fast path that returns the input directly when only one point is supplied.
5 changes: 5 additions & 0 deletions .changeset/crypto-blspoint-frombytes-group.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
"ox": patch
---

Fixed `BlsPoint.fromBytes` to honor its declared `group` argument and assert the input length matches the requested G1 (48 bytes) or G2 (96 bytes) shape.
5 changes: 5 additions & 0 deletions .changeset/crypto-cosekey-validate-header.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
"ox": patch
---

Hardened `CoseKey.toPublicKey` to reject COSE_Key inputs with a non-P-256 `kty`, `alg`, or `crv` header, or with `x`/`y` byte arrays that are not exactly 32 bytes long.
5 changes: 5 additions & 0 deletions .changeset/crypto-extra-entropy-default-doc.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
"ox": patch
---

Documented `extraEntropy` on `Secp256k1.sign` and `P256.sign` correctly as `@default false` so the JSDoc matches the runtime default.
5 changes: 5 additions & 0 deletions .changeset/crypto-kzg-from-receiver.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
"ox": patch
---

Fixed `Kzg.from` to preserve `this` binding by wrapping method calls instead of destructuring, so class instances or method-style implementations work correctly.
5 changes: 5 additions & 0 deletions .changeset/crypto-serialized-inputs-and-as-option.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
"ox": minor
---

Added `as: 'Hex' | 'Bytes' | 'Object'` option to `Secp256k1.sign` / `getPublicKey` / `recoverPublicKey`, `P256.sign` / `getPublicKey` / `recoverPublicKey`, `WebCryptoP256.sign`, and `Bls.sign` / `getPublicKey` (default `'Object'` keeps existing behavior); plus accept `Hex.Hex | Bytes.Bytes | Signature.Signature` for `signature` params and `Hex.Hex | Bytes.Bytes | PublicKey.PublicKey` for `publicKey` params on `verify`, `recoverAddress`, `recoverPublicKey`, `getSharedSecret` across the same modules.
5 changes: 5 additions & 0 deletions .changeset/crypto-webcrypto-doc-corrections.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
"ox": patch
---

Documented `WebCryptoP256.sign` low-S normalization as always-on and corrected the `WebCryptoP256.createKeyPair` / `createKeyPairECDH` JSDoc to describe `publicKey` as a `PublicKey.PublicKey`.
5 changes: 5 additions & 0 deletions .changeset/crypto-webcrypto-shared-secret-typed-error.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
"ox": patch
---

Replaced the plain `Error` thrown by `WebCryptoP256.getSharedSecret` when given an ECDSA private key with a typed `WebCryptoP256.InvalidPrivateKeyAlgorithmError`.
5 changes: 5 additions & 0 deletions .changeset/erc4337-user-operation-from-packed-typing.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
"ox": patch
---

Narrowed `UserOperation.fromPacked` return type to `UserOperation<'0.7', true>` to reflect that the packed format does not carry v0.8 `authorization`.
5 changes: 5 additions & 0 deletions .changeset/erc4337-user-operation-gas-v08.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
"ox": patch
---

Added v0.8 EntryPoint support to `UserOperationGas` (and `RpcSchema.Bundler` via inheritance) by introducing `V08` and `RpcV08` aliases over the v0.7 gas shape.
5 changes: 5 additions & 0 deletions .changeset/erc4337-user-operation-v08-authorization.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
"ox": patch
---

Fixed `UserOperation.fromRpc` and `UserOperation.toRpc` to parse and serialize the v0.8 `authorization` field instead of dropping it.
5 changes: 5 additions & 0 deletions .changeset/erc6492-strip-magic-and-validate.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
"ox": patch
---

Fixed `SignatureErc6492.unwrap` to strip the trailing magic bytes before ABI-decoding, and made `SignatureErc6492.from` and `assert` validate object inputs by throwing the new `InvalidUnwrappedSignatureError` on malformed values.
5 changes: 5 additions & 0 deletions .changeset/erc7821-execute-structural-detection.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
"ox": patch
---

Replaced the exception-driven opData fallback in `Execute.decodeBatchOfBatchesData` with structural detection of the ABI head word, so malformed inputs surface as decode errors instead of being masked by the catch.
5 changes: 5 additions & 0 deletions .changeset/erc8010-assert-suffix-and-recovery.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
"ox": patch
---

Hardened ERC-8010 by validating the full unwrapped object in `SignatureErc8010.assert`, capping the suffix length parsed by `unwrap` against the wrapped size to reject overflowing inputs, and skipping `Secp256k1.recoverAddress` in `wrap` when `to` is already provided.
5 changes: 5 additions & 0 deletions .changeset/fee-helpers.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
"ox": minor
---

Added `Fee.fromHistoryRpc`, `Fee.toHistoryRpc`, `Fee.estimateMaxFeePerGas`, and `Fee.effectiveGasPrice` for converting between RPC/instantiated `FeeHistory` shapes and computing common EIP-1559 fee values.
5 changes: 5 additions & 0 deletions .changeset/hex-tobytes-buffer-pool-fix.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
"ox": patch
---

Fixed `Hex.toBytes` and `Bytes.fromHex` returning a `Uint8Array` view that aliased Node's shared `Buffer` pool memory, which broke callers that read `.buffer` (e.g. WebAuthn `attestationObject` round-trips).
5 changes: 5 additions & 0 deletions .changeset/parts-types-and-codecs.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
"ox": minor
---

Added `Signature.Parts`, `PublicKey.Parts`, and `BlsPoint.G1Parts` / `G2Parts` types with matching `toParts` / `fromParts` codecs.
5 changes: 5 additions & 0 deletions .changeset/promise-with-timeout-single-reject.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
"ox": patch
---

Fixed `RpcTransport.fromHttp` (via internal `withTimeout`) producing an unhandled rejection when the wrapped fetch threw a non-`AbortError` after the timeout setup ran.
5 changes: 5 additions & 0 deletions .changeset/provider-from-prototype.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
"ox": patch
---

Fixed `Provider.from` to preserve wrapped providers' prototype methods, accessors, and non-enumerable property descriptors instead of dropping them via object spread.
5 changes: 5 additions & 0 deletions .changeset/provider-from-strict-eip1193.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
"ox": patch
---

Fixed `Provider.from` to stop sniffing successful EIP-1193 payloads for a `jsonrpc` field and reparsing them as JSON-RPC envelopes.
5 changes: 5 additions & 0 deletions .changeset/rpc-response-from-validation.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
"ox": patch
---

Fixed `RpcResponse.from` crashing when called without a `request` option and missing `jsonrpc` -- it now validates the envelope and throws `RpcResponse.ParseError` for missing `id`/`jsonrpc`.
5 changes: 5 additions & 0 deletions .changeset/rpc-response-parse-error-preserve.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
"ox": patch
---

Fixed `RpcResponse.parseError` re-wrapping existing `RpcResponse.BaseError` instances as `InternalError` -- existing instances are now returned as-is.
5 changes: 5 additions & 0 deletions .changeset/rpc-response-parse-validation.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
"ox": patch
---

Fixed `RpcResponse.parse` silently returning `undefined` for malformed payloads -- it now validates the JSON-RPC envelope (`jsonrpc === '2.0'`, presence of `id`, and presence of either `result` or `error`) and throws `RpcResponse.ParseError` otherwise.
5 changes: 5 additions & 0 deletions .changeset/rpc-transport-empty-body.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
"ox": patch
---

Fixed `RpcTransport.fromHttp` to throw `RpcTransport.MalformedResponseError` for empty `2xx` HTTP bodies instead of silently returning `undefined`.
5 changes: 5 additions & 0 deletions .changeset/rpc-transport-http-error-details.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
"ox": patch
---

Fixed `RpcTransport.HttpError.details` to render raw-text error bodies verbatim instead of JSON-stringifying them with surrounding quotes.
5 changes: 5 additions & 0 deletions .changeset/rpc-transport-signal-compose.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
"ox": patch
---

Fixed `RpcTransport.fromHttp` ignoring its own `timeout` when the caller supplied a `fetchOptions.signal`; both signals are now composed via `AbortSignal.any` so the timeout always fires.
5 changes: 5 additions & 0 deletions .changeset/signature-byte-helpers.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
"ox": minor
---

Added `Signature.toCompactBytes`, `Signature.fromCompactBytes`, `Signature.toRecoveredBytes`, and `Signature.fromRecoveredBytes` for direct 64 and 65 byte encoded signature interop.
5 changes: 5 additions & 0 deletions .changeset/solidity-helpers.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
"ox": minor
---

Added `Solidity.intRange(bits, signed)` and `Solidity.maxUint(bits)` helpers that compute the inclusive range or maximum unsigned value of a Solidity integer of the given bit width without importing one of the `Solidity.maxInt*`/`Solidity.maxUint*` constants by name.
5 changes: 5 additions & 0 deletions .changeset/tempo-authorization-signature-normalize.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
"ox": patch
---

Fixed `tempo.AuthorizationTempo.from` to normalize `options.signature` through `SignatureEnvelope.from` so serialized or convenience-shape signatures are accepted as documented.
5 changes: 5 additions & 0 deletions .changeset/tempo-noncekey-random.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
"ox": patch
---

Fixed `tempo.TransactionRequest.toRpc` to generate a full 192-bit `nonceKey` when called with `nonceKey: 'random'`, matching the documented field width.
5 changes: 5 additions & 0 deletions .changeset/tempo-poolid-canonical.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
"ox": patch
---

Fixed `PoolId.from` to be order-independent by sorting token addresses canonically before hashing.
5 changes: 5 additions & 0 deletions .changeset/tempo-txenvelope-validate-prefix.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
"ox": patch
---

Fixed `tempo.TxEnvelopeTempo.deserialize` to validate the `0x76` envelope-type prefix before RLP decoding, rejecting payloads from other envelope types.
5 changes: 5 additions & 0 deletions .changeset/transactions-access-list-strict-storage-keys.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
"ox": patch
---

Fixed `AccessList.fromTupleList` silently normalizing non-32-byte storage keys; it now throws `InvalidStorageKeySizeError` to match the symmetric `toTupleList` validation.
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
"ox": patch
---

Fixed `Authorization.fromTupleList` declaring its return type as `TupleList` instead of `List`.
5 changes: 5 additions & 0 deletions .changeset/transactions-eip4844-blob-validation.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
"ox": patch
---

Required `blobVersionedHashes` to be present and non-empty in `TxEnvelopeEip4844.assert`; the previous `if (blobVersionedHashes)` guard let envelopes serialize as "blob transactions with no blob hashes".
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
"ox": patch
---

Improved `TxEnvelopeEip4844.deserialize` `InvalidSerializedError` diagnostics by including `maxFeePerBlobGas` and `blobVersionedHashes` in the attributes map and using the EIP-4844 signature-presence threshold (`length > 11`) instead of the EIP-1559 `> 9` copy-paste.
5 changes: 5 additions & 0 deletions .changeset/transactions-eip4844-input-alias.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
"ox": patch
---

Fixed `TxEnvelopeEip4844.serialize` ignoring the `input` alias for `data`; calldata supplied via `input` is now included in the serialized envelope and sign payload.
5 changes: 5 additions & 0 deletions .changeset/transactions-eip4844-sidecar-cardinality.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
"ox": patch
---

Validated sidecar wrapper cardinality in `TxEnvelopeEip4844.deserialize` so that mismatched `blobs` / `commitments` / `proofs` / `blobVersionedHashes` lengths throw `InvalidSerializedError` instead of fabricating `undefined` sidecar entries via blind indexing in `Blobs.toSidecars`.
5 changes: 5 additions & 0 deletions .changeset/transactions-eip7702-torpc.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
"ox": patch
---

Added the missing `TxEnvelopeEip7702.toRpc` to mirror `Eip1559`/`Eip2930`/`Eip4844`/`Legacy`, restoring symmetry for callers building EIP-7702 RPC requests.
5 changes: 5 additions & 0 deletions .changeset/transactions-legacy-v-fromrpc.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
"ox": patch
---

Fixed `Transaction.fromRpc` clobbering legacy (`type: '0x0'`) `v` with `27`/`28`; the original RPC `v` is now preserved when present.
5 changes: 5 additions & 0 deletions .changeset/transactions-legacy-v-torpc.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
"ox": patch
---

Fixed `TxEnvelopeLegacy.toRpc` collapsing every signed legacy envelope to `v: '0x1b'`/`'0x1c'`; it now preserves an explicit `envelope.v`, otherwise derives EIP-155 `v = chainId * 2 + 35 + yParity` when a chain ID is present.
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
"ox": patch
---

Fixed `TransactionRequest.fromRpc` mutating the caller-provided RPC object by cloning before assigning parsed fields.
Loading
Loading