v0.25.2
Version v0.25.1
Fixed
- #1844: Fixed the publishing of the
fuel-core 0.25.1
release. - 1842: Ignore RUSTSEC-2024-0336:
rustls::ConnectionCommon::complete_io
could fall into an infinite loop based on network - #1840: Fixed the publishing of the
fuel-core 0.25.0
release. - #1821: Can handle missing tables in snapshot.
- #1814: Bugfix: the
iter_all_by_prefix
was not working for all tables. The change adds aRust
level filtering.
Added
- #1831: Included the total gas and fee used by transaction into
TransactionStatus
. - #1821: Propagate shutdown signal to (re)genesis. Also add progress bar for (re)genesis.
- #1813: Added back support for
/health
endpoint. - #1799: Snapshot creation is now concurrent.
- #1811: Regenesis now preserves old blocks and transactions for GraphQL API.
Changed
- #1833: Regenesis of
SpentMessages
andProcessedTransactions
. - #1830: Use versioning enum for WASM executor input and output.
- #1816: Updated the upgradable executor to fetch the state transition bytecode from the database when the version doesn't match a native one. This change enables the WASM executor in the "production" build and requires a
wasm32-unknown-unknown
target. - #1812: Follow-up PR to simplify the logic around parallel snapshot creation.
- #1809: Fetch
ConsensusParameters
from the database - #1808: Fetch consensus parameters from the provider.
Breaking
- #1826: The changes make the state transition bytecode part of the
ChainConfig
. It guarantees the state transition's availability for the network's first blocks.
The change has many minor improvements in different areas related to the state transition bytecode:-
The state transition bytecode lies in its own file(
state_transition_bytecode.wasm
) along with the chain config file. TheChainConfig
loads it automatically whenChainConfig::load
is called and pushes it back whenChainConfig::write
is called. -
The
fuel-core
release bundle also contains thefuel-core-wasm-executor.wasm
file of the corresponding executor version. -
The regenesis process now considers the last block produced by the previous network. When we create a (re)genesis block of a new network, it has the
height = last_block_of_old_netowkr + 1
. It continues the old network and doesn't overlap blocks(before, we hadold_block.height == new_genesis_block.hegiht
). -
Along with the new block height, the regenesis process also increases the state transition bytecode and consensus parameters versions. It guarantees that a new network doesn't use values from the previous network and allows us not to migrate
StateTransitionBytecodeVersions
andConsensusParametersVersions
tables. -
Added a new CLI argument,
native-executor-version,
that allows overriding of the default version of the native executor. It can be useful for side rollups that have their own history of executor upgrades. -
Replaced:
let file = std::fs::File::open(path)?; let mut snapshot: Self = serde_json::from_reader(&file)?;
with a:
let mut json = String::new(); std::fs::File::open(&path) .with_context(|| format!("Could not open snapshot file: {path:?}"))? .read_to_string(&mut json)?; let mut snapshot: Self = serde_json::from_str(json.as_str())?;
because it is 100 times faster for big JSON files.
-
Updated all tests to use
Config::local_node_*
instead of working with theSnapshotReader
directly. It is the preparation of the tests for the futures bumps of theExecutor::VERSION
. When we increase the version, all tests continue to useGenesisBlock.state_transition_bytecode = 0
while the version is different, which forces the usage of the WASM executor, while for tests, we still prefer to test native execution. TheConfig::local_node_*
handles it and forces the executor to use the native version. -
Reworked the
build.rs
file of the upgradable executor. The script now caches WASM bytecode to avoid recompilation. Also, fixed the issue with outdated WASM bytecode. The script reacts on any modifications of thefuel-core-wasm-executor
and forces recompilation (it is why we need the cache), so WASM bytecode always is actual now.
-
- #1822: Removed support of
Create
transaction from debugger since it doesn't have any script to execute. - #1822: Use
fuel-vm 0.49.0
with new transactions types -Upgrade
andUpload
. Also addedmax_bytecode_subsections
field to theConsensusParameters
to limit the number of bytecode subsections in the state transition bytecode. - #1816: Updated the upgradable executor to fetch the state transition bytecode from the database when the version doesn't match a native one. This change enables the WASM executor in the "production" build and requires a
wasm32-unknown-unknown
target.
What's Changed
- Add PR template by @Dentosal in #1806
- feat: Parallellize snapshot creation by @segfault-magnet in #1799
- Follow-up PR to simplify the logic around parallel snapshot creation by @xgreenx in #1812
- Bugfix: the
iter_all_by_prefix
was not working for all tables by @xgreenx in #1814 - Added back support for
/health
endpoint by @xgreenx in #1813 - Fetch consensus parameters from the provider by @xgreenx in #1808
- Fetch
ConsensusParameters
from the database by @xgreenx in #1809 - Handle FTI messages in executor by @Voxelot in #1787
- Use state transition bytecode from the database by @xgreenx in #1816
- feat: (re)genesis graceful shutdown by @segfault-magnet in #1821
- Use
fuel-vm 0.49.0
with new transactions types by @xgreenx in #1822 - Included the total gas and fee into
TransactionStatus
by @xgreenx in #1831 - Use versioning enum for WASM executor input and output by @xgreenx in #1830
- Support upgradability of the consensus parameters and state transition bytecode in genesis by @xgreenx in #1826
- Store old blocks and txs after regenesis by @Dentosal in #1811
- Regenesis of
SpentMessages
andProcessedTransactions
by @xgreenx in #1833 - Release v0.25.0 by @xgreenx in #1839
- Fixed the publishing of the
fuel-core 0.25.0
by @xgreenx in #1840 - Release v0.25.1 by @xgreenx in #1841
- Ignore vulnerability
RUSTSEC-2024-0336
by @MitchTurner in #1842 - Fixed the publishing of the
fuel-core 0.25.1
by @xgreenx in #1844 - Release v0.25.2 by @xgreenx in #1845
Full Changelog: v0.24.2...v0.25.2