All notable changes to the core components will be documented in this file.
- (
api_server
): REST API v1.0.
- (
loadtest
):zksync_fee
has 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
):web3
field was made private inETHDirectClient
.testkit
andloadtest
don't use it directly now. - (
api_server
): Makesubmit_txs_batch
send only one signature request. - Fast withdrawals now can trigger aggregated block execution.
- Replaced
anyhow
errors with typed errors inlib/state
,lib/crypto
andlib/types
. - (
fee-ticker
): Batch fee now includeszkp_fee
andgas_fee
.
- (
loadtest
): Addedzksync_fee
option into the[scenario]
section to set fee for each scenario individually, addedfee_token
option 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_contract
methods toEthereumGateway
,get_web3_transport
method to ETHDirectClient. - (
api_server
): Support for accounts that don't have to pay fees (e.g. network service accounts) was added. - Added
BlockMetadata
structure and corresponding table to track block data that is not related to protocol. - (
block_revert
): CLI that callsrevertBlocks
smart 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
ForcedExit
fee 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.
timeout
in ETH sender main loop was replaced withtokio::time::delay_for
.
- 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
--sloppy
mode to thedev-fee-ticker-server
to simulate bad networks with the random delays and fails. - Added
forced_exit_requests
functionality, 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.
MetricsCounter
structure 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_exporter
was made a library to be used by several crates.prover_run_for_next_commit
function uses a parameterized timeout instead of a hard-coded one.- (
storage
):action_type
column type in db is changed fromtext
toenum
for 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_exporter
is launched by every microservice.tokens_acceptable_for_fees
endpoint 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_contract
crate is rewritten in ts.- Metrics were added to some functions from lib/storage.
get_tx_by_hash
function was simplified.
closest_greater_or_eq_packable_fee_amount
andclosest_greater_or_eq_packable_token_amount
functions.test_float_conversions
test 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_float
function. 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_sender
module 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.