Beta-5: Staging Network Upgrade

We are excited to migrate Fuel’s staging network to Beta-5. The Beta-5 network has numerous new features and updates, enabling wallet integrations, DDoS resistance, improved Sway DevEx, and more.

With Beta-5 developers can use the new npm create fuels package, simplifying building a full-stack dApp for anyone, whether you’re a frontend or a backend developer. Additionally, it has brought us Fuel Wallet Connectors, which introduce a comprehensive system for enhancing dApp interoperability and enabling wallets to go beyond browser extensions.

Users can download the Fuel Wallet and explore applications live on Beta-5, via the ecosystem page.

Please note that beta-5 is the final staging network. Next, we will launch the incentivized testnet. More information is coming soon.

Key Enhancements and New Features

Beta-5 introduces a range of enhancements and new features:

Generic Trait Constraints

Generics support in Sway has undergone a considerable upgrade. With generic trait constraints, Sway makes significant improvements to the developer experience. This enables conventional patterns such as iterators, conversion traits, and more.

Transaction Policies

Newly added support transaction policies enhance safety for users.

Additionally, this feature paves the way for a future multi-dimensional pricing model, which will reduce transaction costs and enable a greater volume of non-storage impacting transactions.

Fuel Wallet Connectors

The Fuel Wallet Connectors introduces a comprehensive system for enhancing DApp interoperability with wallets, enabling them to go beyond browser extensions. Read more here.

New Dapp Developer Tooling

The new tooling provides the quickest way to develop full stack Fuel dApps. As a typescript wrapper around forc, it simplifies workflows for building or deploying contracts, and integrating Sway into webapps. Read more here.

What’s New

Here is a full list of features and updates :

🌴 Compiler

  • New u256 primitive type with arithmetic support that deprecates U256

  • Method calls between impl methods are now allowed

  • We support generic trait constraints, such as:

  • We fully support associated types, such as:
  • New attributes #[deprecated] and #[allow(deprecated)] have been introduced to provide deprecation warnings

  • Small values such as () and u8 are now represented by a single byte in memory instead of a full word

  • Functions with more than six arguments no longer require inlining

  • Various optimizations make the compiler faster to run

  • Lots of type system edge cases are now properly handled

  • New bytecode optimizations make our output smaller

    • better array initialization

    • optimized aggregate indexing

    • function deduplication

🌐 Client

  • Most of the changes improved the security and stability of the node.

    • The gas model was reworked to cover all aspects of execution.

    • The benchmarking system was significantly enhanced, covering the worst scenarios.

    • A new set of benchmarks was added to track the accuracy of gas prices.

    • Optimized heavy operations and removed/replaced exploitable functionality.

  • Unified naming conventions for all CLI arguments. Added dependencies between related fields to avoid misconfiguration in case of missing arguments. Added -debug flag that enables additional functionality like a debugger.

  • Improved telemetry to cover the internal work of services and added support for the Pyroscope, allowing it to generate real-time flamegraphs to track performance.

  • Improved stability of the P2P layer and adjusted reputation scoring. The speed of block synchronization was significantly increased.

  • The node is more stable and resilient. Improved DoS resistance and resource management. Fixed critical bugs during state transition.

  • Reworked the Mint transaction to accumulate the fee from block production inside the contract defined by the block producer.

  • FuelVM received a lot of safety and stability improvements:

    • A recent audit helped identify some bugs and errors that have been successfully fixed.

    • Updated the gas price model to charge for resources used during the transaction lifecycle.

    • Added no_std and 32-bit system support. This opens doors for fraud proving in the future.

    • Removed the ChainId from the PredicateId calculation, allowing the use of predicates cross-chain.

    • Improvements in the performance of some storage-related opcodes.

    • Support the ECAL instruction that allows adding custom functionality to the VM. It can be used to create unique rollups or advanced indexers in the future.

    • Support of transaction policies enhances safety for users and closes some DOS vectors for the network. Additionally, this feature paves the way for a future multi-dimensional pricing model, which will reduce transaction costs and enable a greater volume of non-storage-impacting transactions.

    • Refactored errors, returning more detailed errors to the user, simplifying debugging.

🔧 Tooling

  • Sway Playground: improved UX, can now select which toolchain you want to build against.

  • New forc-crypto CLI tool for working with common cryptographic operations.

  • forc-doc now has a search bar with fuzzy search and semantic highlighting.

🧩 Language Server

  • Module caching is enabled in the language server, leading to substantial speed-ups while typing.

  • Significant backend stability improvements.

  • Auto import and auto-qualify features were added to the code lens.

  • VScode users can visualize the project's dependency graph.

