Releases: wevm/ox
Release list
ox@1.0.5
ox@0.14.33
ox@1.0.4
ox@0.14.32
Patch Changes
-
#310
d882d95Thanks @jxom! - AddedEarnSharestoox/tempo: raw EarnToken/venue-share conversions at the vault anchor rate, the dilution-correct fee-share formula, and aminimumOutputslippage 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
ox@0.14.31
Patch Changes
-
#306
e13c054Thanks @jxom! -viem/tempo: Updated multisig implementation. -
#286
56f299fThanks @jxom! - Addedeth_getRawTransactionByHashtoRpcSchema.Eth. -
#291
5ebb88dThanks @jxom! - FixedKeyAuthorization.fromRpcreturn type mismatch under TypeScript configs withoutexactOptionalPropertyTypes. -
#284
c86f635Thanks @jxom! - FixedAbiParameters.encodeandAbiParameters.decodehandling of zero-width types (zero-length fixed arrays and empty tuples).
ox@1.0.2
ox@1.0.1
ox@1.0.0
Major Changes
-
#231
40d9408Thanks @jxom! - Breaking: Changed ABI decode helpers to checksum decoded addresses by default.- AbiParameters.decode(parameters, data) + AbiParameters.decode(parameters, data, { checksumAddress: false })
-
#231
40d9408Thanks @jxom! - Removed the TempoTokenIdmodule and narrowed Tempo token inputs (feeToken,Channel.token,PoolId.fromtokens) toAddress.Address; also removed the now-redundantChannel.Resolvedtype.TxEnvelopeTempo.from({ // ... - feeToken: 1n, + feeToken: '0x20c0000000000000000000000000000000000001', }) -
#231
40d9408Thanks @jxom! - Upgraded@noble/ciphers,@noble/curves,@noble/hashes,@scure/bip32, and@scure/bip39to v2.Notable behavioral changes inherited from noble v2:
- ECDSA signatures now default to
lowS: truefor bothSecp256k1andP256. PreviouslyP256signatures could have high-S values. - The
noblere-exports onSecp256k1,P256,Ed25519,X25519, andBlsnow reference the v2 APIs (e.g.randomSecretKey()instead ofrandomPrivateKey(),Pointinstead ofProjectivePoint/ExtendedPoint,bls.longSignatures.*instead of top-levelbls.sign/verify). If you depended on the v1 shape viaModule.noble, refer to the noble v2 changelog.
- ECDSA signatures now default to
-
#231
40d9408Thanks @jxom! - Breaking: Removed the 4844-only blob-sidecar surface in favor of PeerDAS
(EIP-7594).Kzg.Kzgno longer includescomputeBlobKzgProof. Bring a PeerDAS-capable
backend (e.g.c-kzg≥ v1.5,micro-eth-signer/advanced/kzg.js≥ v0.18, or
equivalent). The backend must implementcomputeCells,
computeCellsAndKzgProofs,recoverCellsAndKzgProofs, and
verifyCellKzgProofBatchin addition toblobToKzgCommitment.- Removed
Blobs.toSidecars,Blobs.toProofs,
Blobs.sidecarsToVersionedHashes,Blobs.BlobSidecar, and
Blobs.BlobSidecars. Use the upcomingBlobCellsmodule (next phase) for
PeerDAS data-column construction.Kzg.Kzg.blobToKzgCommitmentand
Blobs.toVersionedHashesremain for transaction versioned-hash derivation. - Removed
TxEnvelopeEip4844.sidecars(the legacy "network wrapper" RLP form
foreth_sendRawTransaction). PeerDAS replaces the network wrapper with
cell/column propagation; the on-chain envelope is unchanged.
-
#231
40d9408Thanks @jxom! - Migrated ECDSA and BLS coordinate fields (r,s,x,y, BLSFp/Fp2) frombigintto paddedHex.Hexstrings (32-byte forsecp256k1/P256/WebAuthnP256, 48-byte for BLS12-381) onSignature,PublicKey,BlsPoint,Transaction,Authorization,TxEnvelope, and related Tempo and ERC envelopes, dropping thebigintTypegeneric.- Signature.from({ r: 0x6e10...n, s: 0x4a90...n, yParity: 1 }) + Signature.from({ + r: '0x6e100a352ec6ad1b70802290e18aeed190704973570f3b8ed42cb9808e2ea6bf', + s: '0x4a90a229a244495b41890987806fcbd2d5d23fc0dbe5f5256c2613c039d76db8', + yParity: 1, + })
-
#231
40d9408Thanks @jxom! - Removed theTempoAddressmodule and itstempox-prefixed address format. All Tempo modules now accept plain hexAddress.Addressvalues; remove anyTempoAddress.format/TempoAddress.parse/TempoAddress.resolvecalls at the boundary. TheaddressTypetype parameter has also been dropped fromCall,TxEnvelopeTempo,KeyAuthorization,AuthorizationTempo,TransactionRequest, andTokenId.TokenIdOrAddress.- import { TempoAddress } from 'ox/tempo' - const formatted = TempoAddress.format('0x742d35Cc6634C0532925a3b844Bc9e7595f2bD28') - const { address } = TempoAddress.parse(formatted) + const address = '0x742d35Cc6634C0532925a3b844Bc9e7595f2bD28'
Minor Changes
-
#231
40d9408Thanks @jxom! - Added anAbiFunction.decodeData(abi, data)overload that extracts the ABI function from the calldata selector. -
#231
40d9408Thanks @jxom! - Added human-readable ABI parsing and formatting utilities fromabitypeto ox, including runtime validation and type-level safety forAbi,AbiItem,AbiParameters, and the newAbiParametermodule. -
#231
40d9408Thanks @jxom! - AddedAccountProof.fromRpcandAccountProof.toRpcfor converting between RPC and instantiatedAccountProofshapes returned byeth_getProof. -
#231
40d9408Thanks @jxom! - AddedBloom.prepare,Bloom.containsPrepared, andBloom.containsHashfor membership checks against a precomputed bloom filter. UseBloom.prepare(bloom)once andBloom.containsPrepared(prepared, input)(orBloom.containsHash(prepared, hash)when the caller already has the keccak hash) inside hot loops to avoid the per-callBytes.fromHexallocation thatBloom.containspays. -
#231
40d9408Thanks @jxom! - AddedreturnByteLengthandreturnDecodedoptions toCoseKey.toPublicKeyand acceptedUint8Arrayinput in addition toHex. -
#231
40d9408Thanks @jxom! - Addedas: 'Hex' | 'Bytes' | 'Object'option toSecp256k1.sign/getPublicKey/recoverPublicKey,P256.sign/getPublicKey/recoverPublicKey,WebCryptoP256.sign, andBls.sign/getPublicKey(default'Object'keeps existing behavior); plus acceptHex.Hex | Bytes.Bytes | Signature.Signatureforsignatureparams andHex.Hex | Bytes.Bytes | PublicKey.PublicKeyforpublicKeyparams onverify,recoverAddress,recoverPublicKey,getSharedSecretacross the same modules. -
#231
40d9408Thanks @jxom! - Added EntryPoint 0.9 ABI, address, UserOperation types,paymasterSignaturepacking, hashing, and RPC support. -
#231
40d9408Thanks @jxom! - AddedFee.fromHistoryRpc,Fee.toHistoryRpc,Fee.estimateMaxFeePerGas, andFee.effectiveGasPricefor converting between RPC/instantiatedFeeHistoryshapes and computing common EIP-1559 fee values. -
#231
40d9408Thanks @jxom! - Added the EIP-234blockHashbranch toFilter.Filter(andFilter.Rpc) so log filters can be discriminated againstfromBlock/toBlockandblockHash, matching the execution-apisfilter.yamloneOfschema.Filter.toRpcnow forwardsblockHashwhen present. -
#231
40d9408Thanks @jxom! - Added directional codec helpers to theox/zodRpcSchemanamespace:decodeParams/encodeParams,decodeReturns/encodeReturns, anddecodeRequest/encodeRequest(decodemaps wire → native,encodemaps native → wire), alongsideparseItemfor method lookup andparseas an alias ofdecodeRequest. Scalar quantity returns inz.RpcSchema.Ethnow decode to their native representation (eth_blockNumber,eth_gasPrice,eth_blobBaseFee,eth_estimateGas,eth_getBalance,eth_maxPriorityFeePerGas→bigint;eth_chainId,eth_getTransactionCount,eth_getBlockTransactionCountBy*,eth_getUncleCountByBlock*→number), while raw transport typing (RpcSchema.FromZod) continues to use wire types. -
#231
40d9408Thanks @jxom! - Added Zod-backed RPC schema support:z.RpcSchema.from(inox/zod) now accepts a record of{ params, returns }Zod schemas keyed by method name and returns a parseableRpcSchema.Namespace;RpcSchema.Schema/RpcSchema.ToGeneric/RpcSchema.FromZodwere added; andProvider.from/RpcTransport.fromHttpaccept a Zod namespace as theirschemaoption, deriving request/return types from it. -
...
ox@0.14.30
Patch Changes
-
#281
da3309eThanks @jxom! - Breaking (ox/tempo): Removed the TIP-1061 multisigconfig_idconcept to match the updated Tempo reference implementation: multisig account addresses now derive directly from the initial config, owner approval digests bind onlyaccount, the signature wire format is0x05 || rlp([account, signatures, init?]),MultisigConfig.maxOwnersis now 255 withu8weights, 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 })