Skip to content

Releases: wevm/ox

ox@1.0.5

Choose a tag to compare

@github-actions github-actions released this 23 Jul 06:26
cde4f8a

Patch Changes

  • #314 b179677 Thanks @jxom! - Corrected Zone chain ID conversion for Presto and Moderato source chains.

    import { ZoneId } from "ox/tempo";
    
    ZoneId.toChainId(1, 42_431);

ox@0.14.33

Choose a tag to compare

@github-actions github-actions released this 23 Jul 06:27
9600111

Patch Changes

  • #315 2298f7b Thanks @jxom! - Corrected Zone chain ID conversion for Presto and Moderato source chains.

    import { ZoneId } from "ox/tempo";
    
    ZoneId.toChainId(1, 42_431);

ox@1.0.4

Choose a tag to compare

@github-actions github-actions released this 22 Jul 21:32
4d502d8

Patch Changes

  • #312 d7721a1 Thanks @jxom! - Added EarnShares utilities for Tempo vault share conversions, fee share calculation, and slippage bounds.

ox@0.14.32

Choose a tag to compare

@github-actions github-actions released this 22 Jul 03:41

Patch Changes

  • #310 d882d95 Thanks @jxom! - Added EarnShares to ox/tempo: raw EarnToken/venue-share conversions at the vault anchor rate, the dilution-correct fee-share formula, and a minimumOutput slippage floor.

    import { EarnShares } from "ox/tempo";
    
    const tokens = EarnShares.toTokens({ engineShares: 3n, supply: 2n }, 7n);
    const minimumShares = EarnShares.minimumOutput(1_000_000n, 50n);

ox@1.0.3

Choose a tag to compare

@github-actions github-actions released this 20 Jul 05:21
025873d

Patch Changes

ox@0.14.31

Choose a tag to compare

@github-actions github-actions released this 20 Jul 05:28
7145bed

Patch Changes

  • #306 e13c054 Thanks @jxom! - viem/tempo: Updated multisig implementation.

  • #286 56f299f Thanks @jxom! - Added eth_getRawTransactionByHash to RpcSchema.Eth.

  • #291 5ebb88d Thanks @jxom! - Fixed KeyAuthorization.fromRpc return type mismatch under TypeScript configs without exactOptionalPropertyTypes.

  • #284 c86f635 Thanks @jxom! - Fixed AbiParameters.encode and AbiParameters.decode handling of zero-width types (zero-length fixed arrays and empty tuples).

ox@1.0.2

Choose a tag to compare

@github-actions github-actions released this 16 Jul 19:12
5df5dd3

Patch Changes

ox@1.0.1

Choose a tag to compare

@github-actions github-actions released this 16 Jul 00:31
438d16e

Patch Changes

  • #301 1815469 Thanks @jxom! - Preserved leading NUL bytes when decoding ABI string values.

  • #300 1074bb3 Thanks @jxom! - Restored number-valued SIWE chain IDs for message creation and parsing.

ox@1.0.0

Choose a tag to compare

@github-actions github-actions released this 13 Jul 23:57
e1f2520

Major Changes

  • #231 40d9408 Thanks @jxom! - Breaking: Changed ABI decode helpers to checksum decoded addresses by default.

    - AbiParameters.decode(parameters, data)
    + AbiParameters.decode(parameters, data, { checksumAddress: false })
  • #231 40d9408 Thanks @jxom! - Removed the Tempo TokenId module and narrowed Tempo token inputs (feeToken, Channel.token, PoolId.from tokens) to Address.Address; also removed the now-redundant Channel.Resolved type.

      TxEnvelopeTempo.from({
        // ...
    -   feeToken: 1n,
    +   feeToken: '0x20c0000000000000000000000000000000000001',
      })
  • #231 40d9408 Thanks @jxom! - Upgraded @noble/ciphers, @noble/curves, @noble/hashes, @scure/bip32, and @scure/bip39 to v2.

    Notable behavioral changes inherited from noble v2:

    • ECDSA signatures now default to lowS: true for both Secp256k1 and P256. Previously P256 signatures could have high-S values.
    • The noble re-exports on Secp256k1, P256, Ed25519, X25519, and Bls now reference the v2 APIs (e.g. randomSecretKey() instead of randomPrivateKey(), Point instead of ProjectivePoint/ExtendedPoint, bls.longSignatures.* instead of top-level bls.sign/verify). If you depended on the v1 shape via Module.noble, refer to the noble v2 changelog.
  • #231 40d9408 Thanks @jxom! - Breaking: Removed the 4844-only blob-sidecar surface in favor of PeerDAS
    (EIP-7594).

    • Kzg.Kzg no longer includes computeBlobKzgProof. Bring a PeerDAS-capable
      backend (e.g. c-kzg ≥ v1.5, micro-eth-signer/advanced/kzg.js ≥ v0.18, or
      equivalent). The backend must implement computeCells,
      computeCellsAndKzgProofs, recoverCellsAndKzgProofs, and
      verifyCellKzgProofBatch in addition to blobToKzgCommitment.
    • Removed Blobs.toSidecars, Blobs.toProofs,
      Blobs.sidecarsToVersionedHashes, Blobs.BlobSidecar, and
      Blobs.BlobSidecars. Use the upcoming BlobCells module (next phase) for
      PeerDAS data-column construction. Kzg.Kzg.blobToKzgCommitment and
      Blobs.toVersionedHashes remain for transaction versioned-hash derivation.
    • Removed TxEnvelopeEip4844.sidecars (the legacy "network wrapper" RLP form
      for eth_sendRawTransaction). PeerDAS replaces the network wrapper with
      cell/column propagation; the on-chain envelope is unchanged.
  • #231 40d9408 Thanks @jxom! - Migrated ECDSA and BLS coordinate fields (r, s, x, y, BLS Fp/Fp2) from bigint to padded Hex.Hex strings (32-byte for secp256k1/P256/WebAuthnP256, 48-byte for BLS12-381) on Signature, PublicKey, BlsPoint, Transaction, Authorization, TxEnvelope, and related Tempo and ERC envelopes, dropping the bigintType generic.

    - Signature.from({ r: 0x6e10...n, s: 0x4a90...n, yParity: 1 })
    + Signature.from({
    +   r: '0x6e100a352ec6ad1b70802290e18aeed190704973570f3b8ed42cb9808e2ea6bf',
    +   s: '0x4a90a229a244495b41890987806fcbd2d5d23fc0dbe5f5256c2613c039d76db8',
    +   yParity: 1,
    + })
  • #231 40d9408 Thanks @jxom! - Removed the TempoAddress module and its tempox-prefixed address format. All Tempo modules now accept plain hex Address.Address values; remove any TempoAddress.format / TempoAddress.parse / TempoAddress.resolve calls at the boundary. The addressType type parameter has also been dropped from Call, TxEnvelopeTempo, KeyAuthorization, AuthorizationTempo, TransactionRequest, and TokenId.TokenIdOrAddress.

    - import { TempoAddress } from 'ox/tempo'
    - const formatted = TempoAddress.format('0x742d35Cc6634C0532925a3b844Bc9e7595f2bD28')
    - const { address } = TempoAddress.parse(formatted)
    + const address = '0x742d35Cc6634C0532925a3b844Bc9e7595f2bD28'

