Octez.js v25.1.0-rc.0: Taquito parity and recoverable EVM aliases for Etherlink 8.0

Octez.js v25.1.0-rc.0 is now available on npm. This release candidate comes with the Etherlink 8.0 upgrade on Previewnet. The final v25.1.0 release will follow the Mainnet upgrade to Etherlink 8.0, provided it successfully passes the governance phase. .

This release has two goals:

  • Bring Octez.js up to date with the latest Taquito development work, so that Taquito users can move to Octez.js without losing features or fixes.

  • Align the EVM alias of Tezos accounts with the new scheme of Etherlink 8.0.

Why a release candidate?

The new EVM alias scheme is a breaking change, although the interface in Octez.js remains the same. For a given tz1, tz2 or tz3 address, getEthereumAlias now returns a different EVM address. We are publishing a release candidate first so that you can test your applications on Previewnet before the Mainnet upgrade.

Recoverable EVM aliases for Etherlink 8.0

In Tezos X, each Tezos account has an EVM alias: an Ethereum-compatible address that represents it in the EVM runtime. Octez.js computes this alias locally, without a network request.

Etherlink 8.0 changes how this alias is computed. The Etherlink 8.0 Preview post explains the new scheme and the reasons for it. Octez.js v25.1.0-rc.0 applies the same scheme:

  • For tz1, tz2 and tz3 addresses, the alias is now a recoverable address. If someone sends funds to this alias on another EVM chain by mistake, the owner of the Tezos key can recover them.

  • For tz4, tz5 and KT1 addresses, the alias does not change. Version 1 of the scheme does not cover them.

  • getTezosAlias does not change.

If your application stores EVM aliases, or compares them with values that an older version of Octez.js computed, you must update these values.

Up to date with Taquito

Octez.js now includes the Taquito development work up to commit 24d68fb7, after Taquito v25.2.0-beta0. Taquito v25.2 itself is not released yet. The main new features are:

  • Detached signing: prepare an operation for an account whose key is held elsewhere. An external signer signs it, then you attach the signature and inject it.

  • Smart rollups in the wallet API: originate a smart rollup, add messages and execute outbox messages through Tezos.wallet. The dapp-wallet and wallet-connect packages support these operations. Origination also accepts a whitelist for private rollups.

  • Paginated big-map reads: read the values of a big map page by page. A new function tells you whether a big map is empty.

  • BLS support: new RPC endpoints to aggregate public keys, signatures and proofs, to check a proof of possession, and to build a threshold signature. The BLS signer can also make a proof of possession for an aggregate public key.

  • BIP39 mnemonic helpers: generate a mnemonic, convert it to and from entropy, and derive key material from it.

  • Sapling output order: an opt-in configuration that randomizes the order of transaction outputs, so that the change output is no longer always the last one.

The release also includes many fixes. Subscriptions and confirmations recover better from RPC errors and send fewer RPC requests. The RPC cache no longer keeps a Node process alive. HTTP requests now time out correctly on a stalled server. Octez.js retries network failures in Firefox and WebKit.

Aspects of Octez.js v25.1.0-rc.0 that require user action

  • EVM aliases: getEthereumAlias returns a new alias for tz1, tz2 and tz3 addresses (see above).

  • Custom RPC clients: RpcClientInterface now requires aggregatePublicKeys, checkProof, aggregateSignatures and thresholdSignatures. If you implement this interface yourself, you must add these methods.

  • Address validation types: isValidAddress, isValidContractAddress, isValidPublicKey and isValidOperationHash now return the type predicate value is string. The runtime behavior does not change, but some TypeScript code can stop compiling.

  • Dependencies: some dependencies move to a new major version. The signer and utils packages now use @noble/curves 2. The signer, sapling and timelock packages now use @stablelib/nacl 2. The utils package now uses bs58check 4, which includes its own types, so @types/bs58check is no longer necessary.

Get started

The release candidate is published under the next tag on npm. To install the main SDK:

npm install @tezos-x/octez.js@next

Resources

We encourage users to test v25.1.0-rc.0 on Previewnet and share their feedback.

1 Like