Inside Fuel: Q1 2023

Welcome to Inside Fuel, our quarterly review of technical developments and everything happening on the Fuel Network. Take a moment to catch up on all the latest news.

Inside Fuel: Q1 2023

Welcome to Inside Fuel, our quarterly review of technical developments and everything happening on the Fuel Network. Take a moment to catch up on all the latest news.


Building the fastest modular execution layer would not be possible without an incredible contributor team. Here are the newest additions to the team this quarter:


🦀 Rust in Blockchain

According to the Rust In Blockchain monthly review, Fuel is one of the most active Rust-based projects this quarter, ranking us once again in the Top 5 of the most active Rust-based blockchains.

✨ Unveiling the new Fuel Branding

We officially unveiled the new visual identity of Fuel, the fastest modular execution layer.

0:00
/

🎙️ Layer 2 Day

Right before ETH Denver, we hosted Layer 2 Day, a one-day-long event gathering all the major Ethereum Scalability maximalists from all over the world to talk about the future of blockchain, language design, account abstraction, and more!

Watch the replay of all the talks and panels:

🏔️ ETH Denver

ETH Denver was an incredible opportunity for us to meet, grow and share insights to the Fuel community. If you were there, you maybe also got the chance to drink Moscow Fuel cocktails and receive exclusive Fuel swag!

ETH Denver was also the chance for developers to experience building on Fuel using Sway. Here is a recap of the winning projects:


A sample of some of the best content shared on social media by some internal and external Fuel contributors:

Much more awesome Fuel content can be found here.


Fuelup

What is Fuelup?

Fuelup is the official package manager and multiplexer for Fuel that installs The Fuel Toolchain from the official release channels. It enables you to easily install pre-packaged toolchains, keep them up to date, or even create custom toolchains and switch between them.

Binaries are executed through Fuelup as proxies allowing flexibility in the execution of tools.

It simplifies building and maintaining Sway applications with forc and fuel-core for common platforms.

  • The fuelup installation script and docs are now all at https://install.fuel.network/latest;
  • fuelup show shows the fuels-rs SDK version that the release version was tested against [Read more];
  • fuelup show now shows the fuels-rs version that was used in compatibility tests. This gives users an idea of what fuels version will certainly be compatible with the toolchain;

🌴 Sway

General Updates

  • Added a new pass manager for the IR optimizer;
  • Introduction of the #[allow(dead_code)] annotation;
  • Added support for Enum::<T>::Variant syntax;
  • Improvement of the performance of the register allocator;
  • Disabled usage of parenthesis in unit enum variants;
  • Added support for supertraits for ABIs;

Bug Fixes

  • Various fixes and improvements to dead code analysis;
  • Fixed multiple bugs in the type system;
  • Fixed some issues related to name shadowing rules in Sway;

Standard Library

  • Extended support for Input::Message type fields in std::inputs;
  • Updated std::storage::get and std::storage::StorageMap::get to return an Option;
  • Introduced __state_clear, std::storage::clear, and std::storage::StorageMap::remove;
  • Introduced std::storage::StorageBytes;
  • Added Not trait implementations for U128 and U256;
  • Added a TryFrom trait ;

Tooling

  • Added Markdown formatting to item previews in forc doc;
  • Added support for inner module doc attributes with #! and //! syntax;
  • Added syntax highlighting to code blocks in forc doc;
  • Various enhancements to the LSP including collecting more tokens from the language;
  • Allow formatting a single file via forc fmt --path;

Forc

  • Added a forc-submit plugin command for submitting txs to a given node;
  • Added salt flag to forc deploy and a maturity flag to forc deploy and forc run;
  • Added a forc build flag to treat warnings as errors;

Fuel Core

Features:

  • Implementation of a Keygen CLI for configuring nodes;
  • Helm charts for multi-node deployments with sentries;
  • Sticky sessions for routing API requests to sentries;
  • Graceful shutdown for all fuel-core components;
  • Decoupled API logic from GraphQL resolvers to support alternative RPCs;
  • Support for TxPointer on inputs;
  • Retryable messages have been implemented;
  • Withdrawal proofs that support periodic commits to L1;
  • Full merklization of contract state, balances, and block headers;
  • Zero-length memory ranges can now pass the ownership check if the position is correct;
  • New relative jump opcodes, new CFE instruction and an update to LDC to support position-independent code in the compiler;

Improvements:

  • Numerous significant database performance improvements;
  • Improved bridging safety with a separate column for message spent status;
  • Removal of most usages of unsafe with equally performing alternatives in the VM;
  • Removal of recursive bottlenecks in the VM;
  • ChainID is now utilized during transaction IDs and predicate owner hashing;
  • $HP now registers points to the first available byte on the heap;
  • SMO has been updated to charge from an internal balance in an internal context;
  • Improved load-balancing, metrics, log formatting of very large fields, and UTXO pruning;

Refactoring:

  • Refactoring of the VM for better unit testability;

SDKs (Fuel-TS & Fuel-RS)

🦀 Rust SDK

Features:

  • Support raw_slice returns from scripts and contracts;
  • Support for custom assets forwarding in contract calls;
  • Support for Sway’s #[payable];
  • Support for Sway’s configurable constants — use the SDK to update constants values with needing to recompile your Sway code;
  • deriveable Parameterize and Tokenizable;
  • New script APIs: ScriptTransaction and CreateTransaction;
  • Type path support and resolution of conflicting types;
  • Vec as output types for contract methods;
  • A new way to filter spendable resources;
  • Enable payments with predicates;
  • Support returning Vec<> types from contracts;
  • Return result from try_from_type_application;
  • Added the latest block time and spendable resources with exclusion;

Improvements:

  • Better testability with the new support for assert_eq logs;
  • Better contract deployment configuration;
  • Friendlier way to retrieve the latest block time;

Bug Fixes:

  • Storage slots have to be sorted in a create tx;
  • Make load_contract pub;
  • Coins query no longer returns spent coins;

Refactoring:

  • fuels wasm-offending packages/reexports hidden behind std flag;
  • Improvement of log decoding and simplification of ParamType;
  • Contract deployment configuration;
  • Removal of the Byte type from the SDK;
  • Removal of unused file cargo;
  • Reorganization of harness tests;
  • Update of the PR template;

Documentation:

  • Update docs about vectors;

🧰 TypeScript SDK

Features:

  • Full support for predicates and script ABI in the new typegen;
  • main argument support for predicates and scripts;
  • Add Predicate ABIs support to Typegen;
  • Add Script ABIs support to Typegen;
  • Implementation of vector as output slice;

Improvements:

  • Predicates now work similarly to wallets — predicates are now usable to pay for fees and more;
  • Switched the documentation engine;
  • Re-organization of constants throughout the repo;
  • Standardization of package configurations;

Bug Fixes:

  • Fixed B512 ABI coder and Typegen to expect its correct Sway type;

Follow Us

About Us

Fuel is the fastest execution layer for the modular blockchain stack. Powerful and sleek, the technology enables parallel transaction execution, empowering developers with the highest flexible throughput and maximum security required to scale. Developers choose the FuelVM for its superior developer experience and the ability to go beyond the limitations of the EVM.

Become a Contributor