NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
npm · #4258 most downloaded on npm
Ethereum Standard Library
Last release today
17 Sep 2026
Ships fairly regularly
a new release about every 1 weeks
Nearly every release is documented
notes for 56 of the last 60 stable releases
53 versions withdrawn
withdrawn after publishing
16 years old
489 releases · first in 2011
const id = MultisigConfig.toId(genesisConfig)
#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 })
One column per quarter.
### Patch Changes - #268 `ed93945` Thanks @jxom! - viem/tempo: Added genesisConfig shorthand to TIP-1061 multisig helpers and renamed configId → genes
### Patch Changes - #265 `f5328d2` Thanks @jxom! - viem/tempo: Added support for TIP-1061 native multisig accounts.
### Patch Changes - #263 `451a442` Thanks @jxom! - ox/tempo: Added the ReceivePolicyReceipt module for encoding/decoding TIP-1028 receive-policy claim
### Patch Changes - #262 `b1ac8c8` Thanks @jxom! - ox/tempo: Added support for TIP-1049 (admin access keys) via optional isAdmin and account fields on
#262 b1ac8c8 Thanks @jxom! - ox/tempo: Added support for TIP-1049 (admin access keys) via optional isAdmin and account fields on KeyAuthorization that bind into the signing hash.
#260 581ccee Thanks @jxom! - ox/tempo: Added support for TIP-1053 (witnesses in key authorizations) via an optional 32-byte witness field on KeyAuthorization that is included in the signing hash.
### Patch Changes - #256 `ad7610b` Thanks @jxom! - Renamed ChannelDescriptor.from to Channel.from, made Channel.Channel the descriptor type, and chang
### Patch Changes - #254 `d837628` Thanks @jxom! - Added ChannelDescriptor.from for normalizing TIP-20 channel reserve descriptors.
### Patch Changes - #252 `19cd833` Thanks @jxom! - Added TIP-20 channel reserve constants, channel id computation, and voucher signing helpers.
### Patch Changes - #227 `ffa64c0` Thanks @Genmin! - Fixed Secp256k1.verify narrowing signature branches before address recovery.
### Patch Changes - #246 `32cf459` Thanks @0xrusowsky! - Added TxEnvelopeTempo.encodeForSigning to expose the raw Tempo sender-signing preimage bytes.
### Patch Changes - #225 `7203ffc` Thanks @jxom! - Fixed webpack compatibility for VirtualMaster by making the node:worker_threads import specifier no
`3f6682d` Thanks @jxom! - Embedded WASM keccak256 salt miner for VirtualMaster.mineSaltAsync. Added platform-agnostic worker pool supporting Node.js,
### Patch Changes - #221 `3b84126` Thanks @tmm! - Added TIP-1022 virtual address utilities to ox/tempo, including VirtualAddress helpers for formattin
### Patch Changes - #220 `da7a62c` Thanks @Zygimantass! - Added Tempo zones support - #219 `a934992` Thanks @jxom! - Added feePayer to TransactionRequ
#220 da7a62c Thanks @Zygimantass! - Added Tempo zones support
#219 a934992 Thanks @jxom! - Added feePayer to TransactionRequest in ox/tempo.
#217 5e2ae4d Thanks @jxom! - Fixed TransactionRequest.fromRpc in ox/tempo. TransactionRequest.toRpc now folds top-level to/data/value into calls when calls is not provided.
`3ca1d56` Thanks @jxom! - Added TransactionRequest.fromRpc to ox/tempo.
`d073091` Thanks @jxom! - Fixed TransactionRequest.blobVersionedHashes to include | undefined for exactOptionalPropertyTypes compatibility.
`14137f7` Thanks @jxom! - Added RpcSchema.ToViem and RpcSchema.FromViem type utilities for converting between Ox and Viem RPC schema formats. Added te
`68f8fa0` Thanks @jxom! - viem/tempo: Renamed contractAddress to address on KeyAuthorization.Scope. Added support for human-readable ABI signatures in
### Patch Changes - #208 `30537f8` Thanks @dgca! - Added serviceCodes field to ERC-8021 Attribution schema. - #211 `9d0d676` Thanks @jxom! - viem/temp
### Patch Changes - #209 `52d985e` Thanks @jxom! - Fixed Credential.serialize to extract authenticatorData from the CBOR-encoded attestationObject whe
### Patch Changes - #204 `9aec6a9` Thanks @jxom! - Added Ed25519.toX25519PublicKey and Ed25519.toX25519PrivateKey for converting Ed25519 keys to X2551
### Patch Changes - #201 `ea94ea6` Thanks @decofe! - Fixed KeyAuthorization.fromRpc to preserve undefined expiry instead of defaulting to 0.
`0d0575e` Thanks @jxom! - Added ERC-8021 Schema 2 (CBOR-encoded) attribution support to the Attribution module.
`8d51883` Thanks @jxom! - ox/tempo: Fixed output types.
### Patch Changes - #197 `28ac186` Thanks @jxom! - Fixed WebAuthn response serialization to fall back to getter methods (e.g. getAuthenticatorData())
28ac186 Thanks @jxom! - Fixed WebAuthn response serialization to fall back to getter methods (e.g. getAuthenticatorData()) when properties are not directly accessible on the response object. Some browsers and passkey providers (e.g. 1Password, Firefox) proxy the credential object, making property access return undefined even though the data is available via getter methods.`6dcde2c` Thanks @jxom! - Fixed type incompatibility between ox's CredentialCreationOptions/CredentialRequestOptions and the DOM's built-in types.
`0189572` Thanks @jxom! - ox/tempo: Fixed sender recovery for fee payer transactions.
`3f7b80c` Thanks @jxom! - Updated TempoAddress to new format.
`3dbb585` Thanks @jxom! - Fixed Registration.create and Authentication.sign throwing "Permission denied to access object" in Firefox with the 1Passwor
3dbb585 Thanks @jxom! - Fixed Registration.create and Authentication.sign throwing "Permission denied to access object" in Firefox with the 1Password extension. Replaced .bind() defaults on navigator.credentials.create/.get with arrow functions, eagerly read credential response properties (attestationObject, clientDataJSON, authenticatorData, signature, id) before subsequent access is blocked by the cross-compartment proxy, and passed the already-read attestationObject to parseCredentialPublicKey so the 1Password fallback path no longer re-accesses the proxy.`e0d36d4` Thanks @jxom! - Added keyId to SignatureEnvelope and made keychain signatures default to v2.
```diff const authorization = KeyAuthorization.from({ address,
### Patch Changes - #179 `4b91335` Thanks @jxom! - Added Base32, CompactSize, and TempoAddress modules. Base32 implements BIP-173 bech32 base32 encodi
4b91335 Thanks @jxom! - Added Base32, CompactSize, and TempoAddress modules. Base32 implements BIP-173 bech32 base32 encoding/decoding. CompactSize implements Bitcoin's variable-length integer encoding. TempoAddress provides human-readable Tempo address formatting and parsing with tempo1/tempoz1 prefixes, CompactSize zone ID encoding, and double-SHA256 checksumming.`50c4d08` Thanks @jxom! - ox/tempo: Added KeyAuthorization.serialize and KeyAuthorization.deserialize for RLP encoding/decoding key authorizations.
50c4d08 Thanks @jxom! - ox/tempo: Added KeyAuthorization.serialize and KeyAuthorization.deserialize for RLP encoding/decoding key authorizations.
ox/tempo: Fixed KeyAuthorization.toTuple to always include expiry in the tuple when limits are present, preventing malformed RLP encoding.
50c4d08 Thanks @jxom! - ox/tempo: Added SignatureEnvelope.extractAddress and SignatureEnvelope.extractPublicKey to extract signer address/public key from a signature envelope. Handles all signature types: secp256k1 (via ecrecover), p256/webAuthn (from embedded public key), and keychain (from inner signature or root userAddress).
`c8c6229` Thanks @jxom! - Overhauled WebAuthn support with a dedicated ox/webauthn entrypoint for server-side registration & authentication ceremonies
c8c6229 Thanks @jxom! - Overhauled WebAuthn support with a dedicated ox/webauthn entrypoint for server-side registration & authentication ceremonies, credential management, and authenticator data parsing.
Registration – Full registration ceremony: create, getOptions, verify, with serializeOptions/deserializeOptions for server↔client transportAuthentication – Full authentication ceremony: sign, getOptions, verify, with serializeOptions/deserializeOptions for server↔client transportCredential – serialize/deserialize for persisting and transporting WebAuthn credentials as JSONAuthenticator – Low-level utilities for constructing/parsing authenticator data, attestation objects, and client data JSON`772f3eb` Thanks @jxom! - Added support for recovering the sender address (from) from the transaction signature in TxEnvelopeTempo.deserialize.
### Patch Changes - #171 `d206a6e` Thanks @jxom! - Fixed COSE key encoding in WebAuthnP256.getAuthenticatorData to use CBOR integer keys. - #171 `d206
#171 d206a6e Thanks @jxom! - Fixed COSE key encoding in WebAuthnP256.getAuthenticatorData to use CBOR integer keys.
#171 d206a6e Thanks @jxom! - Added CoseKey module with fromPublicKey and toPublicKey for converting between P256 public keys and CBOR-encoded COSE_Key format.
#171 d206a6e Thanks @jxom! - Added Map support to Cbor.encode for encoding maps with non-string keys (e.g. CBOR integer keys).
#171 d206a6e Thanks @jxom! - Fixed WebAuthnP256.verify type-check slice bug.
`ddf03bc` Thanks @jxom! - Added Json.canonicalize (RFC 8785)
### Patch Changes - #166 `480d01a` Thanks @jxom! - Derived sender address from signature in TxEnvelopeTempo.serialize when using format: 'feePayer'.
`f605321` Thanks @jxom! - Added Hash.hmac256 for computing HMAC-SHA256 hashes.
`4a79129` Thanks @jxom! - Fixed TokenId.compute return value.
### Patch Changes - #153 `95ebfcf` Thanks @jxom! - Added TokenId.compute to compute deterministic TIP-20 token addresses from sender and salt.
`11cde15` Thanks @jxom! - Fixed KeyAuthorization.toRpc
`4c55afa` Thanks @jxom! - Breaking: Renamed prehash to preHash on KeyAuthorization#P256Rpc
`a24f08a` Thanks @jxom! - Updated TransactionRequest.toRpc for Tempo.
`e750936` Thanks @jxom! - Throw error if signature envelope type not supported.
`a449324` Thanks @jxom! - Added SignatureEnvelope.verify.
### Patch Changes - #144 `253b471` Thanks @tmm! - Bumped ABIType
`a98c346` Thanks @jxom! - ox/tempo: Removed 0x fallback on to for TransactionRequest.toRpc
`a5a63d4` Thanks @jxom! - Explicitly widened WebAuthn getFn/createFn to avoid downstream type conflicts.
```diff ts twoslash Attribution.toDataSuffix({ codes: ['baseapp', 'morpho'],
#138 29a2f43 Thanks @wbj-cb! - Breaking: Aligned to latest ERC-8021 specification. Modified Attribution.toDataSuffix parameters to include codeRegistry instead of registryAddress.
Attribution.toDataSuffix({
codes: ['baseapp', 'morpho'],
- registryAddress: '0xcccccccccccccccccccccccccccccccccccccccc',
+ codeRegistry: {
+ address: '0xcccccccccccccccccccccccccccccccccccccccc`
+ chainId: 8453,
+ }
})
f8bf590 Thanks @jxom! - Breaking: Renamed TransactionEnvelope* to TxEnvelope*.
`e63c3b2` Thanks @jxom! - Tweaked WebAuthnP256.createCredential to accept challenge of type Hex.
`d11e1fb` Thanks @jxom! - Modified WebAuthnP256.verify to work with only clientDataJSON and authenticatorData
### Patch Changes - #133 `07a7bb0` Thanks @jxom! - Added Cbor module.
`896096d` Thanks @jxom! - Exported types required for inference.
`95458ee` Thanks @jxom! - Added TransactionRequest.fromRpc
`242558a` Thanks @jxom! - Fixed formatting between metadata and version on BaseError.
### Patch Changes - #126 `b4572ed` Thanks @jxom! - Added ox/erc8021 entrypoint.
`f61d713` Thanks @jxom! - Added version and docsOrigin to Errors.BaseError.
`a1c8a43` Thanks @jxom! - Added eth_sendRawTransactionSync to types.
### Patch Changes - #119 `447e386` Thanks @jxom! - Added ERC-7821 modules.
Your coding agent can read these notes before it upgrades. Set up the MCP server →