Skip to content

Releases: FuelLabs/fuel-core

v0.40.3

16 Jan 14:28
Compare
Choose a tag to compare

Version v0.40.3

Added

#2573: Add txpool stats to the node_info GraphQL endpoint

What's Changed

Full Changelog: v0.40.2...v0.40.3

v0.41.0

15 Jan 05:01
2287292
Compare
Choose a tag to compare

Version v0.41.0

Added

  • 2547: Replace the old Graphql gas price provider adapter with the ArcGasPriceEstimate.
  • 2445: Added GQL endpoint for querying asset details.
  • 2442: Add uninitialized task for V1 gas price service
  • 2154: Added Unknown variant to ConsensusParameters graphql queries
  • 2154: Added Unknown variant to Block graphql queries
  • 2154: Added TransactionType type in fuel-client
  • 2321: New metrics for the TxPool:
    • The size of transactions in the txpool (txpool_tx_size)
    • The time spent by a transaction in the txpool in seconds (txpool_tx_time_in_txpool_seconds)
    • The number of transactions in the txpool (txpool_number_of_transactions)
    • The number of transactions pending verification before entering the txpool (txpool_number_of_transactions_pending_verification)
    • The number of executable transactions in the txpool (txpool_number_of_executable_transactions)
    • The time it took to select transactions for inclusion in a block in microseconds (txpool_select_transactions_time_microseconds)
    • The time it took to insert a transaction in the txpool in microseconds (transaction_insertion_time_in_thread_pool_microseconds)
  • 2385: Added new histogram buckets for some of the TxPool metrics, optimize the way they are collected.
  • 2347: Add activity concept in order to protect against infinitely increasing DA gas price scenarios
  • 2362: Added a new request_response protocol version /fuel/req_res/0.0.2. In comparison with /fuel/req/0.0.1, which returns an empty response when a request cannot be fulfilled, this version returns more meaningful error codes. Nodes still support the version 0.0.1 of the protocol to guarantee backward compatibility with fuel-core nodes. Empty responses received from nodes using the old protocol /fuel/req/0.0.1 are automatically converted into an error ProtocolV1EmptyResponse with error code 0, which is also the only error code implemented. More specific error codes will be added in the future.
  • 2386: Add a flag to define the maximum number of file descriptors that RocksDB can use. By default it's half of the OS limit.
  • 2376: Add a way to fetch transactions in P2P without specifying a peer.
  • 2361: Add caches to the sync service to not reask for data it already fetched from the network.
  • 2327: Add more services tests and more checks of the pool. Also add an high level documentation for users of the pool and contributors.
  • 2416: Define the GasPriceServiceV1 task.
  • 2447: Use new expiration policy in the transaction pool. Add a mechanism to prune the transactions when they expired.
  • 1922: Added support for posting blocks to the shared sequencer.
  • 2033: Remove Option<BlockHeight> in favor of BlockHeightQuery where applicable.
  • 2490: Added pagination support for the balances GraphQL query, available only when 'balances indexation' is enabled.
  • 2439: Add gas costs for the two new zk opcodes ecop and eadd and the benches that allow to calibrate them.
  • 2472: Added the amountU128 field to the Balance GraphQL schema, providing the total balance as a U128. The existing amount field clamps any balance exceeding U64 to u64::MAX.
  • 2526: Add possibility to not have any cache set for RocksDB. Add an option to either load the RocksDB columns families on creation of the database or when the column is used.
  • 2532: Getters for inner rocksdb database handles.
  • 2524: Adds a new lock type which is optimized for certain workloads to the txpool and p2p services.
  • 2535: Expose backup and restore APIs on the CombinedDatabase struct to create portable backups and restore from them.
  • 2550: Add statistics and more limits infos about txpool on the node_info endpoint

