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 deprecatesU256
Method calls between
impl
methods are now allowedWe 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 warningsSmall values such as
()
andu8
are now represented by a single byte in memory instead of a full wordFunctions 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 thePredicateId
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 nativeu256
;Add conversion from
Address
/ContractId
types toIdentity
;Automatic transaction parameters defaults from the network: Changes
gas_limit
andgas_price
inTxParams
to be optional.TransactionBuilder
s use the corresponding values fromConsensusParameters
andNodeInfo
duringbuild()
if these fields were set toNone
;UX improvement around predicate witness data access;
UX improvement around the
Bytes
type through the newfrom_hex_str
;TxParameters
are replaced withTxPolicies
;TxPolicies
introduced new fields:WitnessLimit
MaxFee
ScriptGasLimit
only limits script execution;New
WitnessLimit
impactsmax_gas
andmax_fee
calculation;Minimal gas charges for transaction ID calculation;
Setting the
GasPrice
policy is mandatory for each transaction;Changes in
GasLimit
andMAX_GAS_PER_TX
rules;get_message_proof
now usesNonce
;Predicates no longer use
ChainId
for address calculation;manual_blocks_enabled
replaced withdebug
;
fee_checked_from_tx
utilizesFeeParameters
;Default enabling of
utxo_validation
andmanual_blocks
;Changes in node configuration: Replacing
local_node
withdefault
;TransactionType
no longer implementsTransaction
. 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/supportImproved 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
impactsmax_gas
andmax_fee
calculation;get_message_proof
now usesNonce
;Predicates no longer use
ChainId
for address calculation;manual_blocks_enabled
replaced withdebug
;
🔌 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
- The new Connectors UI implemented on top of the new Connectors pattern, provide for react application a ready to use UI, to allow users to select the Wallet they want to use. https://next-wallet.fuel.network/docs/dev/connectors/#with-react
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
- To address any breaking changes from
beta-4
, active builders in the Fuel ecosystem can follow the migration guide → https://docs.fuel.network/guides/testnet-migration/
🚰 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
For an overview of Fuel, look at the new Fuel documentation portal.
To begin building on Fuel, check out the developer quickstart. This guide provides an end-to-end walkthrough for developers building a dapp on Fuel.
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.