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.
🎙️ 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:
- Blockchain Language Design
- L2 Bridging
- Defining Rollup finality
- Account Abstraction
- Alternate VMs vs. EVM
- Introducing Base
- Fuelmint: Celestia, Fuel, and Rollkit
🏔️ 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:
- The Fuel dApp Template by Eda and Carlos: A developer-friendly starter kit for quickly building decentralized applications on Fuel! This template is built using NextJS, TypeScript, Tailwind CSS, Forc, and Sway.
- Build a DApp on Fuel by Sarah Schwartz: The essentials of what you need to know to get started building a dapp on Fuel.
- Building Decentralized Applications on Fuel by Eda and Carlos: A Dive into the Fuel dApp Template: Built using NextJS, TypeScript, Tailwind CSS, Forc, and Sway.
- FuelVM binary analysis by Jtriley: An article on the binary analysis of Fuel smart contracts. It goes through Sway compilation steps and picks apart the final executable.
- Bridging on Fuel by Rubyto: A 4 parts handful guide on how bridging on Fuel works behind the scenes: Part 1, Part 2, Part 3, Part 4.
- Fuel Build by @0xYami9 and @0xYuminomizu: A community-led ecosystem directory.
- Supercharging Modular Execution by Eshita from Messari: A in-depth look at the Fuel Network, including a deep dive into its architecture and design choices, and potential risks and concerns.
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 thefuels-rs
version that was used in compatibility tests. This gives users an idea of whatfuels
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 instd::inputs
; - Updated
std::storage::get
andstd::storage::StorageMap::get
to return anOption
; - Introduced
__state_clear
,std::storage::clear
, andstd::storage::StorageMap::remove
; - Introduced
std::storage::StorageBytes
; - Added
Not
trait implementations forU128
andU256
; - 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 toforc deploy
and amaturity
flag toforc deploy
andforc 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 toLDC
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;
derive
ableParameterize
andTokenizable
;- New script APIs:
ScriptTransaction
andCreateTransaction
; - 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 behindstd
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.