From 19d9b000bcfb058e8c2290d3cbfb6f8afd5cafe6 Mon Sep 17 00:00:00 2001 From: GoldenPath1109 Date: Fri, 5 Jul 2024 23:21:48 +0200 Subject: [PATCH] Release v0.31.0 (#2016) ## Version v0.31.0 ### Added - [#2014](https://github.com/FuelLabs/fuel-core/pull/2014): Added a separate thread for the block importer. - [#2013](https://github.com/FuelLabs/fuel-core/pull/2013): Added a separate thread to process P2P database lookups. - [#2004](https://github.com/FuelLabs/fuel-core/pull/2004): Added new CLI argument `continue-services-on-error` to control internal flow of services. - [#2004](https://github.com/FuelLabs/fuel-core/pull/2004): Added handling of incorrect shutdown of the off-chain GraphQL worker by using state rewind feature. - [#2007](https://github.com/FuelLabs/fuel-core/pull/2007): Improved metrics: - Added database metrics per column. - Added statistic about commit time of each database. - Refactored how metrics are registered: Now, we use only one register shared between all metrics. This global register is used to encode all metrics. - [#1996](https://github.com/FuelLabs/fuel-core/pull/1996): Added support for rollback command when state rewind feature is enabled. The command allows the rollback of the state of the blockchain several blocks behind until the end of the historical window. The default historical window it 7 days. - [#1996](https://github.com/FuelLabs/fuel-core/pull/1996): Added support for the state rewind feature. The feature allows the execution of the blocks in the past and the same execution results to be received. Together with forkless upgrades, execution of any block from the past is possible if historical data exist for the target block height. - [#1994](https://github.com/FuelLabs/fuel-core/pull/1994): Added the actual implementation for the `AtomicView::latest_view`. - [#1972](https://github.com/FuelLabs/fuel-core/pull/1972): Implement `AlgorithmUpdater` for `GasPriceService` - [#1948](https://github.com/FuelLabs/fuel-core/pull/1948): Add new `AlgorithmV1` and `AlgorithmUpdaterV1` for the gas price. Include tools for analysis - [#1676](https://github.com/FuelLabs/fuel-core/pull/1676): Added new CLI arguments: - `graphql-max-depth` - `graphql-max-complexity` - `graphql-max-recursive-depth` ### Changed - [#2015](https://github.com/FuelLabs/fuel-core/pull/2015): Small fixes for the database: - Fixed the name for historical columns - Metrics was working incorrectly for historical columns. - Added recommended setting for the RocksDB - The source of recommendation is official documentation https://github.com/facebook/rocksdb/wiki/Setup-Options-and-Basic-Tuning#other-general-options. - Removed repairing since it could corrupt the database if fails - Several users reported about the corrupted state of the database after having a "Too many descriptors" error where in logs, repairing of the database also failed with this error creating a `lost` folder. - [#2010](https://github.com/FuelLabs/fuel-core/pull/2010): Updated the block importer to allow more blocks to be in the queue. It improves synchronization speed and mitigate the impact of other services on synchronization speed. - [#2006](https://github.com/FuelLabs/fuel-core/pull/2006): Process block importer events first under P2P pressure. - [#2002](https://github.com/FuelLabs/fuel-core/pull/2002): Adapted the block producer to react to checked transactions that were using another version of consensus parameters during validation in the TxPool. After an upgrade of the consensus parameters of the network, TxPool could store invalid `Checked` transactions. This change fixes that by tracking the version that was used to validate the transactions. - [#1999](https://github.com/FuelLabs/fuel-core/pull/1999): Minimize the number of panics in the codebase. - [#1990](https://github.com/FuelLabs/fuel-core/pull/1990): Use latest view for mutate GraphQL queries after modification of the node. - [#1992](https://github.com/FuelLabs/fuel-core/pull/1992): Parse multiple relayer contracts, `RELAYER-V2-LISTENING-CONTRACTS` env variable using a `,` delimiter. - [#1980](https://github.com/FuelLabs/fuel-core/pull/1980): Add `Transaction` to relayer 's event filter #### Breaking - [#2012](https://github.com/FuelLabs/fuel-core/pull/2012): Bumped the `fuel-vm` to `0.55.0` release. More about the change [here](https://github.com/FuelLabs/fuel-vm/releases/tag/v0.55.0). - [#2001](https://github.com/FuelLabs/fuel-core/pull/2001): Prevent GraphQL query body to be huge and cause OOM. The default body size is `1MB`. The limit can be changed by the `graphql-request-body-bytes-limit` CLI argument. - [#1991](https://github.com/FuelLabs/fuel-core/pull/1991): Prepare the database to use different types than `Database` for atomic view. - [#1989](https://github.com/FuelLabs/fuel-core/pull/1989): Extract `HistoricalView` trait from the `AtomicView`. - [#1676](https://github.com/FuelLabs/fuel-core/pull/1676): New `fuel-core-client` is incompatible with the old `fuel-core` because of two requested new fields. - [#1676](https://github.com/FuelLabs/fuel-core/pull/1676): Changed default value for `api-request-timeout` to be `30s`. - [#1676](https://github.com/FuelLabs/fuel-core/pull/1676): Now, GraphQL API has complexity and depth limitations on the queries. The default complexity limit is `20000`. It is ~50 blocks per request with transaction IDs and ~2-5 full blocks. ### Fixed - [#2000](https://github.com/FuelLabs/fuel-core/pull/2000): Use correct query name in metrics for aliased queries. ## What's Changed * Generate and publish code coverage reports in the CI by @Dentosal in https://github.com/FuelLabs/fuel-core/pull/1947 * Gas Price Algorithm by @MitchTurner in https://github.com/FuelLabs/fuel-core/pull/1948 * Use companies fork of the `publish-crates` action by @xgreenx in https://github.com/FuelLabs/fuel-core/pull/1986 * Weekly `cargo update` by @github-actions in https://github.com/FuelLabs/fuel-core/pull/1985 * Implement gas price updater for service by @MitchTurner in https://github.com/FuelLabs/fuel-core/pull/1972 * Extract `HistoricalView` trait from the `AtomicView` by @xgreenx in https://github.com/FuelLabs/fuel-core/pull/1989 * Use fresh `ReadView` for mutate queries by @xgreenx in https://github.com/FuelLabs/fuel-core/pull/1990 * Prevent api spam with GQL complexity limits by @Voxelot in https://github.com/FuelLabs/fuel-core/pull/1676 * Enable parsing multiple relayer listening contract addresses from environment variables by @Jurshsmith in https://github.com/FuelLabs/fuel-core/pull/1992 * Prepare the database to use different types than `Database` for atomic view by @xgreenx in https://github.com/FuelLabs/fuel-core/pull/1991 * Added the actual implementation for the `AtomicView::latest_view` by @xgreenx in https://github.com/FuelLabs/fuel-core/pull/1994 * Weekly `cargo update` by @github-actions in https://github.com/FuelLabs/fuel-core/pull/1998 * Minimize the number of panics in the codebase by @xgreenx in https://github.com/FuelLabs/fuel-core/pull/1999 * feat: include Transaction events in topic0 filter for download_logs by @DefiCake in https://github.com/FuelLabs/fuel-core/pull/1980 * Use correct query name for metrics by @xgreenx in https://github.com/FuelLabs/fuel-core/pull/2000 * Prevent GraphQL query body to be huge and cause OOM by @xgreenx in https://github.com/FuelLabs/fuel-core/pull/2001 * Adapted the block producer to react on the outdated transactions from the TxPool by @xgreenx in https://github.com/FuelLabs/fuel-core/pull/2002 * Process block importer events first under P2P pressure by @xgreenx in https://github.com/FuelLabs/fuel-core/pull/2006 * Implementation of the state rewind feature for the RocksDB by @xgreenx in https://github.com/FuelLabs/fuel-core/pull/1996 * Upgraded `fuel-vm` to `0.55.0` by @xgreenx in https://github.com/FuelLabs/fuel-core/pull/2012 * Improved metrics for the database by @xgreenx in https://github.com/FuelLabs/fuel-core/pull/2007 * Updated block importer to allow more blocks to be queue by @xgreenx in https://github.com/FuelLabs/fuel-core/pull/2010 * Added handling of incorrect shutdown of the off-chain GraphQL worker by @xgreenx in https://github.com/FuelLabs/fuel-core/pull/2004 * Moved P2P database lookups into a separate thread by @xgreenx in https://github.com/FuelLabs/fuel-core/pull/2013 * Use dedicated thread for the block importer by @xgreenx in https://github.com/FuelLabs/fuel-core/pull/2014 * Small fixes for the database by @xgreenx in https://github.com/FuelLabs/fuel-core/pull/2015 ## New Contributors * @Jurshsmith made their first contribution in https://github.com/FuelLabs/fuel-core/pull/1992 * @DefiCake made their first contribution in https://github.com/FuelLabs/fuel-core/pull/1980 **Full Changelog**: https://github.com/FuelLabs/fuel-core/compare/v0.30.0...v0.31.0 --- CHANGELOG.md | 2 + Cargo.lock | 56 +++++++++--------- Cargo.toml | 56 +++++++++--------- .../chainspec/local-testnet/chain_config.json | 2 +- .../state_transition_bytecode.wasm | Bin 2019655 -> 2019655 bytes ..._tests__snapshot_local_testnet_config.snap | 2 +- .../upgradable-executor/src/executor.rs | 3 +- crates/types/src/blockchain/header.rs | 2 +- 8 files changed, 63 insertions(+), 60 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 349b5611..a3a743f3 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,6 +6,8 @@ and this project adheres to [Semantic Versioning](http://semver.org/). ## [Unreleased] +## [Version 0.31.0] + ### Added - [#2014](https://github.com/FuelLabs/fuel-core/pull/2014): Added a separate thread for the block importer. - [#2013](https://github.com/FuelLabs/fuel-core/pull/2013): Added a separate thread to process P2P database lookups. diff --git a/Cargo.lock b/Cargo.lock index 647067f4..79f0c936 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2785,7 +2785,7 @@ dependencies = [ [[package]] name = "fuel-core" -version = "0.30.0" +version = "0.31.0" dependencies = [ "anyhow", "assert_matches", @@ -2875,11 +2875,11 @@ dependencies = [ [[package]] name = "fuel-core-bft" -version = "0.30.0" +version = "0.31.0" [[package]] name = "fuel-core-bin" -version = "0.30.0" +version = "0.31.0" dependencies = [ "anyhow", "async-trait", @@ -2912,7 +2912,7 @@ dependencies = [ [[package]] name = "fuel-core-chain-config" -version = "0.30.0" +version = "0.31.0" dependencies = [ "anyhow", "bech32", @@ -2938,7 +2938,7 @@ dependencies = [ [[package]] name = "fuel-core-client" -version = "0.30.0" +version = "0.31.0" dependencies = [ "anyhow", "cynic", @@ -2961,7 +2961,7 @@ dependencies = [ [[package]] name = "fuel-core-client-bin" -version = "0.30.0" +version = "0.31.0" dependencies = [ "clap 4.5.8", "fuel-core-client", @@ -2972,7 +2972,7 @@ dependencies = [ [[package]] name = "fuel-core-consensus-module" -version = "0.30.0" +version = "0.31.0" dependencies = [ "anyhow", "fuel-core-chain-config", @@ -2984,7 +2984,7 @@ dependencies = [ [[package]] name = "fuel-core-database" -version = "0.30.0" +version = "0.31.0" dependencies = [ "anyhow", "derive_more", @@ -2995,7 +2995,7 @@ dependencies = [ [[package]] name = "fuel-core-e2e-client" -version = "0.30.0" +version = "0.31.0" dependencies = [ "anyhow", "assert_cmd", @@ -3021,7 +3021,7 @@ dependencies = [ [[package]] name = "fuel-core-executor" -version = "0.30.0" +version = "0.31.0" dependencies = [ "anyhow", "fuel-core-storage", @@ -3035,7 +3035,7 @@ dependencies = [ [[package]] name = "fuel-core-gas-price-service" -version = "0.30.0" +version = "0.31.0" dependencies = [ "anyhow", "async-trait", @@ -3051,7 +3051,7 @@ dependencies = [ [[package]] name = "fuel-core-importer" -version = "0.30.0" +version = "0.31.0" dependencies = [ "anyhow", "derive_more", @@ -3069,7 +3069,7 @@ dependencies = [ [[package]] name = "fuel-core-keygen" -version = "0.30.0" +version = "0.31.0" dependencies = [ "anyhow", "clap 4.5.8", @@ -3080,7 +3080,7 @@ dependencies = [ [[package]] name = "fuel-core-keygen-bin" -version = "0.30.0" +version = "0.31.0" dependencies = [ "anyhow", "atty", @@ -3093,7 +3093,7 @@ dependencies = [ [[package]] name = "fuel-core-metrics" -version = "0.30.0" +version = "0.31.0" dependencies = [ "parking_lot", "pin-project-lite", @@ -3105,7 +3105,7 @@ dependencies = [ [[package]] name = "fuel-core-p2p" -version = "0.30.0" +version = "0.31.0" dependencies = [ "anyhow", "async-trait", @@ -3142,7 +3142,7 @@ dependencies = [ [[package]] name = "fuel-core-poa" -version = "0.30.0" +version = "0.31.0" dependencies = [ "anyhow", "async-trait", @@ -3161,7 +3161,7 @@ dependencies = [ [[package]] name = "fuel-core-producer" -version = "0.30.0" +version = "0.31.0" dependencies = [ "anyhow", "async-trait", @@ -3179,7 +3179,7 @@ dependencies = [ [[package]] name = "fuel-core-relayer" -version = "0.30.0" +version = "0.31.0" dependencies = [ "anyhow", "async-trait", @@ -3211,7 +3211,7 @@ dependencies = [ [[package]] name = "fuel-core-services" -version = "0.30.0" +version = "0.31.0" dependencies = [ "anyhow", "async-trait", @@ -3225,7 +3225,7 @@ dependencies = [ [[package]] name = "fuel-core-storage" -version = "0.30.0" +version = "0.31.0" dependencies = [ "anyhow", "derive_more", @@ -3249,7 +3249,7 @@ dependencies = [ [[package]] name = "fuel-core-sync" -version = "0.30.0" +version = "0.31.0" dependencies = [ "anyhow", "async-trait", @@ -3307,7 +3307,7 @@ dependencies = [ [[package]] name = "fuel-core-trace" -version = "0.30.0" +version = "0.31.0" dependencies = [ "ctor", "tracing", @@ -3317,7 +3317,7 @@ dependencies = [ [[package]] name = "fuel-core-txpool" -version = "0.30.0" +version = "0.31.0" dependencies = [ "anyhow", "async-trait", @@ -3342,7 +3342,7 @@ dependencies = [ [[package]] name = "fuel-core-types" -version = "0.30.0" +version = "0.31.0" dependencies = [ "anyhow", "bs58", @@ -3359,7 +3359,7 @@ dependencies = [ [[package]] name = "fuel-core-upgradable-executor" -version = "0.30.0" +version = "0.31.0" dependencies = [ "anyhow", "fuel-core-executor", @@ -3375,7 +3375,7 @@ dependencies = [ [[package]] name = "fuel-core-wasm-executor" -version = "0.30.0" +version = "0.31.0" dependencies = [ "anyhow", "fuel-core-executor", @@ -3421,7 +3421,7 @@ dependencies = [ [[package]] name = "fuel-gas-price-algorithm" -version = "0.30.0" +version = "0.31.0" dependencies = [ "thiserror", ] diff --git a/Cargo.toml b/Cargo.toml index 9543090b..c19705bc 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -50,39 +50,39 @@ homepage = "https://fuel.network/" keywords = ["blockchain", "cryptocurrencies", "fuel-vm", "vm"] license = "BUSL-1.1" repository = "https://github.com/FuelLabs/fuel-core" -version = "0.30.0" +version = "0.31.0" [workspace.dependencies] # Workspace members -fuel-core = { version = "0.30.0", path = "./crates/fuel-core", default-features = false } -fuel-core-client-bin = { version = "0.30.0", path = "./bin/fuel-core-client" } -fuel-core-bin = { version = "0.30.0", path = "./bin/fuel-core" } -fuel-core-keygen = { version = "0.30.0", path = "./crates/keygen" } -fuel-core-keygen-bin = { version = "0.30.0", path = "./bin/keygen" } -fuel-core-chain-config = { version = "0.30.0", path = "./crates/chain-config", default-features = false } -fuel-core-client = { version = "0.30.0", path = "./crates/client" } -fuel-core-database = { version = "0.30.0", path = "./crates/database" } -fuel-core-metrics = { version = "0.30.0", path = "./crates/metrics" } -fuel-core-services = { version = "0.30.0", path = "./crates/services" } -fuel-core-consensus-module = { version = "0.30.0", path = "./crates/services/consensus_module" } -fuel-core-bft = { version = "0.30.0", path = "./crates/services/consensus_module/bft" } -fuel-core-poa = { version = "0.30.0", path = "./crates/services/consensus_module/poa" } -fuel-core-executor = { version = "0.30.0", path = "./crates/services/executor", default-features = false } -fuel-core-importer = { version = "0.30.0", path = "./crates/services/importer" } -fuel-core-gas-price-service = { version = "0.30.0", path = "crates/services/gas_price_service" } -fuel-core-p2p = { version = "0.30.0", path = "./crates/services/p2p" } -fuel-core-producer = { version = "0.30.0", path = "./crates/services/producer" } -fuel-core-relayer = { version = "0.30.0", path = "./crates/services/relayer" } -fuel-core-sync = { version = "0.30.0", path = "./crates/services/sync" } -fuel-core-txpool = { version = "0.30.0", path = "./crates/services/txpool" } -fuel-core-storage = { version = "0.30.0", path = "./crates/storage", default-features = false } -fuel-core-trace = { version = "0.30.0", path = "./crates/trace" } -fuel-core-types = { version = "0.30.0", path = "./crates/types", default-features = false } +fuel-core = { version = "0.31.0", path = "./crates/fuel-core", default-features = false } +fuel-core-client-bin = { version = "0.31.0", path = "./bin/fuel-core-client" } +fuel-core-bin = { version = "0.31.0", path = "./bin/fuel-core" } +fuel-core-keygen = { version = "0.31.0", path = "./crates/keygen" } +fuel-core-keygen-bin = { version = "0.31.0", path = "./bin/keygen" } +fuel-core-chain-config = { version = "0.31.0", path = "./crates/chain-config", default-features = false } +fuel-core-client = { version = "0.31.0", path = "./crates/client" } +fuel-core-database = { version = "0.31.0", path = "./crates/database" } +fuel-core-metrics = { version = "0.31.0", path = "./crates/metrics" } +fuel-core-services = { version = "0.31.0", path = "./crates/services" } +fuel-core-consensus-module = { version = "0.31.0", path = "./crates/services/consensus_module" } +fuel-core-bft = { version = "0.31.0", path = "./crates/services/consensus_module/bft" } +fuel-core-poa = { version = "0.31.0", path = "./crates/services/consensus_module/poa" } +fuel-core-executor = { version = "0.31.0", path = "./crates/services/executor", default-features = false } +fuel-core-importer = { version = "0.31.0", path = "./crates/services/importer" } +fuel-core-gas-price-service = { version = "0.31.0", path = "crates/services/gas_price_service" } +fuel-core-p2p = { version = "0.31.0", path = "./crates/services/p2p" } +fuel-core-producer = { version = "0.31.0", path = "./crates/services/producer" } +fuel-core-relayer = { version = "0.31.0", path = "./crates/services/relayer" } +fuel-core-sync = { version = "0.31.0", path = "./crates/services/sync" } +fuel-core-txpool = { version = "0.31.0", path = "./crates/services/txpool" } +fuel-core-storage = { version = "0.31.0", path = "./crates/storage", default-features = false } +fuel-core-trace = { version = "0.31.0", path = "./crates/trace" } +fuel-core-types = { version = "0.31.0", path = "./crates/types", default-features = false } fuel-core-tests = { version = "0.0.0", path = "./tests" } -fuel-core-upgradable-executor = { version = "0.30.0", path = "./crates/services/upgradable-executor" } -fuel-core-wasm-executor = { version = "0.30.0", path = "./crates/services/upgradable-executor/wasm-executor", default-features = false } +fuel-core-upgradable-executor = { version = "0.31.0", path = "./crates/services/upgradable-executor" } +fuel-core-wasm-executor = { version = "0.31.0", path = "./crates/services/upgradable-executor/wasm-executor", default-features = false } fuel-core-xtask = { version = "0.0.0", path = "./xtask" } -fuel-gas-price-algorithm = { version = "0.30.0", path = "crates/fuel-gas-price-algorithm" } +fuel-gas-price-algorithm = { version = "0.31.0", path = "crates/fuel-gas-price-algorithm" } # Fuel dependencies fuel-vm-private = { version = "0.55.0", package = "fuel-vm", default-features = false } diff --git a/bin/fuel-core/chainspec/local-testnet/chain_config.json b/bin/fuel-core/chainspec/local-testnet/chain_config.json index 51d6075f..c90809be 100644 --- a/bin/fuel-core/chainspec/local-testnet/chain_config.json +++ b/bin/fuel-core/chainspec/local-testnet/chain_config.json @@ -279,7 +279,7 @@ "privileged_address": "9f0e19d6c2a6283a3222426ab2630d35516b1799b503f37b02105bebe1b8a3e9" } }, - "genesis_state_transition_version": 4, + "genesis_state_transition_version": 5, "consensus": { "PoA": { "signing_key": "e0a9fcde1b73f545252e01b30b50819eb9547d07531fa3df0385c5695736634d" diff --git a/bin/fuel-core/chainspec/local-testnet/state_transition_bytecode.wasm b/bin/fuel-core/chainspec/local-testnet/state_transition_bytecode.wasm index 9907ada7564e333ecd7ca05f7011ee303c57e027..43a4a3402c62b1b3e945b9ac0c272befe35cef96 100755 GIT binary patch delta 58759 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 diff --git a/crates/chain-config/src/config/snapshots/fuel_core_chain_config__config__chain__tests__snapshot_local_testnet_config.snap b/crates/chain-config/src/config/snapshots/fuel_core_chain_config__config__chain__tests__snapshot_local_testnet_config.snap index 74839ff5..532eb750 100644 --- a/crates/chain-config/src/config/snapshots/fuel_core_chain_config__config__chain__tests__snapshot_local_testnet_config.snap +++ b/crates/chain-config/src/config/snapshots/fuel_core_chain_config__config__chain__tests__snapshot_local_testnet_config.snap @@ -283,7 +283,7 @@ expression: json "privileged_address": "0000000000000000000000000000000000000000000000000000000000000000" } }, - "genesis_state_transition_version": 4, + "genesis_state_transition_version": 5, "consensus": { "PoA": { "signing_key": "22ec92c3105c942a6640bdc4e4907286ec4728e8cfc0d8ac59aad4d8e1ccaefb" diff --git a/crates/services/upgradable-executor/src/executor.rs b/crates/services/upgradable-executor/src/executor.rs index 12acb948..f6493958 100644 --- a/crates/services/upgradable-executor/src/executor.rs +++ b/crates/services/upgradable-executor/src/executor.rs @@ -135,7 +135,8 @@ impl Executor { ("0-27-0", 1), ("0-28-0", 2), ("0-29-0", 3), - ("0-30-0", LATEST_STATE_TRANSITION_VERSION), + ("0-30-0", 4), + ("0-31-0", LATEST_STATE_TRANSITION_VERSION), ]; pub fn new( diff --git a/crates/types/src/blockchain/header.rs b/crates/types/src/blockchain/header.rs index 543ef5a0..861cda18 100644 --- a/crates/types/src/blockchain/header.rs +++ b/crates/types/src/blockchain/header.rs @@ -163,7 +163,7 @@ pub type ConsensusParametersVersion = u32; pub type StateTransitionBytecodeVersion = u32; /// The latest version of the state transition bytecode. -pub const LATEST_STATE_TRANSITION_VERSION: StateTransitionBytecodeVersion = 4; +pub const LATEST_STATE_TRANSITION_VERSION: StateTransitionBytecodeVersion = 5; #[derive(Copy, Clone, Debug, PartialEq, Eq)] #[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]