Releases: FuelLabs/fuel-core
Releases · FuelLabs/fuel-core
v0.40.3
Version v0.40.3
Added
#2573: Add txpool stats to the node_info GraphQL endpoint
What's Changed
- Node info stats backport by @AurelienFT in #2573
- Bump the version of the
fuel-core
to 0.40.3 by @xgreenx in #2578
Full Changelog: v0.40.2...v0.40.3
v0.41.0
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 toConsensusParameters
graphql queries - 2154: Added
Unknown
variant toBlock
graphql queries - 2154: Added
TransactionType
type infuel-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
)
- The size of transactions in the txpool (
- 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 version0.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 errorProtocolV1EmptyResponse
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 ofBlockHeightQuery
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
andeadd
and the benches that allow to calibrate them. - 2472: Added the
amountU128
field to theBalance
GraphQL schema, providing the total balance as aU128
. The existingamount
field clamps any balance exceedingU64
tou64::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
andrestore
APIs on theCombinedDatabase
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
andreward
to removeexcess
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 matchmessage_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 respectsstate_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 areProtocolV1EmptyResponse
(status code0
) for converting empty responses sent via protocol/fuel/req_res/0.0.1
,RequestedRangeTooLarge
(status code1
) if the client requests a range of objects such as sealed block headers or transactions too large,Timeout
(status code2
) if the remote peer takes too long to fulfill a request, orSyncProcessorOutOfCapacity
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 themodification_history_v2
table first, and then from themodification_history
table, performing a migration upon access if necessary. - 2383: The
balance
andbalances
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
v0.40.2
Version v0.40.2
Fixed
- 2476: Hardcode the timestamp of the genesis block.
What's Changed
- Make genesis block timestamp hardcoded. by @AurelienFT in #2476
- Release v0.40.2 by @AurelienFT in #2477
Full Changelog: v0.40.1...v0.40.2
v0.40.1
v0.40.0
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 is2
,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 withdisable-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 tomax_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 ofIterator
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
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
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
- Updates to price algorithm by @rafal-ch in #2292
- Removed hack from the code by @xgreenx in #2306
- fix(p2p): useless dials to reserved nodes which dont have a location multiaddress by @rymnc in #2308
- Txpool v2 features for futures connections with other modules by @AurelienFT in #2216
- Limit number of concurrent queries to the graphql service by @netrome in #2309
- Linking TxPoolV2 in place of V1 by @AurelienFT in #2263
- Release v0.38.0 by @xgreenx in #2315
Full Changelog: v0.37.1...v0.38.0
v0.37.1
v0.37.0
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 is10
. - 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
to0.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 is10
. - 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
toabs()
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
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 theConsensusParameters
which contains the newblock_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 newpeek_next_txs_size
method, that acceptstx_number_limit
andsize_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 movesTooManyOutputs
error to the top. It shows thatJSONError
works as expected.
- Get the module to execute WASM byte code from the storage first, an fallback to the built-in version in the case of the
- 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
to0.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
- @acerone85 made their first contribution in #2158
Full Changelog: v0.35.0...v0.36.0