# zkSync contracts v5.1 upgrade announcement

Please note, that the upgrade comes as an amendment of the previous one. And contains all the changes that it had, but brings a lot of new features as well.

This upgrade brings native NFT and atomic swaps/limit orders support. This upgrade requires regenerating the root hash and so requires the most trust from our users, more on that can be read here (opens new window).

# Changes

The exact changes in the code of the contracts can be found here (opens new window).

# Added

  • MintNFT, WithdrawNFT operations, which enable native NFT support. More on the NFT structure can be read here.
  • Swap operation, which depending on the implementation may serve either atomic swaps or limit orders functionality. You can read more here.
  • The security council, which is able to shorten the upgrade notice period. More on that here (opens new window).
  • RegeneisMultisig.sol to handle submissions of the new root hash by the security council during the upgrade.
  • A special account with id 2**24 - 1. It is used to ensure the correctness of the NFT data.

# Changed

  • The maximum amount of tokens that can be used to pay transaction fees is increased to 1023.
  • The account tree depth for each account increased to 32.
  • Due to the smart contract size limitations, ZkSync.sol was split into two parts: the original ZkSync.sol and the AdditionalZkSync.sol, to which some functionality is delegated.
  • ZkSyncNFTFactory.sol which serves as a default NFT factory, where all the NFTs are withdrawn by default.
  • Various minor / stylistic fixes.