Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Release v0.25.0 #1839

Merged
merged 1 commit into from
Apr 18, 2024
Merged

Release v0.25.0 #1839

merged 1 commit into from
Apr 18, 2024

Conversation

xgreenx
Copy link
Collaborator

@xgreenx xgreenx commented Apr 18, 2024

Version v0.25.0

Fixed

  • #1821: Can handle missing tables in snapshot.
  • #1814: Bugfix: the iter_all_by_prefix was not working for all tables. The change adds a Rust 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 and ProcessedTransactions.
  • #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. 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:

               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 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: 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 and Upload. Also added max_bytecode_subsections field to the ConsensusParameters 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.

Before requesting review

  • I have reviewed the code myself

After merging, notify other teams

What's Changed

Full Changelog: v0.24.2...v0.25.0

@xgreenx xgreenx requested a review from a team April 18, 2024 21:48
@xgreenx xgreenx self-assigned this Apr 18, 2024
/// This constant is used along with the `version_check` test.
/// To avoid automatic bumping during release, the constant uses `-` instead of `.`.
#[cfg(test)]
pub const CRATE_VERSION: &'static str = "0-24-2";
pub const CRATE_VERSION: &'static str = "0-25-0";
Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It is the first release with formless upgrades available, so the version should be zero. All next releases should increase the version.

Copy link
Contributor

@bvrooman bvrooman left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

👍

@xgreenx xgreenx merged commit c9caf5d into master Apr 18, 2024
34 checks passed
@xgreenx xgreenx deleted the release/v0.25.0 branch April 18, 2024 22:28
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants