Java SDK
ZKsync Era Features
An overview of ZKsync Era features
While ZKsync is mostly Web3-compatible, it has some differences compared to Ethereum. The major of those are:
- Account abstraction support (accounts may have near-arbitrary validation logic, and also paymaster support is enabled).
- Deployment transactions require the contracts' bytecode to be passed in a separate field.
- The fee system is somewhat different.
These require us to extend standard Ethereum transactions with new custom fields. Such extended transactions are called EIP712 transactions since EIP712 is used to sign them. You can look at the internal structure of the EIP712 transactions.
This document will focus solely on how to pass these arguments to the SDK.
Encoding paymaster params
While the paymaster feature by itself does not impose any limitations on values of the paymasterInput
,
the Matter Labs team endorses certain types of
paymaster flows
that are processable by EOAs.
ZKsync SDK provides a utility method that can be used to get the correctly formed paymasterParams
object:
approvalBased, general.