🏗️ SDK

  • Rust SDK

    • Retry mechanism: configuration for automatically retrying transactions if they fail;

    • Support for str returns from contracts;

    • Coin/UTXO caching;

    • Deprecate U256 and use Rust’s native u256;

    • Add conversion from Address/ContractId types to Identity;

    • Automatic transaction parameters defaults from the network: Changes gas_limit and gas_price in TxParams to be optional. TransactionBuilders use the corresponding values from ConsensusParameters and NodeInfo during build() if these fields were set to None;

    • UX improvement around predicate witness data access;

    • UX improvement around the Bytes type through the new from_hex_str;

    • TxParameters are replaced with TxPolicies;

    • TxPolicies introduced new fields:

      • WitnessLimit

      • MaxFee

    • ScriptGasLimit only limits script execution;

    • New WitnessLimit impacts max_gas and max_fee calculation;

    • Minimal gas charges for transaction ID calculation;

    • Setting the GasPrice policy is mandatory for each transaction;

    • Changes in GasLimit and MAX_GAS_PER_TX rules;

    • get_message_proof now uses Nonce;

    • Predicates no longer use ChainId for address calculation;

      • manual_blocks_enabled replaced with debug;
    • fee_checked_from_tx utilizes FeeParameters;

    • Default enabling of utxo_validation and manual_blocks;

    • Changes in node configuration: Replacing local_node with default;

    • TransactionType no longer implements Transaction. Users need to match and extract the inner tx;

  • Typescript SDK

    • Typegen support for string slices

    • Auto-loading of storage slots when deploying contracts

    • Improved AssetID encoding/support

    • Improved package tree-shakeability

    • Support for Node v20 (LTS)

    • Support for GraphQL Subscriptions

    • Retry mechanism for failed transactions

    • Coin/UTXO caching

    • Improved DX and utility method for calculating fees

    • New CLI tools for creating/automating new fullstack Fuel dApps

    • TxPolicies introduced new fields:

      • WitnessLimit

      • MaxFee

    • ScriptGasLimit only limits script execution;

    • New WitnessLimit impacts max_gas and max_fee calculation;

    • get_message_proof now uses Nonce;

    • Predicates no longer use ChainId for address calculation;

      • manual_blocks_enabled replaced with debug;

🔌 Front End

  • Fuel Wallet Connectors

    • The Fuel Wallet Connectors introduces a comprehensive system for enhancing DApp interoperability with wallets and enables wallets to go beyond browser extensions without abstractions overhead. Implementations of other ecosystems inspire the new design; however, with Fuel, this is implemented on the protocol level to improve the user experience without increasing the complexity for DApp or wallet developers. Read more about it in our wiki: https://github.com/FuelLabs/fuels-wallet/wiki/Fuel-Wallet-Connectors
  • Fuel Wallet Connectors UI

Update your Fuel Wallet: If you cannot connect you Fuel wallet on the Fuel Bridge or on other apps, you may not be using the latest version of the Fuel Wallet. Here is how to update it:  Go to your Extensions parameters, activate the Developer Mode, and click the Update Button.

  • Fuel React Hooks

    • Now react developers can use our hooks library to develop more naturally, using hooks for interacting with the fuels SDK. Our documentation has been updated with more examples. You can check all the hooks available on our Hooks reference.
  • The new Fuel Explorer

    • The new Fuel Explorer was designed with users and developers in mind, creating a design that aims to help visualize overall details of the transaction, sequence of operations, inputs, and outputs. And for more advanced users we also included a view that enables to visualize the raw transaction, removing the need for multiple tools.

    • The new explorer also includes visualizations for Accounts and Predicates, Contracts and Blocks. Check it out here.

    More Resources for Developers and Users

    🧳 Migration guide

    🚰 Faucet

    • Valid transactions are required to deploy contracts and interact with the network, which require coins. Testnet ETH can be obtained from the faucet by completing a captcha.

    📃 GraphQL Endpoint

    • The Fuel Core node uses GraphQL instead of JSON RPC. A playground for the public GraphQL endpoint for beta-5 is available here.

    🏃🏻 Getting Started

    If you have any questions (development-related or otherwise), you can join the Fuel Labs Discord and head to the #questions channel under the Testnet category. Be sure to follow our Twitter for updates.

    beta-5 is developing actively and may see breaking upgrades and even regenesis events.


Join the Fuel community

Become a Fuel Contributor

Subscribe to Fuel Labs
Receive the latest updates directly to your inbox.
Mint this entry as an NFT to add it to your collection.
Verification
This entry has been permanently stored onchain and signed by its creator.