Version v0.25.1
Fixed
- #1844: Fixed the publishing of the
fuel-core 0.25.1release. - 1842: Ignore RUSTSEC-2024-0336:
rustls::ConnectionCommon::complete_iocould fall into an infinite loop based on network - #1840: Fixed the publishing of the
fuel-core 0.25.0release. - #1821: Can handle missing tables in snapshot.
- #1814: Bugfix: the
iter_all_by_prefixwas not working for all tables. The change adds aRustlevel 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
/healthendpoint. - #1799: Snapshot creation is now concurrent.
- #1811: Regenesis now preserves old blocks and transactions for GraphQL API.
Changed
- #1833: Regenesis of
SpentMessagesandProcessedTransactions. - #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-unknowntarget. - #1812: Follow-up PR to simplify the logic around parallel snapshot creation.
- #1809: Fetch
ConsensusParametersfrom 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. TheChainConfigloads it automatically whenChainConfig::loadis called and pushes it back whenChainConfig::writeis called. -
The
fuel-corerelease bundle also contains thefuel-core-wasm-executor.wasmfile 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
StateTransitionBytecodeVersionsandConsensusParametersVersionstables. -
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 theSnapshotReaderdirectly. 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 = 0while 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.rsfile 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-executorand forces recompilation (it is why we need the cache), so WASM bytecode always is actual now.
-
- #1822: Removed support of
Createtransaction from debugger since it doesn't have any script to execute. - #1822: Use
fuel-vm 0.49.0with new transactions types -UpgradeandUpload. Also addedmax_bytecode_subsectionsfield to theConsensusParametersto 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-unknowntarget.
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_prefixwas not working for all tables by @xgreenx in #1814 - Added back support for
/healthendpoint by @xgreenx in #1813 - Fetch consensus parameters from the provider by @xgreenx in #1808
- Fetch
ConsensusParametersfrom 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.0with new transactions types by @xgreenx in #1822 - Included the total gas and fee into
TransactionStatusby @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
SpentMessagesandProcessedTransactionsby @xgreenx in #1833 - Release v0.25.0 by @xgreenx in #1839
- Fixed the publishing of the
fuel-core 0.25.0by @xgreenx in #1840 - Release v0.25.1 by @xgreenx in #1841
- Ignore vulnerability
RUSTSEC-2024-0336by @MitchTurner in #1842 - Fixed the publishing of the
fuel-core 0.25.1by @xgreenx in #1844 - Release v0.25.2 by @xgreenx in #1845
Full Changelog: v0.24.2...v0.25.2