v0.42.0
Version 0.42.0
Breaking
- 2648: Add feature-flagged field to block header
fault_proving_header
that contains a commitment to all transaction ids. - 2678: Removed public accessors for
BlockHeader
fields and replaced with methods instead, movedtx_id_commitment
to the application header ofBlockHeaderV2
. - 2746: Breaking changes to the CLI arguments:
- To disable
random-walk
just don't specify it. Before it required to use--random-walk 0
. - Next CLI arguments were renamed:
relayer-min-duration-s
->relayer-min-duration
relayer-eth-sync-call-freq-s
->relayer-eth-sync-call-freq
relayer-eth-sync-log-freq-s
->relayer-eth-sync-log-freq
- Default value for the
heartbeat-idle-duration
was changed from1s
to100ms
. So information about new block will be propagated faster by default. - All CLI arguments below use time(like
100ms
,1s
,1d
, etc.) use as a flag argument instead of number of seconds:random-walk
connection-idle-timeout
info-interval
identify-interval
request-timeout
connection-keep-alive
heartbeat-send-duration
heartbeat-idle-duration
heartbeat-check-interval
heartbeat-max-avg-interval
heartbeat-max-time-since-last
relayer-min-duration
relayer-eth-sync-call-freq
relayer-eth-sync-log-freq
- To disable
- 2840: CLI argument
vm-backtrace
is deprecated and does nothing. It will be removed in a future version offuel-core
.
Theextra_tx_checks
field was renamed intoforbid_fake_coins
that affects JSON based serialization/deserialization.
Renamedextra_tx_checks_default
field intoforbid_fake_coins_default
.
Added
-
2150: Upgraded
libp2p
to0.54.1
and introducedConnectionLimiter
to limit pending incoming/outgoing connections. -
2491: Storage read replays of historical blocks for execution tracing. Only available behind
--historical-execution
flag. -
2619: Add possibility to submit list of changes to rocksdb.
-
2666: Added two new CLI arguments to control the GraphQL queries consistency:
--graphql-block-height-tolerance
(default:10
) and--graphql-block-height-min-timeout
(default:30s
). If a request requires a specific block height and the node is slightly behind, it will wait instead of failing. -
2682: Added GraphQL APIs to get contract storage and balances for current and past blocks.
-
2719: Merklized DA compression temporal registry tables.
-
2722: Service definition for state root service.
-
2724: Explicit error type for merkleized storage.
-
2726: Add a new gossip-sub message for transaction preconfirmations
-
2731: Include
TemporalRegistry
trait implementations for v2 tables. -
2733: Add a pending pool transaction that allow transaction to wait a bit of time if an input is missing instead of direct delete.
-
2742: Added API crate for merkle root service.
-
2756: Add new service for managing pre-confirmations
-
2769: Added a new
assembleTx
GraphQL endpoint. The endpoint can be used to assemble the transaction based on the provided requirements.-
The returned transaction contains:
- Input coins to cover
required_balances
- Input coins to cover the fee of the transaction based on the gas price from
block_horizon
Change
orDestroy
outputs for all assets from the inputsVariable
outputs in the case they are required during the executionContract
inputs and outputs in the case they are required during the execution- Reserved witness slots for signed coins filled with
64
zeroes - Set script gas limit(unless
script
is empty) - Estimated predicates, if
estimate_predicates == true
- Input coins to cover
-
Returns an error if:
- The number of required balances exceeds the maximum number of inputs allowed.
- The fee address index is out of bounds.
- The same asset has multiple change policies(either the receiver of
the change is different, or one of the policies states about the destruction
of the token while the other does not). TheChange
output from the transaction
also count as aChangePolicy
. - The number of excluded coin IDs exceeds the maximum number of inputs allowed.
- Required assets have multiple entries.
- If accounts don't have sufficient amounts to cover the transaction requirements in assets.
- If a constructed transaction breaks the rules defined by consensus parameters.
-
-
2780: Add implementations for the pre-confirmation signing task
-
2784: Integrate the pre conf signature task into the main consensus task
-
2788: Scaffold dedicated compression service.
-
2799: Add a transaction waiter to the executor to wait for potential new transactions inside the block production window.
Add a channel to send preconfirmation created by executor to the other modules
Added a new CLI arguments:--production-timeout
to control the block production timeout in the case if block producer stuck.--poa-open-period
set the block production mode toOpen
. TheOpen
mode starts the production of the next block immediately after the previous block. The block is open until theperiod
passed. The period is a duration represented by100ms
,1s
,1m
, etc. The manual block production is disabled if this production mode is used.
-
2802: Add a new cache with outputs extracted from the pool for the duration of the block.
-
2824: Introduce new
Try
-like methods for theTaskNextAction
-
2840: Added a new CLI arguments:
assemble-tx-dry-run-limit
- The max number how many times script can be executed duringassemble_tx
GraphQL request. Default value is3
times.assemble-tx-estimate-predicates-limit
- The max number how many times predicates can be estimated duringassemble_tx
GraphQL request. Default values is10
times.
-
2841: Following endpoints allow estimation of predicates on submission of the transaction via new
estimatePredicates
argument:submit
submit_and_await
submit_and_await_status
The change is backward compatible with all SDKs. The change is not forward-compatible with Rust SDK in the case of the
estiamte_predicates
flag set. -
2844: Implement DA compression in
fuel-core-compression-service
. -
2845: New status to manage the pre confirmation status send in
TxUpdateSender
. -
2855: Add an expiration interval check for pending pool and refactor extracted_outputs to not rely on block creation/process sequence.
-
2856: Add generic logic for managing the signatures and delegate keys for pre-confirmations signatures
-
2862: Derive
enum_iterator::Sequence
andstrum_macros::{EnumCount, IntoStaticStr}
for MerkleizedColumn.
Changed
- 2388: Rework the P2P service codecs to avoid unnecessary coupling between components. The refactoring makes it explicit that the Gossipsub and RequestResponse codecs only share encoding/decoding functionalities from the Postcard codec. It also makes handling Gossipsub and RequestResponse messages completely independent of each other.
- 2460: The type of the
max_response_size
for the postcard codec used inRequestResponse
protocols has been changed fromusize
tou64
. - 2473: Graphql requests and responses make use of a new
extensions
object to specify request/response metadata. A requestextensions
object can contain an integer-valuedrequired_fuel_block_height
field. When specified, the request will return an error unless the node's current fuel block height is at least the value specified in therequired_fuel_block_height
field. All graphql responses now contain an integer-valuedcurrent_fuel_block_height
field in theextensions
object, which contains the block height of the last block processed by the node. - 2618: Parallelize block/transaction changes creation in Importer
- 2653: Added cleaner error for wasm-executor upon failed deserialization.
- 2656: Migrate test helper function
create_contract
tofuel_core_types::test_helpers::create_contract
, and refactor test in proof_system/global_merkle_root crate to use this function. - 2659: Replace
derivative
crate witheduce
crate. - 2705: Update the default value for
--max-block-size
and--max-transmit-size
to 50 MB - 2715: Each GraphQL response contains
current_consensus_parameters_version
andcurrent_stf_version
in theextensions
section. - 2723: Change the way we are building the changelog to avoids conflicts.
- 2725: New txpool worker to remove lock contention
- 2752: Extended the
TransactionStatus
to support pre-confirmations. - 2761: Renamed
ConsensusParametersProvider
toChainStateInfoProvider
because it is now providing more than just info about consensus parameters. - 2767: Updated fuel-vm to v0.60.0, see release notes.
- 2781: Deprecate
dryRun
mutation. UsedryRun
query instead. - 2791: Added
TxStatusManager
service which serves as a single source of truth regarding the current statuses of transactions - 2793: Moved common merkle storage trait implementations to
fuel-core-storage
and made it easier to setup a set of columns that need merkleization. - 2799: Change the block production to not be trigger after an interval but directly after the creation of last block and let the executor run for the block time window.
- 2800: Implement P2P adapter for preconfirmation broadcasting
- 2802: Change new txs notifier to be notified only on executable transactions
- 2811: When the state rewind window of 7d was triggered, the
is_migration_in_progress
was repeatedly called, resulting in multiple iterations over the empty ModificationsHistoryV1 table. Iteration was slow because compaction didn't have a chance to clean up V1 table. We removed iteration from the migration process. - 2824: Improve conditions where
Error
s in thePreConfirmationSignatureTask
stop the service - 2840: Removed
log_backtrace
logic from the executor. It is not needed anymore with the existence of the local debugger for the transactions. - 2865: Consider the following transaction statuses as final:
Success
,Failure
,SqueezedOut
,PreConfirmationSqueezedOut
. All other statuses will be considered transient.
Fixed
- 2646: Improved performance of fetching block height by caching it when the view is created.
- 2682: Fixed the issue with RPC consistency feature for the subscriptions(without the fix first we perform the logic of the query, and only after verify the required height).
- 2730: Fixed RocksDB closing issue that potentially could panic.
- 2743: Allow discovery of the peers when slots for functional connections are consumed. Reserved nodes are not affected by the limitation on connections anymore.
- 2746: Fixed flaky part in the e2e tests and version compatibility tests. Speed up compatibility tests execution time. Decreased the default time between block height propagation throw the network.
- 2758: Made
tx_id_commitment
feature flagged infuel-core-client
. - 2832: - Trigger block production only when all other sub services are started.
- Fix relayer syncing issue causing block production to slow down occasionally.
- 2840: Fixed
fuel-core-client
receipt deserialization in the case if theContractId
is zero.
Removed
- 2863: Removed everything related to the state root service, as it has been moved to another repo.
What's Changed
- fault_proving(headers): create new version of the block header, with tx_id_commitment by @rymnc in #2648
- fault_proving(global_roots): Populate
UploadedBytecodes
table by @netrome in #2669 - fix(notify_cancel): removed usage of async trait and made the trait dyn incompatible by @rymnc in #2665
- fix: Remove dangerous array lookup by @netrome in #2677
- Refactor all the gas price cli args, fix downstream problems by @MitchTurner in #2670
- Dry run in the past by @Dentosal in #2661
- chore(wasm-executor): add nicer error if you missed a feature flag during compilation by @rymnc in #2653
- feat: add pending connection limits + bump libp2p to 0.54.1 by @MitchTurner in #2644
- Add versions on readme with action to update by @AurelienFT in #2647
- fix(headers): move tx_id_commitment to application_headers by @rymnc in #2678
- port(storage): use the cached block height from the database at the time of creation of the view by @rymnc in #2646
- port(gas_price_service): bring optimizations from 0.40.4 for cumulative_pct_change to master by @rymnc in #2645
- Remove unexpected logs by @AurelienFT in #2700
- fix: Typo in test comment by @netrome in #2703
- Remove analysis code by @MitchTurner in #2704
- Increase the P2P message limits by @AurelienFT in #2705
- Remove reviewers in update README action by @AurelienFT in #2706
- RPC Consistency Proposal by @acerone85 in #2473
- Update network versions on README by @github-actions in #2709
- Port the update of versions 0.41.7 by @AurelienFT in #2712
- Update network versions on README by @github-actions in #2714
- Remove fetcher and reader by @MitchTurner in #2718
- Rpc consistency proposal: Wait for up to a number of blocks specified in configuration before failing by @acerone85 in #2666
- Execution tracing: GraphQL query to get storage inputs for past blocks by @Dentosal in #2491
- fault_proving(global_roots): service definition and initial tests by @netrome in #2722
- Change management of unreleased section of CHANGELOG by @AurelienFT in #2723
- docs: Fix Readme links by @calldelegation in #2729
- Fix RocksDB closing by @xgreenx in #2730
- fault_proving(merklized_registry): add merklized registry tables by @rymnc in #2719
- Change
derivative
toeduce
by @AurelienFT in #2659 - Remove p2pservice networkcodec trait by @acerone85 in #2388
- fix(rust-analyzer): nits that are showing up as errors by @rymnc in #2735
- fault_proving(global_roots): Concrete error type for merkleized storage by @netrome in #2724
- chore: Add whole team as codeowners for new changelog folder by @netrome in #2744
- chore: Minor comments clean-up by @rafal-ch in #2745
- Update network versions on README by @github-actions in #2737
- Use the state of the database before the benchmark by @xgreenx in #2736
- New txpool worker to remove lock contention by @AurelienFT in #2725
- Refactor poa service by @MitchTurner in #2747
- Allow discovery of the peers when slots for functional connections are consumed by @xgreenx in #2743
- Add possibility to submit a list of changes to rocksdb by @AurelienFT in #2619
- Add GraphQL extension to provide current STF and CP versions by @rafal-ch in #2715
- Fixes for several flaky tests and re-work of CLI arguments by @xgreenx in #2746
- fault_proving(client): feature gated tx_id_commitment by @rymnc in #2758
- P2pService: Make max_response_size in PostcardCodec a u64 by @acerone85 in #2460
- Parallelise block/transaction changes creation in Importer by @AurelienFT in #2618
- fault_proving(global_roots): GraphQL API for serving state roots by @netrome in #2742
- Rename
ConsensusParametersProvider
toChainStateInfoProvider
by @rafal-ch in #2761 - Change CODEOWNERS to use team instead of users by @mchristopher in #2762
- fault_proving(compression): temporal registry implementations by @rymnc in #2731
- Add preconfirmation gossip messages by @MitchTurner in #2726
- fix(version-compatibility): remove old/unused version compat tests by @rymnc in #2764
- Update to fuel-vm 0.60.0 by @Dentosal in #2767
- Move p2p tests to own files by @MitchTurner in #2751
- fix(ci): typos according to new version of spellcheck ci by @rymnc in #2787
- Add new Preconfirmation Task by @MitchTurner in #2756
- add implementations for pre conf task by @MitchTurner in #2780
- Add pending pool in TxPool module by @AurelienFT in #2733
- fix: Mark (temporarily) dead code with
#[allow(dead_code)]
by @netrome in #2798 - Use
remove_recovery_id()
fromSignature
by @rafal-ch in #2702 - Use
Display
fromReceipt
enum by @rafal-ch in #2616 - GraphQL: historical contract storage and balances by @Dentosal in #2682
- Integrate the new pre-confirmation signing task adapters by @MitchTurner in #2784
- Deprecate dryRun mutation, add query impl for it by @Dentosal in #2781
- GraphQL API changes to support pre-confirmations by @rafal-ch in #2752
- Fix version of symbolic common by @AurelienFT in #2804
- P2P integration for pre-confirmations by @MitchTurner in #2800
- Tx pool output temporary cache by @AurelienFT in #2802
- Rework execution to allow preconfirmations by @AurelienFT in #2799
- Refactor make create contract helper function available outside of fuel core by @acerone85 in #2656
- Revert fix version of symbolic-common dependency by @AurelienFT in #2812
- Resolve RUSTSEC-2025-0006 by @xgreenx in #2816
- Update network versions on README by @github-actions in #2813
- fault_proving(storage_traits): refactor to allow usage of arbitrary
TableColumn
by @rymnc in #2793 - Add
Try
-like macros forTaskNextAction
, use in the pre-conf task by @MitchTurner in #2824 - (Port) Rework migration logic for historical tables by @AurelienFT in #2811
- fault_proving(compression_service): initial scaffold for dedicated compression service by @rymnc in #2788
- Preconfirmations: Introduce
TxStatusManager
by @rafal-ch in #2791 - port(relayer|poa): port fixes from v0.41.9 to master by @rymnc in #2832
- Update network versions on README by @github-actions in #2818
- feat:
AssembleTx
query by @netrome in #2769 - Update network versions on README by @github-actions in #2854
- Use a new feature from the VM to get all required inputs in one dry run by @xgreenx in #2840
- feat: Derive some missing traits for MerkleizedColumn by @netrome in #2862
- Do not prune
Submitted
statuses due to TTL by @rafal-ch in #2853 - Allow estimation of predicates on submission of the transaction by @xgreenx in #2841
- Add new pre confirmed intermediate state in
TxUpdateSender
by @AurelienFT in #2845 - Add expiration check on pending pool and refactor extracted outputs cache by @AurelienFT in #2855
- chore: Remove state root service, as it's being moved to another repo by @netrome in #2863
- fix(versions): port bump to v0.41.9 by @rymnc in #2867
- Add metrics to
TxStatusManager
service by @rafal-ch in #2868 - fault_proving(compression): add table definitions reusing new storage trait impls by @rymnc in #2819
- Classify the transactions statuses related to preconfirmations as interim by @rafal-ch in #2865
- Add preconfirmation signature verification to tx status manager by @MitchTurner in #2856
- fault_proving(compression): implement compression in compression service by @rymnc in #2844
- Update network versions on README by @github-actions in #2876
- Release v0.42.0 by @xgreenx in #2877
- fix(changelog): spellcheck by @rymnc in #2879
- fix(ci): e2e-client-dockerfile build by @rymnc in #2881
- fix(ci): only run changelog job if triggering event is a PR by @rymnc in #2880
- fix(ci): check-changelog should run only if its a PR by @rymnc in #2884
Full Changelog: v0.41.6...v0.42.0