Starknet Devtools for 0.13.5

Developer tools for 0.13.5

The latest upgrade of Starknet to 0.13.5 has brought with it a series of updates to the way Starknet operates, after a relatively long period of stability. These changes are intended to both improve the developer and user experience, as well as prepare the ground for future updates, such as introducing a mempool and a fee market.

These changes are reflected in the Starknet RPC API, and include the following notable change.s

  • Removing V1 and V2 transactions from the API
  • Adding support for WebSockets
  • New Cairo and Sierra versions

The Starknet Developer tool stack has been updated to support these new features. Developers should update their code to be compatible with upcoming Starknet changes.

We have consciously decided to start transitioning as many developers as possible to the latest stack. In future Starknet upgrades, Starknet will only accept V3 transactions, specifying all 3 resources (l1_gas, l1_data_gas, l2_gas), and will stop accepting V1 and V2 transactions.

To start the transition right now, V1 and V2 transactions were removed from RPC version 0.8, the version used in Starknet 0.13.5, and most of the latest Starknet tool stack also reflects this change.

While Starknet still accepts older transaction types via RPC 0.7, as a developer, the best approach is to update the stack to the latest tools and only use V3 transactions going forward.

Following is a list of the currently released tools, supporting Starknet 0.13.5 and RPC 0.8

  • Starkli: Version 0.4.0 and up

  • Starknet Foundry

    • Sncast 0.37.0 and up supports only V3 transactions
    • Snforge 0.40.0 and up shows gas usage in gas triplets (l1_gas, l1_data_gas, l2_gas), and works with Sierra 1.7.0
  • Devnet: Version 0.3.0 and up

    • If there’s a need to work with V1 and V2 transactions, and Sierra 1.7.0, version 0.3.0-rc.1 support both (but not new V3 transactions)
  • SDKs

    • JS: Version 7.1.0 and up
    • Python: Version 0.26.1 and up
    • Rust: Version 0.14.0 and up
      • WebSockets not yet supported
    • Go: Version 0.8.0 and up
    • JVM: Version 0.14.0 and up
  • Get-Starknet

    • The get-starknet main release branch was updated to version 4.0.7. Version 4 is the version currently used by most DApps, and communicates with wallets via the Dapp<>Wallet API. Developers should start using @starknet-io/get-starknet instead of @starknet-io/get-starinet@next for V4

Notes on compatibility

Most tools released with 0.8.0 support, are only compatible with 0.8 RPC and V3 txs. These include

  • Starknet Devnet
  • Starkli
  • Sncast
  • Starknet Py
  • Starknet RS
  • Starknet Go

All the above can produce only β€œfull V3” txs (including all 3 resources), and will not work with V1 and V2 and RPC 0.7

If a flow requires paying fees with ETH or older transactions for other reasons, developers can keep using older compatible versions.

Starknet.js is the exception, still supporting both RPC 0.7 and 0.8, to accommodate wallets, Dapps, and other tools that might require a more extended transition period. The default is 0.8 and V3, and using older transaction types requires explicit changes in constructors and initiators.

Braavos compatibility issues

Some Braavos accounts, have restrictions in their code only to accept transactions with two resources. This means these accounts are currently incompatible with V3 txs.

This also means that tools that use Braavos accounts will fail to send V3 txs if an old Braavos account is used.

There are currently several options

  • Upgrade your Braavos account
  • Migrate to Argent or OpenZeppelin accounts
  • Use older tool versions that send V1 and V2 transactions

How to follow versions and compatibility?

All the tools mentioned above are developed as open sources and have scheduled releases on GitHub. Following releases on Github is easy and informative. Releases include concise release notes, with relevant information on added and dropped support.

In addition, we are maintaining this table, listing compatible versions of tools.

Using the starkup installation script is a great way to install the latest compatible version of scarb, starknet-foundry, and accompanying tooling.

Summary

This is a transition period, and there might be some friction to update codebases and tooling to the newest stack, but the purpose is to ensure that everyone is ready and future-proof for upcoming updates.

A great improvement on Starknet

Curious to know, is there any timeline for WebSocket support in the Rust and Python SDKs? That would be a huge boost for real-time interactions.

Looking forward to what comes next, especially the fee market and mempool. Feels like the network is maturing fast. :fire:

This is great update, getting ready for whats coming