Minor Changes

  • #231 40d9408 Thanks @jxom! - Added an AbiFunction.decodeData(abi, data) overload that extracts the ABI function from the calldata selector.

  • #231 40d9408 Thanks @jxom! - Added human-readable ABI parsing and formatting utilities from abitype to ox, including runtime validation and type-level safety for Abi, AbiItem, AbiParameters, and the new AbiParameter module.

  • #231 40d9408 Thanks @jxom! - Added AccountProof.fromRpc and AccountProof.toRpc for converting between RPC and instantiated AccountProof shapes returned by eth_getProof.

  • #231 40d9408 Thanks @jxom! - 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.

  • #231 40d9408 Thanks @jxom! - Added returnByteLength and returnDecoded options to CoseKey.toPublicKey and accepted Uint8Array input in addition to Hex.

  • #231 40d9408 Thanks @jxom! - 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.

  • #231 40d9408 Thanks @jxom! - Added EntryPoint 0.9 ABI, address, UserOperation types, paymasterSignature packing, hashing, and RPC support.

  • #231 40d9408 Thanks @jxom! - Added Fee.fromHistoryRpc, Fee.toHistoryRpc, Fee.estimateMaxFeePerGas, and Fee.effectiveGasPrice for converting between RPC/instantiated FeeHistory shapes and computing common EIP-1559 fee values.

  • #231 40d9408 Thanks @jxom! - 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.

  • #231 40d9408 Thanks @jxom! - Added directional codec helpers to the ox/zod RpcSchema namespace: decodeParams/encodeParams, decodeReturns/encodeReturns, and decodeRequest/encodeRequest (decode maps wire → native, encode maps native → wire), alongside parseItem for method lookup and parse as an alias of decodeRequest. Scalar quantity returns in z.RpcSchema.Eth now decode to their native representation (eth_blockNumber, eth_gasPrice, eth_blobBaseFee, eth_estimateGas, eth_getBalance, eth_maxPriorityFeePerGasbigint; eth_chainId, eth_getTransactionCount, eth_getBlockTransactionCountBy*, eth_getUncleCountByBlock*number), while raw transport typing (RpcSchema.FromZod) continues to use wire types.

  • #231 40d9408 Thanks @jxom! - Added Zod-backed RPC schema support: z.RpcSchema.from (in ox/zod) now accepts a record of { params, returns } Zod schemas keyed by method name and returns a parseable RpcSchema.Namespace; RpcSchema.Schema/RpcSchema.ToGeneric/RpcSchema.FromZod were added; and Provider.from / RpcTransport.fromHttp accept a Zod namespace as their schema option, deriving request/return types from it.

  • ...

Read more

ox@0.14.30

Choose a tag to compare

@github-actions github-actions released this 02 Jul 23:54
b3046ed

Patch Changes

  • #281 da3309e Thanks @jxom! - Breaking (ox/tempo): Removed the TIP-1061 multisig config_id concept to match the updated Tempo reference implementation: multisig account addresses now derive directly from the initial config, owner approval digests bind only account, the signature wire format is 0x05 || rlp([account, signatures, init?]), MultisigConfig.maxOwners is now 255 with u8 weights, and owner approvals may be nested multisig signatures.

    - const id = MultisigConfig.toId(genesisConfig)
    - const account = MultisigConfig.getAddress({ genesisConfigId: id })
    + const account = MultisigConfig.getAddress(genesisConfig)
    
    - MultisigConfig.getSignPayload({ payload, account, genesisConfigId })
    + MultisigConfig.getSignPayload({ payload, account })
    
    - SignatureEnvelope.from({ account, genesisConfigId, signatures })
    + SignatureEnvelope.from({ account, signatures })