Fixed

  • 2560: Fix flaky test by increasing timeout
  • 2558: Rename cost and reward to remove excess wording
  • 2469: Improved the logic for syncing the gas price database with on_chain database
  • 2365: Fixed the error during dry run in the case of race condition.
  • 2366: The importer_gas_price_for_block metric is properly collected.
  • 2369: The transaction_insertion_time_in_thread_pool_milliseconds metric is properly collected.
  • 2413: block production immediately errors if unable to lock the mutex.
  • 2389: Fix construction of reverse iterator in RocksDB.
  • 2479: Fix an error on the last iteration of the read and write sequential opcodes on contract storage.
  • 2478: Fix proof created by message_receipts_proof function by ignoring the receipts from failed transactions to match message_outbox_root.
  • 2485: Hardcode the timestamp of the genesis block and version of tai64 to avoid breaking changes for us.
  • 2511: Fix backward compatibility of V0Metadata in gas price db.

Changed

  • 2469: Updated adapter for querying costs from DA Block committer API
  • 2469: Use the gas price from the latest block to estimate future gas prices
  • 2501: Use gas price from block for estimating future gas prices
  • 2468: Abstract unrecorded blocks concept for V1 algorithm, create new storage impl. Introduce TransactionableStorage trait to allow atomic changes to the storage.
  • 2295: CombinedDb::from_config now respects state_rewind_policy with tmp RocksDB.
  • 2378: Use cached hash of the topic instead of calculating it on each publishing gossip message.
  • 2438: Refactored service to use new implementation of StorageRead::read that takes an offset in input.
  • 2429: Introduce custom enum for representing result of running service tasks
  • 2377: Add more errors that can be returned as responses when using protocol /fuel/req_res/0.0.2. The errors supported are ProtocolV1EmptyResponse (status code 0) for converting empty responses sent via protocol /fuel/req_res/0.0.1, RequestedRangeTooLarge(status code 1) if the client requests a range of objects such as sealed block headers or transactions too large, Timeout (status code 2) if the remote peer takes too long to fulfill a request, or SyncProcessorOutOfCapacity if the remote peer is fulfilling too many requests concurrently.
  • 2233: Introduce a new column modification_history_v2 for storing the modification history in the historical rocksDB. Keys in this column are stored in big endian order. Changed the behaviour of the historical rocksDB to write changes for new block heights to the new column, and to perform lookup of values from the modification_history_v2 table first, and then from the modification_history table, performing a migration upon access if necessary.
  • 2383: The balance and balances GraphQL query handlers now use index to provide the response in a more performant way. As the index is not created retroactively, the client must be initialized with an empty database and synced from the genesis block to utilize it. Otherwise, the legacy way of retrieving data will be used.
  • 2463: The coinsToSpend GraphQL query handler now uses index to provide the response in a more performant way. As the index is not created retroactively, the client must be initialized with an empty database and synced from the genesis block to utilize it. Otherwise, the legacy way of retrieving data will be used.
  • 2556: Ensure that the last_recorded_height is set for the DA gas price source.

Breaking

Read more

v0.40.2

06 Dec 18:32
ab12fb6
Compare
Choose a tag to compare

Version v0.40.2

Fixed

  • 2476: Hardcode the timestamp of the genesis block.

What's Changed

Full Changelog: v0.40.1...v0.40.2

v0.40.1

25 Nov 20:58
f9f719a
Compare
Choose a tag to compare

Release v0.40.1

  • 2450: Added support for posting blocks to the shared sequencer.

What's Changed

Full Changelog: v0.40.0...v0.40.1

v0.40.0

14 Oct 23:29
eea8c60
Compare
Choose a tag to compare

Version v0.40.0

Added

  • 2347: Add GraphQL complexity histogram to metrics.
  • 2350: Added a new CLI flag graphql-number-of-threads to limit the number of threads used by the GraphQL service. The default value is 2, 0 enables the old behavior.
  • 2335: Added CLI arguments for configuring GraphQL query costs.

Fixed

  • 2345: In PoA increase priority of block creation timer trigger compare to txpool event management

Changed

  • 2334: Prepare the GraphQL service for the switching to async methods.
  • 2310: New metrics: "The gas prices used in a block" (importer_gas_price_for_block), "The total gas used in a block" (importer_gas_per_block), "The total fee (gwei) paid by transactions in a block" (importer_fee_per_block_gwei), "The total number of transactions in a block" (importer_transactions_per_block), P2P metrics for swarm and protocol.
  • 2340: Avoid long heavy tasks in the GraphQL service by splitting work into batches.
  • 2341: Updated all pagination queries to work with the async stream instead of the sync iterator.
  • 2350: Limited the number of threads used by the GraphQL service.

