Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
142 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
6a2f0d5
feat(v1)!: migrate ECDSA/BLS coordinates to padded `Hex.Hex` (#247)
jxom May 13, 2026
ae42409
test: align fixtures with hex coordinate migration and mocked test he…
jxom May 13, 2026
df731ed
fix(docgen): point api-extractor at `dist/` and restore `scripts/util…
jxom May 14, 2026
27b991e
fix(docgen): clean stale generated pages and resolve Vercel build fai…
jxom May 14, 2026
463bae7
chore(site): migrate to vocs v2
jxom May 14, 2026
e30efa3
merge: origin/main into v1
jxom May 15, 2026
31a709a
chore(deps): patch security advisories via pnpm overrides
jxom May 17, 2026
3f2dfbb
feat(tempo)!: remove TempoAddress module
jxom May 17, 2026
6776c1f
refactor(tempo)!: drop `addressType` generic from Tempo types
jxom May 17, 2026
928c1af
feat(core)!: migrate EIP-4844 sidecars to PeerDAS (EIP-7594)
jxom May 17, 2026
3d65069
chore: remove bench/ result reports
jxom May 17, 2026
0c1e3a0
fix(ci): unbreak tsdoc + bump testTimeout for peerdas KZG tests
jxom May 17, 2026
1d073c9
test: bump timeout for KZG-heavy BlobCells tests
jxom May 17, 2026
6df4afd
fix(docs): render API overview tables
jxom May 17, 2026
d28cc14
fix(vercel): use HTTPS forge-std submodule
jxom May 18, 2026
32d4aa0
fix(vercel): skip postinstall setup
jxom May 18, 2026
b088a89
Revert "fix(vercel): skip postinstall setup"
jxom May 18, 2026
feeb929
chore: rerun checks
jxom May 18, 2026
190ef1a
fix(vercel): disable pnpm run auto-install
jxom May 18, 2026
6a35dbd
docs: add agent guidelines
jxom May 18, 2026
90189b5
feat: checksum abi decoded addresses
jxom May 19, 2026
8f85d24
feat: infer abi function from calldata
jxom May 19, 2026
5da8e3c
fix: allow constructorless abi deploy data
jxom May 19, 2026
9a58930
feat: add `AbiEvent.decodeLog`
jxom May 19, 2026
3d68250
feat: add `AbiEvent.decodeLogs`
jxom May 19, 2026
a2754b6
feat: add `AbiEvent.extractLogs`
jxom May 19, 2026
9733278
feat: add `AbiError.extract`
jxom May 19, 2026
71fe2f2
fix: preserve abi error extract inference
jxom May 19, 2026
ef0f1b6
feat: add ens coin type conversion
jxom May 19, 2026
ce3b92a
feat: use bigint siwe chain ids
jxom May 19, 2026
3c5541e
chore: merge main into v1
jxom May 19, 2026
023199f
feat: support log block timestamps
jxom May 19, 2026
224a4bc
feat: add transaction envelope router
jxom May 19, 2026
46fdf5e
fix: infer transaction envelope routing
jxom May 19, 2026
e1bc078
test: add transaction envelope parity cases
jxom May 19, 2026
f16b732
fix: default transaction envelope routing
jxom May 19, 2026
4974b10
feat(filter): add EIP-234 blockHash branch to Filter type
jxom May 20, 2026
7d71036
test: update for checksummed decoded addresses and public zone rpc
jxom May 20, 2026
e009ebf
test: fix Execute decoded address casing and switch zone rpc to publi…
jxom May 20, 2026
4e8ff7a
feat(transaction): add TransactionRequest <-> TxEnvelope conversion h…
jxom May 20, 2026
c0dd4e5
chore: migrate to vite-plus
jxom May 21, 2026
414bc2a
chore: ignore markdown in formatter
jxom May 21, 2026
ab1f4aa
chore: move all devDependencies to pnpm catalog
jxom May 21, 2026
7a24b25
docs: skip intentional-error example blocks via `@noErrors`
jxom May 21, 2026
6da996b
chore: add `check:examples` script and CI step
jxom May 21, 2026
8324630
test(transaction-receipt): update snapshot for bigint blockTimestamp
jxom May 21, 2026
c1e8cbf
fix(rpc-transport): handle empty body on `application/json` responses
jxom May 21, 2026
98f98a7
fix(abi-function): default missing args to empty array in encodeData
jxom May 21, 2026
5ce537b
test: fix checksum casing in decode/unwrap roundtrip tests
jxom May 21, 2026
d2e8689
test(zone-rpc-auth): skip flaky external testnet e2e
jxom May 21, 2026
ab4acc5
chore: update pnpm-lock.yaml for site/package.json removals
jxom May 21, 2026
0278454
fix(tsconfig): add DOM.Iterable and type CDP session for playwright
jxom May 21, 2026
18c9c59
ci: remove obsolete check:tsdoc step
jxom May 21, 2026
f6690d6
docs: design
jxom May 22, 2026
732197b
docs: design
jxom May 22, 2026
f12841a
fmt: examples
jxom May 22, 2026
3ef38ce
fix(docs): restore docs build
jxom May 22, 2026
4219cfb
fix(docs): stabilize example checks
jxom May 22, 2026
0a6fd8e
fix(docs): restore grouped imports
jxom May 22, 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 allowed constructor encoding and decoding without an ABI constructor when no arguments are present.
10 changes: 10 additions & 0 deletions .changeset/abi-decode-checksum-default.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
---
'ox': major
---

**Breaking:** Changed ABI decode helpers to checksum decoded addresses by default.

```diff
- AbiParameters.decode(parameters, data)
+ AbiParameters.decode(parameters, data, { checksumAddress: false })
```
5 changes: 5 additions & 0 deletions .changeset/abi-error-extract.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
'ox': patch
---

Added `AbiError.extract` for selecting and decoding ABI errors from revert data.
5 changes: 5 additions & 0 deletions .changeset/abi-event-decode-log.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
'ox': patch
---

Added `AbiEvent.decodeLog` and `AbiEvent.extractLogs` for decoding and extracting event logs directly from an ABI.
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-decode-data-selector.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
'ox': minor
---

Added an `AbiFunction.decodeData(abi, data)` overload that extracts the ABI function from the calldata selector.
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-log-block-timestamp.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
'ox': patch
---

Added `Log.fromRpc` and `Log.toRpc` support for optional `blockTimestamp` fields.
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/ens-to-coin-type.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
'ox': patch
---

Added `Ens.toCoinType` for converting chain IDs to ENS coin types.
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/filter-blockhash-branch.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
'ox': minor
---

Added the EIP-234 `blockHash` branch to `Filter.Filter` (and `Filter.Rpc`) so log filters can be discriminated against `fromBlock`/`toBlock` and `blockHash`, matching the execution-apis `filter.yaml` `oneOf` schema. `Filter.toRpc` now forwards `blockHash` when present.
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/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-json-empty-error.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
'ox': patch
---

Fixed `RpcTransport.fromHttp` to surface an `HttpError` (instead of a `SyntaxError`) when servers return `Content-Type: application/json` with an empty body for non-`2xx` responses.
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/siwe-bigint-chain-id.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
'ox': patch
---

Changed `Siwe.Message.chainId` to bigint, parsed SIWE messages to bigint chain IDs, and generated SIWE nonces with cryptographically secure randomness.
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-transaction-request-envelope-conversion.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
'ox': minor
---

Added `TransactionRequest.toEnvelope` (in `ox/tempo`) and `TxEnvelopeTempo.toTransactionRequest` for converting between Tempo `TransactionRequest` and `TxEnvelopeTempo` shapes. `toEnvelope` folds flat `{ to, data, value }` requests into `calls[]`, resolves `nonceKey: 'random'`, and drops fields not supported by the Tempo envelope (`blobs`, `gasPrice`, core `r`/`s`/`yParity`/`v`). Extended Tempo's `TransactionRequest` with optional `signature` (`SignatureEnvelope`) and `feePayerSignature` (`Signature.Signature<true>`) fields so signed envelopes can be round-tripped without information loss; `fromRpc`/`toRpc` translate them via the existing `SignatureEnvelope.fromRpc`/`toRpc` and `Signature.fromRpc`/`toRpc` helpers.
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.
Loading
Loading