Releases: FuelLabs/fuel-core
v0.47.4
Changed
- 3138: Migrate CI from BuildJet to WarpBuild runners, update GitHub Actions to latest versions, and use pre-built binaries for cargo-nextest and cargo-audit.
- 3203: Add lease port for PoA adapter to allow multiple producers to be live but only one leader.
- 3225: PoA quorum and HA failover fixes: Redis leader lease adapter improvements, write_block.lua HEIGHT_EXISTS check, sub-quorum block repair, Prometheus metrics, and chaos test harness.
Fixed
- 3124: Using Debian Bookworm as the runtime base image for Docker builds. This is the same base image as the Rust builder images. Keeping the images in-sync will help prevent runtime dependency mismatch issues.
- 3264: Rollback stale preconfirmations in the mempool when the canonical block at that height omits the preconfirmed transactions, restoring spent inputs and removing dependent transactions.
- 3271: fix: group reconciliation votes by block_id to resolve same-block deadlock (cherry-picked).
- 3274: fix: prevent PoA leader deadlock after reconciliation import (cherry-picked).
- 3273: improve redis publish performance (cherry-picked).
Full Changelog: v0.47.3...v0.47.4
v0.48.0
Version v0.48.0
Breaking
- 3105: Only the first RPC Url is now used to create a provider in relayer server; others are ignored.
- 3141: Fix the index of the transaction inside the pre-confirmation during native block production.
- 3217: Bump dependencies and the rust version to 1.93.0
Added
- 3100: Add protobuf api for querying the block aggregator
- 3101: Integrate new block aggregation RPC into Fuel Core
- 3106: Add adapter for storing blocks on AWS S3 bucket
- 3115: Add quorum provider.
- 3116: Complete coverage of proto block types to cover all cases
- 3127: - Introduced
FailoverTransport, a resilient transport layer that retries GraphQL queries across multiple endpoints. - 3131: Integrated the backup tool into fuel-core as a
archivesubcommand. - 3155: Add integration tests for preconfirmation transaction indices to verify correct indexing for single and multiple transactions in a block.
- 3156: Add comprehensive integration tests for FuelClient failover functionality covering both GraphQL queries and subscriptions.
Changed
- 3105: Migrated relayer service and related tests from ethers-rs to alloy-rs.
- 3133: Include
tx_idintoSqueezedOutreason to simplify debugging. - 3134:
stageanddatafields made public inDataSourcestruct. - 3138: Migrate CI from BuildJet to WarpBuild runners, update GitHub Actions to latest versions, and use pre-built binaries for cargo-nextest and cargo-audit.
- 3182: Updated fuel-vm to 0.66 and added benchmark for the new instructions
- 3203: Add lease port for PoA adapter to allow multiple producers to be live but only one leader.
- 3225: PoA quorum and HA failover fixes: Redis leader lease adapter improvements, write_block.lua HEIGHT_EXISTS check, sub-quorum block repair, Prometheus metrics, and chaos test harness.
Fixed
- 3112: Use Protobuf types in serialization rather than opaque bytes
- 3124: Using Debian Bookworm as the runtime base image for Docker builds. This is the same base image as the Rust builder images. Keeping the images in-sync will help prevent runtime dependency mismatch issues.
- 3128: Better signal handling (SIGABRT, SIGQUIT, SIGHUP).
- 3148: Add
alocto ignored words, to fix typo errors in CI. - 3150: Ignore rustsec advisories
RUSTSEC-2025-0118 - 3159: Fix
FuelClient::with_urlsto normalize URLs with/v1/graphqlpath, matching the behavior ofFuelClient::new. - 3172: Validate TxPool transactions against next block height instead of current block height.
- 3174: Fix dry_run to get the consensus parameter version of the old block instead of current version
- 3193: Add new error type, fix error text
- 3195: Upgrade Wasmtime to fix RUSTSEC
What's Changed
- Migrate relayer from ethers-rs to alloy. by @its-saeed in #3105
- Update network versions on README by @github-actions[bot] in #3126
- Remove the curl example from the readme. Nobody should use it like this. by @Dentosal in #3129
- chore(bin): handle sigkill,sigabrt,sighup by @rymnc in #3128
- chore(ci): update nightly benchmark ci by @rymnc in #3135
- Add
alocto ignored words, to fix typo errors in CI by @its-saeed in #3148 - Update network versions on README by @github-actions[bot] in #3137
- DataSource struct attribute public visibility by @zees-dev in #3134
- Fix the index of the transaction inside of the pre confirmation during native block production by @its-saeed in #3141
- Update network versions on README by @github-actions[bot] in #3151
- Make backup tool part of the fuel-core binary. by @its-saeed in #3131
- Include tx_id into SqueezedOut reason to simplify debugging. by @its-saeed in #3133
- Add multiple RPCs support to fuel-core-client. by @its-saeed in #3127
- Refactor FuelClient::with_urls to accept a slice of string references. Add more tests. by @its-saeed in #3156
- Removed usage of Slack notifications because we don't use it by @xgreenx in #3158
- Add integration tests for preconfirmation transaction indices to verify correct indexing. by @its-saeed in #3155
- fix: normalize URLs in FuelClient::with_urls to include /v1/graphql path by @its-saeed in #3159
- Block Aggregator Protobuf API by @MitchTurner in #3100
- fix: validate txpool transactions against next block height by @its-saeed in #3172
- Fix dry_run to get the consensus parameter version of the old block by @MitchTurner in #3174
- Update Wasmtime by @MitchTurner in #3195
- chore(deps): bump lru from 0.13.0 to 0.16.3 by @dependabot[bot] in #3178
- Add new Error type for block production by @MitchTurner in #3193
- PoA Leader Lock for Block Production by @MitchTurner in #3203
- Bump rust and dependencies to 1.93 by @xgreenx in #3217
- fix: toml lint by @xgreenx in #3230
- chore: reduce log noise for high-throughput blocks by @xgreenx in #3229
- Update network versions on README by @github-actions[bot] in #3220
- chore(ci): migrate from BuildJet to WarpBuild, modernize CI by @Voxelot in #3138
- Weekly
cargo updateby @github-actions[bot] in #3235 - V0.47.3/merge master by @MitchTurner in #3241
- fuel-vm 0.66 and dynamic storage benchmarks by @Dentosal in #3182
- feat: migrate to distroless docker base images by @mchristopher in #3243
- Prepare v0.48.0 release by @Dentosal in #3242
Full Changelog: v0.47.1...v0.48.0
v0.47.3
What's Changed
- bump version by @MitchTurner in #3223
- PoA quorum and HA failover fixes (to release/v0.47.3) by @Voxelot in #3225
Full Changelog: v0.47.2...v0.47.3
v0.47.2
Full Changelog: v0.47.1...v0.47.2
What's Changed
- Add fork resilience for Leader Lock by @MitchTurner in #3210
- Bump version by @MitchTurner in #3219
Cherry Pick
- Add lease port for PoA adapter to allow multiple producers to be live but only one leader. in #3203
Full Changelog: v0.47.1...v0.47.2
v0.47.1
Version 0.47.1
Breaking
- 3014: Extend
CoinConfigto also support being configured with private keys. - 3050: - Used a new
fuel-vm 0.64.0release which brings breaking changes: https://github.com/FuelLabs/fuel-vm/releases/tag/v0.64.0- The default gas cost has been changed according to new optimizations and a new benchmark machine for a local node.
- Receipts now are behind an
Arcpointer to avoid unnecessary cloning. It affects transaction states and preconfirmations. - The
deploy_contract_with_idnow works with[u8]instead of theContracttype.
- 3083: Disable gossip subscription for transactions by default. It can be enabled using --subscribe-to-transactions flag.
- 3094: Fixed the bug where we charged for additional 40 entries on the GraphQL query
- 3099: Use hash-based
balance_rootandstate_rootfields in tx inputs and outputs - 3110: Bump Rust version to 1.90.0 and fuel-vm to 0.65.0
- 3117: The algorithm to calculate the genesis state root and the balance root was changed to not use SMTs. This change doesn't affect mainnet, testnet, and devnet, because these networks didn't use any balances or storage slots in the state config. But the change is breaking for anyone who used them.
Added
-
3023: Add a method to wait for
gas_priceto finish syncing upon receiving a new block, and modify the test accordingly. -
3049: Support awating of DA block height on pre defined block production.
-
3050: A new benchmarking group for
niopoperations in thealu.rsfile. The changes add comprehensive benchmarks for various operations (ADD,SUB,MUL,EXP,SLL,XNOR) across different operand widths (U8,U16,U32)Additions to benchmarking:
- A new
niopbenchmarking group was added to evaluate the performance of narrow integer operations (niop) with different operand widths (U8,U16,U32). - Introduced the
niop_benchmacro to simplify the creation of benchmarks for operations likeADD,SUB,MUL,EXP,SLL, andXNOR. - Benchmarks iterate over generated operand pairs for each width, ensuring a variety of test cases for each operation.
- A new
-
3059: Enable debug logging in predicates and scripts using ECAL. Upgrades fuel-vm to 0.63.0.
-
3085: Add scaffolding for the new block aggregator service
-
3092: Add adapter for the block aggregator DB
-
3096: Add subscription manager for core service
-
3097: Add block source adapter using fuel storage and block importer
Changed
-
3050: Actualized benchmarks with the performance of the network. With this change we should be able to run benchmarks on nightly bases.
Added several optimizations to the code base:
- Executor now reuses the memory instance between blocks production and validation avoiding allocations.
- Receipts are not cloned anymore from the VM. Instead, they are extracted from the VM and stored ina s shared pointer.
- The gas usage for script is discovered in a faster way.
Createtransaction doesn't require a cloning of the contract bytecode anymore to calculate itsContractId.- Serialization and deserialization of the bytes became much faster for canonical,
postcard,bincodecodecs.
-
3104: Automatically adjust relayer log page size to prevent sync failures from oversized Ethereum RPC responses.
Removed
- 3117: Removed SMT usage from STF and benchmarks.
What's Changed
- feat: Support private keys in coin config and log these if present by @netrome in #3014
- Update network versions on README by @github-actions[bot] in #3076
- Support awating of DA block height on pre defined block production by @Guocork in #3049
- Configurable --subscribe-to-transactions by @Dentosal in #3083
- Update network versions on README by @github-actions[bot] in #3082
- Block Aggregator Service Scaffolding by @MitchTurner in #3085
- Update network versions on README by @github-actions[bot] in #3095
- chore(gas_price_service): add a method to wait until storages are synced by @Guocork in #3023
- Fixed calculation of complexity by @xgreenx in #3094
- Block aggregator db adapter by @MitchTurner in #3092
- Enable debug logging in predicates and scripts using ECAL by @Dentosal in #3059
- Add new block subscription to inner service by @MitchTurner in #3096
- Block source for aggregator by @MitchTurner in #3097
- Fixed flaky syscall integration tests by @xgreenx in #3103
- Add dynamic adjustment for relayer log page size. by @its-saeed in #3104
- chore(benchmarks): add benchmarks for niop opcode in all operation modes by @rymnc in #3050
- chore(codeowners): update with current codeowners by @rymnc in #3114
- Bump rust to 1.90 and fuel-vm 0.65.0 by @zees-dev in #3110
- Use hash-based balance_root and state_root fields by @Dentosal in #3099
- Removed SMT usage from STF and benchmarks by @xgreenx in #3117
- Release v0.47.0 by @xgreenx in #3118
- Update cargo.toml by @MitchTurner in #3119
- chore(gas_costs): new gas costs based on 0.47.0 benchmarks by @rymnc in #3120
- Release v0.47.1 by @xgreenx in #3121
- fix: use same runtime image as builder by @mchristopher in #3124
New Contributors
- @its-saeed made their first contribution in #3104
- @zees-dev made their first contribution in #3110
Full Changelog: v0.46.0...v0.47.1
v0.46.0
Version v0.46.0
Breaking
- 3070: Fix the
AssetDetailsendpoint to match GraphQL standards
Added
- 3061: Add tests showing that mints are correctly added and validated
- 3074: Added alpha version of new subscriptions for pre confirmations and new blocks.
These subscriptions are not final and may change in the future.
Subscriptions are disabled by default and can be enabled by setting--expensive-subscriptionsvia CLI.
Fixed
- 3071: Use outputs instead of events to compress blocks
What's Changed
- Update network versions on README by @github-actions[bot] in #3067
- Fix
AssetDetailsendpoint to match GraphQL standards by @MitchTurner in #3070 - Update network versions on README by @github-actions[bot] in #3068
- Add test showing mint added by @MitchTurner in #3061
- Use inputs/outputs instead of events to compress blocks by @MitchTurner in #3071
- Added new subscriptions for pre confirmations and blocks by @xgreenx in #3074
- Release v0.46.0 by @xgreenx in #3075
Full Changelog: v0.45.1...v0.46.0
v0.45.1
Version v0.45.1
Breaking
- 3022: Support rolling back Relayer DB.
- 3056: Bump Rust version to 1.86.0
- 3058: upgrade
wasmtimeandthiserrordependencies
Added
- 2959: Add
Registrationstable to the compression database. This is merkleized. - 3027: Support state rewind for compression DB.
- 3054: Added a new configuration option
--p2p-cache-sizeto control the size of the p2p req/res protocol cache size.
Changed
- 3030: Disable dependency on blob transactions in transaction pool.
- 3033: Use ubuntu:24.04 to build x86_64 binary
- 3060: Use v44 STF if forward-compatibility test
- 3062: Increase default transmition size to 260MB, to support 2.5MB blocks by default during synchronization
Fixed
- 3048: The
MaxCoinsReachederror is now thrown when the target reached the max input limit.
What's Changed
- Prevent dependency on blob transactions by @AurelienFT in #3030
- docs(deepwiki): add deepwiki badge so it gets updated weekly by @rymnc in #3037
- Fix x86_64 build in the CI release pipeline by @Dentosal in #3033
- chore(codeowners): update with new policy by @rymnc in #3042
- Update network versions on README by @github-actions[bot] in #3044
- (parallel-executor): tests by @AurelienFT in #2967
- chore(compression): merkleized registration table by @rymnc in #2959
- Update network versions on README by @github-actions[bot] in #3046
- feat: Support rolling back relayer DB by @netrome in #3022
- chore(ci): unblock spellcheck ci by @rymnc in #3051
- bump rust version to 1.86 by @MitchTurner in #3056
- bump wasmtime version to deal with rust-sec issue by @MitchTurner in #3058
- The
MaxCoinsReachederror is now thrown when the target reached the max input limit. by @petertonysmith94 in #3048 - Increase default transmition size to support 2.5MB blocks by default during synchronization by @xgreenx in #3062
- fix(p2p): reduce cached view on req/res to one quarter to prevent mem overuse by @rymnc in #3054
- Release v0.45.0 by @xgreenx in #3063
- Fix publishing of the release 0.45.0 by @xgreenx in #3064
- Release v0.45.1 by @xgreenx in #3065
New Contributors
- @petertonysmith94 made their first contribution in #3048
Full Changelog: v0.44.0...v0.45.1
v0.44.0
Version v0.44.0
Breaking
- 2887: Bump Rust version to
1.85.0.
Starting with this release, newly generated WASM state transition functions are no longer compatible with old versions of thefuel-core. So, the change breaks forward compatibility for the network and each node should start to use a newfuel-corerelease. - 2943: Registry root calculation for compression tables no longer accounts for the evictor cache.
- 2947: Upgrade to 2024 Rust edition.
- 2958: Changed return type of
balanceendpoint fromu64tou128 - 3002: Update
fuel-vmto0.61.1. In doing this, we've changed Receipts to use theSubIdscalar type for sub asset IDs.
Added
- 2954: Made
registrymod public infuel-core-compression - 2956: Add excluded_contract filter to extract of transaction from TxPool.
- 2994: Simple makefile with basic commands.
- 3004: Additional error logs for Ethereum provider failures.
Changed
- 3021: Updated fuel-vm to 0.62.0, see https://github.com/fuelLabs/fuel-vm/releases/v0.62.0
Fixed
- 2969: Ensure that vm heap memory is zeroed out on rellocation after
reset. Adds support forGM::GetGasPriceBumpsfuel-vmto0.60.2. - 2984: Fix client coins endpoint so that passing
Noneforasset_idno longer defaults toAssetId::default()but correctly returns all asset types. - 2987: Make txpool pre-conf broadcast conditional on there being some txs in the list
- 2989: Prevent syncing compression database from genesis if override cli arg
--da-compression-starting-heightis provided. - 2992: Make sure assemble tx doesn't count message data inputs as spendable inputs for covering fee
- 2993: Pin the graphiql playground to v3, and cache the result to be reused across multiple calls to render the playground.
Removed
- 2955: Remove unnecessary lifetime constraints on fuel-core-client.
What's Changed
- Update network versions on README by @github-actions in #2942
- Try to fix flakiness in p2p tests by @xgreenx in #2945
- fix(decompression): registry root calculation by @rymnc in #2943
- chore: Bump rust version to 1.85.0 by @netrome in #2887
- chore(compression): make registry mod public by @rymnc in #2954
- chore!: change
balanceendpoint return type tou128by @hal3e in #2958 - Remove unnecessary lifetime constraints on fuel-core-client by @AurelienFT in #2955
- chore(deps): bump crossbeam-channel from 0.5.14 to 0.5.15 by @dependabot in #2962
- Add benches for all opcodes by @AurelienFT in #2936
- fix: clean up Docker chain config by @mchristopher in #2946
- Update network versions on README by @github-actions in #2968
- chore(port): bump version to 0.43.1, bump stf, etc by @rymnc in #2969
- chore: bump to the 2024 rust edition by @netrome in #2947
- Update network versions on README by @github-actions in #2971
- chore: Enable fault-proving feature on upgradable executor by @netrome in #2974
- Update network versions on README by @github-actions in #2977
- fix(tests): flakiness across a few different tests by @rymnc in #2982
- chore(backup): allow backups on a live database by @rymnc in #2986
- Make txpool pre-conf broadcast conditional on there being some txs in the list by @MitchTurner in #2987
- Assemble Tx requires spendable inputs by @MitchTurner in #2992
- chore: Update fuel-vm to 0.61.1 by @netrome in #3002
- Update network versions on README by @github-actions in #2981
- Update network versions on README by @github-actions in #3005
- chore: Additional error logs for eth provider failures by @netrome in #3004
- chore: Add simple makefile to help people use the right build command by @netrome in #2994
- fix(graphql): pin the version of assets in the graphql playground by @rymnc in #2993
- fix(port|compression_service): prevent syncing from genesis if compression db is empty by @rymnc in #2989
- Fix client coins endpoint to return all asset types by @Guocork in #2984
- Add excluded_contract filter to extract of transaction from TxPool by @AurelienFT in #2956
- Apply all suggestions from closed PRs by @xgreenx in #3018
- fuel-vm v0.62.0 by @Dentosal in #3021
- Update to cargo-sort v2 by @Dentosal in #3026
- Prepare for 0.44.0 release by @Dentosal in #3025
- Fix homepage key of Cargo.toml by @Dentosal in #3028
New Contributors
- @dependabot made their first contribution in #2962
- @Guocork made their first contribution in #2984
Full Changelog: v0.43.0...v0.44.0
v0.43.2
v0.43.1
Version 0.43.1
- 2964: Ensure that vm heap memory is zeroed out on rellocation after
reset. Adds support forGM::GetGasPriceBumpsfuel-vmto0.60.2.
What's Changed
- chore(tx|gas_price): add test to ensure heap memory is cleared, add gm opcode integ test by @rymnc in #2964
- chore(v0.43.1): bump versions, release changelog by @rymnc in #2966
Full Changelog: v0.43.0...v0.43.1