Breaking

  • 2310: The metrics command-line parameter has been replaced with disable-metrics. Metrics are now enabled by default, with the option to disable them entirely or on a per-module basis.
  • 2341: The maximum number of processed coins from the coins_to_spend query is limited to max_inputs.

What's Changed

  • fix(gas_price_service): service name and unused trait impl by @rymnc in #2317
  • Do not require build of docker images to pass CI by @xgreenx in #2342
  • Prepare the GraphQL service for the switching to async methods by @xgreenx in #2334
  • Limited the number of threads used by the GraphQL service by @xgreenx in #2350
  • Increase priority of timer over txpool event by @xgreenx in #2345
  • Disable flaky test_poa_multiple_producers test by @rafal-ch in #2353
  • feat: CLI arguments for configuring GraphQL query costs. by @netrome in #2335
  • Add graphql query complexity histogram metric by @AurelienFT in #2349
  • Updated all pagination queries to work with the Stream instead of Iterator by @xgreenx in #2341
  • Avoid long heavy tasks in the GraphQL service by @xgreenx in #2340
  • Add more metrics by @rafal-ch in #2310
  • Release v0.40.0 by @xgreenx in #2356

Full Changelog: v0.39.0...v0.40.0

v0.39.0

11 Oct 17:10
5e272eb
Compare
Choose a tag to compare

Version v0.39.0

Added

  • 2324: Added metrics for sync, async processor and for all GraphQL queries.
  • 2320: Added new CLI flag graphql-max-resolver-recursive-depth to limit recursion within resolver. The default value it "1".

Fixed

  • 2320: Prevent /health and /v1/health from being throttled by the concurrency limiter.
  • 2322: Set the salt of genesis contracts to zero on execution.
  • 2324: Ignore peer if we already are syncing transactions from it.

Breaking

  • 2320: Reject queries that are recursive during the resolution of the query.

Changed

Breaking

  • 2311: Changed the text of the error returned by the executor if gas overflows.

What's Changed

  • chore(executor): instrument errors to be more meaningful by @rymnc in #2311
  • fix(dummy_da_block_costs): remove dependency on polling_interval and use channel instead by @rymnc in #2314
  • fix(txpool): Error in GossipsubMessageAcceptance variant docstrings by @netrome in #2316
  • refactor: Eager returns in txpool_v2::service::Task::run by @netrome in #2325
  • fix(api_service): exclude health checks from throttling with ConcurrencyLimitLayer by @rymnc in #2320
  • Remove the normalize_rewards_and_costs() function by @rafal-ch in #2293
  • fix(genesis): set salt of contract on execution of genesis state configuration by @rymnc in #2322
  • Fixing the issue with duplicate transaction synchronization processes by @xgreenx in #2324
  • Reject queries that are recursive during the resolution by @xgreenx in #2330
  • Release v0.39.0 by @rafal-ch in #2333

Full Changelog: v0.38.0...v0.39.0

v0.38.0

08 Oct 04:16
94fe64e
Compare
Choose a tag to compare

Version v0.38.0

Added

  • 2309: Limit number of concurrent queries to the graphql service.
  • 2216: Add more function to the state and task of TxPoolV2 to handle the future interactions with others modules (PoA, BlockProducer, BlockImporter and P2P).
  • 2263: Use the Txpool v2 in the whole codebase.

Removed

  • 2306: Removed hack for genesis asset contract from the code.

What's Changed

Full Changelog: v0.37.1...v0.38.0

v0.37.1

07 Oct 02:04
8c92d37
Compare
Choose a tag to compare

Version v0.37.1

Fixed

  • 2304: Add initialization for the genesis base asset contract.

What's Changed

Full Changelog: v0.37.0...v0.37.1

v0.37.0

05 Oct 23:32
d4ffb2e
Compare
Choose a tag to compare

