All notable changes to the core components will be documented in this file.
- (
api_server): REST API v1.0.
- (
loadtest):zksync_feehas been moved to[main_wallet]section from the[network]section. - (
EthWatcher): added processing of events about adding new tokens to the contract. - A special balancer for FeeTicker was replaced with a generic balancer.
- (
eth_client):web3field was made private inETHDirectClient.testkitandloadtestdon't use it directly now. - (
api_server): Makesubmit_txs_batchsend only one signature request. - Fast withdrawals now can trigger aggregated block execution.
- Replaced
anyhowerrors with typed errors inlib/state,lib/cryptoandlib/types. - (
fee-ticker): Batch fee now includeszkp_feeandgas_fee.
- (
loadtest): Addedzksync_feeoption into the[scenario]section to set fee for each scenario individually, addedfee_tokenoption into the[main_wallet]section to set token that is used to pay fees for the main wallet operations. - (
TokenHandler): Module for automatically adding a token to the database based on the received Ethereum event (NewTokenEvent). - (
Notifier): Module for sending notifications to third-party services. - (
eth_client): Addedget_tx,create_contractmethods toEthereumGateway,get_web3_transportmethod to ETHDirectClient. - (
api_server): Support for accounts that don't have to pay fees (e.g. network service accounts) was added. - Added
BlockMetadatastructure and corresponding table to track block data that is not related to protocol. - (
block_revert): CLI that callsrevertBlockssmart contract function and updates the database respectively. - (
api_server): Added REST API v0.2. - (
api_client): Client for REST API v0.2. - (
api_types): Crate for storing types that are used in API. - Added hashes for batches and additional hashes for priority operations.
- Added
ForcedExitfee type to REST API v0.2 and JSON RPC API.
- (
zksync_api): Internal error with tokens not listed on CoinGecko. - Fix wrong block info cache behavior in the
api_server. - Bug with gas price limit being used instead of average gas price when storing data to DB in gas adjuster.
timeoutin ETH sender main loop was replaced withtokio::time::sleep.
- The token name is now set for each scenario separately instead of the network section of the loadtest configuration.
- Rejected transactions are now stored in the database for 2 weeks only.
- Added a stressing dev fee ticker scenario to the loadtest.
- Added a
--sloppymode to thedev-fee-ticker-serverto simulate bad networks with the random delays and fails. - Added
forced_exit_requestsfunctionality, which allows users to pay for ForcedExits from L1. Note that a few env variables were added that control the behaviour of the tool. - Possibility to use CREATE2 ChangePubKey and Transfer in a single batch.
- Bug with the assignment of new account ids in the state.
MetricsCounterstructure was removed because it is not used.- The limit on the number of withdrawals in the block.
- Type aliases (
TokenId,AccountId,Nonce,BlockNumber,PriorityOpId,EthBlockId) are replaced with wrapper structures. prometheus_exporterwas made a library to be used by several crates.prover_run_for_next_commitfunction uses a parameterized timeout instead of a hard-coded one.- (
storage):action_typecolumn type in db is changed fromtexttoenumfor optimization. - (
FeeTicker): Increased gas price estimate for transaction. - (
loadtest): Scenario execution was made parallel. - Increased completeWithdrawal gas limit, that decreased the chance of the users to face the out-of-gas error
prometheus_exporteris launched by every microservice.tokens_acceptable_for_feesendpoint that returns the list of tokens acceptable for fees was added to REST API v0.1.
- (
FeeTicker): Performance for getting the batch fee was heavily optimized.
gen_token_add_contractcrate is rewritten in ts.- Metrics were added to some functions from lib/storage.
get_tx_by_hashfunction was simplified.
closest_greater_or_eq_packable_fee_amountandclosest_greater_or_eq_packable_token_amountfunctions.test_float_conversionstest was expanded.- Loadtest scenario for stressing transaction batches
- Sequential Sparse Merkle Tree implementation was removed because it has been replaced by the parallel implementation.
- Bug with
to_floatfunction. Now, it really rounds to the closest less or equal float number. - Wrong index type used in the database causing some queries to take too much time.
- A possibility to get an Ethereum tx hash for withdrawal operation.
- Support for non-standard Ethereum signatures.
- Robustness of the fee ticker's API interacting module was increased.
- Blocks that contain withdraw operations are sealed faster.
eth_sendermodule now can be disabled.- Transfer to zero address (0x00..00) is now forbidden in zkSync.
- WebSocket server now uses more threads for handling incoming requests.
- Bug with delay between receiving a job and starting sending heartbeats.