-
Notifications
You must be signed in to change notification settings - Fork 2.8k
Commit c9caf5d
authored
Release v0.25.0 (#1839)
## Version v0.25.0
### Fixed
- [#1821](#1821): Can handle
missing tables in snapshot.
- [#1814](#1814): Bugfix: the
`iter_all_by_prefix` was not working for all tables. The change adds a
`Rust` level filtering.
### Added
- [#1831](#1831): Included the
total gas and fee used by transaction into `TransactionStatus`.
- [#1821](#1821): Propagate
shutdown signal to (re)genesis. Also add progress bar for (re)genesis.
- [#1813](#1813): Added back
support for `/health` endpoint.
- [#1799](#1799): Snapshot
creation is now concurrent.
- [#1811](#1811): Regenesis
now preserves old blocks and transactions for GraphQL API.
### Changed
- [#1833](#1833): Regenesis of
`SpentMessages` and `ProcessedTransactions`.
- [#1830](#1830): Use
versioning enum for WASM executor input and output.
- [#1816](#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](#1812): Follow-up PR
to simplify the logic around parallel snapshot creation.
- [#1809](#1809): Fetch
`ConsensusParameters` from the database
- [#1808](#1808): Fetch
consensus parameters from the provider.
#### Breaking
- [#1826](#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.
The `ChainConfig` loads it automatically when `ChainConfig::load` is
called and pushes it back when `ChainConfig::write` is called.
- The `fuel-core` release bundle also contains the
`fuel-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 had `old_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`
and `ConsensusParametersVersions` 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:
```rust
let file = std::fs::File::open(path)?;
let mut snapshot: Self = serde_json::from_reader(&file)?;
```
with a:
```rust
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 the `SnapshotReader` directly. It is the preparation of the tests
for the futures bumps of the `Executor::VERSION`. When we increase the
version, all tests continue to use
`GenesisBlock.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. The `Config::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
the `fuel-core-wasm-executor` and forces recompilation (it is why we
need the cache), so WASM bytecode always is actual now.
- [#1822](#1822): Removed
support of `Create` transaction from debugger since it doesn't have any
script to execute.
- [#1822](#1822): Use `fuel-vm
0.49.0` with new transactions types - `Upgrade` and `Upload`. Also added
`max_bytecode_subsections` field to the `ConsensusParameters` to limit
the number of bytecode subsections in the state transition bytecode.
- [#1816](#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.
### Before requesting review
- [x] I have reviewed the code myself
### After merging, notify other teams
- [x] [Rust SDK](https://github.com/FuelLabs/fuels-rs/)
- [x] [Sway compiler](https://github.com/FuelLabs/sway/)
- [x] DevOps
## 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` and `ProcessedTransactions` by @xgreenx
in #1833
**Full Changelog**:
v0.24.2...v0.25.01 parent 3b862bf commit c9caf5dCopy full SHA for c9caf5d
File tree
7 files changed
+252
-238
lines changedFilter options
- bin/fuel-core/chainspec
- dev-testnet
- testnet
- crates/services/upgradable-executor/src
- deployment/charts
7 files changed
+252
-238
lines changed+2Lines changed: 2 additions & 0 deletions
Original file line number | Diff line number | Diff line change | |
---|---|---|---|
| |||
8 | 8 |
| |
9 | 9 |
| |
10 | 10 |
| |
| 11 | + | |
| 12 | + | |
11 | 13 |
| |
12 | 14 |
| |
13 | 15 |
| |
|
0 commit comments