Version v0.37.0

Added

  • 1609: Add DA compression support. Compressed blocks are stored in the offchain database when blocks are produced, and can be fetched using the GraphQL API.
  • 2290: Added a new CLI argument --graphql-max-directives. The default value is 10.
  • 2195: Added enforcement of the limit on the size of the L2 transactions per block according to the block_transaction_size_limit parameter.
  • 2131: Add flow in TxPool in order to ask to newly connected peers to share their transaction pool
  • 2182: Limit number of transactions that can be fetched via TxSource::next
  • 2189: Select next DA height to never include more than u16::MAX -1 transactions from L1.
  • 2162: Pool structure with dependencies, etc.. for the next transaction pool module. Also adds insertion/verification process in PoolV2 and tests refactoring
  • 2265: Integrate Block Committer API for DA Block Costs.
  • 2280: Allow comma separated relayer addresses in cli
  • 2299: Support blobs in the predicates.
  • 2300: Added new function to fuel-core-client for checking whether a blob exists.

Changed

Breaking

  • 2299: Anyone who wants to participate in the transaction broadcasting via p2p must upgrade to support new predicates on the TxPool level.
  • 2299: Upgraded fuel-vm to 0.58.0. More information in the release.
  • 2276: Changed how complexity for blocks is calculated. The default complexity now is 80_000. All queries that somehow touch the block header now are more expensive.
  • 2290: Added a new GraphQL limit on number of directives. The default value is 10.
  • 2206: Use timestamp of last block when dry running transactions.
  • 2153: Updated default gas costs for the local testnet configuration to match fuel-core 0.35.0.

What's Changed

  • fix: use core-test.fuellabs.net for dnsaddr resolution by @rymnc in #2214
  • Removed state transition bytecode from the local testnet by @xgreenx in #2215
  • Send whole transaction pool upon subscription to gossip by @AurelienFT in #2131
  • Update default gas costs based on 0.35.0 benchmarks by @xgreenx in #2153
  • feat: Use timestamp of last block when dry running transactions by @netrome in #2206
  • fix(dnsaddr_resolution): use fqdn separator to prevent suffixing by dns resolvers by @rymnc in #2222
  • TransactionSource: specify maximum number of transactions to be fetched by @acerone85 in #2182
  • Implement worst case scenario for price algorithm v1 by @rafal-ch in #2219
  • chore(gas_price_service): define port for L2 data by @rymnc in #2224
  • Block producer selects da height to never exceed u64::MAX - 1 transactions from L1 by @acerone85 in #2189
  • Weekly cargo update by @github-actions in #2236
  • Use fees to calculate DA reward and avoid issues with Gwei/Wei conversions by @MitchTurner in #2229
  • Protect against passing i128::MIN to abs() which causes overflow by @rafal-ch in #2241
  • Acquire da_finalization_period from the command line by @rafal-ch in #2240
  • Executor: test Tx_count limit with incorrect tx source by @acerone85 in #2242
  • Minor updates to docs + a few typos fixed by @rafal-ch in #2250
  • chore(gas_price_service): move algorithm_updater to fuel-core-gas-price-service by @rymnc in #2246
  • Use single heavy input in the transaction_throughput.rs benchmarks by @xgreenx in #2205
  • Enforce the block size limit by @rafal-ch in #2195
  • feat: build ARM and AMD in parallel by @mchristopher in #2130
  • Weekly cargo update by @github-actions in #2268
  • chore(gas_price_service): split into v0 and v1 and squash FuelGasPriceUpdater type into GasPriceService by @rymnc in #2256
  • feat(gas_price_service): update block committer da source with established contract by @rymnc in #2265
  • Use bytes from unrecorded_blocks rather from the block from DA by @MitchTurner in #2252
  • TxPool v2 General architecture by @AurelienFT in #2162
  • Add value delimiter and tests args by @AurelienFT in #2280
  • fix(da_block_costs): remove Arc<Mutex<>> on shared_state and expose channel by @rymnc in #2278
  • fix(combined_database): syncing auxiliary databases on startup with custom behaviour by @rymnc in #2272
  • fix: Manually encode Authorization header for eventsource_client by @Br1ght0ne in #2284
  • Address async-graphql vulnerability by @MitchTurner in #2290
  • Update the WASM compatibility tests for 0.36 release by @rafal-ch in #2271
  • DA compression by @Dentosal in #1609
  • Use different port for every version compatibility test by @rafal-ch in #2301
  • Fix block query complexity by @xgreenx in #2297
  • Support blobs in predicates by @Voxelot in #2299
  • Release v0.37.0 by @xgreenx in #2302

Full Changelog: v0.36.0...v0.37.0

v0.36.0

18 Sep 07:11
b00bd0d
Compare
Choose a tag to compare

Version v0.36.0

Added

  • 2135: Added metrics logging for number of blocks served over the p2p req/res protocol.
  • 2151: Added limitations on gas used during dry_run in API.
  • 2188: Added the new variant V2 for the ConsensusParameters which contains the new block_transaction_size_limit parameter.
  • 2163: Added runnable task for fetching block committer data.
  • 2204: Added dnsaddr resolution for TLD without suffixes.

Changed

Breaking

  • 2199: Applying several breaking changes to the WASM interface from backlog:
    • Get the module to execute WASM byte code from the storage first, an fallback to the built-in version in the case of the FUEL_ALWAYS_USE_WASM.
    • Added host_v1 with a new peek_next_txs_size method, that accepts tx_number_limit and size_limit.
    • Added new variant of the return type to pass the validation result. It removes block serialization and deserialization and should improve performance.
    • Added a V1 execution result type that uses JSONError instead of postcard serialized error. It adds flexibility of how variants of the error can be managed. More information about it in FuelLabs/fuel-vm#797. The change also moves TooManyOutputs error to the top. It shows that JSONError works as expected.
  • 2145: feat: Introduce time port in PoA service.
  • 2155: Added trait declaration for block committer data
  • 2142: Added benchmarks for varied forms of db lookups to assist in optimizations.
  • 2158: Log the public address of the signing key, if it is specified
  • 2188: Upgraded the fuel-vm to 0.57.0. More information in the release.

What's Changed

  • chore(p2p_service): add metrics for number of blocks requested over p2p req/res protocol by @rymnc in #2135
  • Weekly cargo update by @github-actions in #2149
  • Debug V1 algorightm and use more realistic values in gas price analysis by @MitchTurner in #2129
  • feat(gas_price_service): include trait declaration for block committer data by @rymnc in #2155
  • Convert gas price analysis tool to CLI by @MitchTurner in #2156
  • chore: add benchmarks for varied forms of lookups by @rymnc in #2142
  • Add label nochangelog on weekly cargo update by @AurelienFT in #2152
  • Log consensus-key signer address if specified by @acerone85 in #2158
  • chore(rocks_db): move ShallowTempDir to benches crate by @rymnc in #2168
  • chore(benches): conditional dropping of databases in benchmarks by @rymnc in #2170
  • feat: Introduce time port in PoA service by @netrome in #2145
  • Get DA costs from predefined data by @MitchTurner in #2157
  • chore(shallow_temp_dir): panic if not panicking by @rymnc in #2172
  • chore: Add initial CODEOWNERS file by @netrome in #2179
  • Weekly cargo update by @github-actions in #2177
  • fix(db_lookup_times): rework core logic of benchmark by @rymnc in #2159
  • Add verification on transaction dry_run that they don't spend more than block gas limit by @AurelienFT in #2151
  • bug: fix algorithm overflow issues by @MitchTurner in #2173
  • feat(gas_price_service): create runnable task for expensive background polling for da metadata by @rymnc in #2163
  • Weekly cargo update by @github-actions in #2197
  • Fix bug with gas price factor in V1 algorithm by @MitchTurner in #2201
  • Applying several breaking changes to the WASM interface from backlog by @xgreenx in #2199
  • chore(p2p): dnsaddr recursive resolution by @rymnc in #2204
  • Release v0.36.0 by @xgreenx in #2213

New Contributors

Full Changelog: v0.35.0...v0.36.0